1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck -check-prefix=FAST %s
3 # RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck -check-prefix=GREEDY %s
11 liveins: $sgpr0, $sgpr1
12 ; FAST-LABEL: name: and_s1_sgpr_sgpr
13 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
14 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
15 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
16 ; FAST: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32)
17 ; FAST: [[AND:%[0-9]+]]:sgpr(s1) = G_AND [[TRUNC]], [[TRUNC1]]
18 ; GREEDY-LABEL: name: and_s1_sgpr_sgpr
19 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
20 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
21 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
22 ; GREEDY: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32)
23 ; GREEDY: [[AND:%[0-9]+]]:sgpr(s1) = G_AND [[TRUNC]], [[TRUNC1]]
24 %0:_(s32) = COPY $sgpr0
25 %1:_(s32) = COPY $sgpr1
28 %4:_(s1) = G_AND %2, %3
37 liveins: $sgpr0, $sgpr1
38 ; FAST-LABEL: name: and_s1_scc_scc
39 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
40 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
41 ; FAST: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0
42 ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C]]
43 ; FAST: [[ICMP1:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]]
44 ; FAST: [[COPY2:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
45 ; FAST: [[COPY3:%[0-9]+]]:sgpr(s1) = COPY [[ICMP1]](s1)
46 ; FAST: [[AND:%[0-9]+]]:scc(s1) = G_AND [[COPY2]], [[COPY3]]
47 ; GREEDY-LABEL: name: and_s1_scc_scc
48 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
49 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
50 ; GREEDY: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0
51 ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C]]
52 ; GREEDY: [[ICMP1:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]]
53 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
54 ; GREEDY: [[COPY3:%[0-9]+]]:sgpr(s1) = COPY [[ICMP1]](s1)
55 ; GREEDY: [[AND:%[0-9]+]]:scc(s1) = G_AND [[COPY2]], [[COPY3]]
56 %0:_(s32) = COPY $sgpr0
57 %1:_(s32) = COPY $sgpr1
58 %2:_(s32) = G_CONSTANT i32 0
59 %3:_(s1) = G_ICMP intpred(eq), %0, %2
60 %4:_(s1) = G_ICMP intpred(eq), %1, %2
61 %5:_(s1) = G_AND %3, %4
65 name: and_s1_vgpr_vgpr
70 liveins: $vgpr0, $vgpr1
71 ; FAST-LABEL: name: and_s1_vgpr_vgpr
72 ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
73 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
74 ; FAST: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
75 ; FAST: [[TRUNC1:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY1]](s32)
76 ; FAST: [[AND:%[0-9]+]]:vgpr(s1) = G_AND [[TRUNC]], [[TRUNC1]]
77 ; GREEDY-LABEL: name: and_s1_vgpr_vgpr
78 ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
79 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
80 ; GREEDY: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
81 ; GREEDY: [[TRUNC1:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY1]](s32)
82 ; GREEDY: [[AND:%[0-9]+]]:vgpr(s1) = G_AND [[TRUNC]], [[TRUNC1]]
83 %0:_(s32) = COPY $vgpr0
84 %1:_(s32) = COPY $vgpr1
87 %4:_(s1) = G_AND %2, %3
96 liveins: $vgpr0, $vgpr1
97 ; FAST-LABEL: name: and_s1_vcc_vcc
98 ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
99 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
100 ; FAST: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0
101 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C]]
102 ; FAST: [[ICMP1:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]]
103 ; FAST: [[AND:%[0-9]+]]:vcc(s1) = G_AND [[ICMP]], [[ICMP1]]
104 ; GREEDY-LABEL: name: and_s1_vcc_vcc
105 ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
106 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
107 ; GREEDY: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0
108 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C]]
109 ; GREEDY: [[ICMP1:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]]
110 ; GREEDY: [[AND:%[0-9]+]]:vcc(s1) = G_AND [[ICMP]], [[ICMP1]]
111 %0:_(s32) = COPY $vgpr0
112 %1:_(s32) = COPY $vgpr1
113 %2:_(s32) = G_CONSTANT i32 0
114 %3:_(s1) = G_ICMP intpred(eq), %0, %2
115 %4:_(s1) = G_ICMP intpred(eq), %1, %2
116 %5:_(s1) = G_AND %3, %4
120 name: and_s1_sgpr_vgpr
125 liveins: $sgpr0, $vgpr0
126 ; FAST-LABEL: name: and_s1_sgpr_vgpr
127 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
128 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
129 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
130 ; FAST: [[TRUNC1:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY1]](s32)
131 ; FAST: [[AND:%[0-9]+]]:vgpr(s1) = G_AND [[TRUNC]], [[TRUNC1]]
132 ; GREEDY-LABEL: name: and_s1_sgpr_vgpr
133 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
134 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
135 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
136 ; GREEDY: [[TRUNC1:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY1]](s32)
137 ; GREEDY: [[AND:%[0-9]+]]:vgpr(s1) = G_AND [[TRUNC]], [[TRUNC1]]
138 %0:_(s32) = COPY $sgpr0
139 %1:_(s32) = COPY $vgpr0
140 %2:_(s1) = G_TRUNC %0
141 %3:_(s1) = G_TRUNC %1
142 %4:_(s1) = G_AND %2, %3
146 name: and_s1_vgpr_sgpr
151 liveins: $vgpr0, $vgpr0
152 ; FAST-LABEL: name: and_s1_vgpr_sgpr
153 ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
154 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
155 ; FAST: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
156 ; FAST: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32)
157 ; FAST: [[AND:%[0-9]+]]:vgpr(s1) = G_AND [[TRUNC]], [[TRUNC1]]
158 ; GREEDY-LABEL: name: and_s1_vgpr_sgpr
159 ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
160 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
161 ; GREEDY: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
162 ; GREEDY: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32)
163 ; GREEDY: [[AND:%[0-9]+]]:vgpr(s1) = G_AND [[TRUNC]], [[TRUNC1]]
164 %0:_(s32) = COPY $vgpr0
165 %1:_(s32) = COPY $sgpr0
166 %2:_(s1) = G_TRUNC %0
167 %3:_(s1) = G_TRUNC %1
168 %4:_(s1) = G_AND %2, %3
171 # FIXME: Should just change the result bank of the scc compare.
178 liveins: $sgpr0, $vgpr0
179 ; FAST-LABEL: name: and_s1_scc_vcc
180 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
181 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
182 ; FAST: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0
183 ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C]]
184 ; FAST: [[ICMP1:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]]
185 ; FAST: [[COPY2:%[0-9]+]]:vcc(s1) = COPY [[ICMP]](s1)
186 ; FAST: [[AND:%[0-9]+]]:vcc(s1) = G_AND [[COPY2]], [[ICMP1]]
187 ; GREEDY-LABEL: name: and_s1_scc_vcc
188 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
189 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
190 ; GREEDY: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0
191 ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C]]
192 ; GREEDY: [[ICMP1:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]]
193 ; GREEDY: [[COPY2:%[0-9]+]]:vcc(s1) = COPY [[ICMP]](s1)
194 ; GREEDY: [[AND:%[0-9]+]]:vcc(s1) = G_AND [[COPY2]], [[ICMP1]]
195 %0:_(s32) = COPY $sgpr0
196 %1:_(s32) = COPY $vgpr0
197 %2:_(s32) = G_CONSTANT i32 0
198 %3:_(s1) = G_ICMP intpred(eq), %0, %2
199 %4:_(s1) = G_ICMP intpred(eq), %1, %2
200 %5:_(s1) = G_AND %3, %4
209 liveins: $vgpr0, $vgpr1
210 ; FAST-LABEL: name: and_s1_vcc_scc
211 ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
212 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
213 ; FAST: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0
214 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C]]
215 ; FAST: [[ICMP1:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]]
216 ; FAST: [[AND:%[0-9]+]]:vcc(s1) = G_AND [[ICMP]], [[ICMP1]]
217 ; GREEDY-LABEL: name: and_s1_vcc_scc
218 ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
219 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
220 ; GREEDY: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0
221 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C]]
222 ; GREEDY: [[ICMP1:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]]
223 ; GREEDY: [[AND:%[0-9]+]]:vcc(s1) = G_AND [[ICMP]], [[ICMP1]]
224 %0:_(s32) = COPY $vgpr0
225 %1:_(s32) = COPY $vgpr1
226 %2:_(s32) = G_CONSTANT i32 0
227 %3:_(s1) = G_ICMP intpred(eq), %0, %2
228 %4:_(s1) = G_ICMP intpred(eq), %1, %2
229 %5:_(s1) = G_AND %3, %4
233 # Test with a known result bank
235 name: and_s1_vcc_sgpr_sgpr
240 liveins: $sgpr0, $sgpr1
241 ; FAST-LABEL: name: and_s1_vcc_sgpr_sgpr
242 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
243 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
244 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
245 ; FAST: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32)
246 ; FAST: [[COPY2:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
247 ; FAST: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC1]](s1)
248 ; FAST: [[AND:%[0-9]+]]:vcc(s1) = G_AND [[COPY2]], [[COPY3]]
249 ; GREEDY-LABEL: name: and_s1_vcc_sgpr_sgpr
250 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
251 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
252 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
253 ; GREEDY: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32)
254 ; GREEDY: [[AND:%[0-9]+]]:scc(s1) = G_AND [[TRUNC]], [[TRUNC1]]
255 ; GREEDY: [[COPY2:%[0-9]+]]:vcc(s1) = COPY [[AND]](s1)
256 %0:_(s32) = COPY $sgpr0
257 %1:_(s32) = COPY $sgpr1
258 %2:_(s1) = G_TRUNC %0
259 %3:_(s1) = G_TRUNC %1
260 %4:vcc(s1) = G_AND %2, %3
264 name: and_s1_vcc_vgpr_vgpr
269 liveins: $vgpr0, $vgpr1
270 ; FAST-LABEL: name: and_s1_vcc_vgpr_vgpr
271 ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
272 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
273 ; FAST: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
274 ; FAST: [[TRUNC1:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY1]](s32)
275 ; FAST: [[COPY2:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
276 ; FAST: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC1]](s1)
277 ; FAST: [[AND:%[0-9]+]]:vcc(s1) = G_AND [[COPY2]], [[COPY3]]
278 ; GREEDY-LABEL: name: and_s1_vcc_vgpr_vgpr
279 ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
280 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
281 ; GREEDY: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
282 ; GREEDY: [[TRUNC1:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY1]](s32)
283 ; GREEDY: [[COPY2:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
284 ; GREEDY: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC1]](s1)
285 ; GREEDY: [[AND:%[0-9]+]]:vcc(s1) = G_AND [[COPY2]], [[COPY3]]
286 %0:_(s32) = COPY $vgpr0
287 %1:_(s32) = COPY $vgpr1
288 %2:_(s1) = G_TRUNC %0
289 %3:_(s1) = G_TRUNC %1
290 %4:vcc(s1) = G_AND %2, %3
294 name: and_s1_vcc_vgpr_sgpr
299 liveins: $vgpr0, $sgpr0
300 ; FAST-LABEL: name: and_s1_vcc_vgpr_sgpr
301 ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
302 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
303 ; FAST: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
304 ; FAST: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32)
305 ; FAST: [[COPY2:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
306 ; FAST: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC1]](s1)
307 ; FAST: [[AND:%[0-9]+]]:vcc(s1) = G_AND [[COPY2]], [[COPY3]]
308 ; GREEDY-LABEL: name: and_s1_vcc_vgpr_sgpr
309 ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
310 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
311 ; GREEDY: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
312 ; GREEDY: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32)
313 ; GREEDY: [[COPY2:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
314 ; GREEDY: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC1]](s1)
315 ; GREEDY: [[AND:%[0-9]+]]:vcc(s1) = G_AND [[COPY2]], [[COPY3]]
316 %0:_(s32) = COPY $vgpr0
317 %1:_(s32) = COPY $sgpr0
318 %2:_(s1) = G_TRUNC %0
319 %3:_(s1) = G_TRUNC %1
320 %4:vcc(s1) = G_AND %2, %3
324 name: and_s1_vcc_sgpr_vgpr
329 liveins: $vgpr0, $sgpr0
330 ; FAST-LABEL: name: and_s1_vcc_sgpr_vgpr
331 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
332 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
333 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
334 ; FAST: [[TRUNC1:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY1]](s32)
335 ; FAST: [[COPY2:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
336 ; FAST: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC1]](s1)
337 ; FAST: [[AND:%[0-9]+]]:vcc(s1) = G_AND [[COPY2]], [[COPY3]]
338 ; GREEDY-LABEL: name: and_s1_vcc_sgpr_vgpr
339 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
340 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
341 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
342 ; GREEDY: [[TRUNC1:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY1]](s32)
343 ; GREEDY: [[COPY2:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
344 ; GREEDY: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC1]](s1)
345 ; GREEDY: [[AND:%[0-9]+]]:vcc(s1) = G_AND [[COPY2]], [[COPY3]]
346 %0:_(s32) = COPY $sgpr0
347 %1:_(s32) = COPY $vgpr0
348 %2:_(s1) = G_TRUNC %0
349 %3:_(s1) = G_TRUNC %1
350 %4:vcc(s1) = G_AND %2, %3
354 name: and_s1_vgpr_sgpr_sgpr
359 liveins: $sgpr0, $sgpr1
360 ; FAST-LABEL: name: and_s1_vgpr_sgpr_sgpr
361 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
362 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
363 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
364 ; FAST: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32)
365 ; FAST: [[AND:%[0-9]+]]:vgpr(s1) = G_AND [[TRUNC]], [[TRUNC1]]
366 ; GREEDY-LABEL: name: and_s1_vgpr_sgpr_sgpr
367 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
368 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
369 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
370 ; GREEDY: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32)
371 ; GREEDY: [[AND:%[0-9]+]]:vgpr(s1) = G_AND [[TRUNC]], [[TRUNC1]]
372 %0:_(s32) = COPY $sgpr0
373 %1:_(s32) = COPY $sgpr1
374 %2:_(s1) = G_TRUNC %0
375 %3:_(s1) = G_TRUNC %1
376 %4:vgpr(s1) = G_AND %2, %3
380 name: and_s1_sgpr_sgpr_sgpr
385 liveins: $sgpr0, $sgpr1
386 ; FAST-LABEL: name: and_s1_sgpr_sgpr_sgpr
387 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
388 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
389 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
390 ; FAST: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32)
391 ; FAST: [[AND:%[0-9]+]]:sgpr(s1) = G_AND [[TRUNC]], [[TRUNC1]]
392 ; GREEDY-LABEL: name: and_s1_sgpr_sgpr_sgpr
393 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
394 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
395 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
396 ; GREEDY: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32)
397 ; GREEDY: [[AND:%[0-9]+]]:sgpr(s1) = G_AND [[TRUNC]], [[TRUNC1]]
398 %0:_(s32) = COPY $sgpr0
399 %1:_(s32) = COPY $sgpr1
400 %2:_(s1) = G_TRUNC %0
401 %3:_(s1) = G_TRUNC %1
402 %4:sgpr(s1) = G_AND %2, %3
406 name: and_s1_scc_sgpr_sgpr
411 liveins: $sgpr0, $sgpr1
412 ; FAST-LABEL: name: and_s1_scc_sgpr_sgpr
413 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
414 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
415 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
416 ; FAST: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32)
417 ; FAST: [[AND:%[0-9]+]]:scc(s1) = G_AND [[TRUNC]], [[TRUNC1]]
418 ; GREEDY-LABEL: name: and_s1_scc_sgpr_sgpr
419 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
420 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
421 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
422 ; GREEDY: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32)
423 ; GREEDY: [[AND:%[0-9]+]]:scc(s1) = G_AND [[TRUNC]], [[TRUNC1]]
424 %0:_(s32) = COPY $sgpr0
425 %1:_(s32) = COPY $sgpr1
426 %2:_(s1) = G_TRUNC %0
427 %3:_(s1) = G_TRUNC %1
428 %4:scc(s1) = G_AND %2, %3
432 name: and_s1_scc_scc_scc
437 liveins: $sgpr0, $sgpr1
438 ; FAST-LABEL: name: and_s1_scc_scc_scc
439 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
440 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
441 ; FAST: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0
442 ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[C]]
443 ; FAST: [[ICMP1:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[C]]
444 ; FAST: [[COPY2:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
445 ; FAST: [[COPY3:%[0-9]+]]:sgpr(s1) = COPY [[ICMP1]](s1)
446 ; FAST: [[AND:%[0-9]+]]:scc(s1) = G_AND [[COPY2]], [[COPY3]]
447 ; GREEDY-LABEL: name: and_s1_scc_scc_scc
448 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
449 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
450 ; GREEDY: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0
451 ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[C]]
452 ; GREEDY: [[ICMP1:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[C]]
453 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
454 ; GREEDY: [[COPY3:%[0-9]+]]:sgpr(s1) = COPY [[ICMP1]](s1)
455 ; GREEDY: [[AND:%[0-9]+]]:scc(s1) = G_AND [[COPY2]], [[COPY3]]
456 %0:_(s32) = COPY $sgpr0
457 %1:_(s32) = COPY $sgpr1
458 %2:_(s32) = G_CONSTANT i32 0
459 %3:_(s1) = G_ICMP intpred(ne), %0, %2
460 %4:_(s1) = G_ICMP intpred(ne), %1, %2
461 %5:scc(s1) = G_AND %3, %4
466 name: and_s1_scc_sgpr_scc
471 liveins: $sgpr0, $sgpr1
472 ; FAST-LABEL: name: and_s1_scc_sgpr_scc
473 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
474 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
475 ; FAST: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0
476 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
477 ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[C]]
478 ; FAST: [[COPY2:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
479 ; FAST: [[AND:%[0-9]+]]:scc(s1) = G_AND [[TRUNC]], [[COPY2]]
480 ; GREEDY-LABEL: name: and_s1_scc_sgpr_scc
481 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
482 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
483 ; GREEDY: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0
484 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
485 ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[C]]
486 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
487 ; GREEDY: [[AND:%[0-9]+]]:scc(s1) = G_AND [[TRUNC]], [[COPY2]]
488 %0:_(s32) = COPY $sgpr0
489 %1:_(s32) = COPY $sgpr1
490 %2:_(s32) = G_CONSTANT i32 0
491 %3:_(s1) = G_TRUNC %0
492 %4:_(s1) = G_ICMP intpred(ne), %1, %2
493 %5:scc(s1) = G_AND %3, %4
498 name: and_s1_scc_scc_sgpr
503 liveins: $sgpr0, $sgpr1
504 ; FAST-LABEL: name: and_s1_scc_scc_sgpr
505 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
506 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
507 ; FAST: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0
508 ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[C]]
509 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32)
510 ; FAST: [[COPY2:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
511 ; FAST: [[AND:%[0-9]+]]:scc(s1) = G_AND [[COPY2]], [[TRUNC]]
512 ; GREEDY-LABEL: name: and_s1_scc_scc_sgpr
513 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
514 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
515 ; GREEDY: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0
516 ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[C]]
517 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32)
518 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
519 ; GREEDY: [[AND:%[0-9]+]]:scc(s1) = G_AND [[COPY2]], [[TRUNC]]
520 %0:_(s32) = COPY $sgpr0
521 %1:_(s32) = COPY $sgpr1
522 %2:_(s32) = G_CONSTANT i32 0
523 %3:_(s1) = G_ICMP intpred(ne), %0, %2
524 %4:_(s1) = G_TRUNC %1
525 %5:scc(s1) = G_AND %3, %4