summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorQuentin Colombet <qcolombet@apple.com>2017-10-16 22:28:27 +0000
committerQuentin Colombet <qcolombet@apple.com>2017-10-16 22:28:27 +0000
commit7ff760d050a8e941f649e1d3d350d48828ba7d5b (patch)
tree323f0cb8fd9a9a40fd763344fc23b9e8a2a1dcba /test
parent9f219e8d892284417fa5c1f64b69a36b8602a06f (diff)
[AArch64][LegalizerInfo] Mark s128 G_BITCAST legal
We used to mark all G_BITCAST of 128-bit legal but only for vector types. Scalars of this size are just fine as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315945 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/CodeGen/AArch64/GlobalISel/legalize-simple.mir26
1 files changed, 26 insertions, 0 deletions
diff --git a/test/CodeGen/AArch64/GlobalISel/legalize-simple.mir b/test/CodeGen/AArch64/GlobalISel/legalize-simple.mir
index d2a02a3f65b..495ea6c7504 100644
--- a/test/CodeGen/AArch64/GlobalISel/legalize-simple.mir
+++ b/test/CodeGen/AArch64/GlobalISel/legalize-simple.mir
@@ -9,6 +9,9 @@
next:
ret void
}
+ define void @bitcast128() {
+ ret void
+ }
...
---
@@ -84,3 +87,26 @@ body: |
%15(<4 x s8>) = G_BITCAST %0
%16(<2 x s16>) = G_BITCAST %0
...
+
+---
+name: bitcast128
+tracksRegLiveness: true
+registers:
+ - { id: 0, class: _}
+ - { id: 1, class: _}
+ - { id: 2, class: _}
+ - { id: 3, class: _}
+body: |
+ bb.1:
+ liveins: %x0, %x1
+ ; CHECK-LABEL: bitcast128
+ ; This is legal and shouldn't be changed.
+ ; CHECK: %2(<2 x s64>) = G_BITCAST %3(s128)
+ %0(s64) = COPY %x0
+ %1(s64) = COPY %x1
+ %3(s128) = G_MERGE_VALUES %0(s64), %1(s64)
+ %2(<2 x s64>) = G_BITCAST %3(s128)
+ %q0 = COPY %2(<2 x s64>)
+ RET_ReallyLR implicit %q0
+
+...