summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/ARM
diff options
context:
space:
mode:
authorClement Courbet <courbet@google.com>2019-11-22 09:00:16 +0100
committerClement Courbet <courbet@google.com>2019-11-22 09:01:08 +0100
commit88e205525ca3b65f9b129d87e76e6e94c7ed032f (patch)
treef4ec3382b80506bd5e95fde067d2b977b62f8a9c /llvm/test/CodeGen/ARM
parent95fe54931fddccccf9740b3247219e30504da447 (diff)
downloadbcm5719-llvm-88e205525ca3b65f9b129d87e76e6e94c7ed032f.tar.gz
bcm5719-llvm-88e205525ca3b65f9b129d87e76e6e94c7ed032f.zip
Revert "[DAGCombiner] Allow zextended load combines."
Breaks some bots.
Diffstat (limited to 'llvm/test/CodeGen/ARM')
-rw-r--r--llvm/test/CodeGen/ARM/load-combine-big-endian.ll38
-rw-r--r--llvm/test/CodeGen/ARM/load-combine.ll36
2 files changed, 48 insertions, 26 deletions
diff --git a/llvm/test/CodeGen/ARM/load-combine-big-endian.ll b/llvm/test/CodeGen/ARM/load-combine-big-endian.ll
index 0ed85501a7b..d045f1f96ee 100644
--- a/llvm/test/CodeGen/ARM/load-combine-big-endian.ll
+++ b/llvm/test/CodeGen/ARM/load-combine-big-endian.ll
@@ -824,23 +824,25 @@ define i32 @zext_load_i32_by_i8(i32* %arg) {
;
; CHECK-ARMv6-LABEL: zext_load_i32_by_i8:
; CHECK-ARMv6: @ %bb.0:
-; CHECK-ARMv6-NEXT: ldrh r0, [r0]
-; CHECK-ARMv6-NEXT: lsl r0, r0, #16
-; CHECK-ARMv6-NEXT: rev r0, r0
+; CHECK-ARMv6-NEXT: ldrb r1, [r0]
+; CHECK-ARMv6-NEXT: ldrb r0, [r0, #1]
+; CHECK-ARMv6-NEXT: orr r0, r1, r0, lsl #8
; CHECK-ARMv6-NEXT: bx lr
;
; CHECK-THUMBv6-LABEL: zext_load_i32_by_i8:
; CHECK-THUMBv6: @ %bb.0:
-; CHECK-THUMBv6-NEXT: ldrh r0, [r0]
-; CHECK-THUMBv6-NEXT: lsls r0, r0, #16
-; CHECK-THUMBv6-NEXT: rev r0, r0
+; CHECK-THUMBv6-NEXT: ldrb r1, [r0]
+; CHECK-THUMBv6-NEXT: ldrb r0, [r0, #1]
+; CHECK-THUMBv6-NEXT: lsls r0, r0, #8
+; CHECK-THUMBv6-NEXT: adds r0, r0, r1
; CHECK-THUMBv6-NEXT: bx lr
;
; CHECK-THUMBv7-LABEL: zext_load_i32_by_i8:
; CHECK-THUMBv7: @ %bb.0:
-; CHECK-THUMBv7-NEXT: ldrh r0, [r0]
-; CHECK-THUMBv7-NEXT: lsls r0, r0, #16
-; CHECK-THUMBv7-NEXT: rev r0, r0
+; CHECK-THUMBv7-NEXT: ldrb r1, [r0]
+; CHECK-THUMBv7-NEXT: ldrb r0, [r0, #1]
+; CHECK-THUMBv7-NEXT: lsls r0, r0, #8
+; CHECK-THUMBv7-NEXT: adds r0, r0, r1
; CHECK-THUMBv7-NEXT: bx lr
%tmp = bitcast i32* %arg to i8*
@@ -960,22 +962,32 @@ define i32 @zext_load_i32_by_i8_shl_16(i32* %arg) {
define i32 @zext_load_i32_by_i8_bswap(i32* %arg) {
; CHECK-LABEL: zext_load_i32_by_i8_bswap:
; CHECK: @ %bb.0:
-; CHECK-NEXT: ldrh r0, [r0]
+; CHECK-NEXT: ldrb r1, [r0]
+; CHECK-NEXT: ldrb r0, [r0, #1]
+; CHECK-NEXT: orr r0, r0, r1, lsl #8
; CHECK-NEXT: mov pc, lr
;
; CHECK-ARMv6-LABEL: zext_load_i32_by_i8_bswap:
; CHECK-ARMv6: @ %bb.0:
-; CHECK-ARMv6-NEXT: ldrh r0, [r0]
+; CHECK-ARMv6-NEXT: ldrb r1, [r0]
+; CHECK-ARMv6-NEXT: ldrb r0, [r0, #1]
+; CHECK-ARMv6-NEXT: orr r0, r0, r1, lsl #8
; CHECK-ARMv6-NEXT: bx lr
;
; CHECK-THUMBv6-LABEL: zext_load_i32_by_i8_bswap:
; CHECK-THUMBv6: @ %bb.0:
-; CHECK-THUMBv6-NEXT: ldrh r0, [r0]
+; CHECK-THUMBv6-NEXT: ldrb r1, [r0, #1]
+; CHECK-THUMBv6-NEXT: ldrb r0, [r0]
+; CHECK-THUMBv6-NEXT: lsls r0, r0, #8
+; CHECK-THUMBv6-NEXT: adds r0, r0, r1
; CHECK-THUMBv6-NEXT: bx lr
;
; CHECK-THUMBv7-LABEL: zext_load_i32_by_i8_bswap:
; CHECK-THUMBv7: @ %bb.0:
-; CHECK-THUMBv7-NEXT: ldrh r0, [r0]
+; CHECK-THUMBv7-NEXT: ldrb r1, [r0, #1]
+; CHECK-THUMBv7-NEXT: ldrb r0, [r0]
+; CHECK-THUMBv7-NEXT: lsls r0, r0, #8
+; CHECK-THUMBv7-NEXT: adds r0, r0, r1
; CHECK-THUMBv7-NEXT: bx lr
%tmp = bitcast i32* %arg to i8*
diff --git a/llvm/test/CodeGen/ARM/load-combine.ll b/llvm/test/CodeGen/ARM/load-combine.ll
index bf03898c891..d173a098b9b 100644
--- a/llvm/test/CodeGen/ARM/load-combine.ll
+++ b/llvm/test/CodeGen/ARM/load-combine.ll
@@ -734,22 +734,31 @@ define i32 @load_i32_by_i8_base_offset_index_2(i8* %arg, i32 %i) {
define i32 @zext_load_i32_by_i8(i32* %arg) {
; CHECK-LABEL: zext_load_i32_by_i8:
; CHECK: @ %bb.0:
-; CHECK-NEXT: ldrh r0, [r0]
+; CHECK-NEXT: ldrb r1, [r0]
+; CHECK-NEXT: ldrb r0, [r0, #1]
+; CHECK-NEXT: orr r0, r1, r0, lsl #8
; CHECK-NEXT: mov pc, lr
;
; CHECK-ARMv6-LABEL: zext_load_i32_by_i8:
; CHECK-ARMv6: @ %bb.0:
-; CHECK-ARMv6-NEXT: ldrh r0, [r0]
+; CHECK-ARMv6-NEXT: ldrb r1, [r0]
+; CHECK-ARMv6-NEXT: ldrb r0, [r0, #1]
+; CHECK-ARMv6-NEXT: orr r0, r1, r0, lsl #8
; CHECK-ARMv6-NEXT: bx lr
;
; CHECK-THUMBv6-LABEL: zext_load_i32_by_i8:
; CHECK-THUMBv6: @ %bb.0:
-; CHECK-THUMBv6-NEXT: ldrh r0, [r0]
+; CHECK-THUMBv6-NEXT: ldrb r1, [r0]
+; CHECK-THUMBv6-NEXT: ldrb r0, [r0, #1]
+; CHECK-THUMBv6-NEXT: lsls r0, r0, #8
+; CHECK-THUMBv6-NEXT: adds r0, r0, r1
; CHECK-THUMBv6-NEXT: bx lr
;
; CHECK-THUMBv7-LABEL: zext_load_i32_by_i8:
; CHECK-THUMBv7: @ %bb.0:
-; CHECK-THUMBv7-NEXT: ldrh r0, [r0]
+; CHECK-THUMBv7-NEXT: ldrb r1, [r0]
+; CHECK-THUMBv7-NEXT: ldrb r0, [r0, #1]
+; CHECK-THUMBv7-NEXT: orr.w r0, r1, r0, lsl #8
; CHECK-THUMBv7-NEXT: bx lr
%tmp = bitcast i32* %arg to i8*
@@ -874,23 +883,24 @@ define i32 @zext_load_i32_by_i8_bswap(i32* %arg) {
;
; CHECK-ARMv6-LABEL: zext_load_i32_by_i8_bswap:
; CHECK-ARMv6: @ %bb.0:
-; CHECK-ARMv6-NEXT: ldrh r0, [r0]
-; CHECK-ARMv6-NEXT: lsl r0, r0, #16
-; CHECK-ARMv6-NEXT: rev r0, r0
+; CHECK-ARMv6-NEXT: ldrb r1, [r0]
+; CHECK-ARMv6-NEXT: ldrb r0, [r0, #1]
+; CHECK-ARMv6-NEXT: orr r0, r0, r1, lsl #8
; CHECK-ARMv6-NEXT: bx lr
;
; CHECK-THUMBv6-LABEL: zext_load_i32_by_i8_bswap:
; CHECK-THUMBv6: @ %bb.0:
-; CHECK-THUMBv6-NEXT: ldrh r0, [r0]
-; CHECK-THUMBv6-NEXT: lsls r0, r0, #16
-; CHECK-THUMBv6-NEXT: rev r0, r0
+; CHECK-THUMBv6-NEXT: ldrb r1, [r0, #1]
+; CHECK-THUMBv6-NEXT: ldrb r0, [r0]
+; CHECK-THUMBv6-NEXT: lsls r0, r0, #8
+; CHECK-THUMBv6-NEXT: adds r0, r0, r1
; CHECK-THUMBv6-NEXT: bx lr
;
; CHECK-THUMBv7-LABEL: zext_load_i32_by_i8_bswap:
; CHECK-THUMBv7: @ %bb.0:
-; CHECK-THUMBv7-NEXT: ldrh r0, [r0]
-; CHECK-THUMBv7-NEXT: lsls r0, r0, #16
-; CHECK-THUMBv7-NEXT: rev r0, r0
+; CHECK-THUMBv7-NEXT: ldrb r1, [r0]
+; CHECK-THUMBv7-NEXT: ldrb r0, [r0, #1]
+; CHECK-THUMBv7-NEXT: orr.w r0, r0, r1, lsl #8
; CHECK-THUMBv7-NEXT: bx lr
%tmp = bitcast i32* %arg to i8*
OpenPOWER on IntegriCloud