summaryrefslogtreecommitdiff
path: root/test/CodeGen/AArch64/GlobalISel/legalize-combines.mir
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGen/AArch64/GlobalISel/legalize-combines.mir')
-rw-r--r--test/CodeGen/AArch64/GlobalISel/legalize-combines.mir50
1 files changed, 11 insertions, 39 deletions
diff --git a/test/CodeGen/AArch64/GlobalISel/legalize-combines.mir b/test/CodeGen/AArch64/GlobalISel/legalize-combines.mir
index fab6dcf433468..e3e0175d39ac5 100644
--- a/test/CodeGen/AArch64/GlobalISel/legalize-combines.mir
+++ b/test/CodeGen/AArch64/GlobalISel/legalize-combines.mir
@@ -3,7 +3,6 @@
--- |
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
target triple = "aarch64--"
- define void @test_combines_1() { ret void }
define void @test_combines_2() { ret void }
define void @test_combines_3() { ret void }
define void @test_combines_4() { ret void }
@@ -12,31 +11,6 @@
...
---
-name: test_combines_1
-body: |
- bb.0:
- liveins: %w0
-
- %0:_(s32) = COPY %w0
- %1:_(s8) = G_TRUNC %0
-
- ; Only one of these extracts can be eliminated, the offsets don't match
- ; properly in the other cases.
- ; CHECK-LABEL: name: test_combines_1
- ; CHECK: %2(s32) = G_SEQUENCE %1(s8), 1
- ; CHECK: %3(s8) = G_EXTRACT %2(s32), 0
- ; CHECK-NOT: G_EXTRACT
- ; CHECK: %5(s8) = G_EXTRACT %2(s32), 2
- ; CHECK: %6(s32) = G_ZEXT %1(s8)
-
- %2:_(s32) = G_SEQUENCE %1, 1
- %3:_(s8) = G_EXTRACT %2, 0
- %4:_(s8) = G_EXTRACT %2, 1
- %5:_(s8) = G_EXTRACT %2, 2
- %6:_(s32) = G_ZEXT %4
-...
-
----
name: test_combines_2
body: |
bb.0:
@@ -46,11 +20,11 @@ body: |
; Similarly, here the types don't match.
; CHECK-LABEL: name: test_combines_2
- ; CHECK: %2(s64) = G_SEQUENCE %0(s32), 0, %1(s32), 32
+ ; CHECK: %2(s64) = G_MERGE_VALUES %0(s32), %1(s32)
; CHECK: %3(s1) = G_EXTRACT %2(s64), 0
; CHECK: %4(s64) = G_EXTRACT %2(s64), 0
%1:_(s32) = G_ADD %0, %0
- %2:_(s64) = G_SEQUENCE %0, 0, %1, 32
+ %2:_(s64) = G_MERGE_VALUES %0, %1
%3:_(s1) = G_EXTRACT %2, 0
%4:_(s64) = G_EXTRACT %2, 0
...
@@ -69,9 +43,8 @@ body: |
; CHECK-NOT: G_EXTRACT
; CHECK: %5(s32) = G_ADD %0, %1
%1:_(s32) = G_ADD %0, %0
- %2:_(s64) = G_SEQUENCE %0, 0, %1, 32
- %3:_(s32) = G_EXTRACT %2, 0
- %4:_(s32) = G_EXTRACT %2, 32
+ %2:_(s64) = G_MERGE_VALUES %0, %1
+ %3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %2
%5:_(s32) = G_ADD %3, %4
...
@@ -86,7 +59,7 @@ body: |
; CHECK-LABEL: name: test_combines_4
; CHECK: %2(<2 x s32>) = G_EXTRACT %1(s128), 0
; CHECK: %3(<2 x s32>) = G_ADD %2, %2
- %1:_(s128) = G_SEQUENCE %0, 0, %0, 64
+ %1:_(s128) = G_MERGE_VALUES %0, %0
%2:_(<2 x s32>) = G_EXTRACT %1, 0
%3:_(<2 x s32>) = G_ADD %2, %2
...
@@ -100,13 +73,12 @@ body: |
%0:_(s32) = COPY %w0
; CHECK-LABEL: name: test_combines_5
- ; CHECK-NOT: G_SEQUENCE
+ ; CHECK-NOT: G_MERGE_VALUES
; CHECK-NOT: G_EXTRACT
; CHECK: %5(s32) = G_ADD %0, %1
%1:_(s32) = G_ADD %0, %0
- %2:_(s64) = G_SEQUENCE %0, 0, %1, 32
- %3:_(s32) = G_EXTRACT %2, 0
- %4:_(s32) = G_EXTRACT %2, 32
+ %2:_(s64) = G_MERGE_VALUES %0, %1
+ %3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %2
%5:_(s32) = G_ADD %3, %4
...
@@ -121,12 +93,12 @@ body: |
%0:_(s32) = COPY %w0
; Check that we replace all the uses of a G_EXTRACT.
- ; CHECK-NOT: G_SEQUENCE
+ ; CHECK-NOT: G_MERGE_VALUES
; CHECK-NOT: G_EXTRACT
; CHECK: %3(s32) = G_MUL %0, %0
; CHECK: %4(s32) = G_ADD %0, %3
- %1:_(s32) = G_SEQUENCE %0, 0
- %2:_(s32) = G_EXTRACT %1, 0
+ %1:_(s32) = G_MERGE_VALUES %0
+ %2:_(s32) = G_UNMERGE_VALUES %1
%3:_(s32) = G_MUL %2, %2
%4:_(s32) = G_ADD %2, %3
...