summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/Hexagon
diff options
context:
space:
mode:
authorKrzysztof Parzyszek <kparzysz@codeaurora.org>2018-01-26 21:17:14 +0000
committerKrzysztof Parzyszek <kparzysz@codeaurora.org>2018-01-26 21:17:14 +0000
commit95614acc24c59461e8e2d8d8f2b2d285baac99f8 (patch)
tree0dad9492cb15a6c46a88d2286e5c5bd7e8d6aefe /llvm/test/CodeGen/Hexagon
parent06c0eca3c09ee543256d157621e01667dbd32dd1 (diff)
downloadbcm5719-llvm-95614acc24c59461e8e2d8d8f2b2d285baac99f8.tar.gz
bcm5719-llvm-95614acc24c59461e8e2d8d8f2b2d285baac99f8.zip
[Hexagon] Replace multiple vector extracts with store-load combinations
llvm-svn: 323561
Diffstat (limited to 'llvm/test/CodeGen/Hexagon')
-rw-r--r--llvm/test/CodeGen/Hexagon/vextract-basic.mir26
1 files changed, 26 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/Hexagon/vextract-basic.mir b/llvm/test/CodeGen/Hexagon/vextract-basic.mir
new file mode 100644
index 00000000000..53e7c49b414
--- /dev/null
+++ b/llvm/test/CodeGen/Hexagon/vextract-basic.mir
@@ -0,0 +1,26 @@
+# RUN: llc -march=hexagon -mattr=+hvx,+hvx-length64b -run-pass hexagon-vextract %s -o - | FileCheck %s
+
+---
+name: fred
+tracksRegLiveness: true
+
+body: |
+ bb.0:
+ liveins: %r0, %r1, %v0
+ %0:hvxvr = COPY %v0
+ %1:intregs = COPY %r0
+ %2:intregs = COPY %r1
+ %3:intregs = A2_tfrsi 5
+ %4:intregs = V6_extractw %0, %1
+ ; CHECK: %[[A0:[0-9]+]]:intregs = A2_andir %{{[0-9]+}}, -4
+ ; CHECK: L4_loadri_rr %{{[0-9]+}}, %[[A0]], 0
+ %5:intregs = V6_extractw %0, %2
+ ; CHECK: %[[A1:[0-9]+]]:intregs = A2_andir %{{[0-9]+}}, -4
+ ; CHECK: L4_loadri_rr %{{[0-9]+}}, %[[A1]], 0
+ %6:intregs = V6_extractw %0, %3
+ ; Make sure the offset is 4, not 5.
+ ; CHECK: L2_loadri_io %{{[0-9]+}}, 4
+
+...
+
+
OpenPOWER on IntegriCloud