[llvm-objdump] - Remove one overload of reportError. NFCI.
[llvm-complete.git] / test / CodeGen / AMDGPU / GlobalISel / inst-select-select.mir
blob0462de8583af0dc61399b59920d5718d56e86a61
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -march=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s -check-prefixes=GCN
4 ---
5 name:            select_s64_scc
6 legalized:       true
7 regBankSelected: true
9 body: |
10   bb.0:
11     liveins:  $sgpr0, $sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5
13     ; GCN-LABEL: name: select_s64_scc
14     ; GCN: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
15     ; GCN: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
16     ; GCN: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
17     ; GCN: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5
18     ; GCN: S_CMP_EQ_U32 [[COPY]], [[COPY1]], implicit-def $scc
19     ; GCN: [[COPY4:%[0-9]+]]:sreg_32_xm0 = COPY $scc
20     ; GCN: $scc = COPY [[COPY4]]
21     ; GCN: [[S_CSELECT_B64_:%[0-9]+]]:sreg_64 = S_CSELECT_B64 [[COPY2]], [[COPY3]], implicit $scc
22     ; GCN: S_ENDPGM 0, implicit [[S_CSELECT_B64_]]
23     %0:sgpr(s32) = COPY $sgpr0
24     %1:sgpr(s32) = COPY $sgpr1
25     %2:sgpr(s64) = COPY $sgpr2_sgpr3
26     %3:sgpr(s64) = COPY $sgpr4_sgpr5
27     %4:scc(s1) = G_ICMP intpred(eq), %0, %1
28     %5:sgpr(s64) = G_SELECT %4, %2, %3
29     S_ENDPGM 0, implicit %5
31 ...
33 ---
34 name:            select_v4s16_scc
35 legalized:       true
36 regBankSelected: true
38 body: |
39   bb.0:
40     liveins:  $sgpr0, $sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5
42     ; GCN-LABEL: name: select_v4s16_scc
43     ; GCN: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
44     ; GCN: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
45     ; GCN: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
46     ; GCN: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5
47     ; GCN: S_CMP_EQ_U32 [[COPY]], [[COPY1]], implicit-def $scc
48     ; GCN: [[COPY4:%[0-9]+]]:sreg_32_xm0 = COPY $scc
49     ; GCN: $scc = COPY [[COPY4]]
50     ; GCN: [[S_CSELECT_B64_:%[0-9]+]]:sreg_64 = S_CSELECT_B64 [[COPY2]], [[COPY3]], implicit $scc
51     ; GCN: S_ENDPGM 0, implicit [[S_CSELECT_B64_]]
52     %0:sgpr(s32) = COPY $sgpr0
53     %1:sgpr(s32) = COPY $sgpr1
54     %2:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3
55     %3:sgpr(<4 x s16>) = COPY $sgpr4_sgpr5
56     %4:scc(s1) = G_ICMP intpred(eq), %0, %1
57     %5:sgpr(<4 x s16>) = G_SELECT %4, %2, %3
58     S_ENDPGM 0, implicit %5
60 ...
62 ---
63 name:            select_s16_scc
64 legalized:       true
65 regBankSelected: true
67 body: |
68   bb.0:
69     liveins:  $sgpr0, $sgpr1, $sgpr2, $sgpr3
71     ; GCN-LABEL: name: select_s16_scc
72     ; GCN: [[COPY:%[0-9]+]]:sreg_32_xm0 = COPY $sgpr0
73     ; GCN: [[COPY1:%[0-9]+]]:sreg_32_xm0 = COPY $sgpr1
74     ; GCN: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
75     ; GCN: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr3
76     ; GCN: S_CMP_EQ_U32 [[COPY2]], [[COPY3]], implicit-def $scc
77     ; GCN: [[COPY4:%[0-9]+]]:sreg_32_xm0 = COPY $scc
78     ; GCN: $scc = COPY [[COPY4]]
79     ; GCN: [[S_CSELECT_B32_:%[0-9]+]]:sreg_32 = S_CSELECT_B32 [[COPY]], [[COPY1]], implicit $scc
80     ; GCN: S_ENDPGM 0, implicit [[S_CSELECT_B32_]]
81     %0:sgpr(s32) = COPY $sgpr0
82     %1:sgpr(s32) = COPY $sgpr1
83     %2:sgpr(s32) = COPY $sgpr2
84     %3:sgpr(s32) = COPY $sgpr3
85     %4:sgpr(s16) = G_TRUNC %0
86     %5:sgpr(s16) = G_TRUNC %1
87     %6:scc(s1) = G_ICMP intpred(eq), %2, %3
88     %7:sgpr(s16) = G_SELECT %6, %4, %5
89     S_ENDPGM 0, implicit %7
91 ...
93 ---
94 name:            select_v2s16_scc
95 legalized:       true
96 regBankSelected: true
98 body: |
99   bb.0:
100     liveins:  $sgpr0, $sgpr1, $sgpr2, $sgpr3
102     ; GCN-LABEL: name: select_v2s16_scc
103     ; GCN: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
104     ; GCN: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
105     ; GCN: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
106     ; GCN: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr3
107     ; GCN: S_CMP_EQ_U32 [[COPY]], [[COPY1]], implicit-def $scc
108     ; GCN: [[COPY4:%[0-9]+]]:sreg_32_xm0 = COPY $scc
109     ; GCN: $scc = COPY [[COPY4]]
110     ; GCN: [[S_CSELECT_B32_:%[0-9]+]]:sreg_32 = S_CSELECT_B32 [[COPY2]], [[COPY3]], implicit $scc
111     ; GCN: S_ENDPGM 0, implicit [[S_CSELECT_B32_]]
112     %0:sgpr(s32) = COPY $sgpr0
113     %1:sgpr(s32) = COPY $sgpr1
114     %2:sgpr(<2 x s16>) = COPY $sgpr2
115     %3:sgpr(<2 x s16>) = COPY $sgpr3
116     %4:scc(s1) = G_ICMP intpred(eq), %0, %1
117     %5:sgpr(<2 x s16>) = G_SELECT %4, %2, %3
118     S_ENDPGM 0, implicit %5
123 name:            select_s16_vcc
124 legalized:       true
125 regBankSelected: true
127 body: |
128   bb.0:
129     liveins:  $vgpr0, $vgpr1, $vgpr2, $vgpr3
131     ; GCN-LABEL: name: select_s16_vcc
132     ; GCN: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
133     ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
134     ; GCN: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
135     ; GCN: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
136     ; GCN: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY2]], [[COPY3]], implicit $exec
137     ; GCN: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY1]], 0, [[COPY]], [[V_CMP_EQ_U32_e64_]], implicit $exec
138     ; GCN: S_ENDPGM 0, implicit [[V_CNDMASK_B32_e64_]]
139     %0:vgpr(s32) = COPY $vgpr0
140     %1:vgpr(s32) = COPY $vgpr1
141     %2:vgpr(s32) = COPY $vgpr2
142     %3:vgpr(s32) = COPY $vgpr3
143     %4:vgpr(s16) = G_TRUNC %0
144     %5:vgpr(s16) = G_TRUNC %1
145     %6:vcc(s1) = G_ICMP intpred(eq), %2, %3
146     %7:vgpr(s16) = G_SELECT %6, %4, %5
147     S_ENDPGM 0, implicit %7
152 name:            select_v2s16_vcc
153 legalized:       true
154 regBankSelected: true
156 body: |
157   bb.0:
158     liveins:  $vgpr0, $vgpr1, $vgpr2, $vgpr3
160     ; GCN-LABEL: name: select_v2s16_vcc
161     ; GCN: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
162     ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
163     ; GCN: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
164     ; GCN: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
165     ; GCN: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec
166     ; GCN: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY3]], 0, [[COPY2]], [[V_CMP_EQ_U32_e64_]], implicit $exec
167     ; GCN: S_ENDPGM 0, implicit [[V_CNDMASK_B32_e64_]]
168     %0:vgpr(s32) = COPY $vgpr0
169     %1:vgpr(s32) = COPY $vgpr1
170     %2:vgpr(<2 x s16>) = COPY $vgpr2
171     %3:vgpr(<2 x s16>) = COPY $vgpr3
172     %4:vcc(s1) = G_ICMP intpred(eq), %0, %1
173     %5:vgpr(<2 x s16>) = G_SELECT %4, %2, %3
174     S_ENDPGM 0, implicit %5