mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-22 13:32:09 +00:00
[ARM] GlobalISel: Tighten legalizer tests. NFC
Make sure that all the legalizer tests where the original instruction needs to be removed check for the removal. We do this by adding CHECK-NOT lines before and after the replacement sequence. This won't catch pathological cases where the instruction remains somewhere in the middle of the instruction sequence that's supposed to replace it, but hopefully that won't occur in practice (since ideally we'd be setting the insert point for the new instruction sequence either before or after the original instruction and not fiddle with it while building the sequence). llvm-svn: 307647
This commit is contained in:
parent
5bcb5b930a
commit
9459d95faf
@ -36,6 +36,7 @@ body: |
|
||||
%0(s32) = COPY %r0
|
||||
%1(s32) = COPY %r1
|
||||
; HWDIV: [[R:%[0-9]+]](s32) = G_SDIV [[X]], [[Y]]
|
||||
; SOFT-NOT: G_SDIV
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -44,6 +45,7 @@ body: |
|
||||
; SOFT-DEFAULT: BLX $__divsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s32) = COPY %r0
|
||||
; SOFT: ADJCALLSTACKUP
|
||||
; SOFT-NOT: G_SDIV
|
||||
%2(s32) = G_SDIV %0, %1
|
||||
; CHECK: %r0 = COPY [[R]]
|
||||
%r0 = COPY %2(s32)
|
||||
@ -70,6 +72,7 @@ body: |
|
||||
%0(s32) = COPY %r0
|
||||
%1(s32) = COPY %r1
|
||||
; HWDIV: [[R:%[0-9]+]](s32) = G_UDIV [[X]], [[Y]]
|
||||
; SOFT-NOT: G_UDIV
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -78,6 +81,7 @@ body: |
|
||||
; SOFT-DEFAULT: BLX $__udivsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s32) = COPY %r0
|
||||
; SOFT: ADJCALLSTACKUP
|
||||
; SOFT-NOT: G_UDIV
|
||||
%2(s32) = G_UDIV %0, %1
|
||||
; CHECK: %r0 = COPY [[R]]
|
||||
%r0 = COPY %2(s32)
|
||||
@ -106,6 +110,7 @@ body: |
|
||||
%0(s16) = COPY %r0
|
||||
%1(s16) = COPY %r1
|
||||
; HWDIV: [[R32:%[0-9]+]](s32) = G_SDIV [[X32]], [[Y32]]
|
||||
; SOFT-NOT: G_SDIV
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X32]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y32]]
|
||||
@ -114,7 +119,9 @@ body: |
|
||||
; SOFT-DEFAULT: BLX $__divsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
|
||||
; SOFT-DEFAULT: [[R32:%[0-9]+]](s32) = COPY %r0
|
||||
; SOFT: ADJCALLSTACKUP
|
||||
; SOFT-NOT: G_SDIV
|
||||
; CHECK: [[R:%[0-9]+]](s16) = G_TRUNC [[R32]]
|
||||
; SOFT-NOT: G_SDIV
|
||||
%2(s16) = G_SDIV %0, %1
|
||||
; CHECK: %r0 = COPY [[R]]
|
||||
%r0 = COPY %2(s16)
|
||||
@ -143,6 +150,7 @@ body: |
|
||||
%0(s16) = COPY %r0
|
||||
%1(s16) = COPY %r1
|
||||
; HWDIV: [[R32:%[0-9]+]](s32) = G_UDIV [[X32]], [[Y32]]
|
||||
; SOFT-NOT: G_UDIV
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X32]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y32]]
|
||||
@ -151,7 +159,9 @@ body: |
|
||||
; SOFT-DEFAULT: BLX $__udivsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
|
||||
; SOFT-DEFAULT: [[R32:%[0-9]+]](s32) = COPY %r0
|
||||
; SOFT: ADJCALLSTACKUP
|
||||
; SOFT-NOT: G_UDIV
|
||||
; CHECK: [[R:%[0-9]+]](s16) = G_TRUNC [[R32]]
|
||||
; SOFT-NOT: G_UDIV
|
||||
%2(s16) = G_UDIV %0, %1
|
||||
; CHECK: %r0 = COPY [[R]]
|
||||
%r0 = COPY %2(s16)
|
||||
@ -180,6 +190,7 @@ body: |
|
||||
%0(s8) = COPY %r0
|
||||
%1(s8) = COPY %r1
|
||||
; HWDIV: [[R32:%[0-9]+]](s32) = G_SDIV [[X32]], [[Y32]]
|
||||
; SOFT-NOT: G_SDIV
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X32]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y32]]
|
||||
@ -188,7 +199,9 @@ body: |
|
||||
; SOFT-DEFAULT: BLX $__divsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
|
||||
; SOFT-DEFAULT: [[R32:%[0-9]+]](s32) = COPY %r0
|
||||
; SOFT: ADJCALLSTACKUP
|
||||
; SOFT-NOT: G_SDIV
|
||||
; CHECK: [[R:%[0-9]+]](s8) = G_TRUNC [[R32]]
|
||||
; SOFT-NOT: G_SDIV
|
||||
%2(s8) = G_SDIV %0, %1
|
||||
; CHECK: %r0 = COPY [[R]]
|
||||
%r0 = COPY %2(s8)
|
||||
@ -217,6 +230,7 @@ body: |
|
||||
%0(s8) = COPY %r0
|
||||
%1(s8) = COPY %r1
|
||||
; HWDIV: [[R32:%[0-9]+]](s32) = G_UDIV [[X32]], [[Y32]]
|
||||
; SOFT-NOT: G_UDIV
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X32]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y32]]
|
||||
@ -225,7 +239,9 @@ body: |
|
||||
; SOFT-DEFAULT: BLX $__udivsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
|
||||
; SOFT-DEFAULT: [[R32:%[0-9]+]](s32) = COPY %r0
|
||||
; SOFT: ADJCALLSTACKUP
|
||||
; SOFT-NOT: G_UDIV
|
||||
; CHECK: [[R:%[0-9]+]](s8) = G_TRUNC [[R32]]
|
||||
; SOFT-NOT: G_UDIV
|
||||
%2(s8) = G_UDIV %0, %1
|
||||
; CHECK: %r0 = COPY [[R]]
|
||||
%r0 = COPY %2(s8)
|
||||
@ -254,6 +270,7 @@ body: |
|
||||
; HWDIV: [[Q:%[0-9]+]](s32) = G_SDIV [[X]], [[Y]]
|
||||
; HWDIV: [[P:%[0-9]+]](s32) = G_MUL [[Q]], [[Y]]
|
||||
; HWDIV: [[R:%[0-9]+]](s32) = G_SUB [[X]], [[P]]
|
||||
; SOFT-NOT: G_SREM
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -262,6 +279,7 @@ body: |
|
||||
; SOFT-DEFAULT: BLX $__modsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s32) = COPY %r0
|
||||
; SOFT: ADJCALLSTACKUP
|
||||
; SOFT-NOT: G_SREM
|
||||
%2(s32) = G_SREM %0, %1
|
||||
; CHECK: %r0 = COPY [[R]]
|
||||
%r0 = COPY %2(s32)
|
||||
@ -290,6 +308,7 @@ body: |
|
||||
; HWDIV: [[Q:%[0-9]+]](s32) = G_UDIV [[X]], [[Y]]
|
||||
; HWDIV: [[P:%[0-9]+]](s32) = G_MUL [[Q]], [[Y]]
|
||||
; HWDIV: [[R:%[0-9]+]](s32) = G_SUB [[X]], [[P]]
|
||||
; SOFT-NOT: G_UREM
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -298,6 +317,7 @@ body: |
|
||||
; SOFT-DEFAULT: BLX $__umodsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s32) = COPY %r0
|
||||
; SOFT: ADJCALLSTACKUP
|
||||
; SOFT-NOT: G_UREM
|
||||
%2(s32) = G_UREM %0, %1
|
||||
; CHECK: %r0 = COPY [[R]]
|
||||
%r0 = COPY %2(s32)
|
||||
|
@ -69,6 +69,7 @@ body: |
|
||||
; CHECK-DAG: [[Y:%[0-9]+]](s32) = COPY %r1
|
||||
%0(s32) = COPY %r0
|
||||
%1(s32) = COPY %r1
|
||||
; CHECK-NOT: G_FREM
|
||||
; CHECK: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -79,6 +80,7 @@ body: |
|
||||
; SOFT: [[R:%[0-9]+]](s32) = COPY %r0
|
||||
; HARD: [[R:%[0-9]+]](s32) = COPY %s0
|
||||
; CHECK: ADJCALLSTACKUP
|
||||
; CHECK-NOT: G_FREM
|
||||
%2(s32) = G_FREM %0, %1
|
||||
; CHECK: %r0 = COPY [[R]]
|
||||
%r0 = COPY %2(s32)
|
||||
@ -124,6 +126,7 @@ body: |
|
||||
; HARD-DAG: [[Y:%[0-9]+]](s64) = G_MERGE_VALUES [[Y0]]
|
||||
%4(s64) = G_MERGE_VALUES %0(s32), %1(s32)
|
||||
%5(s64) = G_MERGE_VALUES %2(s32), %3(s32)
|
||||
; CHECK-NOT: G_FREM
|
||||
; CHECK: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r{{[0-1]}} = COPY [[X0]]
|
||||
; SOFT-DAG: %r{{[0-1]}} = COPY [[X1]]
|
||||
@ -134,6 +137,7 @@ body: |
|
||||
; SOFT: BLX $fmod, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
|
||||
; HARD: BLX $fmod, {{.*}}, implicit %d0, implicit %d1, implicit-def %d0
|
||||
; CHECK: ADJCALLSTACKUP
|
||||
; CHECK-NOT: G_FREM
|
||||
%6(s64) = G_FREM %4, %5
|
||||
%7(s32), %8(s32) = G_UNMERGE_VALUES %6(s64)
|
||||
%r0 = COPY %7(s32)
|
||||
@ -160,6 +164,7 @@ body: |
|
||||
; CHECK-DAG: [[Y:%[0-9]+]](s32) = COPY %r1
|
||||
%0(s32) = COPY %r0
|
||||
%1(s32) = COPY %r1
|
||||
; CHECK-NOT: G_FPOW
|
||||
; CHECK: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -170,6 +175,7 @@ body: |
|
||||
; SOFT: [[R:%[0-9]+]](s32) = COPY %r0
|
||||
; HARD: [[R:%[0-9]+]](s32) = COPY %s0
|
||||
; CHECK: ADJCALLSTACKUP
|
||||
; CHECK-NOT: G_FPOW
|
||||
%2(s32) = G_FPOW %0, %1
|
||||
; CHECK: %r0 = COPY [[R]]
|
||||
%r0 = COPY %2(s32)
|
||||
@ -215,6 +221,7 @@ body: |
|
||||
; HARD-DAG: [[Y:%[0-9]+]](s64) = G_MERGE_VALUES [[Y0]]
|
||||
%4(s64) = G_MERGE_VALUES %0(s32), %1(s32)
|
||||
%5(s64) = G_MERGE_VALUES %2(s32), %3(s32)
|
||||
; CHECK-NOT: G_FPOW
|
||||
; CHECK: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r{{[0-1]}} = COPY [[X0]]
|
||||
; SOFT-DAG: %r{{[0-1]}} = COPY [[X1]]
|
||||
@ -225,6 +232,7 @@ body: |
|
||||
; SOFT: BLX $pow, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
|
||||
; HARD: BLX $pow, {{.*}}, implicit %d0, implicit %d1, implicit-def %d0
|
||||
; CHECK: ADJCALLSTACKUP
|
||||
; CHECK-NOT: G_FPOW
|
||||
%6(s64) = G_FPOW %4, %5
|
||||
%7(s32), %8(s32) = G_UNMERGE_VALUES %6(s64)
|
||||
%r0 = COPY %7(s32)
|
||||
@ -252,6 +260,7 @@ body: |
|
||||
%0(s32) = COPY %r0
|
||||
%1(s32) = COPY %r1
|
||||
; HARD: [[R:%[0-9]+]](s32) = G_FADD [[X]], [[Y]]
|
||||
; SOFT-NOT: G_FADD
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -259,6 +268,7 @@ body: |
|
||||
; SOFT-DEFAULT: BLX $__addsf3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
|
||||
; SOFT: [[R:%[0-9]+]](s32) = COPY %r0
|
||||
; SOFT: ADJCALLSTACKUP
|
||||
; SOFT-NOT: G_FADD
|
||||
%2(s32) = G_FADD %0, %1
|
||||
; CHECK: %r0 = COPY [[R]]
|
||||
%r0 = COPY %2(s32)
|
||||
@ -299,6 +309,7 @@ body: |
|
||||
%4(s64) = G_MERGE_VALUES %0(s32), %1(s32)
|
||||
%5(s64) = G_MERGE_VALUES %2(s32), %3(s32)
|
||||
; HARD: [[R:%[0-9]+]](s64) = G_FADD [[X]], [[Y]]
|
||||
; SOFT-NOT: G_FADD
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r{{[0-1]}} = COPY [[X0]]
|
||||
; SOFT-DAG: %r{{[0-1]}} = COPY [[X1]]
|
||||
@ -307,6 +318,7 @@ body: |
|
||||
; SOFT-AEABI: BLX $__aeabi_dadd, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
|
||||
; SOFT-DEFAULT: BLX $__adddf3, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
|
||||
; SOFT: ADJCALLSTACKUP
|
||||
; SOFT-NOT: G_FADD
|
||||
%6(s64) = G_FADD %4, %5
|
||||
; HARD-DAG: G_UNMERGE_VALUES [[R]](s64)
|
||||
%7(s32),%8(s32) = G_UNMERGE_VALUES %6(s64)
|
||||
@ -403,6 +415,7 @@ body: |
|
||||
; CHECK-DAG: [[Y:%[0-9]+]](s32) = COPY %r1
|
||||
%2(s1) = G_FCMP floatpred(oeq), %0(s32), %1
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(oeq), [[X]](s32), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -413,6 +426,7 @@ body: |
|
||||
; SOFT-AEABI: [[R:%[0-9]+]](s1) = G_TRUNC [[RET]](s32)
|
||||
; SOFT-DEFAULT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s1) = G_ICMP intpred(eq), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%3(s32) = G_ZEXT %2(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %3(s32)
|
||||
@ -442,6 +456,7 @@ body: |
|
||||
; CHECK-DAG: [[Y:%[0-9]+]](s32) = COPY %r1
|
||||
%2(s1) = G_FCMP floatpred(ogt), %0(s32), %1
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(ogt), [[X]](s32), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -452,6 +467,7 @@ body: |
|
||||
; SOFT-AEABI: [[R:%[0-9]+]](s1) = G_TRUNC [[RET]](s32)
|
||||
; SOFT-DEFAULT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s1) = G_ICMP intpred(sgt), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%3(s32) = G_ZEXT %2(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %3(s32)
|
||||
@ -481,6 +497,7 @@ body: |
|
||||
; CHECK-DAG: [[Y:%[0-9]+]](s32) = COPY %r1
|
||||
%2(s1) = G_FCMP floatpred(oge), %0(s32), %1
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(oge), [[X]](s32), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -491,6 +508,7 @@ body: |
|
||||
; SOFT-AEABI: [[R:%[0-9]+]](s1) = G_TRUNC [[RET]](s32)
|
||||
; SOFT-DEFAULT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s1) = G_ICMP intpred(sge), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%3(s32) = G_ZEXT %2(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %3(s32)
|
||||
@ -520,6 +538,7 @@ body: |
|
||||
; CHECK-DAG: [[Y:%[0-9]+]](s32) = COPY %r1
|
||||
%2(s1) = G_FCMP floatpred(olt), %0(s32), %1
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(olt), [[X]](s32), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -530,6 +549,7 @@ body: |
|
||||
; SOFT-AEABI: [[R:%[0-9]+]](s1) = G_TRUNC [[RET]](s32)
|
||||
; SOFT-DEFAULT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s1) = G_ICMP intpred(slt), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%3(s32) = G_ZEXT %2(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %3(s32)
|
||||
@ -559,6 +579,7 @@ body: |
|
||||
; CHECK-DAG: [[Y:%[0-9]+]](s32) = COPY %r1
|
||||
%2(s1) = G_FCMP floatpred(ole), %0(s32), %1
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(ole), [[X]](s32), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -569,6 +590,7 @@ body: |
|
||||
; SOFT-AEABI: [[R:%[0-9]+]](s1) = G_TRUNC [[RET]](s32)
|
||||
; SOFT-DEFAULT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s1) = G_ICMP intpred(sle), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%3(s32) = G_ZEXT %2(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %3(s32)
|
||||
@ -598,6 +620,7 @@ body: |
|
||||
; CHECK-DAG: [[Y:%[0-9]+]](s32) = COPY %r1
|
||||
%2(s1) = G_FCMP floatpred(ord), %0(s32), %1
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(ord), [[X]](s32), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -607,6 +630,7 @@ body: |
|
||||
; SOFT: ADJCALLSTACKUP
|
||||
; SOFT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT: [[R:%[0-9]+]](s1) = G_ICMP intpred(eq), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%3(s32) = G_ZEXT %2(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %3(s32)
|
||||
@ -636,6 +660,7 @@ body: |
|
||||
; CHECK-DAG: [[Y:%[0-9]+]](s32) = COPY %r1
|
||||
%2(s1) = G_FCMP floatpred(ugt), %0(s32), %1
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(ugt), [[X]](s32), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -646,6 +671,7 @@ body: |
|
||||
; SOFT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-AEABI: [[R:%[0-9]+]](s1) = G_ICMP intpred(eq), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s1) = G_ICMP intpred(sgt), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%3(s32) = G_ZEXT %2(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %3(s32)
|
||||
@ -675,6 +701,7 @@ body: |
|
||||
; CHECK-DAG: [[Y:%[0-9]+]](s32) = COPY %r1
|
||||
%2(s1) = G_FCMP floatpred(uge), %0(s32), %1
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(uge), [[X]](s32), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -685,6 +712,7 @@ body: |
|
||||
; SOFT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-AEABI: [[R:%[0-9]+]](s1) = G_ICMP intpred(eq), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s1) = G_ICMP intpred(sge), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%3(s32) = G_ZEXT %2(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %3(s32)
|
||||
@ -714,6 +742,7 @@ body: |
|
||||
; CHECK-DAG: [[Y:%[0-9]+]](s32) = COPY %r1
|
||||
%2(s1) = G_FCMP floatpred(ult), %0(s32), %1
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(ult), [[X]](s32), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -724,6 +753,7 @@ body: |
|
||||
; SOFT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-AEABI: [[R:%[0-9]+]](s1) = G_ICMP intpred(eq), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s1) = G_ICMP intpred(slt), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%3(s32) = G_ZEXT %2(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %3(s32)
|
||||
@ -753,6 +783,7 @@ body: |
|
||||
; CHECK-DAG: [[Y:%[0-9]+]](s32) = COPY %r1
|
||||
%2(s1) = G_FCMP floatpred(ule), %0(s32), %1
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(ule), [[X]](s32), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -763,6 +794,7 @@ body: |
|
||||
; SOFT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-AEABI: [[R:%[0-9]+]](s1) = G_ICMP intpred(eq), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s1) = G_ICMP intpred(sle), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%3(s32) = G_ZEXT %2(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %3(s32)
|
||||
@ -792,6 +824,7 @@ body: |
|
||||
; CHECK-DAG: [[Y:%[0-9]+]](s32) = COPY %r1
|
||||
%2(s1) = G_FCMP floatpred(une), %0(s32), %1
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(une), [[X]](s32), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -802,6 +835,7 @@ body: |
|
||||
; SOFT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-AEABI: [[R:%[0-9]+]](s1) = G_ICMP intpred(eq), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s1) = G_ICMP intpred(ne), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%3(s32) = G_ZEXT %2(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %3(s32)
|
||||
@ -831,6 +865,7 @@ body: |
|
||||
; CHECK-DAG: [[Y:%[0-9]+]](s32) = COPY %r1
|
||||
%2(s1) = G_FCMP floatpred(uno), %0(s32), %1
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(uno), [[X]](s32), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -841,6 +876,7 @@ body: |
|
||||
; SOFT-AEABI: [[R:%[0-9]+]](s1) = G_TRUNC [[RET]](s32)
|
||||
; SOFT-DEFAULT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s1) = G_ICMP intpred(ne), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%3(s32) = G_ZEXT %2(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %3(s32)
|
||||
@ -870,6 +906,7 @@ body: |
|
||||
; CHECK-DAG: [[Y:%[0-9]+]](s32) = COPY %r1
|
||||
%2(s1) = G_FCMP floatpred(one), %0(s32), %1
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(one), [[X]](s32), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -880,6 +917,7 @@ body: |
|
||||
; SOFT-AEABI: [[R1:%[0-9]+]](s1) = G_TRUNC [[RET1]]
|
||||
; SOFT-DEFAULT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-DEFAULT: [[R1:%[0-9]+]](s1) = G_ICMP intpred(sgt), [[RET1]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -894,6 +932,7 @@ body: |
|
||||
; SOFT-DAG: [[R2EXT:%[0-9]+]](s32) = G_ANYEXT [[R2]]
|
||||
; SOFT: [[REXT:%[0-9]+]](s32) = G_OR [[R1EXT]], [[R2EXT]]
|
||||
; SOFT: [[R:%[0-9]+]](s1) = G_TRUNC [[REXT]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%3(s32) = G_ZEXT %2(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %3(s32)
|
||||
@ -923,6 +962,7 @@ body: |
|
||||
; CHECK-DAG: [[Y:%[0-9]+]](s32) = COPY %r1
|
||||
%2(s1) = G_FCMP floatpred(ueq), %0(s32), %1
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(ueq), [[X]](s32), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -933,6 +973,7 @@ body: |
|
||||
; SOFT-AEABI: [[R1:%[0-9]+]](s1) = G_TRUNC [[RET1]]
|
||||
; SOFT-DEFAULT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-DEFAULT: [[R1:%[0-9]+]](s1) = G_ICMP intpred(eq), [[RET1]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X]]
|
||||
; SOFT-DAG: %r1 = COPY [[Y]]
|
||||
@ -947,6 +988,7 @@ body: |
|
||||
; SOFT-DAG: [[R2EXT:%[0-9]+]](s32) = G_ANYEXT [[R2]]
|
||||
; SOFT: [[REXT:%[0-9]+]](s32) = G_OR [[R1EXT]], [[R2EXT]]
|
||||
; SOFT: [[R:%[0-9]+]](s1) = G_TRUNC [[REXT]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%3(s32) = G_ZEXT %2(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %3(s32)
|
||||
@ -1078,6 +1120,7 @@ body: |
|
||||
; HARD-DAG: [[Y:%[0-9]+]](s64) = G_MERGE_VALUES [[Y0]](s32), [[Y1]](s32)
|
||||
%6(s1) = G_FCMP floatpred(oeq), %4(s64), %5
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(oeq), [[X]](s64), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X0]]
|
||||
; SOFT-DAG: %r1 = COPY [[X1]]
|
||||
@ -1090,6 +1133,7 @@ body: |
|
||||
; SOFT-AEABI: [[R:%[0-9]+]](s1) = G_TRUNC [[RET]](s32)
|
||||
; SOFT-DEFAULT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s1) = G_ICMP intpred(eq), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%7(s32) = G_ZEXT %6(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %7(s32)
|
||||
@ -1131,6 +1175,7 @@ body: |
|
||||
; HARD-DAG: [[Y:%[0-9]+]](s64) = G_MERGE_VALUES [[Y0]](s32), [[Y1]](s32)
|
||||
%6(s1) = G_FCMP floatpred(ogt), %4(s64), %5
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(ogt), [[X]](s64), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X0]]
|
||||
; SOFT-DAG: %r1 = COPY [[X1]]
|
||||
@ -1143,6 +1188,7 @@ body: |
|
||||
; SOFT-AEABI: [[R:%[0-9]+]](s1) = G_TRUNC [[RET]](s32)
|
||||
; SOFT-DEFAULT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s1) = G_ICMP intpred(sgt), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%7(s32) = G_ZEXT %6(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %7(s32)
|
||||
@ -1184,6 +1230,7 @@ body: |
|
||||
; HARD-DAG: [[Y:%[0-9]+]](s64) = G_MERGE_VALUES [[Y0]](s32), [[Y1]](s32)
|
||||
%6(s1) = G_FCMP floatpred(oge), %4(s64), %5
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(oge), [[X]](s64), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X0]]
|
||||
; SOFT-DAG: %r1 = COPY [[X1]]
|
||||
@ -1196,6 +1243,7 @@ body: |
|
||||
; SOFT-AEABI: [[R:%[0-9]+]](s1) = G_TRUNC [[RET]](s32)
|
||||
; SOFT-DEFAULT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s1) = G_ICMP intpred(sge), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%7(s32) = G_ZEXT %6(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %7(s32)
|
||||
@ -1237,6 +1285,7 @@ body: |
|
||||
; HARD-DAG: [[Y:%[0-9]+]](s64) = G_MERGE_VALUES [[Y0]](s32), [[Y1]](s32)
|
||||
%6(s1) = G_FCMP floatpred(olt), %4(s64), %5
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(olt), [[X]](s64), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X0]]
|
||||
; SOFT-DAG: %r1 = COPY [[X1]]
|
||||
@ -1249,6 +1298,7 @@ body: |
|
||||
; SOFT-AEABI: [[R:%[0-9]+]](s1) = G_TRUNC [[RET]](s32)
|
||||
; SOFT-DEFAULT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s1) = G_ICMP intpred(slt), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%7(s32) = G_ZEXT %6(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %7(s32)
|
||||
@ -1290,6 +1340,7 @@ body: |
|
||||
; HARD-DAG: [[Y:%[0-9]+]](s64) = G_MERGE_VALUES [[Y0]](s32), [[Y1]](s32)
|
||||
%6(s1) = G_FCMP floatpred(ole), %4(s64), %5
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(ole), [[X]](s64), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X0]]
|
||||
; SOFT-DAG: %r1 = COPY [[X1]]
|
||||
@ -1302,6 +1353,7 @@ body: |
|
||||
; SOFT-AEABI: [[R:%[0-9]+]](s1) = G_TRUNC [[RET]](s32)
|
||||
; SOFT-DEFAULT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s1) = G_ICMP intpred(sle), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%7(s32) = G_ZEXT %6(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %7(s32)
|
||||
@ -1343,6 +1395,7 @@ body: |
|
||||
; HARD-DAG: [[Y:%[0-9]+]](s64) = G_MERGE_VALUES [[Y0]](s32), [[Y1]](s32)
|
||||
%6(s1) = G_FCMP floatpred(ord), %4(s64), %5
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(ord), [[X]](s64), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X0]]
|
||||
; SOFT-DAG: %r1 = COPY [[X1]]
|
||||
@ -1354,6 +1407,7 @@ body: |
|
||||
; SOFT: ADJCALLSTACKUP
|
||||
; SOFT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT: [[R:%[0-9]+]](s1) = G_ICMP intpred(eq), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%7(s32) = G_ZEXT %6(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %7(s32)
|
||||
@ -1395,6 +1449,7 @@ body: |
|
||||
; HARD-DAG: [[Y:%[0-9]+]](s64) = G_MERGE_VALUES [[Y0]](s32), [[Y1]](s32)
|
||||
%6(s1) = G_FCMP floatpred(ugt), %4(s64), %5
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(ugt), [[X]](s64), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X0]]
|
||||
; SOFT-DAG: %r1 = COPY [[X1]]
|
||||
@ -1407,6 +1462,7 @@ body: |
|
||||
; SOFT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-AEABI: [[R:%[0-9]+]](s1) = G_ICMP intpred(eq), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s1) = G_ICMP intpred(sgt), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%7(s32) = G_ZEXT %6(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %7(s32)
|
||||
@ -1448,6 +1504,7 @@ body: |
|
||||
; HARD-DAG: [[Y:%[0-9]+]](s64) = G_MERGE_VALUES [[Y0]](s32), [[Y1]](s32)
|
||||
%6(s1) = G_FCMP floatpred(uge), %4(s64), %5
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(uge), [[X]](s64), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X0]]
|
||||
; SOFT-DAG: %r1 = COPY [[X1]]
|
||||
@ -1460,6 +1517,7 @@ body: |
|
||||
; SOFT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-AEABI: [[R:%[0-9]+]](s1) = G_ICMP intpred(eq), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s1) = G_ICMP intpred(sge), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%7(s32) = G_ZEXT %6(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %7(s32)
|
||||
@ -1501,6 +1559,7 @@ body: |
|
||||
; HARD-DAG: [[Y:%[0-9]+]](s64) = G_MERGE_VALUES [[Y0]](s32), [[Y1]](s32)
|
||||
%6(s1) = G_FCMP floatpred(ult), %4(s64), %5
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(ult), [[X]](s64), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X0]]
|
||||
; SOFT-DAG: %r1 = COPY [[X1]]
|
||||
@ -1513,6 +1572,7 @@ body: |
|
||||
; SOFT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-AEABI: [[R:%[0-9]+]](s1) = G_ICMP intpred(eq), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s1) = G_ICMP intpred(slt), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%7(s32) = G_ZEXT %6(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %7(s32)
|
||||
@ -1554,6 +1614,7 @@ body: |
|
||||
; HARD-DAG: [[Y:%[0-9]+]](s64) = G_MERGE_VALUES [[Y0]](s32), [[Y1]](s32)
|
||||
%6(s1) = G_FCMP floatpred(ule), %4(s64), %5
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(ule), [[X]](s64), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X0]]
|
||||
; SOFT-DAG: %r1 = COPY [[X1]]
|
||||
@ -1566,6 +1627,7 @@ body: |
|
||||
; SOFT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-AEABI: [[R:%[0-9]+]](s1) = G_ICMP intpred(eq), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s1) = G_ICMP intpred(sle), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%7(s32) = G_ZEXT %6(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %7(s32)
|
||||
@ -1607,6 +1669,7 @@ body: |
|
||||
; HARD-DAG: [[Y:%[0-9]+]](s64) = G_MERGE_VALUES [[Y0]](s32), [[Y1]](s32)
|
||||
%6(s1) = G_FCMP floatpred(une), %4(s64), %5
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(une), [[X]](s64), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X0]]
|
||||
; SOFT-DAG: %r1 = COPY [[X1]]
|
||||
@ -1619,6 +1682,7 @@ body: |
|
||||
; SOFT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-AEABI: [[R:%[0-9]+]](s1) = G_ICMP intpred(eq), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s1) = G_ICMP intpred(ne), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%7(s32) = G_ZEXT %6(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %7(s32)
|
||||
@ -1660,6 +1724,7 @@ body: |
|
||||
; HARD-DAG: [[Y:%[0-9]+]](s64) = G_MERGE_VALUES [[Y0]](s32), [[Y1]](s32)
|
||||
%6(s1) = G_FCMP floatpred(uno), %4(s64), %5
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(uno), [[X]](s64), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X0]]
|
||||
; SOFT-DAG: %r1 = COPY [[X1]]
|
||||
@ -1672,6 +1737,7 @@ body: |
|
||||
; SOFT-AEABI: [[R:%[0-9]+]](s1) = G_TRUNC [[RET]](s32)
|
||||
; SOFT-DEFAULT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-DEFAULT: [[R:%[0-9]+]](s1) = G_ICMP intpred(ne), [[RET]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%7(s32) = G_ZEXT %6(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %7(s32)
|
||||
@ -1713,6 +1779,7 @@ body: |
|
||||
; HARD-DAG: [[Y:%[0-9]+]](s64) = G_MERGE_VALUES [[Y0]](s32), [[Y1]](s32)
|
||||
%6(s1) = G_FCMP floatpred(one), %4(s64), %5
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(one), [[X]](s64), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X0]]
|
||||
; SOFT-DAG: %r1 = COPY [[X1]]
|
||||
@ -1725,6 +1792,7 @@ body: |
|
||||
; SOFT-AEABI: [[R1:%[0-9]+]](s1) = G_TRUNC [[RET1]](s32)
|
||||
; SOFT-DEFAULT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-DEFAULT: [[R1:%[0-9]+]](s1) = G_ICMP intpred(sgt), [[RET1]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X0]]
|
||||
; SOFT-DAG: %r1 = COPY [[X1]]
|
||||
@ -1741,6 +1809,7 @@ body: |
|
||||
; SOFT-DAG: [[R2EXT:%[0-9]+]](s32) = G_ANYEXT [[R2]]
|
||||
; SOFT: [[REXT:%[0-9]+]](s32) = G_OR [[R1EXT]], [[R2EXT]]
|
||||
; SOFT: [[R:%[0-9]+]](s1) = G_TRUNC [[REXT]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%7(s32) = G_ZEXT %6(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %7(s32)
|
||||
@ -1782,6 +1851,7 @@ body: |
|
||||
; HARD-DAG: [[Y:%[0-9]+]](s64) = G_MERGE_VALUES [[Y0]](s32), [[Y1]](s32)
|
||||
%6(s1) = G_FCMP floatpred(ueq), %4(s64), %5
|
||||
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(ueq), [[X]](s64), [[Y]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X0]]
|
||||
; SOFT-DAG: %r1 = COPY [[X1]]
|
||||
@ -1794,6 +1864,7 @@ body: |
|
||||
; SOFT-AEABI: [[R1:%[0-9]+]](s1) = G_TRUNC [[RET1]](s32)
|
||||
; SOFT-DEFAULT: [[ZERO:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; SOFT-DEFAULT: [[R1:%[0-9]+]](s1) = G_ICMP intpred(eq), [[RET1]](s32), [[ZERO]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
; SOFT: ADJCALLSTACKDOWN
|
||||
; SOFT-DAG: %r0 = COPY [[X0]]
|
||||
; SOFT-DAG: %r1 = COPY [[X1]]
|
||||
@ -1810,6 +1881,7 @@ body: |
|
||||
; SOFT-DAG: [[R2EXT:%[0-9]+]](s32) = G_ANYEXT [[R2]]
|
||||
; SOFT: [[REXT:%[0-9]+]](s32) = G_OR [[R1EXT]], [[R2EXT]]
|
||||
; SOFT: [[R:%[0-9]+]](s1) = G_TRUNC [[REXT]]
|
||||
; SOFT-NOT: G_FCMP
|
||||
%7(s32) = G_ZEXT %6(s1)
|
||||
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
|
||||
%r0 = COPY %7(s32)
|
||||
|
@ -111,6 +111,7 @@ body: |
|
||||
%1(s8) = COPY %r1
|
||||
%2(s8) = G_ADD %0, %1
|
||||
; G_ADD with s8 should widen
|
||||
; CHECK-NOT: {{%[0-9]+}}(s8) = G_ADD {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK: {{%[0-9]+}}(s32) = G_ADD {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK-NOT: {{%[0-9]+}}(s8) = G_ADD {{%[0-9]+, %[0-9]+}}
|
||||
%r0 = COPY %2(s8)
|
||||
@ -136,6 +137,7 @@ body: |
|
||||
%1(s16) = COPY %r1
|
||||
%2(s16) = G_ADD %0, %1
|
||||
; G_ADD with s16 should widen
|
||||
; CHECK-NOT: {{%[0-9]+}}(s16) = G_ADD {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK: {{%[0-9]+}}(s32) = G_ADD {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK-NOT: {{%[0-9]+}}(s16) = G_ADD {{%[0-9]+, %[0-9]+}}
|
||||
%r0 = COPY %2(s16)
|
||||
@ -187,6 +189,7 @@ body: |
|
||||
%1(s8) = COPY %r1
|
||||
%2(s8) = G_SUB %0, %1
|
||||
; G_SUB with s8 should widen
|
||||
; CHECK-NOT: {{%[0-9]+}}(s8) = G_SUB {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK: {{%[0-9]+}}(s32) = G_SUB {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK-NOT: {{%[0-9]+}}(s8) = G_SUB {{%[0-9]+, %[0-9]+}}
|
||||
%r0 = COPY %2(s8)
|
||||
@ -212,6 +215,7 @@ body: |
|
||||
%1(s16) = COPY %r1
|
||||
%2(s16) = G_SUB %0, %1
|
||||
; G_SUB with s16 should widen
|
||||
; CHECK-NOT: {{%[0-9]+}}(s16) = G_SUB {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK: {{%[0-9]+}}(s32) = G_SUB {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK-NOT: {{%[0-9]+}}(s16) = G_SUB {{%[0-9]+, %[0-9]+}}
|
||||
%r0 = COPY %2(s16)
|
||||
@ -263,6 +267,7 @@ body: |
|
||||
%1(s8) = COPY %r1
|
||||
%2(s8) = G_MUL %0, %1
|
||||
; G_MUL with s8 should widen
|
||||
; CHECK-NOT: {{%[0-9]+}}(s8) = G_MUL {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK: {{%[0-9]+}}(s32) = G_MUL {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK-NOT: {{%[0-9]+}}(s8) = G_MUL {{%[0-9]+, %[0-9]+}}
|
||||
%r0 = COPY %2(s8)
|
||||
@ -288,6 +293,7 @@ body: |
|
||||
%1(s16) = COPY %r1
|
||||
%2(s16) = G_MUL %0, %1
|
||||
; G_MUL with s16 should widen
|
||||
; CHECK-NOT: {{%[0-9]+}}(s16) = G_MUL {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK: {{%[0-9]+}}(s32) = G_MUL {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK-NOT: {{%[0-9]+}}(s16) = G_MUL {{%[0-9]+, %[0-9]+}}
|
||||
%r0 = COPY %2(s16)
|
||||
@ -339,6 +345,7 @@ body: |
|
||||
%1(s8) = COPY %r1
|
||||
%2(s8) = G_AND %0, %1
|
||||
; G_AND with s8 should widen
|
||||
; CHECK-NOT: {{%[0-9]+}}(s8) = G_AND {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK: {{%[0-9]+}}(s32) = G_AND {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK-NOT: {{%[0-9]+}}(s8) = G_AND {{%[0-9]+, %[0-9]+}}
|
||||
%r0 = COPY %2(s8)
|
||||
@ -364,6 +371,7 @@ body: |
|
||||
%1(s16) = COPY %r1
|
||||
%2(s16) = G_AND %0, %1
|
||||
; G_AND with s16 should widen
|
||||
; CHECK-NOT: {{%[0-9]+}}(s16) = G_AND {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK: {{%[0-9]+}}(s32) = G_AND {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK-NOT: {{%[0-9]+}}(s16) = G_AND {{%[0-9]+, %[0-9]+}}
|
||||
%r0 = COPY %2(s16)
|
||||
@ -415,6 +423,7 @@ body: |
|
||||
%1(s8) = COPY %r1
|
||||
%2(s8) = G_OR %0, %1
|
||||
; G_OR with s8 should widen
|
||||
; CHECK-NOT: {{%[0-9]+}}(s8) = G_OR {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK: {{%[0-9]+}}(s32) = G_OR {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK-NOT: {{%[0-9]+}}(s8) = G_OR {{%[0-9]+, %[0-9]+}}
|
||||
%r0 = COPY %2(s8)
|
||||
@ -440,6 +449,7 @@ body: |
|
||||
%1(s16) = COPY %r1
|
||||
%2(s16) = G_OR %0, %1
|
||||
; G_OR with s16 should widen
|
||||
; CHECK-NOT: {{%[0-9]+}}(s16) = G_OR {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK: {{%[0-9]+}}(s32) = G_OR {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK-NOT: {{%[0-9]+}}(s16) = G_OR {{%[0-9]+, %[0-9]+}}
|
||||
%r0 = COPY %2(s16)
|
||||
@ -491,6 +501,7 @@ body: |
|
||||
%1(s8) = COPY %r1
|
||||
%2(s8) = G_XOR %0, %1
|
||||
; G_XOR with s8 should widen
|
||||
; CHECK-NOT: {{%[0-9]+}}(s8) = G_XOR {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK: {{%[0-9]+}}(s32) = G_XOR {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK-NOT: {{%[0-9]+}}(s8) = G_XOR {{%[0-9]+, %[0-9]+}}
|
||||
%r0 = COPY %2(s8)
|
||||
@ -516,6 +527,7 @@ body: |
|
||||
%1(s16) = COPY %r1
|
||||
%2(s16) = G_XOR %0, %1
|
||||
; G_XOR with s16 should widen
|
||||
; CHECK-NOT: {{%[0-9]+}}(s16) = G_XOR {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK: {{%[0-9]+}}(s32) = G_XOR {{%[0-9]+, %[0-9]+}}
|
||||
; CHECK-NOT: {{%[0-9]+}}(s16) = G_XOR {{%[0-9]+, %[0-9]+}}
|
||||
%r0 = COPY %2(s16)
|
||||
@ -698,16 +710,22 @@ body: |
|
||||
; CHECK: {{%[0-9]+}}(s32) = G_CONSTANT 42
|
||||
|
||||
%1(s16) = G_CONSTANT i16 21
|
||||
; CHECK-NOT: G_CONSTANT i16
|
||||
; CHECK: [[EXT:%[0-9]+]](s32) = G_CONSTANT i32 21
|
||||
; CHECK: {{%[0-9]+}}(s16) = G_TRUNC [[EXT]](s32)
|
||||
; CHECK-NOT: G_CONSTANT i16
|
||||
|
||||
%2(s8) = G_CONSTANT i8 10
|
||||
; CHECK-NOT: G_CONSTANT i8
|
||||
; CHECK: [[EXT:%[0-9]+]](s32) = G_CONSTANT i32 10
|
||||
; CHECK: {{%[0-9]+}}(s8) = G_TRUNC [[EXT]](s32)
|
||||
; CHECK-NOT: G_CONSTANT i8
|
||||
|
||||
%3(s1) = G_CONSTANT i1 1
|
||||
; CHECK-NOT: G_CONSTANT i1
|
||||
; CHECK: [[EXT:%[0-9]+]](s32) = G_CONSTANT i32 -1
|
||||
; CHECK: {{%[0-9]+}}(s1) = G_TRUNC [[EXT]](s32)
|
||||
; CHECK-NOT: G_CONSTANT i1
|
||||
|
||||
%r0 = COPY %0(s32)
|
||||
BX_RET 14, _, implicit %r0
|
||||
|
Loading…
x
Reference in New Issue
Block a user