[llvm-objdump] - Remove one overload of reportError. NFCI.
[llvm-complete.git] / test / CodeGen / AMDGPU / GlobalISel / regbankselect-and-s1.mir
blob620a8e1e71bdc948fd0ffec6db5b8ba45512da61
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
5 ---
6 name: and_s1_sgpr_sgpr
7 legalized: true
9 body: |
10   bb.0:
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
26     %2:_(s1) = G_TRUNC %0
27     %3:_(s1) = G_TRUNC %1
28     %4:_(s1) = G_AND %2, %3
29 ...
31 ---
32 name: and_s1_scc_scc
33 legalized: true
35 body: |
36   bb.0:
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
62 ...
64 ---
65 name: and_s1_vgpr_vgpr
66 legalized: true
68 body: |
69   bb.0:
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
85     %2:_(s1) = G_TRUNC %0
86     %3:_(s1) = G_TRUNC %1
87     %4:_(s1) = G_AND %2, %3
88 ...
90 ---
91 name: and_s1_vcc_vcc
92 legalized: true
94 body: |
95   bb.0:
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
121 legalized: true
123 body: |
124   bb.0:
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
147 legalized: true
149 body: |
150   bb.0:
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.
173 name: and_s1_scc_vcc
174 legalized: true
176 body: |
177   bb.0:
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
204 name: and_s1_vcc_scc
205 legalized: true
207 body: |
208   bb.0:
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
236 legalized: true
238 body: |
239   bb.0:
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
265 legalized: true
267 body: |
268   bb.0:
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
295 legalized: true
297 body: |
298   bb.0:
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
325 legalized: true
327 body: |
328   bb.0:
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
355 legalized: true
357 body: |
358   bb.0:
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
381 legalized: true
383 body: |
384   bb.0:
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
407 legalized: true
409 body: |
410   bb.0:
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
433 legalized: true
435 body: |
436   bb.0:
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
467 legalized: true
469 body: |
470   bb.0:
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
499 legalized: true
501 body: |
502   bb.0:
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