summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorAhmed Bougacha <ahmed.bougacha@gmail.com>2017-03-27 17:31:48 +0000
committerAhmed Bougacha <ahmed.bougacha@gmail.com>2017-03-27 17:31:48 +0000
commit85a66a6d9fd5938fc617206f99761e06f0f1663d (patch)
tree611d2f1cf924f3a8a7254eecae36fa2223b5cd78 /llvm/test
parentba3a4def29779b5ebb1533e66116bd4223f5aa9f (diff)
downloadbcm5719-llvm-85a66a6d9fd5938fc617206f99761e06f0f1663d.tar.gz
bcm5719-llvm-85a66a6d9fd5938fc617206f99761e06f0f1663d.zip
[GlobalISel][AArch64] Select store of zero to WZR/XZR.
These occur very frequently, and are quite trivial to catch. llvm-svn: 298862
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/CodeGen/AArch64/GlobalISel/select-store.mir56
1 files changed, 56 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-store.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-store.mir
index 83f351e8f03..95690f98690 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-store.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-store.mir
@@ -7,6 +7,10 @@
define void @store_s32_gpr(i32* %addr) { ret void }
define void @store_s16_gpr(i16* %addr) { ret void }
define void @store_s8_gpr(i8* %addr) { ret void }
+
+ define void @store_zero_s64_gpr(i64* %addr) { ret void }
+ define void @store_zero_s32_gpr(i32* %addr) { ret void }
+
define void @store_s64_fpr(i64* %addr) { ret void }
define void @store_s32_fpr(i32* %addr) { ret void }
...
@@ -120,6 +124,58 @@ body: |
...
---
+# CHECK-LABEL: name: store_zero_s64_gpr
+name: store_zero_s64_gpr
+legalized: true
+regBankSelected: true
+
+# CHECK: registers:
+# CHECK-NEXT: - { id: 0, class: gpr64sp }
+# CHECK-NEXT: - { id: 1, class: gpr }
+registers:
+ - { id: 0, class: gpr }
+ - { id: 1, class: gpr }
+
+# CHECK: body:
+# CHECK: %0 = COPY %x0
+# CHECK: STRXui %xzr, %0, 0 :: (store 8 into %ir.addr)
+body: |
+ bb.0:
+ liveins: %x0, %x1
+
+ %0(p0) = COPY %x0
+ %1(s64) = G_CONSTANT i64 0
+ G_STORE %1, %0 :: (store 8 into %ir.addr)
+
+...
+
+---
+# CHECK-LABEL: name: store_zero_s32_gpr
+name: store_zero_s32_gpr
+legalized: true
+regBankSelected: true
+
+# CHECK: registers:
+# CHECK-NEXT: - { id: 0, class: gpr64sp }
+# CHECK-NEXT: - { id: 1, class: gpr }
+registers:
+ - { id: 0, class: gpr }
+ - { id: 1, class: gpr }
+
+# CHECK: body:
+# CHECK: %0 = COPY %x0
+# CHECK: STRWui %wzr, %0, 0 :: (store 4 into %ir.addr)
+body: |
+ bb.0:
+ liveins: %x0
+
+ %0(p0) = COPY %x0
+ %1(s32) = G_CONSTANT i32 0
+ G_STORE %1, %0 :: (store 4 into %ir.addr)
+
+...
+
+---
# CHECK-LABEL: name: store_s64_fpr
name: store_s64_fpr
legalized: true
OpenPOWER on IntegriCloud