@@ -53,14 +53,12 @@ define i32 @load_i32_by_i8_bswap(ptr %arg) {
5353; BSWAP is not supported by 32 bit target
5454; CHECK-LABEL: load_i32_by_i8_bswap:
5555; CHECK: @ %bb.0:
56+ ; CHECK-NEXT: mov r1, #255
5657; CHECK-NEXT: ldr r0, [r0]
57- ; CHECK-NEXT: mov r1, #65280
58- ; CHECK-NEXT: and r2, r0, #65280
59- ; CHECK-NEXT: and r1, r1, r0, lsr #8
60- ; CHECK-NEXT: orr r1, r1, r0, lsr #24
61- ; CHECK-NEXT: lsl r0, r0, #24
62- ; CHECK-NEXT: orr r0, r0, r2, lsl #8
63- ; CHECK-NEXT: orr r0, r0, r1
58+ ; CHECK-NEXT: orr r1, r1, #16711680
59+ ; CHECK-NEXT: and r2, r0, r1
60+ ; CHECK-NEXT: and r0, r1, r0, lsr #8
61+ ; CHECK-NEXT: orr r0, r0, r2, ror #24
6462; CHECK-NEXT: mov pc, lr
6563;
6664; CHECK-ARMv6-LABEL: load_i32_by_i8_bswap:
@@ -223,21 +221,16 @@ define i32 @load_i32_by_i16_i8(ptr %arg) {
223221define i64 @load_i64_by_i8_bswap (ptr %arg ) {
224222; CHECK-LABEL: load_i64_by_i8_bswap:
225223; CHECK: @ %bb.0:
224+ ; CHECK-NEXT: mov r2, #255
226225; CHECK-NEXT: ldr r1, [r0]
227- ; CHECK-NEXT: mov r12, #65280
228226; CHECK-NEXT: ldr r0, [r0, #4]
229- ; CHECK-NEXT: and r2, r0, #65280
230- ; CHECK-NEXT: and r3, r12, r0, lsr #8
231- ; CHECK-NEXT: orr r3, r3, r0, lsr #24
232- ; CHECK-NEXT: lsl r0, r0, #24
233- ; CHECK-NEXT: orr r0, r0, r2, lsl #8
234- ; CHECK-NEXT: and r2, r12, r1, lsr #8
235- ; CHECK-NEXT: orr r0, r0, r3
236- ; CHECK-NEXT: and r3, r1, #65280
237- ; CHECK-NEXT: orr r2, r2, r1, lsr #24
238- ; CHECK-NEXT: lsl r1, r1, #24
239- ; CHECK-NEXT: orr r1, r1, r3, lsl #8
240- ; CHECK-NEXT: orr r1, r1, r2
227+ ; CHECK-NEXT: orr r2, r2, #16711680
228+ ; CHECK-NEXT: and r3, r0, r2
229+ ; CHECK-NEXT: and r0, r2, r0, lsr #8
230+ ; CHECK-NEXT: orr r0, r0, r3, ror #24
231+ ; CHECK-NEXT: and r3, r1, r2
232+ ; CHECK-NEXT: and r1, r2, r1, lsr #8
233+ ; CHECK-NEXT: orr r1, r1, r3, ror #24
241234; CHECK-NEXT: mov pc, lr
242235;
243236; CHECK-ARMv6-LABEL: load_i64_by_i8_bswap:
@@ -377,14 +370,12 @@ define i64 @load_i64_by_i8(ptr %arg) {
377370define i32 @load_i32_by_i8_nonzero_offset (ptr %arg ) {
378371; CHECK-LABEL: load_i32_by_i8_nonzero_offset:
379372; CHECK: @ %bb.0:
373+ ; CHECK-NEXT: mov r1, #255
380374; CHECK-NEXT: ldr r0, [r0, #1]
381- ; CHECK-NEXT: mov r1, #65280
382- ; CHECK-NEXT: and r2, r0, #65280
383- ; CHECK-NEXT: and r1, r1, r0, lsr #8
384- ; CHECK-NEXT: orr r1, r1, r0, lsr #24
385- ; CHECK-NEXT: lsl r0, r0, #24
386- ; CHECK-NEXT: orr r0, r0, r2, lsl #8
387- ; CHECK-NEXT: orr r0, r0, r1
375+ ; CHECK-NEXT: orr r1, r1, #16711680
376+ ; CHECK-NEXT: and r2, r0, r1
377+ ; CHECK-NEXT: and r0, r1, r0, lsr #8
378+ ; CHECK-NEXT: orr r0, r0, r2, ror #24
388379; CHECK-NEXT: mov pc, lr
389380;
390381; CHECK-ARMv6-LABEL: load_i32_by_i8_nonzero_offset:
@@ -434,14 +425,12 @@ define i32 @load_i32_by_i8_nonzero_offset(ptr %arg) {
434425define i32 @load_i32_by_i8_neg_offset (ptr %arg ) {
435426; CHECK-LABEL: load_i32_by_i8_neg_offset:
436427; CHECK: @ %bb.0:
428+ ; CHECK-NEXT: mov r1, #255
437429; CHECK-NEXT: ldr r0, [r0, #-4]
438- ; CHECK-NEXT: mov r1, #65280
439- ; CHECK-NEXT: and r2, r0, #65280
440- ; CHECK-NEXT: and r1, r1, r0, lsr #8
441- ; CHECK-NEXT: orr r1, r1, r0, lsr #24
442- ; CHECK-NEXT: lsl r0, r0, #24
443- ; CHECK-NEXT: orr r0, r0, r2, lsl #8
444- ; CHECK-NEXT: orr r0, r0, r1
430+ ; CHECK-NEXT: orr r1, r1, #16711680
431+ ; CHECK-NEXT: and r2, r0, r1
432+ ; CHECK-NEXT: and r0, r1, r0, lsr #8
433+ ; CHECK-NEXT: orr r0, r0, r2, ror #24
445434; CHECK-NEXT: mov pc, lr
446435;
447436; CHECK-ARMv6-LABEL: load_i32_by_i8_neg_offset:
@@ -587,14 +576,12 @@ declare i16 @llvm.bswap.i16(i16)
587576define i32 @load_i32_by_bswap_i16 (ptr %arg ) {
588577; CHECK-LABEL: load_i32_by_bswap_i16:
589578; CHECK: @ %bb.0:
579+ ; CHECK-NEXT: mov r1, #255
590580; CHECK-NEXT: ldr r0, [r0]
591- ; CHECK-NEXT: mov r1, #65280
592- ; CHECK-NEXT: and r2, r0, #65280
593- ; CHECK-NEXT: and r1, r1, r0, lsr #8
594- ; CHECK-NEXT: orr r1, r1, r0, lsr #24
595- ; CHECK-NEXT: lsl r0, r0, #24
596- ; CHECK-NEXT: orr r0, r0, r2, lsl #8
597- ; CHECK-NEXT: orr r0, r0, r1
581+ ; CHECK-NEXT: orr r1, r1, #16711680
582+ ; CHECK-NEXT: and r2, r0, r1
583+ ; CHECK-NEXT: and r0, r1, r0, lsr #8
584+ ; CHECK-NEXT: orr r0, r0, r2, ror #24
598585; CHECK-NEXT: mov pc, lr
599586;
600587; CHECK-ARMv6-LABEL: load_i32_by_bswap_i16:
@@ -667,14 +654,12 @@ define i32 @load_i32_by_i8_base_offset_index(ptr %arg, i32 %i) {
667654; CHECK-LABEL: load_i32_by_i8_base_offset_index:
668655; CHECK: @ %bb.0:
669656; CHECK-NEXT: add r0, r0, r1
670- ; CHECK-NEXT: mov r1, #65280
657+ ; CHECK-NEXT: mov r1, #255
658+ ; CHECK-NEXT: orr r1, r1, #16711680
671659; CHECK-NEXT: ldr r0, [r0, #12]
672- ; CHECK-NEXT: and r2, r0, #65280
673- ; CHECK-NEXT: and r1, r1, r0, lsr #8
674- ; CHECK-NEXT: orr r1, r1, r0, lsr #24
675- ; CHECK-NEXT: lsl r0, r0, #24
676- ; CHECK-NEXT: orr r0, r0, r2, lsl #8
677- ; CHECK-NEXT: orr r0, r0, r1
660+ ; CHECK-NEXT: and r2, r0, r1
661+ ; CHECK-NEXT: and r0, r1, r0, lsr #8
662+ ; CHECK-NEXT: orr r0, r0, r2, ror #24
678663; CHECK-NEXT: mov pc, lr
679664;
680665; CHECK-ARMv6-LABEL: load_i32_by_i8_base_offset_index:
@@ -733,14 +718,12 @@ define i32 @load_i32_by_i8_base_offset_index_2(ptr %arg, i32 %i) {
733718; CHECK-LABEL: load_i32_by_i8_base_offset_index_2:
734719; CHECK: @ %bb.0:
735720; CHECK-NEXT: add r0, r1, r0
736- ; CHECK-NEXT: mov r1, #65280
721+ ; CHECK-NEXT: mov r1, #255
722+ ; CHECK-NEXT: orr r1, r1, #16711680
737723; CHECK-NEXT: ldr r0, [r0, #13]
738- ; CHECK-NEXT: and r2, r0, #65280
739- ; CHECK-NEXT: and r1, r1, r0, lsr #8
740- ; CHECK-NEXT: orr r1, r1, r0, lsr #24
741- ; CHECK-NEXT: lsl r0, r0, #24
742- ; CHECK-NEXT: orr r0, r0, r2, lsl #8
743- ; CHECK-NEXT: orr r0, r0, r1
724+ ; CHECK-NEXT: and r2, r0, r1
725+ ; CHECK-NEXT: and r0, r1, r0, lsr #8
726+ ; CHECK-NEXT: orr r0, r0, r2, ror #24
744727; CHECK-NEXT: mov pc, lr
745728;
746729; CHECK-ARMv6-LABEL: load_i32_by_i8_base_offset_index_2:
0 commit comments