forked from OSchip/llvm-project
Canonicalize a large number of mir tests using update_mir_test_checks
This converts a large and somewhat arbitrary set of tests to use update_mir_test_checks. I ran the script on all of the tests I expect to need to modify for an upcoming mir syntax change and kept the ones that obviously didn't change the tests in ways that might make it harder to understand. llvm-svn: 316137
This commit is contained in:
parent
4309b66710
commit
d45849f703
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -O0 -run-pass=legalizer -global-isel %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -32,18 +33,18 @@ registers:
|
|||
body: |
|
||||
bb.0.entry:
|
||||
liveins: %x0, %x1, %x2, %x3
|
||||
; CHECK-LABEL: name: test_scalar_add_big
|
||||
; CHECK-NOT: G_MERGE_VALUES
|
||||
; CHECK-NOT: G_UNMERGE_VALUES
|
||||
; CHECK-DAG: [[CARRY0_32:%.*]](s32) = G_CONSTANT i32 0
|
||||
; CHECK-DAG: [[CARRY0:%[0-9]+]](s1) = G_TRUNC [[CARRY0_32]]
|
||||
; CHECK: [[RES_LO:%.*]](s64), [[CARRY:%.*]](s1) = G_UADDE %0, %2, [[CARRY0]]
|
||||
; CHECK: [[RES_HI:%.*]](s64), {{%.*}}(s1) = G_UADDE %1, %3, [[CARRY]]
|
||||
; CHECK-NOT: G_MERGE_VALUES
|
||||
; CHECK-NOT: G_UNMERGE_VALUES
|
||||
; CHECK: %x0 = COPY [[RES_LO]]
|
||||
; CHECK: %x1 = COPY [[RES_HI]]
|
||||
|
||||
; CHECK-LABEL: name: test_scalar_add_big
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %x0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s64) = COPY %x1
|
||||
; CHECK: [[COPY2:%[0-9]+]](s64) = COPY %x2
|
||||
; CHECK: [[COPY3:%[0-9]+]](s64) = COPY %x3
|
||||
; CHECK: [[C:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; CHECK: [[TRUNC:%[0-9]+]](s1) = G_TRUNC [[C]](s32)
|
||||
; CHECK: [[UADDE:%[0-9]+]](s64), [[UADDE1:%[0-9]+]](s1) = G_UADDE [[COPY]], [[COPY2]], [[TRUNC]]
|
||||
; CHECK: [[UADDE2:%[0-9]+]](s64), [[UADDE3:%[0-9]+]](s1) = G_UADDE [[COPY1]], [[COPY3]], [[UADDE1]]
|
||||
; CHECK: %x0 = COPY [[UADDE]](s64)
|
||||
; CHECK: %x1 = COPY [[UADDE2]](s64)
|
||||
%0(s64) = COPY %x0
|
||||
%1(s64) = COPY %x1
|
||||
%2(s64) = COPY %x2
|
||||
|
@ -68,14 +69,16 @@ registers:
|
|||
body: |
|
||||
bb.0.entry:
|
||||
liveins: %x0, %x1, %x2, %x3
|
||||
; CHECK-LABEL: name: test_scalar_add_small
|
||||
; CHECK: [[A:%.*]](s64) = COPY %x0
|
||||
; CHECK: [[B:%.*]](s64) = COPY %x1
|
||||
; CHECK: [[OP0:%.*]](s32) = G_TRUNC [[A]]
|
||||
; CHECK: [[OP1:%.*]](s32) = G_TRUNC [[B]]
|
||||
; CHECK: [[RES32:%.*]](s32) = G_ADD [[OP0]], [[OP1]]
|
||||
; CHECK: [[RES:%.*]](s8) = G_TRUNC [[RES32]](s32)
|
||||
|
||||
; CHECK-LABEL: name: test_scalar_add_small
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %x0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s64) = COPY %x1
|
||||
; CHECK: [[TRUNC:%[0-9]+]](s32) = G_TRUNC [[COPY]](s64)
|
||||
; CHECK: [[TRUNC1:%[0-9]+]](s32) = G_TRUNC [[COPY1]](s64)
|
||||
; CHECK: [[ADD:%[0-9]+]](s32) = G_ADD [[TRUNC]], [[TRUNC1]]
|
||||
; CHECK: [[TRUNC2:%[0-9]+]](s8) = G_TRUNC [[ADD]](s32)
|
||||
; CHECK: [[ANYEXT:%[0-9]+]](s64) = G_ANYEXT [[TRUNC2]](s8)
|
||||
; CHECK: %x0 = COPY [[ANYEXT]](s64)
|
||||
%0(s64) = COPY %x0
|
||||
%1(s64) = COPY %x1
|
||||
%2(s8) = G_TRUNC %0
|
||||
|
@ -100,16 +103,16 @@ registers:
|
|||
body: |
|
||||
bb.0.entry:
|
||||
liveins: %q0, %q1, %q2, %q3
|
||||
; CHECK-LABEL: name: test_vector_add
|
||||
; CHECK-NOT: G_EXTRACT
|
||||
; CHECK-NOT: G_SEQUENCE
|
||||
; CHECK: [[RES_LO:%.*]](<2 x s64>) = G_ADD %0, %2
|
||||
; CHECK: [[RES_HI:%.*]](<2 x s64>) = G_ADD %1, %3
|
||||
; CHECK-NOT: G_EXTRACT
|
||||
; CHECK-NOT: G_SEQUENCE
|
||||
; CHECK: %q0 = COPY [[RES_LO]]
|
||||
; CHECK: %q1 = COPY [[RES_HI]]
|
||||
|
||||
; CHECK-LABEL: name: test_vector_add
|
||||
; CHECK: [[COPY:%[0-9]+]](<2 x s64>) = COPY %q0
|
||||
; CHECK: [[COPY1:%[0-9]+]](<2 x s64>) = COPY %q1
|
||||
; CHECK: [[COPY2:%[0-9]+]](<2 x s64>) = COPY %q2
|
||||
; CHECK: [[COPY3:%[0-9]+]](<2 x s64>) = COPY %q3
|
||||
; CHECK: [[ADD:%[0-9]+]](<2 x s64>) = G_ADD [[COPY]], [[COPY2]]
|
||||
; CHECK: [[ADD1:%[0-9]+]](<2 x s64>) = G_ADD [[COPY1]], [[COPY3]]
|
||||
; CHECK: %q0 = COPY [[ADD]](<2 x s64>)
|
||||
; CHECK: %q1 = COPY [[ADD1]](<2 x s64>)
|
||||
%0(<2 x s64>) = COPY %q0
|
||||
%1(<2 x s64>) = COPY %q1
|
||||
%2(<2 x s64>) = COPY %q2
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -O0 -run-pass=legalizer -global-isel %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -21,14 +22,17 @@ registers:
|
|||
body: |
|
||||
bb.0.entry:
|
||||
liveins: %x0, %x1, %x2, %x3
|
||||
; CHECK-LABEL: name: test_scalar_and_small
|
||||
; CHECK: [[A:%.*]](s64) = COPY %x0
|
||||
; CHECK: [[B:%.*]](s64) = COPY %x1
|
||||
; CHECK: [[OP0:%.*]](s32) = G_TRUNC [[A]]
|
||||
; CHECK: [[OP1:%.*]](s32) = G_TRUNC [[B]]
|
||||
; CHECK: [[RES32:%.*]](s32) = G_AND [[OP0]], [[OP1]]
|
||||
; CHECK: [[RES:%.*]](s8) = G_TRUNC [[RES32]](s32)
|
||||
|
||||
; CHECK-LABEL: name: test_scalar_and_small
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %x0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s64) = COPY %x1
|
||||
; CHECK: [[TRUNC:%[0-9]+]](s8) = G_TRUNC [[COPY]](s64)
|
||||
; CHECK: [[TRUNC1:%[0-9]+]](s32) = G_TRUNC [[COPY]](s64)
|
||||
; CHECK: [[TRUNC2:%[0-9]+]](s32) = G_TRUNC [[COPY1]](s64)
|
||||
; CHECK: [[AND:%[0-9]+]](s32) = G_AND [[TRUNC1]], [[TRUNC2]]
|
||||
; CHECK: [[TRUNC3:%[0-9]+]](s8) = G_TRUNC [[AND]](s32)
|
||||
; CHECK: [[ANYEXT:%[0-9]+]](s64) = G_ANYEXT [[TRUNC]](s8)
|
||||
; CHECK: %x0 = COPY [[ANYEXT]](s64)
|
||||
%0(s64) = COPY %x0
|
||||
%1(s64) = COPY %x1
|
||||
%2(s8) = G_TRUNC %0
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -O0 -run-pass=legalizer -global-isel %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -16,13 +17,15 @@ body: |
|
|||
bb.0:
|
||||
liveins: %w0
|
||||
|
||||
; Here the types don't match.
|
||||
; CHECK-LABEL: name: test_combines_2
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[ADD:%[0-9]+]](s32) = G_ADD [[COPY]], [[COPY]]
|
||||
; CHECK: [[MV:%[0-9]+]](s64) = G_MERGE_VALUES [[COPY]](s32), [[ADD]](s32)
|
||||
; CHECK: [[EXTRACT:%[0-9]+]](s1) = G_EXTRACT [[MV]](s64), 0
|
||||
; CHECK: [[EXTRACT1:%[0-9]+]](s64) = G_EXTRACT [[MV]](s64), 0
|
||||
%0:_(s32) = COPY %w0
|
||||
|
||||
; Similarly, here the types don't match.
|
||||
; CHECK-LABEL: name: test_combines_2
|
||||
; 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_MERGE_VALUES %0, %1
|
||||
%3:_(s1) = G_EXTRACT %2, 0
|
||||
|
@ -35,13 +38,12 @@ body: |
|
|||
bb.0:
|
||||
liveins: %w0
|
||||
|
||||
; CHECK-LABEL: name: test_combines_3
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[ADD:%[0-9]+]](s32) = G_ADD [[COPY]], [[COPY]]
|
||||
; CHECK: [[ADD1:%[0-9]+]](s32) = G_ADD [[COPY]], [[ADD]]
|
||||
%0:_(s32) = COPY %w0
|
||||
|
||||
; CHECK-LABEL: name: test_combines_3
|
||||
; CHECK: %1(s32) = G_ADD %0, %0
|
||||
; CHECK-NOT: G_SEQUENCE
|
||||
; CHECK-NOT: G_EXTRACT
|
||||
; CHECK: %5(s32) = G_ADD %0, %1
|
||||
%1:_(s32) = G_ADD %0, %0
|
||||
%2:_(s64) = G_MERGE_VALUES %0, %1
|
||||
%3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %2
|
||||
|
@ -54,11 +56,12 @@ body: |
|
|||
bb.0:
|
||||
liveins: %x0
|
||||
|
||||
; CHECK-LABEL: name: test_combines_4
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %x0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s64) = COPY [[COPY]](s64)
|
||||
; CHECK: [[ADD:%[0-9]+]](s64) = G_ADD [[COPY1]], [[COPY1]]
|
||||
%0:_(s64) = COPY %x0
|
||||
|
||||
; CHECK-LABEL: name: test_combines_4
|
||||
; CHECK: %2(s64) = COPY %0(s64)
|
||||
; CHECK: %3(s64) = G_ADD %2, %2
|
||||
%1:_(s128) = G_MERGE_VALUES %0, %0
|
||||
%2:_(s64) = G_EXTRACT %1, 0
|
||||
%3:_(s64) = G_ADD %2, %2
|
||||
|
@ -70,12 +73,12 @@ body: |
|
|||
bb.0:
|
||||
liveins: %w0
|
||||
|
||||
; CHECK-LABEL: name: test_combines_5
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[ADD:%[0-9]+]](s32) = G_ADD [[COPY]], [[COPY]]
|
||||
; CHECK: [[ADD1:%[0-9]+]](s32) = G_ADD [[COPY]], [[ADD]]
|
||||
%0:_(s32) = COPY %w0
|
||||
|
||||
; CHECK-LABEL: name: test_combines_5
|
||||
; 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_MERGE_VALUES %0, %1
|
||||
%3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %2
|
||||
|
@ -88,15 +91,13 @@ body: |
|
|||
bb.0:
|
||||
liveins: %w0
|
||||
|
||||
; Check that we replace all the uses of a G_EXTRACT.
|
||||
; CHECK-LABEL: name: test_combines_6
|
||||
; CHECK: %0(s32) = COPY %w0
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[MUL:%[0-9]+]](s32) = G_MUL [[COPY]], [[COPY]]
|
||||
; CHECK: [[ADD:%[0-9]+]](s32) = G_ADD [[COPY]], [[MUL]]
|
||||
%0:_(s32) = COPY %w0
|
||||
|
||||
; Check that we replace all the uses of a G_EXTRACT.
|
||||
; 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_MERGE_VALUES %0
|
||||
%2:_(s32) = G_UNMERGE_VALUES %1
|
||||
%3:_(s32) = G_MUL %2, %2
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -O0 -run-pass=legalizer -global-isel %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -26,17 +27,17 @@ registers:
|
|||
- { id: 5, class: _ }
|
||||
body: |
|
||||
bb.0.entry:
|
||||
; CHECK-LABEL: name: test_constant
|
||||
; CHECK: [[TMP:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; CHECK: %0(s1) = G_TRUNC [[TMP]]
|
||||
; CHECK: [[TMP:%[0-9]+]](s32) = G_CONSTANT i32 42
|
||||
; CHECK: %1(s8) = G_TRUNC [[TMP]]
|
||||
; CHECK: [[TMP:%[0-9]+]](s32) = G_CONSTANT i32 -1
|
||||
; CHECK: %2(s16) = G_TRUNC [[TMP]]
|
||||
; CHECK: %3(s32) = G_CONSTANT i32 -1
|
||||
; CHECK: %4(s64) = G_CONSTANT i64 1
|
||||
; CHECK: %5(s64) = G_CONSTANT i64 0
|
||||
|
||||
; CHECK-LABEL: name: test_constant
|
||||
; CHECK: [[C:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; CHECK: [[TRUNC:%[0-9]+]](s1) = G_TRUNC [[C]](s32)
|
||||
; CHECK: [[C1:%[0-9]+]](s32) = G_CONSTANT i32 42
|
||||
; CHECK: [[TRUNC1:%[0-9]+]](s8) = G_TRUNC [[C1]](s32)
|
||||
; CHECK: [[C2:%[0-9]+]](s32) = G_CONSTANT i32 -1
|
||||
; CHECK: [[TRUNC2:%[0-9]+]](s16) = G_TRUNC [[C2]](s32)
|
||||
; CHECK: [[C3:%[0-9]+]](s32) = G_CONSTANT i32 -1
|
||||
; CHECK: [[C4:%[0-9]+]](s64) = G_CONSTANT i64 1
|
||||
; CHECK: [[C5:%[0-9]+]](s64) = G_CONSTANT i64 0
|
||||
%0(s1) = G_CONSTANT i1 0
|
||||
%1(s8) = G_CONSTANT i8 42
|
||||
%2(s16) = G_CONSTANT i16 65535
|
||||
|
@ -53,12 +54,12 @@ registers:
|
|||
- { id: 2, class: _ }
|
||||
body: |
|
||||
bb.0.entry:
|
||||
; CHECK-LABEL: name: test_fconstant
|
||||
; CHECK: %0(s32) = G_FCONSTANT float 1.000000e+00
|
||||
; CHECK: %1(s64) = G_FCONSTANT double 2.000000e+00
|
||||
; CHECK: [[TMP:%[0-9]+]](s32) = G_FCONSTANT half 0xH0000
|
||||
; CHECK: %2(s16) = G_FPTRUNC [[TMP]]
|
||||
|
||||
; CHECK-LABEL: name: test_fconstant
|
||||
; CHECK: [[C:%[0-9]+]](s32) = G_FCONSTANT float 1.000000e+00
|
||||
; CHECK: [[C1:%[0-9]+]](s64) = G_FCONSTANT double 2.000000e+00
|
||||
; CHECK: [[C2:%[0-9]+]](s32) = G_FCONSTANT half 0xH0000
|
||||
; CHECK: [[FPTRUNC:%[0-9]+]](s16) = G_FPTRUNC [[C2]](s32)
|
||||
%0(s32) = G_FCONSTANT float 1.0
|
||||
%1(s64) = G_FCONSTANT double 2.0
|
||||
%2(s16) = G_FCONSTANT half 0.0
|
||||
|
@ -70,8 +71,8 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
body: |
|
||||
bb.0:
|
||||
; CHECK-LABEL: name: test_global
|
||||
; CHECK: %0(p0) = G_GLOBAL_VALUE @var
|
||||
|
||||
; CHECK-LABEL: name: test_global
|
||||
; CHECK: [[GV:%[0-9]+]](p0) = G_GLOBAL_VALUE @var
|
||||
%0(p0) = G_GLOBAL_VALUE @var
|
||||
...
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=aarch64-linux-gnu -O0 -run-pass=legalizer -global-isel %s -o - | FileCheck %s
|
||||
|
||||
---
|
||||
|
@ -10,10 +11,16 @@ body: |
|
|||
; value stored is forwarded directly from first load.
|
||||
|
||||
; CHECK-LABEL: name: test_extracts_1
|
||||
; CHECK: [[LO:%[0-9]+]](s64) = G_LOAD
|
||||
; CHECK: {{%[0-9]+}}(s64) = G_LOAD
|
||||
; CHECK: [[VAL:%[0-9]+]](s64) = COPY [[LO]]
|
||||
; CHECK: G_STORE [[VAL]]
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %x0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s32) = COPY %w1
|
||||
; CHECK: [[COPY2:%[0-9]+]](p0) = COPY %x2
|
||||
; CHECK: [[LOAD:%[0-9]+]](s64) = G_LOAD [[COPY2]](p0) :: (load 16)
|
||||
; CHECK: [[C:%[0-9]+]](s64) = G_CONSTANT i64 8
|
||||
; CHECK: [[GEP:%[0-9]+]](p0) = G_GEP [[COPY2]], [[C]](s64)
|
||||
; CHECK: [[LOAD1:%[0-9]+]](s64) = G_LOAD [[GEP]](p0) :: (load 16)
|
||||
; CHECK: [[COPY3:%[0-9]+]](s64) = COPY [[LOAD]](s64)
|
||||
; CHECK: G_STORE [[COPY3]](s64), [[COPY2]](p0) :: (store 8)
|
||||
; CHECK: RET_ReallyLR
|
||||
%0:_(s64) = COPY %x0
|
||||
%1:_(s32) = COPY %w1
|
||||
%2:_(p0) = COPY %x2
|
||||
|
@ -31,13 +38,19 @@ body: |
|
|||
|
||||
; Low extraction wipes takes whole low register. High extraction is real.
|
||||
; CHECK-LABEL: name: test_extracts_2
|
||||
; CHECK: [[LO_TMP:%[0-9]+]](s64) = G_LOAD
|
||||
; CHECK: [[HI:%[0-9]+]](s64) = G_LOAD
|
||||
; CHECK: [[LO:%[0-9]+]](s64) = COPY [[LO_TMP]]
|
||||
; CHECK: [[NEWHI_TMP:%[0-9]+]](s32) = G_EXTRACT [[HI]](s64), 0
|
||||
; CHECK: [[NEWHI:%[0-9]+]](s32) = COPY [[NEWHI_TMP]]
|
||||
; CHECK: G_STORE [[LO]]
|
||||
; CHECK: G_STORE [[NEWHI]]
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %x0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s32) = COPY %w1
|
||||
; CHECK: [[COPY2:%[0-9]+]](p0) = COPY %x2
|
||||
; CHECK: [[LOAD:%[0-9]+]](s64) = G_LOAD [[COPY2]](p0) :: (load 16)
|
||||
; CHECK: [[C:%[0-9]+]](s64) = G_CONSTANT i64 8
|
||||
; CHECK: [[GEP:%[0-9]+]](p0) = G_GEP [[COPY2]], [[C]](s64)
|
||||
; CHECK: [[LOAD1:%[0-9]+]](s64) = G_LOAD [[GEP]](p0) :: (load 16)
|
||||
; CHECK: [[COPY3:%[0-9]+]](s64) = COPY [[LOAD]](s64)
|
||||
; CHECK: [[EXTRACT:%[0-9]+]](s32) = G_EXTRACT [[LOAD1]](s64), 0
|
||||
; CHECK: [[COPY4:%[0-9]+]](s32) = COPY [[EXTRACT]](s32)
|
||||
; CHECK: G_STORE [[COPY3]](s64), [[COPY2]](p0) :: (store 8)
|
||||
; CHECK: G_STORE [[COPY4]](s32), [[COPY2]](p0) :: (store 4)
|
||||
; CHECK: RET_ReallyLR
|
||||
%0:_(s64) = COPY %x0
|
||||
%1:_(s32) = COPY %w1
|
||||
%2:_(p0) = COPY %x2
|
||||
|
@ -57,9 +70,12 @@ body: |
|
|||
|
||||
|
||||
; CHECK-LABEL: name: test_extracts_3
|
||||
; CHECK: [[LO:%[0-9]+]](s32) = G_EXTRACT %0(s64), 32
|
||||
; CHECK: [[HI:%[0-9]+]](s32) = G_EXTRACT %1(s64), 0
|
||||
; CHECK: %3(s64) = G_MERGE_VALUES [[LO]](s32), [[HI]](s32)
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %x0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s64) = COPY %x1
|
||||
; CHECK: [[EXTRACT:%[0-9]+]](s32) = G_EXTRACT [[COPY]](s64), 32
|
||||
; CHECK: [[EXTRACT1:%[0-9]+]](s32) = G_EXTRACT [[COPY1]](s64), 0
|
||||
; CHECK: [[MV:%[0-9]+]](s64) = G_MERGE_VALUES [[EXTRACT]](s32), [[EXTRACT1]](s32)
|
||||
; CHECK: RET_ReallyLR
|
||||
%0:_(s64) = COPY %x0
|
||||
%1:_(s64) = COPY %x1
|
||||
%2:_(s128) = G_MERGE_VALUES %0, %1
|
||||
|
@ -75,8 +91,11 @@ body: |
|
|||
|
||||
|
||||
; CHECK-LABEL: name: test_extracts_4
|
||||
; CHECK: [[LO_TMP:%[0-9]+]](s32) = G_EXTRACT %0(s64), 32
|
||||
; CHECK: %3(s32) = COPY [[LO_TMP]]
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %x0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s64) = COPY %x1
|
||||
; CHECK: [[EXTRACT:%[0-9]+]](s32) = G_EXTRACT [[COPY]](s64), 32
|
||||
; CHECK: [[COPY2:%[0-9]+]](s32) = COPY [[EXTRACT]](s32)
|
||||
; CHECK: RET_ReallyLR
|
||||
%0:_(s64) = COPY %x0
|
||||
%1:_(s64) = COPY %x1
|
||||
%2:_(s128) = G_MERGE_VALUES %0, %1
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -O0 -run-pass=legalizer -global-isel %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -21,10 +22,10 @@ body: |
|
|||
bb.1:
|
||||
liveins: %s0
|
||||
; CHECK-LABEL: name: test_fneg_f32
|
||||
; CHECK: [[VAR:%[0-9]+]](s32) = COPY %s0
|
||||
; CHECK: [[ZERO:%[0-9]+]](s32) = G_FCONSTANT float -0.000000e+00
|
||||
; CHECK: [[RES:%[0-9]+]](s32) = G_FSUB [[ZERO]], [[VAR]]
|
||||
; CHECK: %s0 = COPY [[RES]](s32)
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %s0
|
||||
; CHECK: [[C:%[0-9]+]](s32) = G_FCONSTANT float -0.000000e+00
|
||||
; CHECK: [[FSUB:%[0-9]+]](s32) = G_FSUB [[C]], [[COPY]]
|
||||
; CHECK: %s0 = COPY [[FSUB]](s32)
|
||||
%0(s32) = COPY %s0
|
||||
%1(s32) = G_FNEG %0
|
||||
%s0 = COPY %1(s32)
|
||||
|
@ -38,10 +39,10 @@ body: |
|
|||
bb.1:
|
||||
liveins: %d0
|
||||
; CHECK-LABEL: name: test_fneg_f64
|
||||
; CHECK: [[VAR:%[0-9]+]](s64) = COPY %d0
|
||||
; CHECK: [[ZERO:%[0-9]+]](s64) = G_FCONSTANT double -0.000000e+00
|
||||
; CHECK: [[RES:%[0-9]+]](s64) = G_FSUB [[ZERO]], [[VAR]]
|
||||
; CHECK: %d0 = COPY [[RES]](s64)
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %d0
|
||||
; CHECK: [[C:%[0-9]+]](s64) = G_FCONSTANT double -0.000000e+00
|
||||
; CHECK: [[FSUB:%[0-9]+]](s64) = G_FSUB [[C]], [[COPY]]
|
||||
; CHECK: %d0 = COPY [[FSUB]](s64)
|
||||
%0(s64) = COPY %d0
|
||||
%1(s64) = G_FNEG %0
|
||||
%d0 = COPY %1(s64)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -O0 -run-pass=legalizer -global-isel %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -29,10 +30,10 @@ name: test_fptosi_s32_s32
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %w0
|
||||
%0:_(s32) = COPY %w0
|
||||
|
||||
; CHECK-LABEL: name: test_fptosi_s32_s32
|
||||
; CHECK: %1(s32) = G_FPTOSI %0
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[FPTOSI:%[0-9]+]](s32) = G_FPTOSI [[COPY]](s32)
|
||||
%0:_(s32) = COPY %w0
|
||||
%1:_(s32) = G_FPTOSI %0
|
||||
...
|
||||
|
||||
|
@ -41,10 +42,10 @@ name: test_fptoui_s32_s32
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %w0
|
||||
%0:_(s32) = COPY %w0
|
||||
|
||||
; CHECK-LABEL: name: test_fptoui_s32_s32
|
||||
; CHECK: %1(s32) = G_FPTOUI %0
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[FPTOUI:%[0-9]+]](s32) = G_FPTOUI [[COPY]](s32)
|
||||
%0:_(s32) = COPY %w0
|
||||
%1:_(s32) = G_FPTOUI %0
|
||||
...
|
||||
|
||||
|
@ -53,10 +54,10 @@ name: test_fptosi_s32_s64
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %x0
|
||||
%0:_(s64) = COPY %x0
|
||||
|
||||
; CHECK-LABEL: name: test_fptosi_s32_s64
|
||||
; CHECK: %1(s32) = G_FPTOSI %0
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %x0
|
||||
; CHECK: [[FPTOSI:%[0-9]+]](s32) = G_FPTOSI [[COPY]](s64)
|
||||
%0:_(s64) = COPY %x0
|
||||
%1:_(s32) = G_FPTOSI %0
|
||||
...
|
||||
|
||||
|
@ -65,10 +66,10 @@ name: test_fptoui_s32_s64
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %x0
|
||||
%0:_(s64) = COPY %x0
|
||||
|
||||
; CHECK-LABEL: name: test_fptoui_s32_s64
|
||||
; CHECK: %1(s32) = G_FPTOUI %0
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %x0
|
||||
; CHECK: [[FPTOUI:%[0-9]+]](s32) = G_FPTOUI [[COPY]](s64)
|
||||
%0:_(s64) = COPY %x0
|
||||
%1:_(s32) = G_FPTOUI %0
|
||||
...
|
||||
|
||||
|
@ -77,10 +78,10 @@ name: test_fptosi_s64_s32
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %w0
|
||||
%0:_(s32) = COPY %w0
|
||||
|
||||
; CHECK-LABEL: name: test_fptosi_s64_s32
|
||||
; CHECK: %1(s64) = G_FPTOSI %0
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[FPTOSI:%[0-9]+]](s64) = G_FPTOSI [[COPY]](s32)
|
||||
%0:_(s32) = COPY %w0
|
||||
%1:_(s64) = G_FPTOSI %0
|
||||
...
|
||||
|
||||
|
@ -89,10 +90,10 @@ name: test_fptoui_s64_s32
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %w0
|
||||
%0:_(s32) = COPY %w0
|
||||
|
||||
; CHECK-LABEL: name: test_fptoui_s64_s32
|
||||
; CHECK: %1(s64) = G_FPTOUI %0
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[FPTOUI:%[0-9]+]](s64) = G_FPTOUI [[COPY]](s32)
|
||||
%0:_(s32) = COPY %w0
|
||||
%1:_(s64) = G_FPTOUI %0
|
||||
...
|
||||
|
||||
|
@ -101,10 +102,10 @@ name: test_fptosi_s64_s64
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %x0
|
||||
%0:_(s64) = COPY %x0
|
||||
|
||||
; CHECK-LABEL: name: test_fptosi_s64_s64
|
||||
; CHECK: %1(s64) = G_FPTOSI %0
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %x0
|
||||
; CHECK: [[FPTOSI:%[0-9]+]](s64) = G_FPTOSI [[COPY]](s64)
|
||||
%0:_(s64) = COPY %x0
|
||||
%1:_(s64) = G_FPTOSI %0
|
||||
...
|
||||
|
||||
|
@ -113,10 +114,10 @@ name: test_fptoui_s64_s64
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %x0
|
||||
%0:_(s64) = COPY %x0
|
||||
|
||||
; CHECK-LABEL: name: test_fptoui_s64_s64
|
||||
; CHECK: %1(s64) = G_FPTOUI %0
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %x0
|
||||
; CHECK: [[FPTOUI:%[0-9]+]](s64) = G_FPTOUI [[COPY]](s64)
|
||||
%0:_(s64) = COPY %x0
|
||||
%1:_(s64) = G_FPTOUI %0
|
||||
...
|
||||
|
||||
|
@ -127,11 +128,11 @@ name: test_fptosi_s1_s32
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %w0
|
||||
%0:_(s32) = COPY %w0
|
||||
|
||||
; CHECK-LABEL: name: test_fptosi_s1_s32
|
||||
; CHECK: %2(s32) = G_FPTOSI %0
|
||||
; CHECK: %1(s1) = G_TRUNC %2
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[FPTOSI:%[0-9]+]](s32) = G_FPTOSI [[COPY]](s32)
|
||||
; CHECK: [[TRUNC:%[0-9]+]](s1) = G_TRUNC [[FPTOSI]](s32)
|
||||
%0:_(s32) = COPY %w0
|
||||
%1:_(s1) = G_FPTOSI %0
|
||||
...
|
||||
|
||||
|
@ -140,11 +141,11 @@ name: test_fptoui_s1_s32
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %w0
|
||||
%0:_(s32) = COPY %w0
|
||||
|
||||
; CHECK-LABEL: name: test_fptoui_s1_s32
|
||||
; CHECK: %2(s32) = G_FPTOUI %0
|
||||
; CHECK: %1(s1) = G_TRUNC %2
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[FPTOUI:%[0-9]+]](s32) = G_FPTOUI [[COPY]](s32)
|
||||
; CHECK: [[TRUNC:%[0-9]+]](s1) = G_TRUNC [[FPTOUI]](s32)
|
||||
%0:_(s32) = COPY %w0
|
||||
%1:_(s1) = G_FPTOUI %0
|
||||
...
|
||||
|
||||
|
@ -153,11 +154,11 @@ name: test_fptosi_s8_s64
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %x0
|
||||
%0:_(s64) = COPY %x0
|
||||
|
||||
; CHECK-LABEL: name: test_fptosi_s8_s64
|
||||
; CHECK: %2(s32) = G_FPTOSI %0
|
||||
; CHECK: %1(s8) = G_TRUNC %2
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %x0
|
||||
; CHECK: [[FPTOSI:%[0-9]+]](s32) = G_FPTOSI [[COPY]](s64)
|
||||
; CHECK: [[TRUNC:%[0-9]+]](s8) = G_TRUNC [[FPTOSI]](s32)
|
||||
%0:_(s64) = COPY %x0
|
||||
%1:_(s8) = G_FPTOSI %0
|
||||
...
|
||||
|
||||
|
@ -166,11 +167,11 @@ name: test_fptoui_s8_s64
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %x0
|
||||
%0:_(s64) = COPY %x0
|
||||
|
||||
; CHECK-LABEL: name: test_fptoui_s8_s64
|
||||
; CHECK: %2(s32) = G_FPTOUI %0
|
||||
; CHECK: %1(s8) = G_TRUNC %2
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %x0
|
||||
; CHECK: [[FPTOUI:%[0-9]+]](s32) = G_FPTOUI [[COPY]](s64)
|
||||
; CHECK: [[TRUNC:%[0-9]+]](s8) = G_TRUNC [[FPTOUI]](s32)
|
||||
%0:_(s64) = COPY %x0
|
||||
%1:_(s8) = G_FPTOUI %0
|
||||
...
|
||||
|
||||
|
@ -179,11 +180,11 @@ name: test_fptosi_s16_s32
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %w0
|
||||
%0:_(s32) = COPY %w0
|
||||
|
||||
; CHECK-LABEL: name: test_fptosi_s16_s32
|
||||
; CHECK: %2(s32) = G_FPTOSI %0
|
||||
; CHECK: %1(s16) = G_TRUNC %2
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[FPTOSI:%[0-9]+]](s32) = G_FPTOSI [[COPY]](s32)
|
||||
; CHECK: [[TRUNC:%[0-9]+]](s16) = G_TRUNC [[FPTOSI]](s32)
|
||||
%0:_(s32) = COPY %w0
|
||||
%1:_(s16) = G_FPTOSI %0
|
||||
...
|
||||
|
||||
|
@ -192,10 +193,10 @@ name: test_fptoui_s16_s32
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %w0
|
||||
%0:_(s32) = COPY %w0
|
||||
|
||||
; CHECK-LABEL: name: test_fptoui_s16_s32
|
||||
; CHECK: %2(s32) = G_FPTOUI %0
|
||||
; CHECK: %1(s16) = G_TRUNC %2
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[FPTOUI:%[0-9]+]](s32) = G_FPTOUI [[COPY]](s32)
|
||||
; CHECK: [[TRUNC:%[0-9]+]](s16) = G_TRUNC [[FPTOUI]](s32)
|
||||
%0:_(s32) = COPY %w0
|
||||
%1:_(s16) = G_FPTOUI %0
|
||||
...
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -O0 -run-pass=legalizer -global-isel %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -19,16 +20,16 @@ registers:
|
|||
body: |
|
||||
bb.0.entry:
|
||||
liveins: %x0, %x1, %x2, %x3
|
||||
|
||||
; CHECK-LABEL: name: test_gep_small
|
||||
; CHECK: [[A:%.*]](p0) = COPY %x0
|
||||
; CHECK: [[B:%.*]](s64) = COPY %x1
|
||||
; CHECK: [[C:%.*]](s64) = G_CONSTANT i64 56
|
||||
; CHECK: [[SRC:%.*]](s64) = COPY [[B]](s64)
|
||||
; CHECK: [[SHL:%.*]](s64) = G_SHL [[SRC]], [[C]]
|
||||
; CHECK: [[SEXT:%.*]](s64) = G_ASHR [[SHL]], [[C]]
|
||||
; CHECK: G_GEP [[A]], [[SEXT]]
|
||||
|
||||
|
||||
; CHECK: [[COPY:%[0-9]+]](p0) = COPY %x0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s64) = COPY %x1
|
||||
; CHECK: [[C:%[0-9]+]](s64) = G_CONSTANT i64 56
|
||||
; CHECK: [[COPY2:%[0-9]+]](s64) = COPY [[COPY1]](s64)
|
||||
; CHECK: [[SHL:%[0-9]+]](s64) = G_SHL [[COPY2]], [[C]]
|
||||
; CHECK: [[ASHR:%[0-9]+]](s64) = G_ASHR [[SHL]], [[C]]
|
||||
; CHECK: [[GEP:%[0-9]+]](p0) = G_GEP [[COPY]], [[ASHR]](s64)
|
||||
; CHECK: %x0 = COPY [[GEP]](p0)
|
||||
%0(p0) = COPY %x0
|
||||
%1(s64) = COPY %x1
|
||||
%2(s8) = G_TRUNC %1
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -O0 -run-pass=legalizer -global-isel %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -14,10 +15,10 @@ registers:
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %x0
|
||||
; CHECK-LABEL: name: test_copy
|
||||
; CHECK: %0(s64) = COPY %x0
|
||||
; CHECK-NEXT: %x0 = COPY %0
|
||||
|
||||
; CHECK-LABEL: name: test_copy
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %x0
|
||||
; CHECK: %x0 = COPY [[COPY]](s64)
|
||||
%0(s64) = COPY %x0
|
||||
%x0 = COPY %0
|
||||
...
|
||||
|
@ -26,8 +27,8 @@ body: |
|
|||
name: test_targetspecific
|
||||
body: |
|
||||
bb.0:
|
||||
|
||||
; CHECK-LABEL: name: test_targetspecific
|
||||
; CHECK: RET_ReallyLR
|
||||
|
||||
RET_ReallyLR
|
||||
...
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -O0 -run-pass=legalizer -global-isel %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -29,10 +30,10 @@ name: test_sitofp_s32_s32
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %w0
|
||||
%0:_(s32) = COPY %w0
|
||||
|
||||
; CHECK-LABEL: name: test_sitofp_s32_s32
|
||||
; CHECK: %1(s32) = G_SITOFP %0
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[SITOFP:%[0-9]+]](s32) = G_SITOFP [[COPY]](s32)
|
||||
%0:_(s32) = COPY %w0
|
||||
%1:_(s32) = G_SITOFP %0
|
||||
...
|
||||
|
||||
|
@ -41,10 +42,10 @@ name: test_uitofp_s32_s32
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %w0
|
||||
%0:_(s32) = COPY %w0
|
||||
|
||||
; CHECK-LABEL: name: test_uitofp_s32_s32
|
||||
; CHECK: %1(s32) = G_UITOFP %0
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[UITOFP:%[0-9]+]](s32) = G_UITOFP [[COPY]](s32)
|
||||
%0:_(s32) = COPY %w0
|
||||
%1:_(s32) = G_UITOFP %0
|
||||
...
|
||||
|
||||
|
@ -53,10 +54,10 @@ name: test_sitofp_s32_s64
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %x0
|
||||
%0:_(s64) = COPY %x0
|
||||
|
||||
; CHECK-LABEL: name: test_sitofp_s32_s64
|
||||
; CHECK: %1(s32) = G_SITOFP %0
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %x0
|
||||
; CHECK: [[SITOFP:%[0-9]+]](s32) = G_SITOFP [[COPY]](s64)
|
||||
%0:_(s64) = COPY %x0
|
||||
%1:_(s32) = G_SITOFP %0
|
||||
...
|
||||
|
||||
|
@ -65,10 +66,10 @@ name: test_uitofp_s32_s64
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %x0
|
||||
%0:_(s64) = COPY %x0
|
||||
|
||||
; CHECK-LABEL: name: test_uitofp_s32_s64
|
||||
; CHECK: %1(s32) = G_UITOFP %0
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %x0
|
||||
; CHECK: [[UITOFP:%[0-9]+]](s32) = G_UITOFP [[COPY]](s64)
|
||||
%0:_(s64) = COPY %x0
|
||||
%1:_(s32) = G_UITOFP %0
|
||||
...
|
||||
|
||||
|
@ -77,10 +78,10 @@ name: test_sitofp_s64_s32
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %w0
|
||||
%0:_(s32) = COPY %w0
|
||||
|
||||
; CHECK-LABEL: name: test_sitofp_s64_s32
|
||||
; CHECK: %1(s64) = G_SITOFP %0
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[SITOFP:%[0-9]+]](s64) = G_SITOFP [[COPY]](s32)
|
||||
%0:_(s32) = COPY %w0
|
||||
%1:_(s64) = G_SITOFP %0
|
||||
...
|
||||
|
||||
|
@ -89,10 +90,10 @@ name: test_uitofp_s64_s32
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %w0
|
||||
%0:_(s32) = COPY %w0
|
||||
|
||||
; CHECK-LABEL: name: test_uitofp_s64_s32
|
||||
; CHECK: %1(s64) = G_UITOFP %0
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[UITOFP:%[0-9]+]](s64) = G_UITOFP [[COPY]](s32)
|
||||
%0:_(s32) = COPY %w0
|
||||
%1:_(s64) = G_UITOFP %0
|
||||
...
|
||||
|
||||
|
@ -101,10 +102,10 @@ name: test_sitofp_s64_s64
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %x0
|
||||
%0:_(s64) = COPY %x0
|
||||
|
||||
; CHECK-LABEL: name: test_sitofp_s64_s64
|
||||
; CHECK: %1(s64) = G_SITOFP %0
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %x0
|
||||
; CHECK: [[SITOFP:%[0-9]+]](s64) = G_SITOFP [[COPY]](s64)
|
||||
%0:_(s64) = COPY %x0
|
||||
%1:_(s64) = G_SITOFP %0
|
||||
...
|
||||
|
||||
|
@ -113,10 +114,10 @@ name: test_uitofp_s64_s64
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %x0
|
||||
%0:_(s64) = COPY %x0
|
||||
|
||||
; CHECK-LABEL: name: test_uitofp_s64_s64
|
||||
; CHECK: %1(s64) = G_UITOFP %0
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %x0
|
||||
; CHECK: [[UITOFP:%[0-9]+]](s64) = G_UITOFP [[COPY]](s64)
|
||||
%0:_(s64) = COPY %x0
|
||||
%1:_(s64) = G_UITOFP %0
|
||||
...
|
||||
|
||||
|
@ -126,15 +127,15 @@ name: test_sitofp_s32_s1
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %w0
|
||||
; CHECK-LABEL: name: test_sitofp_s32_s1
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[C:%[0-9]+]](s32) = G_CONSTANT i32 31
|
||||
; CHECK: [[COPY1:%[0-9]+]](s32) = COPY [[COPY]](s32)
|
||||
; CHECK: [[SHL:%[0-9]+]](s32) = G_SHL [[COPY1]], [[C]]
|
||||
; CHECK: [[ASHR:%[0-9]+]](s32) = G_ASHR [[SHL]], [[C]]
|
||||
; CHECK: [[SITOFP:%[0-9]+]](s32) = G_SITOFP [[ASHR]](s32)
|
||||
%0:_(s32) = COPY %w0
|
||||
%1:_(s1) = G_TRUNC %0
|
||||
|
||||
; CHECK-LABEL: name: test_sitofp_s32_s1
|
||||
; CHECK: [[C1:%.*]](s32) = G_CONSTANT i32 31
|
||||
; CHECK: [[SRC:%.*]](s32) = COPY %0(s32)
|
||||
; CHECK: [[SHL1:%.*]](s32) = G_SHL [[SRC]], [[C1]]
|
||||
; CHECK: [[SEXT:%.*]](s32) = G_ASHR [[SHL1]], [[C1]]
|
||||
; CHECK: %2(s32) = G_SITOFP [[SEXT]]
|
||||
%2:_(s32) = G_SITOFP %1
|
||||
...
|
||||
|
||||
|
@ -143,14 +144,14 @@ name: test_uitofp_s32_s1
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %w0
|
||||
; CHECK-LABEL: name: test_uitofp_s32_s1
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[C:%[0-9]+]](s32) = G_CONSTANT i32 1
|
||||
; CHECK: [[COPY1:%[0-9]+]](s32) = COPY [[COPY]](s32)
|
||||
; CHECK: [[AND:%[0-9]+]](s32) = G_AND [[COPY1]], [[C]]
|
||||
; CHECK: [[UITOFP:%[0-9]+]](s32) = G_UITOFP [[AND]](s32)
|
||||
%0:_(s32) = COPY %w0
|
||||
%1:_(s1) = G_TRUNC %0
|
||||
|
||||
; CHECK-LABEL: name: test_uitofp_s32_s1
|
||||
; CHECK: [[C:%.*]](s32) = G_CONSTANT i32 1
|
||||
; CHECK: [[SRC:%.*]](s32) = COPY %0(s32)
|
||||
; CHECK: [[ZEXT:%.*]](s32) = G_AND [[SRC]], [[C]]
|
||||
; CHECK: [[RES:%.*]](s32) = G_UITOFP [[ZEXT]]
|
||||
%2:_(s32) = G_UITOFP %1
|
||||
...
|
||||
|
||||
|
@ -159,15 +160,15 @@ name: test_sitofp_s64_s8
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %w0
|
||||
; CHECK-LABEL: name: test_sitofp_s64_s8
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[C:%[0-9]+]](s32) = G_CONSTANT i32 24
|
||||
; CHECK: [[COPY1:%[0-9]+]](s32) = COPY [[COPY]](s32)
|
||||
; CHECK: [[SHL:%[0-9]+]](s32) = G_SHL [[COPY1]], [[C]]
|
||||
; CHECK: [[ASHR:%[0-9]+]](s32) = G_ASHR [[SHL]], [[C]]
|
||||
; CHECK: [[SITOFP:%[0-9]+]](s64) = G_SITOFP [[ASHR]](s32)
|
||||
%0:_(s32) = COPY %w0
|
||||
%1:_(s8) = G_TRUNC %0
|
||||
|
||||
; CHECK-LABEL: name: test_sitofp_s64_s8
|
||||
; CHECK: [[C1:%.*]](s32) = G_CONSTANT i32 24
|
||||
; CHECK: [[SRC:%.*]](s32) = COPY %0(s32)
|
||||
; CHECK: [[SHL1:%.*]](s32) = G_SHL [[SRC]], [[C1]]
|
||||
; CHECK: [[SEXT:%.*]](s32) = G_ASHR [[SHL1]], [[C1]]
|
||||
; CHECK: %2(s64) = G_SITOFP [[SEXT]]
|
||||
%2:_(s64) = G_SITOFP %1
|
||||
...
|
||||
|
||||
|
@ -176,14 +177,14 @@ name: test_uitofp_s64_s8
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %w0
|
||||
; CHECK-LABEL: name: test_uitofp_s64_s8
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[C:%[0-9]+]](s32) = G_CONSTANT i32 255
|
||||
; CHECK: [[COPY1:%[0-9]+]](s32) = COPY [[COPY]](s32)
|
||||
; CHECK: [[AND:%[0-9]+]](s32) = G_AND [[COPY1]], [[C]]
|
||||
; CHECK: [[UITOFP:%[0-9]+]](s64) = G_UITOFP [[AND]](s32)
|
||||
%0:_(s32) = COPY %w0
|
||||
%1:_(s8) = G_TRUNC %0
|
||||
|
||||
; CHECK-LABEL: name: test_uitofp_s64_s8
|
||||
; CHECK: [[C:%.*]](s32) = G_CONSTANT i32 255
|
||||
; CHECK: [[SRC:%.*]](s32) = COPY %0(s32)
|
||||
; CHECK: [[ZEXT:%.*]](s32) = G_AND [[SRC]], [[C]]
|
||||
; CHECK: %2(s64) = G_UITOFP [[ZEXT]]
|
||||
%2:_(s64) = G_UITOFP %1
|
||||
...
|
||||
|
||||
|
@ -192,15 +193,15 @@ name: test_sitofp_s32_s16
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %w0
|
||||
; CHECK-LABEL: name: test_sitofp_s32_s16
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[C:%[0-9]+]](s32) = G_CONSTANT i32 16
|
||||
; CHECK: [[COPY1:%[0-9]+]](s32) = COPY [[COPY]](s32)
|
||||
; CHECK: [[SHL:%[0-9]+]](s32) = G_SHL [[COPY1]], [[C]]
|
||||
; CHECK: [[ASHR:%[0-9]+]](s32) = G_ASHR [[SHL]], [[C]]
|
||||
; CHECK: [[SITOFP:%[0-9]+]](s32) = G_SITOFP [[ASHR]](s32)
|
||||
%0:_(s32) = COPY %w0
|
||||
%1:_(s16) = G_TRUNC %0
|
||||
|
||||
; CHECK-LABEL: name: test_sitofp_s32_s16
|
||||
; CHECK: [[C1:%.*]](s32) = G_CONSTANT i32 16
|
||||
; CHECK: [[SRC:%.*]](s32) = COPY %0(s32)
|
||||
; CHECK: [[SHL1:%.*]](s32) = G_SHL [[SRC]], [[C1]]
|
||||
; CHECK: [[SEXT:%.*]](s32) = G_ASHR [[SHL1]], [[C1]]
|
||||
; CHECK: %2(s32) = G_SITOFP [[SEXT]]
|
||||
%2:_(s32) = G_SITOFP %1
|
||||
...
|
||||
|
||||
|
@ -209,13 +210,13 @@ name: test_uitofp_s32_s16
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %w0
|
||||
; CHECK-LABEL: name: test_uitofp_s32_s16
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[C:%[0-9]+]](s32) = G_CONSTANT i32 65535
|
||||
; CHECK: [[COPY1:%[0-9]+]](s32) = COPY [[COPY]](s32)
|
||||
; CHECK: [[AND:%[0-9]+]](s32) = G_AND [[COPY1]], [[C]]
|
||||
; CHECK: [[UITOFP:%[0-9]+]](s32) = G_UITOFP [[AND]](s32)
|
||||
%0:_(s32) = COPY %w0
|
||||
%1:_(s16) = G_TRUNC %0
|
||||
|
||||
; CHECK-LABEL: name: test_uitofp_s32_s16
|
||||
; CHECK: [[C:%.*]](s32) = G_CONSTANT i32 65535
|
||||
; CHECK: [[SRC:%.*]](s32) = COPY %0(s32)
|
||||
; CHECK: [[ZEXT:%.*]](s32) = G_AND [[SRC]], [[C]]
|
||||
; CHECK: [[RES:%.*]](s32) = G_UITOFP [[ZEXT]]
|
||||
%2:_(s32) = G_UITOFP %1
|
||||
...
|
||||
|
|
|
@ -54,12 +54,11 @@ body: |
|
|||
; CHECK: [[COPY1:%[0-9]+]](s64) = COPY %x1
|
||||
; CHECK: [[MUL:%[0-9]+]](s64) = G_MUL [[COPY]], [[COPY1]]
|
||||
; CHECK: [[SMULH:%[0-9]+]](s64) = G_SMULH [[COPY]], [[COPY1]]
|
||||
; CHECK: [[C2:%[0-9]+]](s64) = G_CONSTANT i64 0
|
||||
; CHECK: [[ICMP:%[0-9]+]](s32) = G_ICMP intpred(ne), [[SMULH]](s64), [[C2]]
|
||||
; CHECK: [[C:%[0-9]+]](s64) = G_CONSTANT i64 0
|
||||
; CHECK: [[ICMP:%[0-9]+]](s32) = G_ICMP intpred(ne), [[SMULH]](s64), [[C]]
|
||||
; CHECK: [[TRUNC:%[0-9]+]](s1) = G_TRUNC [[ICMP]](s32)
|
||||
%0:_(s64) = COPY %x0
|
||||
%1:_(s64) = COPY %x1
|
||||
|
||||
%2:_(s64), %3:_(s1) = G_SMULO %0, %1
|
||||
|
||||
...
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -O0 -run-pass=legalizer -global-isel %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -18,10 +19,10 @@ body: |
|
|||
bb.0:
|
||||
liveins: %w0, %w1, %w2
|
||||
; CHECK-LABEL: name: test_legalize_merge_v3s32
|
||||
; CHECK: [[ARG1:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[ARG2:%[0-9]+]](s32) = COPY %w1
|
||||
; CHECK: [[ARG3:%[0-9]+]](s32) = COPY %w2
|
||||
; CHECK: (<3 x s32>) = G_MERGE_VALUES [[ARG1]](s32), [[ARG2]](s32), [[ARG3]](s32)
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s32) = COPY %w1
|
||||
; CHECK: [[COPY2:%[0-9]+]](s32) = COPY %w2
|
||||
; CHECK: [[MV:%[0-9]+]](<3 x s32>) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)
|
||||
%0(s32) = COPY %w0
|
||||
%1(s32) = COPY %w1
|
||||
%2(s32) = COPY %w2
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=aarch64-linux-gnu -O0 -run-pass=legalizer -global-isel %s -o - | FileCheck %s
|
||||
|
||||
---
|
||||
|
@ -7,9 +8,9 @@ body: |
|
|||
bb.0.entry:
|
||||
liveins:
|
||||
; CHECK-LABEL: name: test_implicit_def
|
||||
; CHECK: [[LO:%[0-9]+]](s64) = G_IMPLICIT_DEF
|
||||
; CHECK: [[HI:%[0-9]+]](s64) = G_IMPLICIT_DEF
|
||||
; CHECK: %0(s128) = G_MERGE_VALUES [[LO]](s64), [[HI]](s64)
|
||||
; CHECK: [[DEF:%[0-9]+]](s64) = G_IMPLICIT_DEF
|
||||
; CHECK: [[DEF1:%[0-9]+]](s64) = G_IMPLICIT_DEF
|
||||
; CHECK: [[MV:%[0-9]+]](s128) = G_MERGE_VALUES [[DEF]](s64), [[DEF1]](s64)
|
||||
|
||||
%0:_(s128) = G_IMPLICIT_DEF
|
||||
...
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -O0 -mtriple=aarch64-apple-ios -global-isel -start-before=legalizer -stop-after=instruction-select %s -o - | FileCheck %s
|
||||
|
||||
# We run the legalizer to combine the trivial EXTRACT_SEQ pair, leaving %1 and
|
||||
|
@ -10,19 +11,19 @@
|
|||
define void @unused_reg() { ret void }
|
||||
|
||||
---
|
||||
# CHECK-LABEL: name: unused_reg
|
||||
name: unused_reg
|
||||
legalized: true
|
||||
regBankSelected: true
|
||||
tracksRegLiveness: true
|
||||
|
||||
# CHECK: body:
|
||||
# CHECK: %0 = COPY %w0
|
||||
# CHECK: %w0 = COPY %0
|
||||
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: %w0
|
||||
; CHECK-LABEL: name: unused_reg
|
||||
; CHECK: liveins: %w0
|
||||
; CHECK: [[COPY:%[0-9]+]] = COPY %w0
|
||||
; CHECK: %w0 = COPY [[COPY]]
|
||||
%0:gpr(s32) = COPY %w0
|
||||
%1:gpr(s32) = G_MERGE_VALUES %0(s32)
|
||||
%2:gpr(s32) = G_UNMERGE_VALUES %1(s32)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -13,101 +14,99 @@
|
|||
...
|
||||
|
||||
---
|
||||
# CHECK-LABEL: name: const_s32
|
||||
name: const_s32
|
||||
legalized: true
|
||||
regBankSelected: true
|
||||
registers:
|
||||
- { id: 0, class: gpr }
|
||||
|
||||
# CHECK: body:
|
||||
# CHECK: %0 = MOVi32imm 42
|
||||
body: |
|
||||
bb.0:
|
||||
; CHECK-LABEL: name: const_s32
|
||||
; CHECK: [[MOVi32imm:%[0-9]+]] = MOVi32imm 42
|
||||
; CHECK: %w0 = COPY [[MOVi32imm]]
|
||||
%0(s32) = G_CONSTANT i32 42
|
||||
%w0 = COPY %0(s32)
|
||||
...
|
||||
|
||||
---
|
||||
# CHECK-LABEL: name: const_s64
|
||||
name: const_s64
|
||||
legalized: true
|
||||
regBankSelected: true
|
||||
registers:
|
||||
- { id: 0, class: gpr }
|
||||
|
||||
# CHECK: body:
|
||||
# CHECK: %0 = MOVi64imm 1234567890123
|
||||
body: |
|
||||
bb.0:
|
||||
; CHECK-LABEL: name: const_s64
|
||||
; CHECK: [[MOVi64imm:%[0-9]+]] = MOVi64imm 1234567890123
|
||||
; CHECK: %x0 = COPY [[MOVi64imm]]
|
||||
%0(s64) = G_CONSTANT i64 1234567890123
|
||||
%x0 = COPY %0(s64)
|
||||
...
|
||||
|
||||
---
|
||||
# CHECK-LABEL: name: fconst_s32
|
||||
name: fconst_s32
|
||||
legalized: true
|
||||
regBankSelected: true
|
||||
registers:
|
||||
- { id: 0, class: fpr }
|
||||
|
||||
# CHECK: body:
|
||||
# CHECK: [[TMP:%[0-9]+]] = MOVi32imm 1080033280
|
||||
# CHECK: %0 = COPY [[TMP]]
|
||||
body: |
|
||||
bb.0:
|
||||
; CHECK-LABEL: name: fconst_s32
|
||||
; CHECK: [[MOVi32imm:%[0-9]+]] = MOVi32imm 1080033280
|
||||
; CHECK: [[COPY:%[0-9]+]] = COPY [[MOVi32imm]]
|
||||
; CHECK: %s0 = COPY [[COPY]]
|
||||
%0(s32) = G_FCONSTANT float 3.5
|
||||
%s0 = COPY %0(s32)
|
||||
...
|
||||
|
||||
---
|
||||
# CHECK-LABEL: name: fconst_s64
|
||||
name: fconst_s64
|
||||
legalized: true
|
||||
regBankSelected: true
|
||||
registers:
|
||||
- { id: 0, class: fpr }
|
||||
|
||||
# CHECK: body:
|
||||
# CHECK: [[TMP:%[0-9]+]] = MOVi64imm 4607182418800017408
|
||||
# CHECK: %0 = COPY [[TMP]]
|
||||
body: |
|
||||
bb.0:
|
||||
; CHECK-LABEL: name: fconst_s64
|
||||
; CHECK: [[MOVi64imm:%[0-9]+]] = MOVi64imm 4607182418800017408
|
||||
; CHECK: [[COPY:%[0-9]+]] = COPY [[MOVi64imm]]
|
||||
; CHECK: %d0 = COPY [[COPY]]
|
||||
%0(s64) = G_FCONSTANT double 1.0
|
||||
%d0 = COPY %0(s64)
|
||||
...
|
||||
|
||||
---
|
||||
# CHECK-LABEL: name: fconst_s32_0
|
||||
name: fconst_s32_0
|
||||
legalized: true
|
||||
regBankSelected: true
|
||||
registers:
|
||||
- { id: 0, class: fpr }
|
||||
|
||||
# CHECK: body:
|
||||
# CHECK: [[TMP:%[0-9]+]] = FMOVS0
|
||||
# CHECK: %s0 = COPY [[TMP]]
|
||||
body: |
|
||||
bb.0:
|
||||
; CHECK-LABEL: name: fconst_s32_0
|
||||
; CHECK: [[FMOVS0_:%[0-9]+]] = FMOVS0
|
||||
; CHECK: %s0 = COPY [[FMOVS0_]]
|
||||
%0(s32) = G_FCONSTANT float 0.0
|
||||
%s0 = COPY %0(s32)
|
||||
...
|
||||
|
||||
---
|
||||
# CHECK-LABEL: name: fconst_s64_0
|
||||
name: fconst_s64_0
|
||||
legalized: true
|
||||
regBankSelected: true
|
||||
registers:
|
||||
- { id: 0, class: fpr }
|
||||
|
||||
# CHECK: body:
|
||||
# CHECK: [[TMP:%[0-9]+]] = FMOVD0
|
||||
# CHECK: %s0 = COPY [[TMP]]
|
||||
body: |
|
||||
bb.0:
|
||||
; CHECK-LABEL: name: fconst_s64_0
|
||||
; CHECK: [[FMOVD0_:%[0-9]+]] = FMOVD0
|
||||
; CHECK: %s0 = COPY [[FMOVD0_]]
|
||||
%0(s64) = G_FCONSTANT double 0.0
|
||||
%s0 = COPY %0(s64)
|
||||
...
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -O0 -mtriple arm64-- -run-pass=instruction-select -global-isel %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -35,37 +36,33 @@
|
|||
...
|
||||
|
||||
---
|
||||
# CHECK-LABEL: name: test_dbg_value
|
||||
name: test_dbg_value
|
||||
legalized: true
|
||||
regBankSelected: true
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: %w0
|
||||
; CHECK-LABEL: name: test_dbg_value
|
||||
; CHECK: [[COPY:%[0-9]+]] = COPY %w0
|
||||
; CHECK: [[ADDWrr:%[0-9]+]] = ADDWrr [[COPY]], [[COPY]]
|
||||
; CHECK: %w0 = COPY [[ADDWrr]]
|
||||
; CHECK: DBG_VALUE debug-use [[ADDWrr]], debug-use _, !7, !DIExpression(), debug-location !9
|
||||
%0:gpr(s32) = COPY %w0
|
||||
%1:gpr(s32) = G_ADD %0, %0
|
||||
%w0 = COPY %1(s32)
|
||||
|
||||
; CHECK: %0 = COPY %w0
|
||||
; CHECK-NEXT: %1 = ADDWrr %0, %0
|
||||
; CHECK-NEXT: %w0 = COPY %1
|
||||
; CHECK-NEXT: DBG_VALUE debug-use %1, debug-use _, !7, !DIExpression(), debug-location !9
|
||||
|
||||
DBG_VALUE debug-use %1(s32), debug-use _, !7, !DIExpression(), debug-location !9
|
||||
...
|
||||
|
||||
---
|
||||
# CHECK-LABEL: name: test_dbg_value_dead
|
||||
name: test_dbg_value_dead
|
||||
legalized: true
|
||||
regBankSelected: true
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: %w0
|
||||
%0:gpr(s32) = COPY %w0
|
||||
|
||||
; CHECK-LABEL: name: test_dbg_value_dead
|
||||
; CHECK-NOT: COPY
|
||||
; CHECK: DBG_VALUE debug-use _, debug-use _, !7, !DIExpression(), debug-location !9
|
||||
|
||||
%0:gpr(s32) = COPY %w0
|
||||
DBG_VALUE debug-use %0(s32), debug-use _, !7, !DIExpression(), debug-location !9
|
||||
...
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -5,11 +6,10 @@
|
|||
entry:
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
|
||||
declare i32 @printf(i8*, ...)
|
||||
...
|
||||
---
|
||||
# CHECK-LABEL: name: main
|
||||
name: main
|
||||
alignment: 2
|
||||
exposesReturnsTwice: false
|
||||
|
@ -17,7 +17,7 @@ legalized: true
|
|||
regBankSelected: true
|
||||
selected: false
|
||||
tracksRegLiveness: true
|
||||
registers:
|
||||
registers:
|
||||
- { id: 0, class: gpr }
|
||||
- { id: 1, class: gpr }
|
||||
- { id: 2, class: gpr }
|
||||
|
@ -34,7 +34,7 @@ registers:
|
|||
- { id: 13, class: gpr }
|
||||
- { id: 14, class: gpr }
|
||||
- { id: 15, class: gpr }
|
||||
frameInfo:
|
||||
frameInfo:
|
||||
isFrameAddressTaken: false
|
||||
isReturnAddressTaken: false
|
||||
hasStackMap: false
|
||||
|
@ -48,13 +48,15 @@ frameInfo:
|
|||
hasOpaqueSPAdjustment: false
|
||||
hasVAStart: false
|
||||
hasMustTailInVarArgFunc: false
|
||||
# CHECK: body:
|
||||
# CHECK: %1 = COPY %w0
|
||||
# CHECK-NOT: %2 = ORNWrr %wzr, %1
|
||||
# CHECK: %4 = EONWrr %1, %3
|
||||
body: |
|
||||
bb.1.entry:
|
||||
liveins: %w0
|
||||
; CHECK-LABEL: name: main
|
||||
; CHECK: liveins: %w0
|
||||
; CHECK: [[MOVi32imm:%[0-9]+]] = MOVi32imm 1
|
||||
; CHECK: [[COPY:%[0-9]+]] = COPY %w0
|
||||
; CHECK: [[EONWrr:%[0-9]+]] = EONWrr [[COPY]], [[MOVi32imm]]
|
||||
; CHECK: %w0 = COPY [[EONWrr]]
|
||||
%0(s32) = G_CONSTANT i32 -1
|
||||
%3(s32) = G_CONSTANT i32 1
|
||||
%1(s32) = COPY %w0
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -O0 -run-pass=legalizer -global-isel %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -13,9 +14,11 @@ registers:
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %vgpr0, %vgpr1
|
||||
; CHECK-LABEL: name: test_add
|
||||
; CHECK: %2(s32) = G_ADD %0, %1
|
||||
|
||||
; CHECK-LABEL: name: test_add
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %vgpr0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s32) = COPY %vgpr1
|
||||
; CHECK: [[ADD:%[0-9]+]](s32) = G_ADD [[COPY]], [[COPY1]]
|
||||
%0(s32) = COPY %vgpr0
|
||||
%1(s32) = COPY %vgpr1
|
||||
%2(s32) = G_ADD %0, %1
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -O0 -run-pass=legalizer -global-isel %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -13,9 +14,11 @@ registers:
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %vgpr0, %vgpr1
|
||||
; CHECK-LABEL: name: test_and
|
||||
; CHECK: %2(s32) = G_AND %0, %1
|
||||
|
||||
; CHECK-LABEL: name: test_and
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %vgpr0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s32) = COPY %vgpr1
|
||||
; CHECK: [[AND:%[0-9]+]](s32) = G_AND [[COPY]], [[COPY1]]
|
||||
%0(s32) = COPY %vgpr0
|
||||
%1(s32) = COPY %vgpr1
|
||||
%2(s32) = G_AND %0, %1
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=legalizer -global-isel %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -13,10 +14,11 @@ registers:
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %vgpr0
|
||||
; CHECK-LABEL: name: test_bitcast
|
||||
; CHECK: %1(<2 x s16>) = G_BITCAST %0
|
||||
; CHECK: %2(s32) = G_BITCAST %1
|
||||
|
||||
; CHECK-LABEL: name: test_bitcast
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %vgpr0
|
||||
; CHECK: [[BITCAST:%[0-9]+]](<2 x s16>) = G_BITCAST [[COPY]](s32)
|
||||
; CHECK: [[BITCAST1:%[0-9]+]](s32) = G_BITCAST [[BITCAST]](<2 x s16>)
|
||||
%0(s32) = COPY %vgpr0
|
||||
%1(<2 x s16>) = G_BITCAST %0
|
||||
%2(s32) = G_BITCAST %1
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -O0 -run-pass=legalizer -global-isel %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -24,10 +25,10 @@ registers:
|
|||
- { id: 1, class: _ }
|
||||
body: |
|
||||
bb.0.entry:
|
||||
; CHECK-LABEL: name: test_constant
|
||||
; CHECK: %0(s32) = G_CONSTANT i32 5
|
||||
; CHECK: %1(s1) = G_CONSTANT i1 false
|
||||
|
||||
; CHECK-LABEL: name: test_constant
|
||||
; CHECK: [[C:%[0-9]+]](s32) = G_CONSTANT i32 5
|
||||
; CHECK: [[C1:%[0-9]+]](s1) = G_CONSTANT i1 false
|
||||
%0(s32) = G_CONSTANT i32 5
|
||||
%1(s1) = G_CONSTANT i1 0
|
||||
G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.amdgcn.exp.f32), %0, %0, %0, %0, %0, %0, %1, %1;
|
||||
|
@ -40,10 +41,10 @@ registers:
|
|||
- { id: 1, class: _ }
|
||||
body: |
|
||||
bb.0.entry:
|
||||
; CHECK-LABEL: name: test_fconstant
|
||||
; CHECK: %0(s32) = G_FCONSTANT float 1.000000e+00
|
||||
; CHECK: %1(s32) = G_FCONSTANT float 7.5
|
||||
|
||||
; CHECK-LABEL: name: test_fconstant
|
||||
; CHECK: [[C:%[0-9]+]](s32) = G_FCONSTANT float 1.000000e+00
|
||||
; CHECK: [[C1:%[0-9]+]](s32) = G_FCONSTANT float 7.500000e+00
|
||||
%0(s32) = G_FCONSTANT float 1.0
|
||||
%1(s32) = G_FCONSTANT float 7.5
|
||||
...
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=legalizer -global-isel %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -13,9 +14,11 @@ registers:
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %vgpr0, %vgpr1
|
||||
; CHECK-LABEL: name: test_fmul
|
||||
; CHECK: %2(s32) = G_FMUL %0, %1
|
||||
|
||||
; CHECK-LABEL: name: test_fmul
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %vgpr0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s32) = COPY %vgpr1
|
||||
; CHECK: [[FMUL:%[0-9]+]](s32) = G_FMUL [[COPY]], [[COPY1]]
|
||||
%0(s32) = COPY %vgpr0
|
||||
%1(s32) = COPY %vgpr1
|
||||
%2(s32) = G_FMUL %0, %1
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -O0 -march=amdgcn -mcpu=fiji -run-pass=legalizer -global-isel %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -16,9 +17,11 @@ registers:
|
|||
body: |
|
||||
bb.0.entry:
|
||||
liveins: %vgpr0
|
||||
; CHECK-LABEL: name: test_icmp
|
||||
; CHECK: [[C:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %vgpr0
|
||||
; CHECK: [[ICMP:%[0-9]+]](s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]]
|
||||
%0(s32) = G_CONSTANT i32 0
|
||||
%1(s32) = COPY %vgpr0
|
||||
|
||||
; CHECK: %2(s1) = G_ICMP intpred(ne), %0(s32), %1
|
||||
%2(s1) = G_ICMP intpred(ne), %0, %1
|
||||
...
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -O0 -run-pass=legalizer -global-isel %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -12,9 +13,11 @@ registers:
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %vgpr0, %vgpr1
|
||||
; CHECK-LABEL: name: test_or
|
||||
; CHECK: %2(s32) = G_OR %0, %1
|
||||
|
||||
; CHECK-LABEL: name: test_or
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %vgpr0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s32) = COPY %vgpr1
|
||||
; CHECK: [[OR:%[0-9]+]](s32) = G_OR [[COPY]], [[COPY1]]
|
||||
%0(s32) = COPY %vgpr0
|
||||
%1(s32) = COPY %vgpr1
|
||||
%2(s32) = G_OR %0, %1
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -O0 -march=amdgcn -mcpu=fiji -run-pass=legalizer -global-isel %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -16,13 +17,19 @@ registers:
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %vgpr0
|
||||
; CHECK-LABEL: name: test_select
|
||||
; CHECK: [[C:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %vgpr0
|
||||
; CHECK: [[ICMP:%[0-9]+]](s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]]
|
||||
; CHECK: [[C1:%[0-9]+]](s32) = G_CONSTANT i32 1
|
||||
; CHECK: [[C2:%[0-9]+]](s32) = G_CONSTANT i32 2
|
||||
; CHECK: [[SELECT:%[0-9]+]](s32) = G_SELECT [[ICMP]](s1), [[C1]], [[C2]]
|
||||
%0(s32) = G_CONSTANT i32 0
|
||||
%1(s32) = COPY %vgpr0
|
||||
|
||||
%2(s1) = G_ICMP intpred(ne), %0, %1
|
||||
%3(s32) = G_CONSTANT i32 1
|
||||
%4(s32) = G_CONSTANT i32 2
|
||||
; CHECK: %5(s32) = G_SELECT %2(s1), %3, %4
|
||||
%5(s32) = G_SELECT %2, %3, %4
|
||||
|
||||
...
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -O0 -run-pass=legalizer -global-isel %s -o - | FileCheck %s
|
||||
|
||||
---
|
||||
|
@ -9,9 +10,11 @@ registers:
|
|||
body: |
|
||||
bb.0.entry:
|
||||
liveins: %vgpr0, %vgpr1
|
||||
; CHECK-LABEL: name: test_shl
|
||||
; CHECK: %2(s32) = G_SHL %0, %1
|
||||
|
||||
; CHECK-LABEL: name: test_shl
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %vgpr0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s32) = COPY %vgpr1
|
||||
; CHECK: [[SHL:%[0-9]+]](s32) = G_SHL [[COPY]], [[COPY1]]
|
||||
%0(s32) = COPY %vgpr0
|
||||
%1(s32) = COPY %vgpr1
|
||||
%2(s32) = G_SHL %0, %1
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=aarch64-none-linux-gnu -run-pass none -o - %s | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -8,17 +9,19 @@
|
|||
|
||||
...
|
||||
---
|
||||
# CHECK-LABEL: name: atomic_memoperands
|
||||
# CHECK: %1(s64) = G_LOAD %0(p0) :: (load unordered 8)
|
||||
# CHECK: %2(s32) = G_LOAD %0(p0) :: (load monotonic 4)
|
||||
# CHECK: %3(s16) = G_LOAD %0(p0) :: (load acquire 2)
|
||||
# CHECK: G_STORE %3(s16), %0(p0) :: (store release 2)
|
||||
# CHECK: G_STORE %2(s32), %0(p0) :: (store acq_rel 4)
|
||||
# CHECK: G_STORE %1(s64), %0(p0) :: (store syncscope("singlethread") seq_cst 8)
|
||||
name: atomic_memoperands
|
||||
body: |
|
||||
bb.0:
|
||||
|
||||
; CHECK-LABEL: name: atomic_memoperands
|
||||
; CHECK: [[COPY:%[0-9]+]](p0) = COPY %x0
|
||||
; CHECK: [[LOAD:%[0-9]+]](s64) = G_LOAD [[COPY]](p0) :: (load unordered 8)
|
||||
; CHECK: [[LOAD1:%[0-9]+]](s32) = G_LOAD [[COPY]](p0) :: (load monotonic 4)
|
||||
; CHECK: [[LOAD2:%[0-9]+]](s16) = G_LOAD [[COPY]](p0) :: (load acquire 2)
|
||||
; CHECK: G_STORE [[LOAD2]](s16), [[COPY]](p0) :: (store release 2)
|
||||
; CHECK: G_STORE [[LOAD1]](s32), [[COPY]](p0) :: (store acq_rel 4)
|
||||
; CHECK: G_STORE [[LOAD]](s64), [[COPY]](p0) :: (store syncscope("singlethread") seq_cst 8)
|
||||
; CHECK: RET_ReallyLR
|
||||
%0:_(p0) = COPY %x0
|
||||
%1:_(s64) = G_LOAD %0(p0) :: (load unordered 8)
|
||||
%2:_(s32) = G_LOAD %0(p0) :: (load monotonic 4)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=aarch64-none-linux-gnu -run-pass none -o - %s | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -8,15 +9,17 @@
|
|||
|
||||
...
|
||||
---
|
||||
# CHECK-LABEL: name: target_memoperands
|
||||
# CHECK: %1(s64) = G_LOAD %0(p0) :: ("aarch64-suppress-pair" load 8)
|
||||
# CHECK: %2(s32) = G_LOAD %0(p0) :: ("aarch64-strided-access" load 4)
|
||||
# CHECK: G_STORE %1(s64), %0(p0) :: ("aarch64-suppress-pair" store 8)
|
||||
# CHECK: G_STORE %2(s32), %0(p0) :: ("aarch64-strided-access" store 4)
|
||||
name: target_memoperands
|
||||
body: |
|
||||
bb.0:
|
||||
|
||||
; CHECK-LABEL: name: target_memoperands
|
||||
; CHECK: [[COPY:%[0-9]+]](p0) = COPY %x0
|
||||
; CHECK: [[LOAD:%[0-9]+]](s64) = G_LOAD [[COPY]](p0) :: ("aarch64-suppress-pair" load 8)
|
||||
; CHECK: [[LOAD1:%[0-9]+]](s32) = G_LOAD [[COPY]](p0) :: ("aarch64-strided-access" load 4)
|
||||
; CHECK: G_STORE [[LOAD]](s64), [[COPY]](p0) :: ("aarch64-suppress-pair" store 8)
|
||||
; CHECK: G_STORE [[LOAD1]](s32), [[COPY]](p0) :: ("aarch64-strided-access" store 4)
|
||||
; CHECK: RET_ReallyLR
|
||||
%0:_(p0) = COPY %x0
|
||||
%1:_(s64) = G_LOAD %0(p0) :: ("aarch64-suppress-pair" load 8)
|
||||
%2:_(s32) = G_LOAD %0(p0) :: ("aarch64-strided-access" load 4)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=amdgcn -run-pass none -o - %s | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -9,11 +10,12 @@
|
|||
...
|
||||
---
|
||||
# Completely invalid code, but it checks that intrinsics round-trip properly.
|
||||
# CHECK: %0(s64) = COPY intrinsic(@llvm.amdgcn.sbfe)
|
||||
name: use_intrin
|
||||
registers:
|
||||
- { id: 0, class: _ }
|
||||
body: |
|
||||
bb.0:
|
||||
; CHECK-LABEL: name: use_intrin
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY intrinsic(@llvm.amdgcn.sbfe)
|
||||
%0(s64) = COPY intrinsic(@llvm.amdgcn.sbfe.i32)
|
||||
...
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -march=amdgcn -run-pass none -o - %s | FileCheck %s
|
||||
--- |
|
||||
define amdgpu_kernel void @flags() {
|
||||
|
@ -8,8 +9,6 @@
|
|||
...
|
||||
---
|
||||
|
||||
# CHECK: SI_PC_ADD_REL_OFFSET target-flags(amdgpu-rel32-lo) @foo + 4, target-flags(amdgpu-rel32-hi) @foo + 4, implicit-def dead %scc
|
||||
# CHECK: %1 = S_MOV_B64 target-flags(amdgpu-gotprel) @foo
|
||||
|
||||
name: flags
|
||||
liveins:
|
||||
|
@ -22,6 +21,10 @@ registers:
|
|||
body: |
|
||||
bb.0:
|
||||
liveins: %sgpr0_sgpr1
|
||||
; CHECK-LABEL: name: flags
|
||||
; CHECK: [[SI_PC_ADD_REL_OFFSET:%[0-9]+]] = SI_PC_ADD_REL_OFFSET target-flags(amdgpu-rel32-lo) @foo + 4, target-flags(amdgpu-rel32-hi) @foo + 4, implicit-def dead %scc
|
||||
; CHECK: [[S_MOV_B64_:%[0-9]+]] = S_MOV_B64 target-flags(amdgpu-gotprel) @foo
|
||||
; CHECK: S_ENDPGM
|
||||
%0 = SI_PC_ADD_REL_OFFSET target-flags(amdgpu-rel32-lo) @foo + 4, target-flags(amdgpu-rel32-hi) @foo + 4, implicit-def dead %scc
|
||||
%1 = S_MOV_B64 target-flags(amdgpu-gotprel) @foo
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -march=x86 -run-pass none -o - %s | FileCheck %s
|
||||
# This test ensures that the MIR parser parses stack object machine operands
|
||||
# correctly.
|
||||
|
@ -29,12 +30,14 @@ stack:
|
|||
- { id: 0, name: b, size: 4, alignment: 4 }
|
||||
- { id: 1, size: 4, alignment: 4 }
|
||||
body: |
|
||||
; CHECK: bb.0.entry:
|
||||
; CHECK-NEXT: %0 = MOV32rm %fixed-stack.0, 1, _, 0, _
|
||||
; CHECK-NEXT: MOV32mr %stack.0.b, 1, _, 0, _, %0
|
||||
; CHECK-NEXT: MOV32mi %stack.1, 1, _, 0, _, 2
|
||||
; CHECK-NEXT: %1 = MOV32rm %stack.0.b, 1, _, 0, _
|
||||
bb.0.entry:
|
||||
; CHECK-LABEL: name: test
|
||||
; CHECK: [[MOV32rm:%[0-9]+]] = MOV32rm %fixed-stack.0, 1, _, 0, _
|
||||
; CHECK: MOV32mr %stack.0.b, 1, _, 0, _, [[MOV32rm]]
|
||||
; CHECK: MOV32mi %stack.1, 1, _, 0, _, 2
|
||||
; CHECK: [[MOV32rm1:%[0-9]+]] = MOV32rm %stack.0.b, 1, _, 0, _
|
||||
; CHECK: %eax = COPY [[MOV32rm1]]
|
||||
; CHECK: RETL %eax
|
||||
%0 = MOV32rm %fixed-stack.0, 1, _, 0, _
|
||||
MOV32mr %stack.0.b, 1, _, 0, _, %0
|
||||
MOV32mi %stack.1, 1, _, 0, _, 2
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -march=x86-64 -run-pass none -o - %s | FileCheck %s
|
||||
# This test ensures that the MIR parser parses and prints subregisters index
|
||||
# operands correctly.
|
||||
|
@ -11,10 +12,6 @@
|
|||
|
||||
...
|
||||
---
|
||||
# CHECK-LABEL: name: t
|
||||
# CHECK: %0 = INSERT_SUBREG %edi, %al, {{[0-9]+}}
|
||||
# CHECK: %1 = EXTRACT_SUBREG %eax, {{[0-9]+}}
|
||||
# CHECK: %ax = REG_SEQUENCE %1, {{[0-9]+}}, %1, {{[0-9]+}}
|
||||
name: t
|
||||
tracksRegLiveness: true
|
||||
registers:
|
||||
|
@ -23,6 +20,12 @@ registers:
|
|||
body: |
|
||||
bb.0.entry:
|
||||
liveins: %edi, %eax
|
||||
; CHECK-LABEL: name: t
|
||||
; CHECK: liveins: %edi, %eax
|
||||
; CHECK: [[INSERT_SUBREG:%[0-9]+]] = INSERT_SUBREG %edi, %al, 1
|
||||
; CHECK: [[EXTRACT_SUBREG:%[0-9]+]] = EXTRACT_SUBREG %eax, 2
|
||||
; CHECK: %ax = REG_SEQUENCE [[EXTRACT_SUBREG]], 1, [[EXTRACT_SUBREG]], 2
|
||||
; CHECK: RETQ %ax
|
||||
%0 = INSERT_SUBREG %edi, %al, %subreg.sub_8bit
|
||||
%1 = EXTRACT_SUBREG %eax, %subreg.sub_8bit_hi
|
||||
%ax = REG_SEQUENCE %1, %subreg.sub_8bit, %1, %subreg.sub_8bit_hi
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -march=x86-64 -run-pass none -o - %s | FileCheck %s
|
||||
# This test ensures that the MIR parser parses subregisters in register operands
|
||||
# correctly.
|
||||
|
@ -20,8 +21,13 @@ registers:
|
|||
body: |
|
||||
bb.0.entry:
|
||||
liveins: %edi
|
||||
; CHECK: %0 = COPY %edi
|
||||
; CHECK-NEXT: %1 = COPY %0.sub_8bit
|
||||
; CHECK-LABEL: name: t
|
||||
; CHECK: liveins: %edi
|
||||
; CHECK: [[COPY:%[0-9]+]] = COPY %edi
|
||||
; CHECK: [[COPY1:%[0-9]+]] = COPY [[COPY]].sub_8bit
|
||||
; CHECK: [[AND8ri:%[0-9]+]] = AND8ri [[COPY1]], 1, implicit-def %eflags
|
||||
; CHECK: %al = COPY [[AND8ri]]
|
||||
; CHECK: RETQ %al
|
||||
%0 = COPY %edi
|
||||
%1 = COPY %0.sub_8bit
|
||||
%2 = AND8ri %1, 1, implicit-def %eflags
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=x86_64-linux-gnu -mattr=+sse2 -global-isel -run-pass=legalizer %s -o - | FileCheck %s --check-prefix=ALL --check-prefix=SSE2
|
||||
|
||||
--- |
|
||||
|
@ -23,7 +24,6 @@
|
|||
...
|
||||
---
|
||||
name: test_add_v16i8
|
||||
# ALL-LABEL: name: test_add_v16i8
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -31,14 +31,15 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# ALL: %0(<16 x s8>) = IMPLICIT_DEF
|
||||
# ALL-NEXT: %1(<16 x s8>) = IMPLICIT_DEF
|
||||
# ALL-NEXT: %2(<16 x s8>) = G_ADD %0, %1
|
||||
# ALL-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %xmm0, %xmm1
|
||||
|
||||
; ALL-LABEL: name: test_add_v16i8
|
||||
; ALL: [[DEF:%[0-9]+]](<16 x s8>) = IMPLICIT_DEF
|
||||
; ALL: [[DEF1:%[0-9]+]](<16 x s8>) = IMPLICIT_DEF
|
||||
; ALL: [[ADD:%[0-9]+]](<16 x s8>) = G_ADD [[DEF]], [[DEF1]]
|
||||
; ALL: RET 0
|
||||
%0(<16 x s8>) = IMPLICIT_DEF
|
||||
%1(<16 x s8>) = IMPLICIT_DEF
|
||||
%2(<16 x s8>) = G_ADD %0, %1
|
||||
|
@ -47,7 +48,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_add_v8i16
|
||||
# ALL-LABEL: name: test_add_v8i16
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -55,14 +55,15 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# ALL: %0(<8 x s16>) = IMPLICIT_DEF
|
||||
# ALL-NEXT: %1(<8 x s16>) = IMPLICIT_DEF
|
||||
# ALL-NEXT: %2(<8 x s16>) = G_ADD %0, %1
|
||||
# ALL-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %xmm0, %xmm1
|
||||
|
||||
; ALL-LABEL: name: test_add_v8i16
|
||||
; ALL: [[DEF:%[0-9]+]](<8 x s16>) = IMPLICIT_DEF
|
||||
; ALL: [[DEF1:%[0-9]+]](<8 x s16>) = IMPLICIT_DEF
|
||||
; ALL: [[ADD:%[0-9]+]](<8 x s16>) = G_ADD [[DEF]], [[DEF1]]
|
||||
; ALL: RET 0
|
||||
%0(<8 x s16>) = IMPLICIT_DEF
|
||||
%1(<8 x s16>) = IMPLICIT_DEF
|
||||
%2(<8 x s16>) = G_ADD %0, %1
|
||||
|
@ -71,7 +72,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_add_v4i32
|
||||
# ALL-LABEL: name: test_add_v4i32
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -79,14 +79,15 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# ALL: %0(<4 x s32>) = IMPLICIT_DEF
|
||||
# ALL-NEXT: %1(<4 x s32>) = IMPLICIT_DEF
|
||||
# ALL-NEXT: %2(<4 x s32>) = G_ADD %0, %1
|
||||
# ALL-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %xmm0, %xmm1
|
||||
|
||||
; ALL-LABEL: name: test_add_v4i32
|
||||
; ALL: [[DEF:%[0-9]+]](<4 x s32>) = IMPLICIT_DEF
|
||||
; ALL: [[DEF1:%[0-9]+]](<4 x s32>) = IMPLICIT_DEF
|
||||
; ALL: [[ADD:%[0-9]+]](<4 x s32>) = G_ADD [[DEF]], [[DEF1]]
|
||||
; ALL: RET 0
|
||||
%0(<4 x s32>) = IMPLICIT_DEF
|
||||
%1(<4 x s32>) = IMPLICIT_DEF
|
||||
%2(<4 x s32>) = G_ADD %0, %1
|
||||
|
@ -95,7 +96,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_add_v2i64
|
||||
# ALL-LABEL: name: test_add_v2i64
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -103,14 +103,15 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# ALL: %0(<2 x s64>) = IMPLICIT_DEF
|
||||
# ALL-NEXT: %1(<2 x s64>) = IMPLICIT_DEF
|
||||
# ALL-NEXT: %2(<2 x s64>) = G_ADD %0, %1
|
||||
# ALL-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %xmm0, %xmm1
|
||||
|
||||
; ALL-LABEL: name: test_add_v2i64
|
||||
; ALL: [[DEF:%[0-9]+]](<2 x s64>) = IMPLICIT_DEF
|
||||
; ALL: [[DEF1:%[0-9]+]](<2 x s64>) = IMPLICIT_DEF
|
||||
; ALL: [[ADD:%[0-9]+]](<2 x s64>) = G_ADD [[DEF]], [[DEF1]]
|
||||
; ALL: RET 0
|
||||
%0(<2 x s64>) = IMPLICIT_DEF
|
||||
%1(<2 x s64>) = IMPLICIT_DEF
|
||||
%2(<2 x s64>) = G_ADD %0, %1
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=x86_64-linux-gnu -global-isel -run-pass=legalizer %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -29,7 +30,6 @@
|
|||
...
|
||||
---
|
||||
name: test_and_i1
|
||||
# CHECK-LABEL: name: test_and_i1
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -37,15 +37,16 @@ registers:
|
|||
- { id: 0, class: _, preferred-register: '' }
|
||||
- { id: 1, class: _, preferred-register: '' }
|
||||
- { id: 2, class: _, preferred-register: '' }
|
||||
# CHECK: %0(s32) = COPY %edx
|
||||
# CHECK-NEXT: %3(s8) = G_TRUNC %0(s32)
|
||||
# CHECK-NEXT: %4(s8) = G_TRUNC %0(s32)
|
||||
# CHECK-NEXT: %5(s8) = G_AND %3, %4
|
||||
# CHECK-NEXT: %2(s1) = G_TRUNC %5(s8)
|
||||
# CHECK-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
|
||||
; CHECK-LABEL: name: test_and_i1
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %edx
|
||||
; CHECK: [[TRUNC:%[0-9]+]](s8) = G_TRUNC [[COPY]](s32)
|
||||
; CHECK: [[TRUNC1:%[0-9]+]](s8) = G_TRUNC [[COPY]](s32)
|
||||
; CHECK: [[AND:%[0-9]+]](s8) = G_AND [[TRUNC]], [[TRUNC1]]
|
||||
; CHECK: [[TRUNC2:%[0-9]+]](s1) = G_TRUNC [[AND]](s8)
|
||||
; CHECK: RET 0
|
||||
%0(s32) = COPY %edx
|
||||
%1(s1) = G_TRUNC %0(s32)
|
||||
%2(s1) = G_AND %1, %1
|
||||
|
@ -53,7 +54,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_and_i8
|
||||
# CHECK-LABEL: name: test_and_i8
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -64,12 +64,13 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# CHECK: %0(s8) = IMPLICIT_DEF
|
||||
# CHECK-NEXT: %1(s8) = G_AND %0, %0
|
||||
# CHECK-NEXT: %al = COPY %1(s8)
|
||||
# CHECK-NEXT: RET 0, implicit %al
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
; CHECK-LABEL: name: test_and_i8
|
||||
; CHECK: [[DEF:%[0-9]+]](s8) = IMPLICIT_DEF
|
||||
; CHECK: [[AND:%[0-9]+]](s8) = G_AND [[DEF]], [[DEF]]
|
||||
; CHECK: %al = COPY [[AND]](s8)
|
||||
; CHECK: RET 0, implicit %al
|
||||
%0(s8) = IMPLICIT_DEF
|
||||
%1(s8) = G_AND %0, %0
|
||||
%al = COPY %1(s8)
|
||||
|
@ -78,7 +79,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_and_i16
|
||||
# CHECK-LABEL: name: test_and_i16
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -89,12 +89,13 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# CHECK: %0(s16) = IMPLICIT_DEF
|
||||
# CHECK-NEXT: %1(s16) = G_AND %0, %0
|
||||
# CHECK-NEXT: %ax = COPY %1(s16)
|
||||
# CHECK-NEXT: RET 0, implicit %ax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
; CHECK-LABEL: name: test_and_i16
|
||||
; CHECK: [[DEF:%[0-9]+]](s16) = IMPLICIT_DEF
|
||||
; CHECK: [[AND:%[0-9]+]](s16) = G_AND [[DEF]], [[DEF]]
|
||||
; CHECK: %ax = COPY [[AND]](s16)
|
||||
; CHECK: RET 0, implicit %ax
|
||||
%0(s16) = IMPLICIT_DEF
|
||||
%1(s16) = G_AND %0, %0
|
||||
%ax = COPY %1(s16)
|
||||
|
@ -103,7 +104,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_and_i32
|
||||
# CHECK-LABEL: name: test_and_i32
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -114,12 +114,13 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# CHECK: %0(s32) = IMPLICIT_DEF
|
||||
# CHECK-NEXT: %1(s32) = G_AND %0, %0
|
||||
# CHECK-NEXT: %eax = COPY %1(s32)
|
||||
# CHECK-NEXT: RET 0, implicit %eax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
; CHECK-LABEL: name: test_and_i32
|
||||
; CHECK: [[DEF:%[0-9]+]](s32) = IMPLICIT_DEF
|
||||
; CHECK: [[AND:%[0-9]+]](s32) = G_AND [[DEF]], [[DEF]]
|
||||
; CHECK: %eax = COPY [[AND]](s32)
|
||||
; CHECK: RET 0, implicit %eax
|
||||
%0(s32) = IMPLICIT_DEF
|
||||
%1(s32) = G_AND %0, %0
|
||||
%eax = COPY %1(s32)
|
||||
|
@ -128,7 +129,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_and_i64
|
||||
# CHECK-LABEL: name: test_and_i64
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -139,12 +139,13 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# CHECK: %0(s64) = IMPLICIT_DEF
|
||||
# CHECK-NEXT: %1(s64) = G_AND %0, %0
|
||||
# CHECK-NEXT: %rax = COPY %1(s64)
|
||||
# CHECK-NEXT: RET 0, implicit %rax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
; CHECK-LABEL: name: test_and_i64
|
||||
; CHECK: [[DEF:%[0-9]+]](s64) = IMPLICIT_DEF
|
||||
; CHECK: [[AND:%[0-9]+]](s64) = G_AND [[DEF]], [[DEF]]
|
||||
; CHECK: %rax = COPY [[AND]](s64)
|
||||
; CHECK: RET 0, implicit %rax
|
||||
%0(s64) = IMPLICIT_DEF
|
||||
%1(s64) = G_AND %0, %0
|
||||
%rax = COPY %1(s64)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=x86_64-linux-gnu -global-isel -run-pass=legalizer %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -34,7 +35,6 @@
|
|||
...
|
||||
---
|
||||
name: test_cmp_i8
|
||||
# CHECK-LABEL: name: test_cmp_i8
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -43,16 +43,17 @@ registers:
|
|||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
- { id: 3, class: _ }
|
||||
# CHECK: %0(s8) = COPY %dil
|
||||
# CHECK-NEXT: %1(s8) = COPY %sil
|
||||
# CHECK-NEXT: %2(s1) = G_ICMP intpred(ult), %0(s8), %1
|
||||
# CHECK-NEXT: %3(s32) = G_ZEXT %2(s1)
|
||||
# CHECK-NEXT: %eax = COPY %3(s32)
|
||||
# CHECK-NEXT: RET 0, implicit %eax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %edi, %esi
|
||||
|
||||
; CHECK-LABEL: name: test_cmp_i8
|
||||
; CHECK: [[COPY:%[0-9]+]](s8) = COPY %dil
|
||||
; CHECK: [[COPY1:%[0-9]+]](s8) = COPY %sil
|
||||
; CHECK: [[ICMP:%[0-9]+]](s1) = G_ICMP intpred(ult), [[COPY]](s8), [[COPY1]]
|
||||
; CHECK: [[ZEXT:%[0-9]+]](s32) = G_ZEXT [[ICMP]](s1)
|
||||
; CHECK: %eax = COPY [[ZEXT]](s32)
|
||||
; CHECK: RET 0, implicit %eax
|
||||
%0(s8) = COPY %dil
|
||||
%1(s8) = COPY %sil
|
||||
%2(s1) = G_ICMP intpred(ult), %0(s8), %1
|
||||
|
@ -63,7 +64,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_cmp_i16
|
||||
# CHECK-LABEL: name: test_cmp_i16
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -72,16 +72,17 @@ registers:
|
|||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
- { id: 3, class: _ }
|
||||
# CHECK: %0(s16) = COPY %di
|
||||
# CHECK-NEXT: %1(s16) = COPY %si
|
||||
# CHECK-NEXT: %2(s1) = G_ICMP intpred(ult), %0(s16), %1
|
||||
# CHECK-NEXT: %3(s32) = G_ZEXT %2(s1)
|
||||
# CHECK-NEXT: %eax = COPY %3(s32)
|
||||
# CHECK-NEXT: RET 0, implicit %eax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %edi, %esi
|
||||
|
||||
; CHECK-LABEL: name: test_cmp_i16
|
||||
; CHECK: [[COPY:%[0-9]+]](s16) = COPY %di
|
||||
; CHECK: [[COPY1:%[0-9]+]](s16) = COPY %si
|
||||
; CHECK: [[ICMP:%[0-9]+]](s1) = G_ICMP intpred(ult), [[COPY]](s16), [[COPY1]]
|
||||
; CHECK: [[ZEXT:%[0-9]+]](s32) = G_ZEXT [[ICMP]](s1)
|
||||
; CHECK: %eax = COPY [[ZEXT]](s32)
|
||||
; CHECK: RET 0, implicit %eax
|
||||
%0(s16) = COPY %di
|
||||
%1(s16) = COPY %si
|
||||
%2(s1) = G_ICMP intpred(ult), %0(s16), %1
|
||||
|
@ -92,7 +93,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_cmp_i32
|
||||
# CHECK-LABEL: name: test_cmp_i32
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -101,16 +101,17 @@ registers:
|
|||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
- { id: 3, class: _ }
|
||||
# CHECK: %0(s32) = COPY %edi
|
||||
# CHECK-NEXT: %1(s32) = COPY %esi
|
||||
# CHECK-NEXT: %2(s1) = G_ICMP intpred(ult), %0(s32), %1
|
||||
# CHECK-NEXT: %3(s32) = G_ZEXT %2(s1)
|
||||
# CHECK-NEXT: %eax = COPY %3(s32)
|
||||
# CHECK-NEXT: RET 0, implicit %eax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %edi, %esi
|
||||
|
||||
; CHECK-LABEL: name: test_cmp_i32
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %edi
|
||||
; CHECK: [[COPY1:%[0-9]+]](s32) = COPY %esi
|
||||
; CHECK: [[ICMP:%[0-9]+]](s1) = G_ICMP intpred(ult), [[COPY]](s32), [[COPY1]]
|
||||
; CHECK: [[ZEXT:%[0-9]+]](s32) = G_ZEXT [[ICMP]](s1)
|
||||
; CHECK: %eax = COPY [[ZEXT]](s32)
|
||||
; CHECK: RET 0, implicit %eax
|
||||
%0(s32) = COPY %edi
|
||||
%1(s32) = COPY %esi
|
||||
%2(s1) = G_ICMP intpred(ult), %0(s32), %1
|
||||
|
@ -121,7 +122,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_cmp_i64
|
||||
# CHECK-LABEL: name: test_cmp_i64
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -130,16 +130,17 @@ registers:
|
|||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
- { id: 3, class: _ }
|
||||
# CHECK: %0(s64) = COPY %rdi
|
||||
# CHECK-NEXT: %1(s64) = COPY %rsi
|
||||
# CHECK-NEXT: %2(s1) = G_ICMP intpred(ult), %0(s64), %1
|
||||
# CHECK-NEXT: %3(s32) = G_ZEXT %2(s1)
|
||||
# CHECK-NEXT: %eax = COPY %3(s32)
|
||||
# CHECK-NEXT: RET 0, implicit %eax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %rdi, %rsi
|
||||
|
||||
; CHECK-LABEL: name: test_cmp_i64
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %rdi
|
||||
; CHECK: [[COPY1:%[0-9]+]](s64) = COPY %rsi
|
||||
; CHECK: [[ICMP:%[0-9]+]](s1) = G_ICMP intpred(ult), [[COPY]](s64), [[COPY1]]
|
||||
; CHECK: [[ZEXT:%[0-9]+]](s32) = G_ZEXT [[ICMP]](s1)
|
||||
; CHECK: %eax = COPY [[ZEXT]](s32)
|
||||
; CHECK: RET 0, implicit %eax
|
||||
%0(s64) = COPY %rdi
|
||||
%1(s64) = COPY %rsi
|
||||
%2(s1) = G_ICMP intpred(ult), %0(s64), %1
|
||||
|
@ -150,7 +151,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_cmp_p0
|
||||
# CHECK-LABEL: name: test_cmp_p0
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -159,16 +159,17 @@ registers:
|
|||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
- { id: 3, class: _ }
|
||||
# CHECK: %0(p0) = COPY %rdi
|
||||
# CHECK-NEXT: %1(p0) = COPY %rsi
|
||||
# CHECK-NEXT: %2(s1) = G_ICMP intpred(ult), %0(p0), %1
|
||||
# CHECK-NEXT: %3(s32) = G_ZEXT %2(s1)
|
||||
# CHECK-NEXT: %eax = COPY %3(s32)
|
||||
# CHECK-NEXT: RET 0, implicit %eax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %rdi, %rsi
|
||||
|
||||
; CHECK-LABEL: name: test_cmp_p0
|
||||
; CHECK: [[COPY:%[0-9]+]](p0) = COPY %rdi
|
||||
; CHECK: [[COPY1:%[0-9]+]](p0) = COPY %rsi
|
||||
; CHECK: [[ICMP:%[0-9]+]](s1) = G_ICMP intpred(ult), [[COPY]](p0), [[COPY1]]
|
||||
; CHECK: [[ZEXT:%[0-9]+]](s32) = G_ZEXT [[ICMP]](s1)
|
||||
; CHECK: %eax = COPY [[ZEXT]](s32)
|
||||
; CHECK: RET 0, implicit %eax
|
||||
%0(p0) = COPY %rdi
|
||||
%1(p0) = COPY %rsi
|
||||
%2(s1) = G_ICMP intpred(ult), %0(p0), %1
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=x86_64-linux-gnu -global-isel -run-pass=legalizer %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -42,7 +43,7 @@
|
|||
%r = zext i32 %val to i64
|
||||
ret i64 %r
|
||||
}
|
||||
|
||||
|
||||
define void @test_anyext_i1(i8 %a) {
|
||||
ret void
|
||||
}
|
||||
|
@ -58,12 +59,11 @@
|
|||
define void @test_anyext_i32(i32 %val) {
|
||||
ret void
|
||||
}
|
||||
|
||||
|
||||
|
||||
...
|
||||
---
|
||||
name: test_sext_i1
|
||||
# CHECK-LABEL: name: test_sext_i1
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -71,15 +71,16 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# CHECK: %0(s8) = COPY %dil
|
||||
# CHECK-NEXT: %1(s1) = G_TRUNC %0(s8)
|
||||
# CHECK-NEXT: %2(s64) = G_SEXT %1(s1)
|
||||
# CHECK-NEXT: %rax = COPY %2(s64)
|
||||
# CHECK-NEXT: RET 0, implicit %rax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %edi
|
||||
|
||||
; CHECK-LABEL: name: test_sext_i1
|
||||
; CHECK: [[COPY:%[0-9]+]](s8) = COPY %dil
|
||||
; CHECK: [[TRUNC:%[0-9]+]](s1) = G_TRUNC [[COPY]](s8)
|
||||
; CHECK: [[SEXT:%[0-9]+]](s64) = G_SEXT [[TRUNC]](s1)
|
||||
; CHECK: %rax = COPY [[SEXT]](s64)
|
||||
; CHECK: RET 0, implicit %rax
|
||||
%0(s8) = COPY %dil
|
||||
%1(s1) = G_TRUNC %0(s8)
|
||||
%2(s64) = G_SEXT %1(s1)
|
||||
|
@ -89,21 +90,21 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_sext_i8
|
||||
# CHECK-LABEL: name: test_sext_i8
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
registers:
|
||||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
# CHECK: %0(s8) = COPY %dil
|
||||
# CHECK-NEXT: %1(s64) = G_SEXT %0(s8)
|
||||
# CHECK-NEXT: %rax = COPY %1(s64)
|
||||
# CHECK-NEXT: RET 0, implicit %rax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %edi
|
||||
|
||||
; CHECK-LABEL: name: test_sext_i8
|
||||
; CHECK: [[COPY:%[0-9]+]](s8) = COPY %dil
|
||||
; CHECK: [[SEXT:%[0-9]+]](s64) = G_SEXT [[COPY]](s8)
|
||||
; CHECK: %rax = COPY [[SEXT]](s64)
|
||||
; CHECK: RET 0, implicit %rax
|
||||
%0(s8) = COPY %dil
|
||||
%1(s64) = G_SEXT %0(s8)
|
||||
%rax = COPY %1(s64)
|
||||
|
@ -112,21 +113,21 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_sext_i16
|
||||
# CHECK-LABEL: name: test_sext_i16
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
registers:
|
||||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
# CHECK: %0(s16) = COPY %di
|
||||
# CHECK-NEXT: %1(s64) = G_SEXT %0(s16)
|
||||
# CHECK-NEXT: %rax = COPY %1(s64)
|
||||
# CHECK-NEXT: RET 0, implicit %rax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %edi
|
||||
|
||||
; CHECK-LABEL: name: test_sext_i16
|
||||
; CHECK: [[COPY:%[0-9]+]](s16) = COPY %di
|
||||
; CHECK: [[SEXT:%[0-9]+]](s64) = G_SEXT [[COPY]](s16)
|
||||
; CHECK: %rax = COPY [[SEXT]](s64)
|
||||
; CHECK: RET 0, implicit %rax
|
||||
%0(s16) = COPY %di
|
||||
%1(s64) = G_SEXT %0(s16)
|
||||
%rax = COPY %1(s64)
|
||||
|
@ -135,21 +136,21 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_sext_i32
|
||||
# CHECK-LABEL: name: test_sext_i32
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
registers:
|
||||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
# CHECK: %0(s32) = COPY %edi
|
||||
# CHECK-NEXT: %1(s64) = G_SEXT %0(s32)
|
||||
# CHECK-NEXT: %rax = COPY %1(s64)
|
||||
# CHECK-NEXT: RET 0, implicit %rax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %edi
|
||||
|
||||
; CHECK-LABEL: name: test_sext_i32
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %edi
|
||||
; CHECK: [[SEXT:%[0-9]+]](s64) = G_SEXT [[COPY]](s32)
|
||||
; CHECK: %rax = COPY [[SEXT]](s64)
|
||||
; CHECK: RET 0, implicit %rax
|
||||
%0(s32) = COPY %edi
|
||||
%1(s64) = G_SEXT %0(s32)
|
||||
%rax = COPY %1(s64)
|
||||
|
@ -158,7 +159,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_zext_i1
|
||||
# CHECK-LABEL: name: test_zext_i1
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -166,15 +166,16 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# CHECK: %0(s8) = COPY %dil
|
||||
# CHECK-NEXT: %1(s1) = G_TRUNC %0(s8)
|
||||
# CHECK-NEXT: %2(s64) = G_ZEXT %1(s1)
|
||||
# CHECK-NEXT: %rax = COPY %2(s64)
|
||||
# CHECK-NEXT: RET 0, implicit %rax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %edi
|
||||
|
||||
; CHECK-LABEL: name: test_zext_i1
|
||||
; CHECK: [[COPY:%[0-9]+]](s8) = COPY %dil
|
||||
; CHECK: [[TRUNC:%[0-9]+]](s1) = G_TRUNC [[COPY]](s8)
|
||||
; CHECK: [[ZEXT:%[0-9]+]](s64) = G_ZEXT [[TRUNC]](s1)
|
||||
; CHECK: %rax = COPY [[ZEXT]](s64)
|
||||
; CHECK: RET 0, implicit %rax
|
||||
%0(s8) = COPY %dil
|
||||
%1(s1) = G_TRUNC %0(s8)
|
||||
%2(s64) = G_ZEXT %1(s1)
|
||||
|
@ -184,21 +185,21 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_zext_i8
|
||||
# CHECK-LABEL: name: test_zext_i8
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
registers:
|
||||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
# CHECK: %0(s8) = COPY %dil
|
||||
# CHECK-NEXT: %1(s64) = G_ZEXT %0(s8)
|
||||
# CHECK-NEXT: %rax = COPY %1(s64)
|
||||
# CHECK-NEXT: RET 0, implicit %rax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %edi
|
||||
|
||||
; CHECK-LABEL: name: test_zext_i8
|
||||
; CHECK: [[COPY:%[0-9]+]](s8) = COPY %dil
|
||||
; CHECK: [[ZEXT:%[0-9]+]](s64) = G_ZEXT [[COPY]](s8)
|
||||
; CHECK: %rax = COPY [[ZEXT]](s64)
|
||||
; CHECK: RET 0, implicit %rax
|
||||
%0(s8) = COPY %dil
|
||||
%1(s64) = G_ZEXT %0(s8)
|
||||
%rax = COPY %1(s64)
|
||||
|
@ -207,21 +208,21 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_zext_i16
|
||||
# CHECK-LABEL: name: test_zext_i16
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
registers:
|
||||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
# CHECK: %0(s16) = COPY %di
|
||||
# CHECK-NEXT: %1(s64) = G_ZEXT %0(s16)
|
||||
# CHECK-NEXT: %rax = COPY %1(s64)
|
||||
# CHECK-NEXT: RET 0, implicit %rax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %edi
|
||||
|
||||
; CHECK-LABEL: name: test_zext_i16
|
||||
; CHECK: [[COPY:%[0-9]+]](s16) = COPY %di
|
||||
; CHECK: [[ZEXT:%[0-9]+]](s64) = G_ZEXT [[COPY]](s16)
|
||||
; CHECK: %rax = COPY [[ZEXT]](s64)
|
||||
; CHECK: RET 0, implicit %rax
|
||||
%0(s16) = COPY %di
|
||||
%1(s64) = G_ZEXT %0(s16)
|
||||
%rax = COPY %1(s64)
|
||||
|
@ -230,21 +231,21 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_zext_i32
|
||||
# CHECK-LABEL: name: test_zext_i32
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
registers:
|
||||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
# CHECK: %0(s32) = COPY %edi
|
||||
# CHECK-NEXT: %1(s64) = G_ZEXT %0(s32)
|
||||
# CHECK-NEXT: %rax = COPY %1(s64)
|
||||
# CHECK-NEXT: RET 0, implicit %rax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %edi
|
||||
|
||||
; CHECK-LABEL: name: test_zext_i32
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %edi
|
||||
; CHECK: [[ZEXT:%[0-9]+]](s64) = G_ZEXT [[COPY]](s32)
|
||||
; CHECK: %rax = COPY [[ZEXT]](s64)
|
||||
; CHECK: RET 0, implicit %rax
|
||||
%0(s32) = COPY %edi
|
||||
%1(s64) = G_ZEXT %0(s32)
|
||||
%rax = COPY %1(s64)
|
||||
|
@ -253,7 +254,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_anyext_i1
|
||||
# CHECK-LABEL: name: test_anyext_i1
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -261,15 +261,16 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# CHECK: %0(s8) = COPY %dil
|
||||
# CHECK-NEXT: %1(s1) = G_TRUNC %0(s8)
|
||||
# CHECK-NEXT: %2(s64) = G_ANYEXT %1(s1)
|
||||
# CHECK-NEXT: %rax = COPY %2(s64)
|
||||
# CHECK-NEXT: RET 0, implicit %rax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %edi
|
||||
|
||||
; CHECK-LABEL: name: test_anyext_i1
|
||||
; CHECK: [[COPY:%[0-9]+]](s8) = COPY %dil
|
||||
; CHECK: [[TRUNC:%[0-9]+]](s1) = G_TRUNC [[COPY]](s8)
|
||||
; CHECK: [[ANYEXT:%[0-9]+]](s64) = G_ANYEXT [[TRUNC]](s1)
|
||||
; CHECK: %rax = COPY [[ANYEXT]](s64)
|
||||
; CHECK: RET 0, implicit %rax
|
||||
%0(s8) = COPY %dil
|
||||
%1(s1) = G_TRUNC %0(s8)
|
||||
%2(s64) = G_ANYEXT %1(s1)
|
||||
|
@ -279,21 +280,21 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_anyext_i8
|
||||
# CHECK-LABEL: name: test_anyext_i8
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
registers:
|
||||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
# CHECK: %0(s8) = COPY %dil
|
||||
# CHECK-NEXT: %1(s64) = G_ANYEXT %0(s8)
|
||||
# CHECK-NEXT: %rax = COPY %1(s64)
|
||||
# CHECK-NEXT: RET 0, implicit %rax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %edi
|
||||
|
||||
; CHECK-LABEL: name: test_anyext_i8
|
||||
; CHECK: [[COPY:%[0-9]+]](s8) = COPY %dil
|
||||
; CHECK: [[ANYEXT:%[0-9]+]](s64) = G_ANYEXT [[COPY]](s8)
|
||||
; CHECK: %rax = COPY [[ANYEXT]](s64)
|
||||
; CHECK: RET 0, implicit %rax
|
||||
%0(s8) = COPY %dil
|
||||
%1(s64) = G_ANYEXT %0(s8)
|
||||
%rax = COPY %1(s64)
|
||||
|
@ -302,21 +303,21 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_anyext_i16
|
||||
# CHECK-LABEL: name: test_anyext_i16
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
registers:
|
||||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
# CHECK: %0(s16) = COPY %di
|
||||
# CHECK-NEXT: %1(s64) = G_ANYEXT %0(s16)
|
||||
# CHECK-NEXT: %rax = COPY %1(s64)
|
||||
# CHECK-NEXT: RET 0, implicit %rax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %edi
|
||||
|
||||
; CHECK-LABEL: name: test_anyext_i16
|
||||
; CHECK: [[COPY:%[0-9]+]](s16) = COPY %di
|
||||
; CHECK: [[ANYEXT:%[0-9]+]](s64) = G_ANYEXT [[COPY]](s16)
|
||||
; CHECK: %rax = COPY [[ANYEXT]](s64)
|
||||
; CHECK: RET 0, implicit %rax
|
||||
%0(s16) = COPY %di
|
||||
%1(s64) = G_ANYEXT %0(s16)
|
||||
%rax = COPY %1(s64)
|
||||
|
@ -325,21 +326,21 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_anyext_i32
|
||||
# CHECK-LABEL: name: test_anyext_i32
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
registers:
|
||||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
# CHECK: %0(s32) = COPY %edi
|
||||
# CHECK-NEXT: %1(s64) = G_ANYEXT %0(s32)
|
||||
# CHECK-NEXT: %rax = COPY %1(s64)
|
||||
# CHECK-NEXT: RET 0, implicit %rax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %edi
|
||||
|
||||
; CHECK-LABEL: name: test_anyext_i32
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %edi
|
||||
; CHECK: [[ANYEXT:%[0-9]+]](s64) = G_ANYEXT [[COPY]](s32)
|
||||
; CHECK: %rax = COPY [[ANYEXT]](s64)
|
||||
; CHECK: RET 0, implicit %rax
|
||||
%0(s32) = COPY %edi
|
||||
%1(s64) = G_ANYEXT %0(s32)
|
||||
%rax = COPY %1(s64)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=x86_64-linux-gnu -global-isel -run-pass=legalizer %s -o - | FileCheck %s
|
||||
--- |
|
||||
|
||||
|
@ -14,7 +15,6 @@
|
|||
...
|
||||
---
|
||||
name: test_fadd_float
|
||||
# CHECK-LABEL: name: test_fadd_float
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -26,15 +26,16 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# CHECK: %0(s32) = COPY %xmm0
|
||||
# CHECK-NEXT: %1(s32) = COPY %xmm1
|
||||
# CHECK-NEXT: %2(s32) = G_FADD %0, %1
|
||||
# CHECK-NEXT: %xmm0 = COPY %2(s32)
|
||||
# CHECK-NEXT: RET 0, implicit %xmm0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %xmm0, %xmm1
|
||||
|
||||
; CHECK-LABEL: name: test_fadd_float
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %xmm0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s32) = COPY %xmm1
|
||||
; CHECK: [[FADD:%[0-9]+]](s32) = G_FADD [[COPY]], [[COPY1]]
|
||||
; CHECK: %xmm0 = COPY [[FADD]](s32)
|
||||
; CHECK: RET 0, implicit %xmm0
|
||||
%0(s32) = COPY %xmm0
|
||||
%1(s32) = COPY %xmm1
|
||||
%2(s32) = G_FADD %0, %1
|
||||
|
@ -44,7 +45,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_fadd_double
|
||||
# CHECK-LABEL: name: test_fadd_double
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -56,15 +56,16 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# CHECK: %0(s64) = COPY %xmm0
|
||||
# CHECK-NEXT: %1(s64) = COPY %xmm1
|
||||
# CHECK-NEXT: %2(s64) = G_FADD %0, %1
|
||||
# CHECK-NEXT: %xmm0 = COPY %2(s64)
|
||||
# CHECK-NEXT: RET 0, implicit %xmm0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %xmm0, %xmm1
|
||||
|
||||
; CHECK-LABEL: name: test_fadd_double
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %xmm0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s64) = COPY %xmm1
|
||||
; CHECK: [[FADD:%[0-9]+]](s64) = G_FADD [[COPY]], [[COPY1]]
|
||||
; CHECK: %xmm0 = COPY [[FADD]](s64)
|
||||
; CHECK: RET 0, implicit %xmm0
|
||||
%0(s64) = COPY %xmm0
|
||||
%1(s64) = COPY %xmm1
|
||||
%2(s64) = G_FADD %0, %1
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=x86_64-linux-gnu -global-isel -run-pass=legalizer %s -o - | FileCheck %s
|
||||
--- |
|
||||
|
||||
|
@ -14,7 +15,6 @@
|
|||
...
|
||||
---
|
||||
name: test_fdiv_float
|
||||
# CHECK-LABEL: name: test_fdiv_float
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -26,15 +26,16 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# CHECK: %0(s32) = COPY %xmm0
|
||||
# CHECK-NEXT: %1(s32) = COPY %xmm1
|
||||
# CHECK-NEXT: %2(s32) = G_FDIV %0, %1
|
||||
# CHECK-NEXT: %xmm0 = COPY %2(s32)
|
||||
# CHECK-NEXT: RET 0, implicit %xmm0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %xmm0, %xmm1
|
||||
|
||||
; CHECK-LABEL: name: test_fdiv_float
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %xmm0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s32) = COPY %xmm1
|
||||
; CHECK: [[FDIV:%[0-9]+]](s32) = G_FDIV [[COPY]], [[COPY1]]
|
||||
; CHECK: %xmm0 = COPY [[FDIV]](s32)
|
||||
; CHECK: RET 0, implicit %xmm0
|
||||
%0(s32) = COPY %xmm0
|
||||
%1(s32) = COPY %xmm1
|
||||
%2(s32) = G_FDIV %0, %1
|
||||
|
@ -44,7 +45,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_fdiv_double
|
||||
# CHECK-LABEL: name: test_fdiv_double
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -56,15 +56,16 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# CHECK: %0(s64) = COPY %xmm0
|
||||
# CHECK-NEXT: %1(s64) = COPY %xmm1
|
||||
# CHECK-NEXT: %2(s64) = G_FDIV %0, %1
|
||||
# CHECK-NEXT: %xmm0 = COPY %2(s64)
|
||||
# CHECK-NEXT: RET 0, implicit %xmm0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %xmm0, %xmm1
|
||||
|
||||
; CHECK-LABEL: name: test_fdiv_double
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %xmm0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s64) = COPY %xmm1
|
||||
; CHECK: [[FDIV:%[0-9]+]](s64) = G_FDIV [[COPY]], [[COPY1]]
|
||||
; CHECK: %xmm0 = COPY [[FDIV]](s64)
|
||||
; CHECK: RET 0, implicit %xmm0
|
||||
%0(s64) = COPY %xmm0
|
||||
%1(s64) = COPY %xmm1
|
||||
%2(s64) = G_FDIV %0, %1
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=x86_64-linux-gnu -global-isel -run-pass=legalizer %s -o - | FileCheck %s
|
||||
--- |
|
||||
|
||||
|
@ -14,7 +15,6 @@
|
|||
...
|
||||
---
|
||||
name: test_fmul_float
|
||||
# CHECK-LABEL: name: test_fmul_float
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -26,15 +26,16 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# CHECK: %0(s32) = COPY %xmm0
|
||||
# CHECK-NEXT: %1(s32) = COPY %xmm1
|
||||
# CHECK-NEXT: %2(s32) = G_FMUL %0, %1
|
||||
# CHECK-NEXT: %xmm0 = COPY %2(s32)
|
||||
# CHECK-NEXT: RET 0, implicit %xmm0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %xmm0, %xmm1
|
||||
|
||||
; CHECK-LABEL: name: test_fmul_float
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %xmm0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s32) = COPY %xmm1
|
||||
; CHECK: [[FMUL:%[0-9]+]](s32) = G_FMUL [[COPY]], [[COPY1]]
|
||||
; CHECK: %xmm0 = COPY [[FMUL]](s32)
|
||||
; CHECK: RET 0, implicit %xmm0
|
||||
%0(s32) = COPY %xmm0
|
||||
%1(s32) = COPY %xmm1
|
||||
%2(s32) = G_FMUL %0, %1
|
||||
|
@ -44,7 +45,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_fmul_double
|
||||
# CHECK-LABEL: name: test_fmul_double
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -56,15 +56,16 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# CHECK: %0(s64) = COPY %xmm0
|
||||
# CHECK-NEXT: %1(s64) = COPY %xmm1
|
||||
# CHECK-NEXT: %2(s64) = G_FMUL %0, %1
|
||||
# CHECK-NEXT: %xmm0 = COPY %2(s64)
|
||||
# CHECK-NEXT: RET 0, implicit %xmm0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %xmm0, %xmm1
|
||||
|
||||
; CHECK-LABEL: name: test_fmul_double
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %xmm0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s64) = COPY %xmm1
|
||||
; CHECK: [[FMUL:%[0-9]+]](s64) = G_FMUL [[COPY]], [[COPY1]]
|
||||
; CHECK: %xmm0 = COPY [[FMUL]](s64)
|
||||
; CHECK: RET 0, implicit %xmm0
|
||||
%0(s64) = COPY %xmm0
|
||||
%1(s64) = COPY %xmm1
|
||||
%2(s64) = G_FMUL %0, %1
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=x86_64-linux-gnu -global-isel -run-pass=legalizer %s -o - | FileCheck %s --check-prefix=ALL
|
||||
--- |
|
||||
|
||||
|
@ -10,21 +11,21 @@
|
|||
...
|
||||
---
|
||||
name: test
|
||||
# ALL-LABEL: name: test
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
registers:
|
||||
- { id: 0, class: _, preferred-register: '' }
|
||||
- { id: 1, class: _, preferred-register: '' }
|
||||
# ALL: %0(s32) = COPY %xmm0
|
||||
# ALL-NEXT: %1(s64) = G_FPEXT %0(s32)
|
||||
# ALL-NEXT: %xmm0 = COPY %1(s64)
|
||||
# ALL-NEXT: RET 0, implicit %xmm0
|
||||
body: |
|
||||
bb.1.entry:
|
||||
liveins: %xmm0
|
||||
|
||||
; ALL-LABEL: name: test
|
||||
; ALL: [[COPY:%[0-9]+]](s32) = COPY %xmm0
|
||||
; ALL: [[FPEXT:%[0-9]+]](s64) = G_FPEXT [[COPY]](s32)
|
||||
; ALL: %xmm0 = COPY [[FPEXT]](s64)
|
||||
; ALL: RET 0, implicit %xmm0
|
||||
%0(s32) = COPY %xmm0
|
||||
%1(s64) = G_FPEXT %0(s32)
|
||||
%xmm0 = COPY %1(s64)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=x86_64-linux-gnu -global-isel -run-pass=legalizer %s -o - | FileCheck %s
|
||||
--- |
|
||||
|
||||
|
@ -14,7 +15,6 @@
|
|||
...
|
||||
---
|
||||
name: test_fsub_float
|
||||
# CHECK-LABEL: name: test_fsub_float
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -26,15 +26,16 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# CHECK: %0(s32) = COPY %xmm0
|
||||
# CHECK-NEXT: %1(s32) = COPY %xmm1
|
||||
# CHECK-NEXT: %2(s32) = G_FSUB %0, %1
|
||||
# CHECK-NEXT: %xmm0 = COPY %2(s32)
|
||||
# CHECK-NEXT: RET 0, implicit %xmm0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %xmm0, %xmm1
|
||||
|
||||
; CHECK-LABEL: name: test_fsub_float
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %xmm0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s32) = COPY %xmm1
|
||||
; CHECK: [[FSUB:%[0-9]+]](s32) = G_FSUB [[COPY]], [[COPY1]]
|
||||
; CHECK: %xmm0 = COPY [[FSUB]](s32)
|
||||
; CHECK: RET 0, implicit %xmm0
|
||||
%0(s32) = COPY %xmm0
|
||||
%1(s32) = COPY %xmm1
|
||||
%2(s32) = G_FSUB %0, %1
|
||||
|
@ -44,7 +45,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_fsub_double
|
||||
# CHECK-LABEL: name: test_fsub_double
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -56,15 +56,16 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# CHECK: %0(s64) = COPY %xmm0
|
||||
# CHECK-NEXT: %1(s64) = COPY %xmm1
|
||||
# CHECK-NEXT: %2(s64) = G_FSUB %0, %1
|
||||
# CHECK-NEXT: %xmm0 = COPY %2(s64)
|
||||
# CHECK-NEXT: RET 0, implicit %xmm0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %xmm0, %xmm1
|
||||
|
||||
; CHECK-LABEL: name: test_fsub_double
|
||||
; CHECK: [[COPY:%[0-9]+]](s64) = COPY %xmm0
|
||||
; CHECK: [[COPY1:%[0-9]+]](s64) = COPY %xmm1
|
||||
; CHECK: [[FSUB:%[0-9]+]](s64) = G_FSUB [[COPY]], [[COPY1]]
|
||||
; CHECK: %xmm0 = COPY [[FSUB]](s64)
|
||||
; CHECK: RET 0, implicit %xmm0
|
||||
%0(s64) = COPY %xmm0
|
||||
%1(s64) = COPY %xmm1
|
||||
%2(s64) = G_FSUB %0, %1
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=x86_64-linux-gnu -global-isel -run-pass=legalizer %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -23,19 +24,19 @@
|
|||
...
|
||||
---
|
||||
name: test_gep_i8
|
||||
# CHECK-LABEL: name: test_gep_i8
|
||||
legalized: false
|
||||
registers:
|
||||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# CHECK: %0(p0) = IMPLICIT_DEF
|
||||
# CHECK-NEXT: %1(s8) = G_CONSTANT i8 20
|
||||
# CHECK-NEXT: %3(s32) = G_SEXT %1(s8)
|
||||
# CHECK-NEXT: %2(p0) = G_GEP %0, %3(s32)
|
||||
# CHECK-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
; CHECK-LABEL: name: test_gep_i8
|
||||
; CHECK: [[DEF:%[0-9]+]](p0) = IMPLICIT_DEF
|
||||
; CHECK: [[C:%[0-9]+]](s8) = G_CONSTANT i8 20
|
||||
; CHECK: [[SEXT:%[0-9]+]](s32) = G_SEXT [[C]](s8)
|
||||
; CHECK: [[GEP:%[0-9]+]](p0) = G_GEP [[DEF]], [[SEXT]](s32)
|
||||
; CHECK: RET 0
|
||||
%0(p0) = IMPLICIT_DEF
|
||||
%1(s8) = G_CONSTANT i8 20
|
||||
%2(p0) = G_GEP %0, %1(s8)
|
||||
|
@ -43,19 +44,19 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_gep_i16
|
||||
# CHECK-LABEL: name: test_gep_i16
|
||||
legalized: false
|
||||
registers:
|
||||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# CHECK: %0(p0) = IMPLICIT_DEF
|
||||
# CHECK-NEXT: %1(s16) = G_CONSTANT i16 20
|
||||
# CHECK-NEXT: %3(s32) = G_SEXT %1(s16)
|
||||
# CHECK-NEXT: %2(p0) = G_GEP %0, %3(s32)
|
||||
# CHECK-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
; CHECK-LABEL: name: test_gep_i16
|
||||
; CHECK: [[DEF:%[0-9]+]](p0) = IMPLICIT_DEF
|
||||
; CHECK: [[C:%[0-9]+]](s16) = G_CONSTANT i16 20
|
||||
; CHECK: [[SEXT:%[0-9]+]](s32) = G_SEXT [[C]](s16)
|
||||
; CHECK: [[GEP:%[0-9]+]](p0) = G_GEP [[DEF]], [[SEXT]](s32)
|
||||
; CHECK: RET 0
|
||||
%0(p0) = IMPLICIT_DEF
|
||||
%1(s16) = G_CONSTANT i16 20
|
||||
%2(p0) = G_GEP %0, %1(s16)
|
||||
|
@ -63,18 +64,18 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_gep_i32
|
||||
# CHECK-LABEL: name: test_gep_i32
|
||||
legalized: false
|
||||
registers:
|
||||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# CHECK: %0(p0) = IMPLICIT_DEF
|
||||
# CHECK-NEXT: %1(s32) = G_CONSTANT i32 20
|
||||
# CHECK-NEXT: %2(p0) = G_GEP %0, %1(s32)
|
||||
# CHECK-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
; CHECK-LABEL: name: test_gep_i32
|
||||
; CHECK: [[DEF:%[0-9]+]](p0) = IMPLICIT_DEF
|
||||
; CHECK: [[C:%[0-9]+]](s32) = G_CONSTANT i32 20
|
||||
; CHECK: [[GEP:%[0-9]+]](p0) = G_GEP [[DEF]], [[C]](s32)
|
||||
; CHECK: RET 0
|
||||
%0(p0) = IMPLICIT_DEF
|
||||
%1(s32) = G_CONSTANT i32 20
|
||||
%2(p0) = G_GEP %0, %1(s32)
|
||||
|
@ -82,18 +83,18 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_gep_i64
|
||||
# CHECK-LABEL: name: test_gep_i64
|
||||
legalized: false
|
||||
registers:
|
||||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# CHECK: %0(p0) = IMPLICIT_DEF
|
||||
# CHECK-NEXT: %1(s64) = G_CONSTANT i64 20
|
||||
# CHECK-NEXT: %2(p0) = G_GEP %0, %1(s64)
|
||||
# CHECK-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
; CHECK-LABEL: name: test_gep_i64
|
||||
; CHECK: [[DEF:%[0-9]+]](p0) = IMPLICIT_DEF
|
||||
; CHECK: [[C:%[0-9]+]](s64) = G_CONSTANT i64 20
|
||||
; CHECK: [[GEP:%[0-9]+]](p0) = G_GEP [[DEF]], [[C]](s64)
|
||||
; CHECK: RET 0
|
||||
%0(p0) = IMPLICIT_DEF
|
||||
%1(s64) = G_CONSTANT i64 20
|
||||
%2(p0) = G_GEP %0, %1(s64)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=x86_64-linux-gnu -mattr=+avx512f -global-isel -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=ALL
|
||||
|
||||
--- |
|
||||
|
@ -11,7 +12,6 @@
|
|||
...
|
||||
---
|
||||
name: test_insert_128
|
||||
# ALL-LABEL: name: test_insert_128
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -19,15 +19,16 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# ALL: %0(<16 x s32>) = COPY %zmm0
|
||||
# ALL-NEXT: %1(<4 x s32>) = COPY %xmm1
|
||||
# ALL-NEXT: %2(<16 x s32>) = G_INSERT %0, %1(<4 x s32>), 0
|
||||
# ALL-NEXT: %zmm0 = COPY %2(<16 x s32>)
|
||||
# ALL-NEXT: RET 0, implicit %ymm0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %zmm0, %ymm1
|
||||
|
||||
; ALL-LABEL: name: test_insert_128
|
||||
; ALL: [[COPY:%[0-9]+]](<16 x s32>) = COPY %zmm0
|
||||
; ALL: [[COPY1:%[0-9]+]](<4 x s32>) = COPY %xmm1
|
||||
; ALL: [[INSERT:%[0-9]+]](<16 x s32>) = G_INSERT [[COPY]], [[COPY1]](<4 x s32>), 0
|
||||
; ALL: %zmm0 = COPY [[INSERT]](<16 x s32>)
|
||||
; ALL: RET 0, implicit %ymm0
|
||||
%0(<16 x s32>) = COPY %zmm0
|
||||
%1(<4 x s32>) = COPY %xmm1
|
||||
%2(<16 x s32>) = G_INSERT %0(<16 x s32>), %1(<4 x s32>), 0
|
||||
|
@ -37,7 +38,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_insert_256
|
||||
# ALL-LABEL: name: test_insert_256
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -45,15 +45,16 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# ALL: %0(<16 x s32>) = COPY %zmm0
|
||||
# ALL-NEXT: %1(<8 x s32>) = COPY %ymm1
|
||||
# ALL-NEXT: %2(<16 x s32>) = G_INSERT %0, %1(<8 x s32>), 0
|
||||
# ALL-NEXT: %zmm0 = COPY %2(<16 x s32>)
|
||||
# ALL-NEXT: RET 0, implicit %ymm0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %zmm0, %ymm1
|
||||
|
||||
; ALL-LABEL: name: test_insert_256
|
||||
; ALL: [[COPY:%[0-9]+]](<16 x s32>) = COPY %zmm0
|
||||
; ALL: [[COPY1:%[0-9]+]](<8 x s32>) = COPY %ymm1
|
||||
; ALL: [[INSERT:%[0-9]+]](<16 x s32>) = G_INSERT [[COPY]], [[COPY1]](<8 x s32>), 0
|
||||
; ALL: %zmm0 = COPY [[INSERT]](<16 x s32>)
|
||||
; ALL: RET 0, implicit %ymm0
|
||||
%0(<16 x s32>) = COPY %zmm0
|
||||
%1(<8 x s32>) = COPY %ymm1
|
||||
%2(<16 x s32>) = G_INSERT %0(<16 x s32>), %1(<8 x s32>), 0
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=x86_64-linux-gnu -global-isel -run-pass=legalizer %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -29,7 +30,6 @@
|
|||
...
|
||||
---
|
||||
name: test_or_i1
|
||||
# CHECK-LABEL: name: test_or_i1
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -37,15 +37,16 @@ registers:
|
|||
- { id: 0, class: _, preferred-register: '' }
|
||||
- { id: 1, class: _, preferred-register: '' }
|
||||
- { id: 2, class: _, preferred-register: '' }
|
||||
# CHECK: %0(s32) = COPY %edx
|
||||
# CHECK-NEXT: %3(s8) = G_TRUNC %0(s32)
|
||||
# CHECK-NEXT: %4(s8) = G_TRUNC %0(s32)
|
||||
# CHECK-NEXT: %5(s8) = G_OR %3, %4
|
||||
# CHECK-NEXT: %2(s1) = G_TRUNC %5(s8)
|
||||
# CHECK-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
|
||||
; CHECK-LABEL: name: test_or_i1
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %edx
|
||||
; CHECK: [[TRUNC:%[0-9]+]](s8) = G_TRUNC [[COPY]](s32)
|
||||
; CHECK: [[TRUNC1:%[0-9]+]](s8) = G_TRUNC [[COPY]](s32)
|
||||
; CHECK: [[OR:%[0-9]+]](s8) = G_OR [[TRUNC]], [[TRUNC1]]
|
||||
; CHECK: [[TRUNC2:%[0-9]+]](s1) = G_TRUNC [[OR]](s8)
|
||||
; CHECK: RET 0
|
||||
%0(s32) = COPY %edx
|
||||
%1(s1) = G_TRUNC %0(s32)
|
||||
%2(s1) = G_OR %1, %1
|
||||
|
@ -53,7 +54,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_or_i8
|
||||
# CHECK-LABEL: name: test_or_i8
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -64,12 +64,13 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# CHECK: %0(s8) = IMPLICIT_DEF
|
||||
# CHECK-NEXT: %1(s8) = G_OR %0, %0
|
||||
# CHECK-NEXT: %al = COPY %1(s8)
|
||||
# CHECK-NEXT: RET 0, implicit %al
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
; CHECK-LABEL: name: test_or_i8
|
||||
; CHECK: [[DEF:%[0-9]+]](s8) = IMPLICIT_DEF
|
||||
; CHECK: [[OR:%[0-9]+]](s8) = G_OR [[DEF]], [[DEF]]
|
||||
; CHECK: %al = COPY [[OR]](s8)
|
||||
; CHECK: RET 0, implicit %al
|
||||
%0(s8) = IMPLICIT_DEF
|
||||
%1(s8) = G_OR %0, %0
|
||||
%al = COPY %1(s8)
|
||||
|
@ -78,7 +79,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_or_i16
|
||||
# CHECK-LABEL: name: test_or_i16
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -89,12 +89,13 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# CHECK: %0(s16) = IMPLICIT_DEF
|
||||
# CHECK-NEXT: %1(s16) = G_OR %0, %0
|
||||
# CHECK-NEXT: %ax = COPY %1(s16)
|
||||
# CHECK-NEXT: RET 0, implicit %ax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
; CHECK-LABEL: name: test_or_i16
|
||||
; CHECK: [[DEF:%[0-9]+]](s16) = IMPLICIT_DEF
|
||||
; CHECK: [[OR:%[0-9]+]](s16) = G_OR [[DEF]], [[DEF]]
|
||||
; CHECK: %ax = COPY [[OR]](s16)
|
||||
; CHECK: RET 0, implicit %ax
|
||||
%0(s16) = IMPLICIT_DEF
|
||||
%1(s16) = G_OR %0, %0
|
||||
%ax = COPY %1(s16)
|
||||
|
@ -103,7 +104,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_or_i32
|
||||
# CHECK-LABEL: name: test_or_i32
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -114,12 +114,13 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# CHECK: %0(s32) = IMPLICIT_DEF
|
||||
# CHECK-NEXT: %1(s32) = G_OR %0, %0
|
||||
# CHECK-NEXT: %eax = COPY %1(s32)
|
||||
# CHECK-NEXT: RET 0, implicit %eax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
; CHECK-LABEL: name: test_or_i32
|
||||
; CHECK: [[DEF:%[0-9]+]](s32) = IMPLICIT_DEF
|
||||
; CHECK: [[OR:%[0-9]+]](s32) = G_OR [[DEF]], [[DEF]]
|
||||
; CHECK: %eax = COPY [[OR]](s32)
|
||||
; CHECK: RET 0, implicit %eax
|
||||
%0(s32) = IMPLICIT_DEF
|
||||
%1(s32) = G_OR %0, %0
|
||||
%eax = COPY %1(s32)
|
||||
|
@ -128,7 +129,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_or_i64
|
||||
# CHECK-LABEL: name: test_or_i64
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -139,12 +139,13 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# CHECK: %0(s64) = IMPLICIT_DEF
|
||||
# CHECK-NEXT: %1(s64) = G_OR %0, %0
|
||||
# CHECK-NEXT: %rax = COPY %1(s64)
|
||||
# CHECK-NEXT: RET 0, implicit %rax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
; CHECK-LABEL: name: test_or_i64
|
||||
; CHECK: [[DEF:%[0-9]+]](s64) = IMPLICIT_DEF
|
||||
; CHECK: [[OR:%[0-9]+]](s64) = G_OR [[DEF]], [[DEF]]
|
||||
; CHECK: %rax = COPY [[OR]](s64)
|
||||
; CHECK: RET 0, implicit %rax
|
||||
%0(s64) = IMPLICIT_DEF
|
||||
%1(s64) = G_OR %0, %0
|
||||
%rax = COPY %1(s64)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=x86_64-linux-gnu -global-isel -run-pass=legalizer %s -o - | FileCheck %s --check-prefix=ALL
|
||||
|
||||
--- |
|
||||
|
@ -117,7 +118,6 @@
|
|||
...
|
||||
---
|
||||
name: test_i1
|
||||
# ALL-LABEL: name: test_i1
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -134,32 +134,35 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# ALL: bb.0.entry:
|
||||
# ALL-NEXT: successors: %bb.1.cond.true(0x40000000), %bb.2.cond.false(0x40000000)
|
||||
# ALL-NEXT: liveins: %edi, %edx, %esi
|
||||
|
||||
# ALL: %0(s32) = COPY %edi
|
||||
# ALL-NEXT: %1(s1) = COPY %esi
|
||||
# ALL-NEXT: %2(s1) = COPY %edx
|
||||
# ALL-NEXT: %3(s32) = G_CONSTANT i32 0
|
||||
# ALL-NEXT: %4(s1) = G_ICMP intpred(sgt), %0(s32), %3
|
||||
# ALL-NEXT: G_BRCOND %4(s1), %bb.1.cond.true
|
||||
# ALL-NEXT: G_BR %bb.2.cond.false
|
||||
|
||||
# ALL-LABEL: bb.1.cond.true:
|
||||
# ALL: %8(s8) = G_ANYEXT %1(s1)
|
||||
# ALL-NEXT: G_BR %bb.3.cond.end
|
||||
|
||||
# ALL-LABEL: bb.2.cond.false:
|
||||
# ALL: %9(s8) = G_ANYEXT %2(s1)
|
||||
|
||||
# ALL-LABEL: bb.3.cond.end:
|
||||
# ALL-NEXT: %7(s8) = G_PHI %8(s8), %bb.1.cond.true, %9(s8), %bb.2.cond.false
|
||||
# ALL-NEXT: %5(s1) = G_TRUNC %7(s8)
|
||||
# ALL-NEXT: %6(s8) = G_ZEXT %5(s1)
|
||||
# ALL-NEXT: %al = COPY %6(s8)
|
||||
# ALL-NEXT: RET 0, implicit %al
|
||||
body: |
|
||||
; ALL-LABEL: name: test_i1
|
||||
; ALL: bb.0.entry:
|
||||
; ALL: successors: %bb.1.cond.true(0x40000000), %bb.2.cond.false(0x40000000)
|
||||
; ALL: liveins: %edi, %edx, %esi
|
||||
; ALL: [[COPY:%[0-9]+]](s32) = COPY %edi
|
||||
; ALL: [[COPY1:%[0-9]+]](s1) = COPY %esi
|
||||
; ALL: [[COPY2:%[0-9]+]](s1) = COPY %edx
|
||||
; ALL: [[C:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; ALL: [[ICMP:%[0-9]+]](s1) = G_ICMP intpred(sgt), [[COPY]](s32), [[C]]
|
||||
; ALL: G_BRCOND [[ICMP]](s1), %bb.1.cond.true
|
||||
; ALL: G_BR %bb.2.cond.false
|
||||
; ALL: bb.1.cond.true:
|
||||
; ALL: successors: %bb.3.cond.end(0x80000000)
|
||||
; ALL: [[ANYEXT:%[0-9]+]](s8) = G_ANYEXT [[COPY1]](s1)
|
||||
; ALL: G_BR %bb.3.cond.end
|
||||
; ALL: bb.2.cond.false:
|
||||
; ALL: successors: %bb.3.cond.end(0x80000000)
|
||||
; ALL: [[ANYEXT1:%[0-9]+]](s8) = G_ANYEXT [[COPY2]](s1)
|
||||
; ALL: bb.3.cond.end:
|
||||
; ALL: [[PHI:%[0-9]+]](s8) = G_PHI [[ANYEXT]](s8), %bb.1.cond.true, [[ANYEXT1]](s8), %bb.2.cond.false
|
||||
; ALL: [[TRUNC:%[0-9]+]](s1) = G_TRUNC [[PHI]](s8)
|
||||
; ALL: [[ZEXT:%[0-9]+]](s8) = G_ZEXT [[TRUNC]](s1)
|
||||
; ALL: %al = COPY [[ZEXT]](s8)
|
||||
; ALL: RET 0, implicit %al
|
||||
bb.1.entry:
|
||||
successors: %bb.2.cond.true(0x40000000), %bb.3.cond.false(0x40000000)
|
||||
liveins: %edi, %edx, %esi
|
||||
|
@ -190,7 +193,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_i8
|
||||
# ALL-LABEL: name: test_i8
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -206,28 +208,30 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# ALL: bb.0.entry:
|
||||
# ALL-NEXT: successors: %bb.1.cond.true(0x40000000), %bb.2.cond.false(0x40000000)
|
||||
# ALL-NEXT: liveins: %edi, %edx, %esi
|
||||
# ALL: %0(s32) = COPY %edi
|
||||
# ALL-NEXT: %1(s8) = COPY %sil
|
||||
# ALL-NEXT: %2(s8) = COPY %edx
|
||||
# ALL-NEXT: %3(s32) = G_CONSTANT i32 0
|
||||
# ALL-NEXT: %4(s1) = G_ICMP intpred(sgt), %0(s32), %3
|
||||
# ALL-NEXT: G_BRCOND %4(s1), %bb.1.cond.true
|
||||
# ALL-NEXT: G_BR %bb.2.cond.false
|
||||
|
||||
# ALL-LABEL: bb.1.cond.true:
|
||||
# ALL: G_BR %bb.3.cond.end
|
||||
|
||||
# ALL-LABEL: bb.2.cond.false:
|
||||
# ALL-NEXT: successors: %bb.3.cond.end(0x80000000)
|
||||
|
||||
# ALL-LABEL: bb.3.cond.end:
|
||||
# ALL-NEXT: %5(s8) = G_PHI %1(s8), %bb.1.cond.true, %2(s8), %bb.2.cond.false
|
||||
# ALL-NEXT: %al = COPY %5(s8)
|
||||
# ALL-NEXT: RET 0, implicit %al
|
||||
body: |
|
||||
; ALL-LABEL: name: test_i8
|
||||
; ALL: bb.0.entry:
|
||||
; ALL: successors: %bb.1.cond.true(0x40000000), %bb.2.cond.false(0x40000000)
|
||||
; ALL: liveins: %edi, %edx, %esi
|
||||
; ALL: [[COPY:%[0-9]+]](s32) = COPY %edi
|
||||
; ALL: [[COPY1:%[0-9]+]](s8) = COPY %sil
|
||||
; ALL: [[COPY2:%[0-9]+]](s8) = COPY %edx
|
||||
; ALL: [[C:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; ALL: [[ICMP:%[0-9]+]](s1) = G_ICMP intpred(sgt), [[COPY]](s32), [[C]]
|
||||
; ALL: G_BRCOND [[ICMP]](s1), %bb.1.cond.true
|
||||
; ALL: G_BR %bb.2.cond.false
|
||||
; ALL: bb.1.cond.true:
|
||||
; ALL: successors: %bb.3.cond.end(0x80000000)
|
||||
; ALL: G_BR %bb.3.cond.end
|
||||
; ALL: bb.2.cond.false:
|
||||
; ALL: successors: %bb.3.cond.end(0x80000000)
|
||||
; ALL: bb.3.cond.end:
|
||||
; ALL: [[PHI:%[0-9]+]](s8) = G_PHI [[COPY1]](s8), %bb.1.cond.true, [[COPY2]](s8), %bb.2.cond.false
|
||||
; ALL: %al = COPY [[PHI]](s8)
|
||||
; ALL: RET 0, implicit %al
|
||||
bb.1.entry:
|
||||
successors: %bb.2.cond.true(0x40000000), %bb.3.cond.false(0x40000000)
|
||||
liveins: %edi, %edx, %esi
|
||||
|
@ -257,7 +261,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_i16
|
||||
# ALL-LABEL: name: test_i16
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -273,28 +276,30 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# ALL: bb.0.entry:
|
||||
# ALL-NEXT: successors: %bb.1.cond.true(0x40000000), %bb.2.cond.false(0x40000000)
|
||||
# ALL-NEXT: liveins: %edi, %edx, %esi
|
||||
# ALL: %0(s32) = COPY %edi
|
||||
# ALL-NEXT: %1(s16) = COPY %si
|
||||
# ALL-NEXT: %2(s16) = COPY %edx
|
||||
# ALL-NEXT: %3(s32) = G_CONSTANT i32 0
|
||||
# ALL-NEXT: %4(s1) = G_ICMP intpred(sgt), %0(s32), %3
|
||||
# ALL-NEXT: G_BRCOND %4(s1), %bb.1.cond.true
|
||||
# ALL-NEXT: G_BR %bb.2.cond.false
|
||||
|
||||
# ALL-LABEL: bb.1.cond.true:
|
||||
# ALL: G_BR %bb.3.cond.end
|
||||
|
||||
# ALL-LABEL: bb.2.cond.false:
|
||||
# ALL-NEXT: successors: %bb.3.cond.end(0x80000000)
|
||||
|
||||
# ALL-LABEL: bb.3.cond.end:
|
||||
# ALL-NEXT: %5(s16) = G_PHI %1(s16), %bb.1.cond.true, %2(s16), %bb.2.cond.false
|
||||
# ALL-NEXT: %ax = COPY %5(s16)
|
||||
# ALL-NEXT: RET 0, implicit %ax
|
||||
body: |
|
||||
; ALL-LABEL: name: test_i16
|
||||
; ALL: bb.0.entry:
|
||||
; ALL: successors: %bb.1.cond.true(0x40000000), %bb.2.cond.false(0x40000000)
|
||||
; ALL: liveins: %edi, %edx, %esi
|
||||
; ALL: [[COPY:%[0-9]+]](s32) = COPY %edi
|
||||
; ALL: [[COPY1:%[0-9]+]](s16) = COPY %si
|
||||
; ALL: [[COPY2:%[0-9]+]](s16) = COPY %edx
|
||||
; ALL: [[C:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; ALL: [[ICMP:%[0-9]+]](s1) = G_ICMP intpred(sgt), [[COPY]](s32), [[C]]
|
||||
; ALL: G_BRCOND [[ICMP]](s1), %bb.1.cond.true
|
||||
; ALL: G_BR %bb.2.cond.false
|
||||
; ALL: bb.1.cond.true:
|
||||
; ALL: successors: %bb.3.cond.end(0x80000000)
|
||||
; ALL: G_BR %bb.3.cond.end
|
||||
; ALL: bb.2.cond.false:
|
||||
; ALL: successors: %bb.3.cond.end(0x80000000)
|
||||
; ALL: bb.3.cond.end:
|
||||
; ALL: [[PHI:%[0-9]+]](s16) = G_PHI [[COPY1]](s16), %bb.1.cond.true, [[COPY2]](s16), %bb.2.cond.false
|
||||
; ALL: %ax = COPY [[PHI]](s16)
|
||||
; ALL: RET 0, implicit %ax
|
||||
bb.1.entry:
|
||||
successors: %bb.2.cond.true(0x40000000), %bb.3.cond.false(0x40000000)
|
||||
liveins: %edi, %edx, %esi
|
||||
|
@ -324,7 +329,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_i32
|
||||
# ALL-LABEL: name: test_i32
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -340,28 +344,30 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# ALL: bb.0.entry:
|
||||
# ALL-NEXT: successors: %bb.1.cond.true(0x40000000), %bb.2.cond.false(0x40000000)
|
||||
# ALL-NEXT: liveins: %edi, %edx, %esi
|
||||
# ALL: %0(s32) = COPY %edi
|
||||
# ALL-NEXT: %1(s32) = COPY %esi
|
||||
# ALL-NEXT: %2(s32) = COPY %edx
|
||||
# ALL-NEXT: %3(s32) = G_CONSTANT i32 0
|
||||
# ALL-NEXT: %4(s1) = G_ICMP intpred(sgt), %0(s32), %3
|
||||
# ALL-NEXT: G_BRCOND %4(s1), %bb.1.cond.true
|
||||
# ALL-NEXT: G_BR %bb.2.cond.false
|
||||
|
||||
# ALL-LABEL: bb.1.cond.true:
|
||||
# ALL: G_BR %bb.3.cond.end
|
||||
|
||||
# ALL-LABEL: bb.2.cond.false:
|
||||
# ALL-NEXT: successors: %bb.3.cond.end(0x80000000)
|
||||
|
||||
# ALL-LABEL: bb.3.cond.end:
|
||||
# ALL-NEXT: %5(s32) = G_PHI %1(s32), %bb.1.cond.true, %2(s32), %bb.2.cond.false
|
||||
# ALL-NEXT: %eax = COPY %5(s32)
|
||||
# ALL-NEXT: RET 0, implicit %eax
|
||||
body: |
|
||||
; ALL-LABEL: name: test_i32
|
||||
; ALL: bb.0.entry:
|
||||
; ALL: successors: %bb.1.cond.true(0x40000000), %bb.2.cond.false(0x40000000)
|
||||
; ALL: liveins: %edi, %edx, %esi
|
||||
; ALL: [[COPY:%[0-9]+]](s32) = COPY %edi
|
||||
; ALL: [[COPY1:%[0-9]+]](s32) = COPY %esi
|
||||
; ALL: [[COPY2:%[0-9]+]](s32) = COPY %edx
|
||||
; ALL: [[C:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; ALL: [[ICMP:%[0-9]+]](s1) = G_ICMP intpred(sgt), [[COPY]](s32), [[C]]
|
||||
; ALL: G_BRCOND [[ICMP]](s1), %bb.1.cond.true
|
||||
; ALL: G_BR %bb.2.cond.false
|
||||
; ALL: bb.1.cond.true:
|
||||
; ALL: successors: %bb.3.cond.end(0x80000000)
|
||||
; ALL: G_BR %bb.3.cond.end
|
||||
; ALL: bb.2.cond.false:
|
||||
; ALL: successors: %bb.3.cond.end(0x80000000)
|
||||
; ALL: bb.3.cond.end:
|
||||
; ALL: [[PHI:%[0-9]+]](s32) = G_PHI [[COPY1]](s32), %bb.1.cond.true, [[COPY2]](s32), %bb.2.cond.false
|
||||
; ALL: %eax = COPY [[PHI]](s32)
|
||||
; ALL: RET 0, implicit %eax
|
||||
bb.1.entry:
|
||||
successors: %bb.2.cond.true(0x40000000), %bb.3.cond.false(0x40000000)
|
||||
liveins: %edi, %edx, %esi
|
||||
|
@ -391,7 +397,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_i64
|
||||
# ALL-LABEL: name: test_i64
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -407,28 +412,30 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# ALL: bb.0.entry:
|
||||
# ALL-NEXT: successors: %bb.1.cond.true(0x40000000), %bb.2.cond.false(0x40000000)
|
||||
# ALL-NEXT: liveins: %edi, %rdx, %rsi
|
||||
# ALL: %0(s32) = COPY %edi
|
||||
# ALL-NEXT: %1(s64) = COPY %rsi
|
||||
# ALL-NEXT: %2(s64) = COPY %rdx
|
||||
# ALL-NEXT: %3(s32) = G_CONSTANT i32 0
|
||||
# ALL-NEXT: %4(s1) = G_ICMP intpred(sgt), %0(s32), %3
|
||||
# ALL-NEXT: G_BRCOND %4(s1), %bb.1.cond.true
|
||||
# ALL-NEXT: G_BR %bb.2.cond.false
|
||||
|
||||
# ALL-LABEL: bb.1.cond.true:
|
||||
# ALL: G_BR %bb.3.cond.end
|
||||
|
||||
# ALL-LABEL: bb.2.cond.false:
|
||||
# ALL-NEXT: successors: %bb.3.cond.end(0x80000000)
|
||||
|
||||
# ALL-LABEL: bb.3.cond.end:
|
||||
# ALL-NEXT: %5(s64) = G_PHI %1(s64), %bb.1.cond.true, %2(s64), %bb.2.cond.false
|
||||
# ALL-NEXT: %rax = COPY %5(s64)
|
||||
# ALL-NEXT: RET 0, implicit %rax
|
||||
body: |
|
||||
; ALL-LABEL: name: test_i64
|
||||
; ALL: bb.0.entry:
|
||||
; ALL: successors: %bb.1.cond.true(0x40000000), %bb.2.cond.false(0x40000000)
|
||||
; ALL: liveins: %edi, %rdx, %rsi
|
||||
; ALL: [[COPY:%[0-9]+]](s32) = COPY %edi
|
||||
; ALL: [[COPY1:%[0-9]+]](s64) = COPY %rsi
|
||||
; ALL: [[COPY2:%[0-9]+]](s64) = COPY %rdx
|
||||
; ALL: [[C:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; ALL: [[ICMP:%[0-9]+]](s1) = G_ICMP intpred(sgt), [[COPY]](s32), [[C]]
|
||||
; ALL: G_BRCOND [[ICMP]](s1), %bb.1.cond.true
|
||||
; ALL: G_BR %bb.2.cond.false
|
||||
; ALL: bb.1.cond.true:
|
||||
; ALL: successors: %bb.3.cond.end(0x80000000)
|
||||
; ALL: G_BR %bb.3.cond.end
|
||||
; ALL: bb.2.cond.false:
|
||||
; ALL: successors: %bb.3.cond.end(0x80000000)
|
||||
; ALL: bb.3.cond.end:
|
||||
; ALL: [[PHI:%[0-9]+]](s64) = G_PHI [[COPY1]](s64), %bb.1.cond.true, [[COPY2]](s64), %bb.2.cond.false
|
||||
; ALL: %rax = COPY [[PHI]](s64)
|
||||
; ALL: RET 0, implicit %rax
|
||||
bb.1.entry:
|
||||
successors: %bb.2.cond.true(0x40000000), %bb.3.cond.false(0x40000000)
|
||||
liveins: %edi, %rdx, %rsi
|
||||
|
@ -458,7 +465,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_float
|
||||
# ALL-LABEL: name: test_float
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -474,28 +480,30 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# ALL: bb.0.entry:
|
||||
# ALL-NEXT: successors: %bb.1.cond.true(0x40000000), %bb.2.cond.false(0x40000000)
|
||||
# ALL-NEXT: liveins: %edi, %xmm0, %xmm1
|
||||
# ALL: %0(s32) = COPY %edi
|
||||
# ALL-NEXT: %1(s32) = COPY %xmm0
|
||||
# ALL-NEXT: %2(s32) = COPY %xmm1
|
||||
# ALL-NEXT: %3(s32) = G_CONSTANT i32 0
|
||||
# ALL-NEXT: %4(s1) = G_ICMP intpred(sgt), %0(s32), %3
|
||||
# ALL-NEXT: G_BRCOND %4(s1), %bb.1.cond.true
|
||||
# ALL-NEXT: G_BR %bb.2.cond.false
|
||||
|
||||
# ALL-LABEL: bb.1.cond.true:
|
||||
# ALL: G_BR %bb.3.cond.end
|
||||
|
||||
# ALL-LABEL: bb.2.cond.false:
|
||||
# ALL-NEXT: successors: %bb.3.cond.end(0x80000000)
|
||||
|
||||
# ALL-LABEL: bb.3.cond.end:
|
||||
# ALL-NEXT: %5(s32) = G_PHI %1(s32), %bb.1.cond.true, %2(s32), %bb.2.cond.false
|
||||
# ALL-NEXT: %xmm0 = COPY %5(s32)
|
||||
# ALL-NEXT: RET 0, implicit %xmm0
|
||||
body: |
|
||||
; ALL-LABEL: name: test_float
|
||||
; ALL: bb.0.entry:
|
||||
; ALL: successors: %bb.1.cond.true(0x40000000), %bb.2.cond.false(0x40000000)
|
||||
; ALL: liveins: %edi, %xmm0, %xmm1
|
||||
; ALL: [[COPY:%[0-9]+]](s32) = COPY %edi
|
||||
; ALL: [[COPY1:%[0-9]+]](s32) = COPY %xmm0
|
||||
; ALL: [[COPY2:%[0-9]+]](s32) = COPY %xmm1
|
||||
; ALL: [[C:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; ALL: [[ICMP:%[0-9]+]](s1) = G_ICMP intpred(sgt), [[COPY]](s32), [[C]]
|
||||
; ALL: G_BRCOND [[ICMP]](s1), %bb.1.cond.true
|
||||
; ALL: G_BR %bb.2.cond.false
|
||||
; ALL: bb.1.cond.true:
|
||||
; ALL: successors: %bb.3.cond.end(0x80000000)
|
||||
; ALL: G_BR %bb.3.cond.end
|
||||
; ALL: bb.2.cond.false:
|
||||
; ALL: successors: %bb.3.cond.end(0x80000000)
|
||||
; ALL: bb.3.cond.end:
|
||||
; ALL: [[PHI:%[0-9]+]](s32) = G_PHI [[COPY1]](s32), %bb.1.cond.true, [[COPY2]](s32), %bb.2.cond.false
|
||||
; ALL: %xmm0 = COPY [[PHI]](s32)
|
||||
; ALL: RET 0, implicit %xmm0
|
||||
bb.1.entry:
|
||||
successors: %bb.2.cond.true(0x40000000), %bb.3.cond.false(0x40000000)
|
||||
liveins: %edi, %xmm0, %xmm1
|
||||
|
@ -525,7 +533,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_double
|
||||
# ALL-LABEL: name: test_double
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -541,28 +548,30 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# ALL: bb.0.entry:
|
||||
# ALL-NEXT: successors: %bb.1.cond.true(0x40000000), %bb.2.cond.false(0x40000000)
|
||||
# ALL-NEXT: liveins: %edi, %xmm0, %xmm1
|
||||
# ALL: %0(s32) = COPY %edi
|
||||
# ALL-NEXT: %1(s64) = COPY %xmm0
|
||||
# ALL-NEXT: %2(s64) = COPY %xmm1
|
||||
# ALL-NEXT: %3(s32) = G_CONSTANT i32 0
|
||||
# ALL-NEXT: %4(s1) = G_ICMP intpred(sgt), %0(s32), %3
|
||||
# ALL-NEXT: G_BRCOND %4(s1), %bb.1.cond.true
|
||||
# ALL-NEXT: G_BR %bb.2.cond.false
|
||||
|
||||
# ALL-LABEL: bb.1.cond.true:
|
||||
# ALL: G_BR %bb.3.cond.end
|
||||
|
||||
# ALL-LABEL: bb.2.cond.false:
|
||||
# ALL-NEXT: successors: %bb.3.cond.end(0x80000000)
|
||||
|
||||
# ALL-LABEL: bb.3.cond.end:
|
||||
# ALL-NEXT: %5(s64) = G_PHI %1(s64), %bb.1.cond.true, %2(s64), %bb.2.cond.false
|
||||
# ALL-NEXT: %xmm0 = COPY %5(s64)
|
||||
# ALL-NEXT: RET 0, implicit %xmm0
|
||||
body: |
|
||||
; ALL-LABEL: name: test_double
|
||||
; ALL: bb.0.entry:
|
||||
; ALL: successors: %bb.1.cond.true(0x40000000), %bb.2.cond.false(0x40000000)
|
||||
; ALL: liveins: %edi, %xmm0, %xmm1
|
||||
; ALL: [[COPY:%[0-9]+]](s32) = COPY %edi
|
||||
; ALL: [[COPY1:%[0-9]+]](s64) = COPY %xmm0
|
||||
; ALL: [[COPY2:%[0-9]+]](s64) = COPY %xmm1
|
||||
; ALL: [[C:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; ALL: [[ICMP:%[0-9]+]](s1) = G_ICMP intpred(sgt), [[COPY]](s32), [[C]]
|
||||
; ALL: G_BRCOND [[ICMP]](s1), %bb.1.cond.true
|
||||
; ALL: G_BR %bb.2.cond.false
|
||||
; ALL: bb.1.cond.true:
|
||||
; ALL: successors: %bb.3.cond.end(0x80000000)
|
||||
; ALL: G_BR %bb.3.cond.end
|
||||
; ALL: bb.2.cond.false:
|
||||
; ALL: successors: %bb.3.cond.end(0x80000000)
|
||||
; ALL: bb.3.cond.end:
|
||||
; ALL: [[PHI:%[0-9]+]](s64) = G_PHI [[COPY1]](s64), %bb.1.cond.true, [[COPY2]](s64), %bb.2.cond.false
|
||||
; ALL: %xmm0 = COPY [[PHI]](s64)
|
||||
; ALL: RET 0, implicit %xmm0
|
||||
bb.1.entry:
|
||||
successors: %bb.2.cond.true(0x40000000), %bb.3.cond.false(0x40000000)
|
||||
liveins: %edi, %xmm0, %xmm1
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=x86_64-linux-gnu -mattr=+sse2 -global-isel -run-pass=legalizer %s -o - | FileCheck %s --check-prefix=ALL --check-prefix=SSE2
|
||||
|
||||
--- |
|
||||
|
@ -23,7 +24,6 @@
|
|||
...
|
||||
---
|
||||
name: test_sub_v16i8
|
||||
# ALL-LABEL: name: test_sub_v16i8
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -31,14 +31,15 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# ALL: %0(<16 x s8>) = IMPLICIT_DEF
|
||||
# ALL-NEXT: %1(<16 x s8>) = IMPLICIT_DEF
|
||||
# ALL-NEXT: %2(<16 x s8>) = G_SUB %0, %1
|
||||
# ALL-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %xmm0, %xmm1
|
||||
|
||||
; ALL-LABEL: name: test_sub_v16i8
|
||||
; ALL: [[DEF:%[0-9]+]](<16 x s8>) = IMPLICIT_DEF
|
||||
; ALL: [[DEF1:%[0-9]+]](<16 x s8>) = IMPLICIT_DEF
|
||||
; ALL: [[SUB:%[0-9]+]](<16 x s8>) = G_SUB [[DEF]], [[DEF1]]
|
||||
; ALL: RET 0
|
||||
%0(<16 x s8>) = IMPLICIT_DEF
|
||||
%1(<16 x s8>) = IMPLICIT_DEF
|
||||
%2(<16 x s8>) = G_SUB %0, %1
|
||||
|
@ -47,7 +48,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_sub_v8i16
|
||||
# ALL-LABEL: name: test_sub_v8i16
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -55,14 +55,15 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# ALL: %0(<8 x s16>) = IMPLICIT_DEF
|
||||
# ALL-NEXT: %1(<8 x s16>) = IMPLICIT_DEF
|
||||
# ALL-NEXT: %2(<8 x s16>) = G_SUB %0, %1
|
||||
# ALL-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %xmm0, %xmm1
|
||||
|
||||
; ALL-LABEL: name: test_sub_v8i16
|
||||
; ALL: [[DEF:%[0-9]+]](<8 x s16>) = IMPLICIT_DEF
|
||||
; ALL: [[DEF1:%[0-9]+]](<8 x s16>) = IMPLICIT_DEF
|
||||
; ALL: [[SUB:%[0-9]+]](<8 x s16>) = G_SUB [[DEF]], [[DEF1]]
|
||||
; ALL: RET 0
|
||||
%0(<8 x s16>) = IMPLICIT_DEF
|
||||
%1(<8 x s16>) = IMPLICIT_DEF
|
||||
%2(<8 x s16>) = G_SUB %0, %1
|
||||
|
@ -71,7 +72,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_sub_v4i32
|
||||
# ALL-LABEL: name: test_sub_v4i32
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -79,14 +79,15 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# ALL: %0(<4 x s32>) = IMPLICIT_DEF
|
||||
# ALL-NEXT: %1(<4 x s32>) = IMPLICIT_DEF
|
||||
# ALL-NEXT: %2(<4 x s32>) = G_SUB %0, %1
|
||||
# ALL-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %xmm0, %xmm1
|
||||
|
||||
; ALL-LABEL: name: test_sub_v4i32
|
||||
; ALL: [[DEF:%[0-9]+]](<4 x s32>) = IMPLICIT_DEF
|
||||
; ALL: [[DEF1:%[0-9]+]](<4 x s32>) = IMPLICIT_DEF
|
||||
; ALL: [[SUB:%[0-9]+]](<4 x s32>) = G_SUB [[DEF]], [[DEF1]]
|
||||
; ALL: RET 0
|
||||
%0(<4 x s32>) = IMPLICIT_DEF
|
||||
%1(<4 x s32>) = IMPLICIT_DEF
|
||||
%2(<4 x s32>) = G_SUB %0, %1
|
||||
|
@ -95,7 +96,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_sub_v2i64
|
||||
# ALL-LABEL: name: test_sub_v2i64
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -103,14 +103,15 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# ALL: %0(<2 x s64>) = IMPLICIT_DEF
|
||||
# ALL-NEXT: %1(<2 x s64>) = IMPLICIT_DEF
|
||||
# ALL-NEXT: %2(<2 x s64>) = G_SUB %0, %1
|
||||
# ALL-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %xmm0, %xmm1
|
||||
|
||||
; ALL-LABEL: name: test_sub_v2i64
|
||||
; ALL: [[DEF:%[0-9]+]](<2 x s64>) = IMPLICIT_DEF
|
||||
; ALL: [[DEF1:%[0-9]+]](<2 x s64>) = IMPLICIT_DEF
|
||||
; ALL: [[SUB:%[0-9]+]](<2 x s64>) = G_SUB [[DEF]], [[DEF1]]
|
||||
; ALL: RET 0
|
||||
%0(<2 x s64>) = IMPLICIT_DEF
|
||||
%1(<2 x s64>) = IMPLICIT_DEF
|
||||
%2(<2 x s64>) = G_SUB %0, %1
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=x86_64-linux-gnu -mattr=+avx2 -global-isel -run-pass=legalizer %s -o - | FileCheck %s --check-prefix=ALL --check-prefix=AVX2
|
||||
# TODO: add tests for additional configuration after the legalization supported
|
||||
--- |
|
||||
|
@ -24,7 +25,6 @@
|
|||
...
|
||||
---
|
||||
name: test_sub_v32i8
|
||||
# ALL-LABEL: name: test_sub_v32i8
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -32,14 +32,15 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# AVX2: %0(<32 x s8>) = IMPLICIT_DEF
|
||||
# AVX2-NEXT: %1(<32 x s8>) = IMPLICIT_DEF
|
||||
# AVX2-NEXT: %2(<32 x s8>) = G_SUB %0, %1
|
||||
# AVX2-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %ymm0, %ymm1
|
||||
|
||||
; ALL-LABEL: name: test_sub_v32i8
|
||||
; ALL: [[DEF:%[0-9]+]](<32 x s8>) = IMPLICIT_DEF
|
||||
; ALL: [[DEF1:%[0-9]+]](<32 x s8>) = IMPLICIT_DEF
|
||||
; ALL: [[SUB:%[0-9]+]](<32 x s8>) = G_SUB [[DEF]], [[DEF1]]
|
||||
; ALL: RET 0
|
||||
%0(<32 x s8>) = IMPLICIT_DEF
|
||||
%1(<32 x s8>) = IMPLICIT_DEF
|
||||
%2(<32 x s8>) = G_SUB %0, %1
|
||||
|
@ -48,7 +49,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_sub_v16i16
|
||||
# ALL-LABEL: name: test_sub_v16i16
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -56,14 +56,15 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# AVX2: %0(<16 x s16>) = IMPLICIT_DEF
|
||||
# AVX2-NEXT: %1(<16 x s16>) = IMPLICIT_DEF
|
||||
# AVX2-NEXT: %2(<16 x s16>) = G_SUB %0, %1
|
||||
# AVX2-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %ymm0, %ymm1
|
||||
|
||||
; ALL-LABEL: name: test_sub_v16i16
|
||||
; ALL: [[DEF:%[0-9]+]](<16 x s16>) = IMPLICIT_DEF
|
||||
; ALL: [[DEF1:%[0-9]+]](<16 x s16>) = IMPLICIT_DEF
|
||||
; ALL: [[SUB:%[0-9]+]](<16 x s16>) = G_SUB [[DEF]], [[DEF1]]
|
||||
; ALL: RET 0
|
||||
%0(<16 x s16>) = IMPLICIT_DEF
|
||||
%1(<16 x s16>) = IMPLICIT_DEF
|
||||
%2(<16 x s16>) = G_SUB %0, %1
|
||||
|
@ -72,7 +73,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_sub_v8i32
|
||||
# ALL-LABEL: name: test_sub_v8i32
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -80,14 +80,15 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# AVX2: %0(<8 x s32>) = IMPLICIT_DEF
|
||||
# AVX2-NEXT: %1(<8 x s32>) = IMPLICIT_DEF
|
||||
# AVX2-NEXT: %2(<8 x s32>) = G_SUB %0, %1
|
||||
# AVX2-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %ymm0, %ymm1
|
||||
|
||||
; ALL-LABEL: name: test_sub_v8i32
|
||||
; ALL: [[DEF:%[0-9]+]](<8 x s32>) = IMPLICIT_DEF
|
||||
; ALL: [[DEF1:%[0-9]+]](<8 x s32>) = IMPLICIT_DEF
|
||||
; ALL: [[SUB:%[0-9]+]](<8 x s32>) = G_SUB [[DEF]], [[DEF1]]
|
||||
; ALL: RET 0
|
||||
%0(<8 x s32>) = IMPLICIT_DEF
|
||||
%1(<8 x s32>) = IMPLICIT_DEF
|
||||
%2(<8 x s32>) = G_SUB %0, %1
|
||||
|
@ -96,7 +97,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_sub_v4i64
|
||||
# ALL-LABEL: name: test_sub_v4i64
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -104,14 +104,15 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# AVX2: %0(<4 x s64>) = IMPLICIT_DEF
|
||||
# AVX2-NEXT: %1(<4 x s64>) = IMPLICIT_DEF
|
||||
# AVX2-NEXT: %2(<4 x s64>) = G_SUB %0, %1
|
||||
# AVX2-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %ymm0, %ymm1
|
||||
|
||||
; ALL-LABEL: name: test_sub_v4i64
|
||||
; ALL: [[DEF:%[0-9]+]](<4 x s64>) = IMPLICIT_DEF
|
||||
; ALL: [[DEF1:%[0-9]+]](<4 x s64>) = IMPLICIT_DEF
|
||||
; ALL: [[SUB:%[0-9]+]](<4 x s64>) = G_SUB [[DEF]], [[DEF1]]
|
||||
; ALL: RET 0
|
||||
%0(<4 x s64>) = IMPLICIT_DEF
|
||||
%1(<4 x s64>) = IMPLICIT_DEF
|
||||
%2(<4 x s64>) = G_SUB %0, %1
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=x86_64-linux-gnu -mattr=+avx512f,+avx512bw -global-isel -run-pass=legalizer %s -o - | FileCheck %s --check-prefix=ALL --check-prefix=AVX512BW
|
||||
# TODO: add tests for additional configuration after the legalization supported
|
||||
--- |
|
||||
|
@ -24,7 +25,6 @@
|
|||
...
|
||||
---
|
||||
name: test_sub_v64i8
|
||||
# ALL-LABEL: name: test_sub_v64i8
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -32,14 +32,15 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# AVX512BW: %0(<64 x s8>) = IMPLICIT_DEF
|
||||
# AVX512BW-NEXT: %1(<64 x s8>) = IMPLICIT_DEF
|
||||
# AVX512BW-NEXT: %2(<64 x s8>) = G_SUB %0, %1
|
||||
# AVX512BW-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %zmm0, %zmm1
|
||||
|
||||
; ALL-LABEL: name: test_sub_v64i8
|
||||
; ALL: [[DEF:%[0-9]+]](<64 x s8>) = IMPLICIT_DEF
|
||||
; ALL: [[DEF1:%[0-9]+]](<64 x s8>) = IMPLICIT_DEF
|
||||
; ALL: [[SUB:%[0-9]+]](<64 x s8>) = G_SUB [[DEF]], [[DEF1]]
|
||||
; ALL: RET 0
|
||||
%0(<64 x s8>) = IMPLICIT_DEF
|
||||
%1(<64 x s8>) = IMPLICIT_DEF
|
||||
%2(<64 x s8>) = G_SUB %0, %1
|
||||
|
@ -48,7 +49,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_sub_v32i16
|
||||
# ALL-LABEL: name: test_sub_v32i16
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -56,14 +56,15 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# AVX512BW: %0(<32 x s16>) = IMPLICIT_DEF
|
||||
# AVX512BW-NEXT: %1(<32 x s16>) = IMPLICIT_DEF
|
||||
# AVX512BW-NEXT: %2(<32 x s16>) = G_SUB %0, %1
|
||||
# AVX512BW-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %zmm0, %zmm1
|
||||
|
||||
; ALL-LABEL: name: test_sub_v32i16
|
||||
; ALL: [[DEF:%[0-9]+]](<32 x s16>) = IMPLICIT_DEF
|
||||
; ALL: [[DEF1:%[0-9]+]](<32 x s16>) = IMPLICIT_DEF
|
||||
; ALL: [[SUB:%[0-9]+]](<32 x s16>) = G_SUB [[DEF]], [[DEF1]]
|
||||
; ALL: RET 0
|
||||
%0(<32 x s16>) = IMPLICIT_DEF
|
||||
%1(<32 x s16>) = IMPLICIT_DEF
|
||||
%2(<32 x s16>) = G_SUB %0, %1
|
||||
|
@ -72,7 +73,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_sub_v16i32
|
||||
# ALL-LABEL: name: test_sub_v16i32
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -80,14 +80,15 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# ALL: %0(<16 x s32>) = IMPLICIT_DEF
|
||||
# ALL-NEXT: %1(<16 x s32>) = IMPLICIT_DEF
|
||||
# ALL-NEXT: %2(<16 x s32>) = G_SUB %0, %1
|
||||
# ALL-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %zmm0, %zmm1
|
||||
|
||||
; ALL-LABEL: name: test_sub_v16i32
|
||||
; ALL: [[DEF:%[0-9]+]](<16 x s32>) = IMPLICIT_DEF
|
||||
; ALL: [[DEF1:%[0-9]+]](<16 x s32>) = IMPLICIT_DEF
|
||||
; ALL: [[SUB:%[0-9]+]](<16 x s32>) = G_SUB [[DEF]], [[DEF1]]
|
||||
; ALL: RET 0
|
||||
%0(<16 x s32>) = IMPLICIT_DEF
|
||||
%1(<16 x s32>) = IMPLICIT_DEF
|
||||
%2(<16 x s32>) = G_SUB %0, %1
|
||||
|
@ -96,7 +97,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_sub_v8i64
|
||||
# ALL-LABEL: name: test_sub_v8i64
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -104,14 +104,15 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# ALL: %0(<8 x s64>) = IMPLICIT_DEF
|
||||
# ALL-NEXT: %1(<8 x s64>) = IMPLICIT_DEF
|
||||
# ALL-NEXT: %2(<8 x s64>) = G_SUB %0, %1
|
||||
# ALL-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %zmm0, %zmm1
|
||||
|
||||
; ALL-LABEL: name: test_sub_v8i64
|
||||
; ALL: [[DEF:%[0-9]+]](<8 x s64>) = IMPLICIT_DEF
|
||||
; ALL: [[DEF1:%[0-9]+]](<8 x s64>) = IMPLICIT_DEF
|
||||
; ALL: [[SUB:%[0-9]+]](<8 x s64>) = G_SUB [[DEF]], [[DEF1]]
|
||||
; ALL: RET 0
|
||||
%0(<8 x s64>) = IMPLICIT_DEF
|
||||
%1(<8 x s64>) = IMPLICIT_DEF
|
||||
%2(<8 x s64>) = G_SUB %0, %1
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=x86_64-linux-gnu -global-isel -run-pass=legalizer %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -12,7 +13,6 @@
|
|||
...
|
||||
---
|
||||
name: test_sub_i1
|
||||
# CHECK-LABEL: name: test_sub_i1
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -20,15 +20,16 @@ registers:
|
|||
- { id: 0, class: _, preferred-register: '' }
|
||||
- { id: 1, class: _, preferred-register: '' }
|
||||
- { id: 2, class: _, preferred-register: '' }
|
||||
# CHECK: %0(s32) = COPY %edx
|
||||
# CHECK-NEXT: %3(s8) = G_TRUNC %0(s32)
|
||||
# CHECK-NEXT: %4(s8) = G_TRUNC %0(s32)
|
||||
# CHECK-NEXT: %5(s8) = G_SUB %3, %4
|
||||
# CHECK-NEXT: %2(s1) = G_TRUNC %5(s8)
|
||||
# CHECK-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
|
||||
; CHECK-LABEL: name: test_sub_i1
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %edx
|
||||
; CHECK: [[TRUNC:%[0-9]+]](s8) = G_TRUNC [[COPY]](s32)
|
||||
; CHECK: [[TRUNC1:%[0-9]+]](s8) = G_TRUNC [[COPY]](s32)
|
||||
; CHECK: [[SUB:%[0-9]+]](s8) = G_SUB [[TRUNC]], [[TRUNC1]]
|
||||
; CHECK: [[TRUNC2:%[0-9]+]](s1) = G_TRUNC [[SUB]](s8)
|
||||
; CHECK: RET 0
|
||||
%0(s32) = COPY %edx
|
||||
%1(s1) = G_TRUNC %0(s32)
|
||||
%2(s1) = G_SUB %1, %1
|
||||
|
@ -36,7 +37,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_sub_i32
|
||||
# CHECK-LABEL: name: test_sub_i32
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -45,15 +45,17 @@ registers:
|
|||
- { id: 0, class: _ }
|
||||
- { id: 1, class: _ }
|
||||
- { id: 2, class: _ }
|
||||
# CHECK: %0(s32) = COPY %edi
|
||||
# CHECK-NEXT: %1(s32) = COPY %esi
|
||||
# CHECK-NEXT: %2(s32) = G_SUB %0, %1
|
||||
# CHECK-NEXT: %eax = COPY %2(s32)
|
||||
# CHECK-NEXT: RET 0, implicit %eax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
liveins: %edi, %esi
|
||||
|
||||
; CHECK-LABEL: name: test_sub_i32
|
||||
; CHECK: liveins: %edi, %esi
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %edi
|
||||
; CHECK: [[COPY1:%[0-9]+]](s32) = COPY %esi
|
||||
; CHECK: [[SUB:%[0-9]+]](s32) = G_SUB [[COPY]], [[COPY1]]
|
||||
; CHECK: %eax = COPY [[SUB]](s32)
|
||||
; CHECK: RET 0, implicit %eax
|
||||
%0(s32) = COPY %edi
|
||||
%1(s32) = COPY %esi
|
||||
%2(s32) = G_SUB %0, %1
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=x86_64-linux-gnu -global-isel -run-pass=legalizer %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
|
@ -29,7 +30,6 @@
|
|||
...
|
||||
---
|
||||
name: test_xor_i1
|
||||
# CHECK-LABEL: name: test_xor_i1
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -37,15 +37,16 @@ registers:
|
|||
- { id: 0, class: _, preferred-register: '' }
|
||||
- { id: 1, class: _, preferred-register: '' }
|
||||
- { id: 2, class: _, preferred-register: '' }
|
||||
# CHECK: %0(s32) = COPY %edx
|
||||
# CHECK-NEXT: %3(s8) = G_TRUNC %0(s32)
|
||||
# CHECK-NEXT: %4(s8) = G_TRUNC %0(s32)
|
||||
# CHECK-NEXT: %5(s8) = G_XOR %3, %4
|
||||
# CHECK-NEXT: %2(s1) = G_TRUNC %5(s8)
|
||||
# CHECK-NEXT: RET 0
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
|
||||
; CHECK-LABEL: name: test_xor_i1
|
||||
; CHECK: [[COPY:%[0-9]+]](s32) = COPY %edx
|
||||
; CHECK: [[TRUNC:%[0-9]+]](s8) = G_TRUNC [[COPY]](s32)
|
||||
; CHECK: [[TRUNC1:%[0-9]+]](s8) = G_TRUNC [[COPY]](s32)
|
||||
; CHECK: [[XOR:%[0-9]+]](s8) = G_XOR [[TRUNC]], [[TRUNC1]]
|
||||
; CHECK: [[TRUNC2:%[0-9]+]](s1) = G_TRUNC [[XOR]](s8)
|
||||
; CHECK: RET 0
|
||||
%0(s32) = COPY %edx
|
||||
%1(s1) = G_TRUNC %0(s32)
|
||||
%2(s1) = G_XOR %1, %1
|
||||
|
@ -53,7 +54,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_xor_i8
|
||||
# CHECK-LABEL: name: test_xor_i8
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -64,12 +64,13 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# CHECK: %0(s8) = IMPLICIT_DEF
|
||||
# CHECK-NEXT: %1(s8) = G_XOR %0, %0
|
||||
# CHECK-NEXT: %al = COPY %1(s8)
|
||||
# CHECK-NEXT: RET 0, implicit %al
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
; CHECK-LABEL: name: test_xor_i8
|
||||
; CHECK: [[DEF:%[0-9]+]](s8) = IMPLICIT_DEF
|
||||
; CHECK: [[XOR:%[0-9]+]](s8) = G_XOR [[DEF]], [[DEF]]
|
||||
; CHECK: %al = COPY [[XOR]](s8)
|
||||
; CHECK: RET 0, implicit %al
|
||||
%0(s8) = IMPLICIT_DEF
|
||||
%1(s8) = G_XOR %0, %0
|
||||
%al = COPY %1(s8)
|
||||
|
@ -78,7 +79,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_xor_i16
|
||||
# CHECK-LABEL: name: test_xor_i16
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -89,12 +89,13 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# CHECK: %0(s16) = IMPLICIT_DEF
|
||||
# CHECK-NEXT: %1(s16) = G_XOR %0, %0
|
||||
# CHECK-NEXT: %ax = COPY %1(s16)
|
||||
# CHECK-NEXT: RET 0, implicit %ax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
; CHECK-LABEL: name: test_xor_i16
|
||||
; CHECK: [[DEF:%[0-9]+]](s16) = IMPLICIT_DEF
|
||||
; CHECK: [[XOR:%[0-9]+]](s16) = G_XOR [[DEF]], [[DEF]]
|
||||
; CHECK: %ax = COPY [[XOR]](s16)
|
||||
; CHECK: RET 0, implicit %ax
|
||||
%0(s16) = IMPLICIT_DEF
|
||||
%1(s16) = G_XOR %0, %0
|
||||
%ax = COPY %1(s16)
|
||||
|
@ -103,7 +104,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_xor_i32
|
||||
# CHECK-LABEL: name: test_xor_i32
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -114,12 +114,13 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# CHECK: %0(s32) = IMPLICIT_DEF
|
||||
# CHECK-NEXT: %1(s32) = G_XOR %0, %0
|
||||
# CHECK-NEXT: %eax = COPY %1(s32)
|
||||
# CHECK-NEXT: RET 0, implicit %eax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
; CHECK-LABEL: name: test_xor_i32
|
||||
; CHECK: [[DEF:%[0-9]+]](s32) = IMPLICIT_DEF
|
||||
; CHECK: [[XOR:%[0-9]+]](s32) = G_XOR [[DEF]], [[DEF]]
|
||||
; CHECK: %eax = COPY [[XOR]](s32)
|
||||
; CHECK: RET 0, implicit %eax
|
||||
%0(s32) = IMPLICIT_DEF
|
||||
%1(s32) = G_XOR %0, %0
|
||||
%eax = COPY %1(s32)
|
||||
|
@ -128,7 +129,6 @@ body: |
|
|||
...
|
||||
---
|
||||
name: test_xor_i64
|
||||
# CHECK-LABEL: name: test_xor_i64
|
||||
alignment: 4
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
|
@ -139,12 +139,13 @@ liveins:
|
|||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
# CHECK: %0(s64) = IMPLICIT_DEF
|
||||
# CHECK-NEXT: %1(s64) = G_XOR %0, %0
|
||||
# CHECK-NEXT: %rax = COPY %1(s64)
|
||||
# CHECK-NEXT: RET 0, implicit %rax
|
||||
body: |
|
||||
bb.1 (%ir-block.0):
|
||||
; CHECK-LABEL: name: test_xor_i64
|
||||
; CHECK: [[DEF:%[0-9]+]](s64) = IMPLICIT_DEF
|
||||
; CHECK: [[XOR:%[0-9]+]](s64) = G_XOR [[DEF]], [[DEF]]
|
||||
; CHECK: %rax = COPY [[XOR]](s64)
|
||||
; CHECK: RET 0, implicit %rax
|
||||
%0(s64) = IMPLICIT_DEF
|
||||
%1(s64) = G_XOR %0, %0
|
||||
%rax = COPY %1(s64)
|
||||
|
|
Loading…
Reference in New Issue