AMDGPU/GlobalISel: Add some more tests for icmp select

llvm-svn: 364703
This commit is contained in:
Matt Arsenault 2019-06-29 00:55:16 +00:00
parent a83e94ebf2
commit 7889d4ce66
1 changed files with 80 additions and 32 deletions

View File

@ -1,11 +1,12 @@
# RUN: llc -march=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s -check-prefixes=GCN
# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s -check-prefixes=GCN
---
name: icmp_s_mix
name: icmp_s32_s_mix
legalized: true
regBankSelected: true
# GCN: name: icmp_s_mix
# GCN: name: icmp_s32_s_mix
# GCN: [[SGPR0:%[0-9]+]]:sreg_32 = COPY $sgpr0
# GCN: [[SGPR1:%[0-9]+]]:sreg_32 = COPY $sgpr1
# GCN: [[SGPR2:%[0-9]+]]:sreg_32 = COPY $sgpr2
@ -47,11 +48,11 @@ body: |
...
---
name: icmp_salu
name: icmp_s32_salu
legalized: true
regBankSelected: true
# GCN-LABEL: name: icmp_salu
# GCN-LABEL: name: icmp_s32_salu
# GCN: S_CMP_LG_U32
# GCN: S_CMP_EQ_U32
# GCN: S_CMP_GT_I32
@ -115,11 +116,11 @@ body: |
...
---
name: icmp_v_mix
name: icmp_s32_v_mix
legalized: true
regBankSelected: true
# GCN-LABEL: name: icmp_v_mix
# GCN-LABEL: name: icmp_s32_v_mix
# GCN: [[VGPR2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
# GCN: [[VGPR3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
# GCN: [[VGPR4:%[0-9]+]]:vgpr_32 = COPY $vgpr4
@ -146,19 +147,19 @@ body: |
%6:vgpr(s32) = COPY $vgpr7
%7:vgpr(s32) = COPY $vgpr8
%8:vgpr(s32) = COPY $vgpr9
%9:sgpr(s1) = G_ICMP intpred(ne), %1, %2
%10:sgpr(s1) = G_ICMP intpred(ne), %5, %6
%9:vcc(s1) = G_ICMP intpred(ne), %1, %2
%10:vcc(s1) = G_ICMP intpred(ne), %5, %6
%11:vgpr(s32) = G_SELECT %9, %7, %8
%12:vgpr(s32) = G_SELECT %10, %3, %4
G_STORE %11, %0 :: (volatile store 4, addrspace 1)
G_STORE %12, %0 :: (volatile store 4, addrspace 1)
...
---
name: icmp_valu
name: icmp_s32_valu
legalized: true
regBankSelected: true
# GCN-LABEL: name: icmp_valu
# GCN-LABEL: name: icmp_s32_valu
# GCN: V_CMP_NE_U32_e64
# GCN: V_CMP_EQ_U32_e64
# GCN: V_CMP_GT_I32_e64
@ -179,16 +180,16 @@ body: |
%2:vgpr(s32) = COPY $vgpr3
%3:vgpr(s32) = COPY $vgpr4
%4:vgpr(s32) = COPY $vgpr5
%5:sgpr(s1) = G_ICMP intpred(ne), %1, %2
%6:sgpr(s1) = G_ICMP intpred(eq), %1, %2
%7:sgpr(s1) = G_ICMP intpred(sgt), %1, %2
%8:sgpr(s1) = G_ICMP intpred(sge), %1, %2
%9:sgpr(s1) = G_ICMP intpred(slt), %1, %2
%10:sgpr(s1) = G_ICMP intpred(sle), %1, %2
%11:sgpr(s1) = G_ICMP intpred(ugt), %1, %2
%12:sgpr(s1) = G_ICMP intpred(uge), %1, %2
%13:sgpr(s1) = G_ICMP intpred(ult), %1, %2
%14:sgpr(s1) = G_ICMP intpred(ule), %1, %2
%5:vcc(s1) = G_ICMP intpred(ne), %1, %2
%6:vcc(s1) = G_ICMP intpred(eq), %1, %2
%7:vcc(s1) = G_ICMP intpred(sgt), %1, %2
%8:vcc(s1) = G_ICMP intpred(sge), %1, %2
%9:vcc(s1) = G_ICMP intpred(slt), %1, %2
%10:vcc(s1) = G_ICMP intpred(sle), %1, %2
%11:vcc(s1) = G_ICMP intpred(ugt), %1, %2
%12:vcc(s1) = G_ICMP intpred(uge), %1, %2
%13:vcc(s1) = G_ICMP intpred(ult), %1, %2
%14:vcc(s1) = G_ICMP intpred(ule), %1, %2
%15:vgpr(s32) = G_SELECT %5, %3, %4
%16:vgpr(s32) = G_SELECT %6, %3, %4
%17:vgpr(s32) = G_SELECT %7, %3, %4
@ -212,11 +213,11 @@ body: |
...
---
name: icmp_vv
name: icmp_s32_vv
legalized: true
regBankSelected: true
# GCN-LABEL: name: icmp_vv
# GCN-LABEL: name: icmp_s32_vv
# GCN: [[VGPR2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
# GCN: [[VGPR3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
# GCN: V_CMP_NE_U32_e64 [[VGPR2]], [[VGPR3]]
@ -230,17 +231,17 @@ body: |
%2:vgpr(s32) = COPY $vgpr3
%3:vgpr(s32) = COPY $vgpr4
%4:vgpr(s32) = COPY $vgpr5
%5:sgpr(s1) = G_ICMP intpred(ne), %1, %2
%5:vcc(s1) = G_ICMP intpred(ne), %1, %2
%6:vgpr(s32) = G_SELECT %5, %3, %4
G_STORE %6, %0 :: (store 4, addrspace 1)
...
---
name: icmp_vs
name: icmp_s32_vs
legalized: true
regBankSelected: true
# GCN-LABEL: name: icmp_vs
# GCN-LABEL: name: icmp_s32_vs
# GCN: [[VGPR2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
# GCN: [[SGPR0:%[0-9]+]]:sreg_32_xm0 = COPY $sgpr0
# GCN: V_CMP_NE_U32_e64 [[VGPR2]], [[SGPR0]]
@ -254,17 +255,17 @@ body: |
%2:vgpr(s32) = COPY $vgpr3
%3:vgpr(s32) = COPY $vgpr4
%4:sgpr(s32) = COPY $sgpr0
%5:sgpr(s1) = G_ICMP intpred(ne), %1, %4
%5:vcc(s1) = G_ICMP intpred(ne), %1, %4
%6:vgpr(s32) = G_SELECT %5, %2, %3
G_STORE %6, %0 :: (store 4, addrspace 1)
...
---
name: icmp_sv
name: icmp_s32_sv
legalized: true
regBankSelected: true
# GCN-LABEL: name: icmp_sv
# GCN-LABEL: name: icmp_s32_sv
# GCN: [[VGPR2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
# GCN: [[SGPR0:%[0-9]+]]:sreg_32_xm0 = COPY $sgpr0
# GCN: V_CMP_NE_U32_e64 [[SGPR0]], [[VGPR2]]
@ -278,17 +279,17 @@ body: |
%2:vgpr(s32) = COPY $vgpr3
%3:vgpr(s32) = COPY $vgpr4
%4:sgpr(s32) = COPY $sgpr0
%5:sgpr(s1) = G_ICMP intpred(ne), %4, %1
%5:vcc(s1) = G_ICMP intpred(ne), %4, %1
%6:vgpr(s32) = G_SELECT %5, %2, %3
G_STORE %6, %0 :: (store 4, addrspace 1)
...
---
name: icmp_or_vcc
name: icmp_s32_or_vcc
legalized: true
regBankSelected: true
# GCN-LABEL: name: icmp_or_vcc
# GCN-LABEL: name: icmp_s32_or_vcc
# GCN: [[VGPR2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
# GCN: [[SGPR0:%[0-9]+]]:sreg_32_xm0 = COPY $sgpr0
# GCN: V_CMP_NE_U32_e64 [[SGPR0]], [[VGPR2]]
@ -302,8 +303,55 @@ body: |
%2:vgpr(s32) = COPY $vgpr3
%3:vgpr(s32) = COPY $vgpr4
%4:sgpr(s32) = COPY $sgpr0
%5:sgpr(s1) = G_ICMP intpred(ne), %4, %1
%5:vcc(s1) = G_ICMP intpred(ne), %4, %1
%6:vgpr(s32) = G_SELECT %5, %2, %3
G_STORE %6, %0 :: (store 4, addrspace 1)
...
---
name: icmp_eq_ne_p3_ss
legalized: true
regBankSelected: true
# GCN-LABEL: name: icmp_eq_ne_p3_ss
# GCN: S_CMP_EQ_U32 %0, %1, implicit-def $scc
# GCN: S_CMP_LG_U32 %0, %1, implicit-def $scc
body: |
bb.0:
liveins: $sgpr0, $sgpr1
%0:sgpr(p3) = COPY $sgpr0
%1:sgpr(p3) = COPY $sgpr1
%2:scc(s1) = G_ICMP intpred(eq), %0, %1
%3:scc(s1) = G_ICMP intpred(ne), %0, %1
%4:sgpr(s32) = G_SEXT %2
%5:sgpr(s32) = G_SEXT %3
S_ENDPGM 0, implicit %4, implicit %5
...
---
name: icmp_eq_ne_p3_vv
legalized: true
regBankSelected: true
# GCN-LABEL: name: icmp_eq_ne_p3_vv
# GCN: %2:sreg_64_xexec = V_CMP_EQ_U32_e64 %0, %1, implicit $exec
# GCN: %3:sreg_64_xexec = V_CMP_NE_U32_e64 %0, %1, implicit $exec
body: |
bb.0:
liveins: $vgpr0, $vgpr1
%0:vgpr(p3) = COPY $vgpr0
%1:vgpr(p3) = COPY $vgpr1
%2:vcc(s1) = G_ICMP intpred(eq), %0, %1
%3:vcc(s1) = G_ICMP intpred(ne), %0, %1
%4:vgpr(s32) = G_SEXT %2
%5:vgpr(s32) = G_SEXT %3
S_ENDPGM 0, implicit %4, implicit %5
...