Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / ARM / GlobalISel / thumb-instruction-select-cmp.mir
blob17ce903ae9491ad7db818b01c23733c35363d35f
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -O0 -mtriple thumb-- -mattr=+v6t2 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
3 --- |
4   define void @test_icmp_eq_s32() { ret void }
5   define void @test_icmp_ne_s32() { ret void }
6   define void @test_icmp_ugt_s32() { ret void }
7   define void @test_icmp_uge_s32() { ret void }
8   define void @test_icmp_ult_s32() { ret void }
9   define void @test_icmp_ule_s32() { ret void }
10   define void @test_icmp_sgt_s32() { ret void }
11   define void @test_icmp_sge_s32() { ret void }
12   define void @test_icmp_slt_s32() { ret void }
13   define void @test_icmp_sle_s32() { ret void }
14 ...
15 ---
16 name:            test_icmp_eq_s32
17 legalized:       true
18 regBankSelected: true
19 selected:        false
20 registers:
21   - { id: 0, class: gprb }
22   - { id: 1, class: gprb }
23   - { id: 2, class: gprb }
24   - { id: 3, class: gprb }
25 body:             |
26   bb.0:
27     liveins: $r0, $r1
29     ; CHECK-LABEL: name: test_icmp_eq_s32
30     ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
31     ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r1
32     ; CHECK: [[t2MOVi:%[0-9]+]]:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
33     ; CHECK: t2CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr
34     ; CHECK: [[t2MOVCCi:%[0-9]+]]:rgpr = t2MOVCCi [[t2MOVi]], 1, 0 /* CC::eq */, $cpsr
35     ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[t2MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
36     ; CHECK: $r0 = COPY [[t2ANDri]]
37     ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
38     %0(s32) = COPY $r0
39     %1(s32) = COPY $r1
40     %2(s1) = G_ICMP intpred(eq),  %0(s32), %1
41     %3(s32) = G_ZEXT %2(s1)
42     $r0 = COPY %3(s32)
43     BX_RET 14, $noreg, implicit $r0
44 ...
45 ---
46 name:            test_icmp_ne_s32
47 legalized:       true
48 regBankSelected: true
49 selected:        false
50 registers:
51   - { id: 0, class: gprb }
52   - { id: 1, class: gprb }
53   - { id: 2, class: gprb }
54   - { id: 3, class: gprb }
55 body:             |
56   bb.0:
57     liveins: $r0, $r1
59     ; CHECK-LABEL: name: test_icmp_ne_s32
60     ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
61     ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r1
62     ; CHECK: [[t2MOVi:%[0-9]+]]:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
63     ; CHECK: t2CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr
64     ; CHECK: [[t2MOVCCi:%[0-9]+]]:rgpr = t2MOVCCi [[t2MOVi]], 1, 1 /* CC::ne */, $cpsr
65     ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[t2MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
66     ; CHECK: $r0 = COPY [[t2ANDri]]
67     ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
68     %0(s32) = COPY $r0
69     %1(s32) = COPY $r1
70     %2(s1) = G_ICMP intpred(ne),  %0(s32), %1
71     %3(s32) = G_ZEXT %2(s1)
72     $r0 = COPY %3(s32)
73     BX_RET 14, $noreg, implicit $r0
74 ...
75 ---
76 name:            test_icmp_ugt_s32
77 legalized:       true
78 regBankSelected: true
79 selected:        false
80 registers:
81   - { id: 0, class: gprb }
82   - { id: 1, class: gprb }
83   - { id: 2, class: gprb }
84   - { id: 3, class: gprb }
85 body:             |
86   bb.0:
87     liveins: $r0, $r1
89     ; CHECK-LABEL: name: test_icmp_ugt_s32
90     ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
91     ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r1
92     ; CHECK: [[t2MOVi:%[0-9]+]]:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
93     ; CHECK: t2CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr
94     ; CHECK: [[t2MOVCCi:%[0-9]+]]:rgpr = t2MOVCCi [[t2MOVi]], 1, 8 /* CC::hi */, $cpsr
95     ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[t2MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
96     ; CHECK: $r0 = COPY [[t2ANDri]]
97     ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
98     %0(s32) = COPY $r0
99     %1(s32) = COPY $r1
100     %2(s1) = G_ICMP intpred(ugt),  %0(s32), %1
101     %3(s32) = G_ZEXT %2(s1)
102     $r0 = COPY %3(s32)
103     BX_RET 14, $noreg, implicit $r0
106 name:            test_icmp_uge_s32
107 legalized:       true
108 regBankSelected: true
109 selected:        false
110 registers:
111   - { id: 0, class: gprb }
112   - { id: 1, class: gprb }
113   - { id: 2, class: gprb }
114   - { id: 3, class: gprb }
115 body:             |
116   bb.0:
117     liveins: $r0, $r1
119     ; CHECK-LABEL: name: test_icmp_uge_s32
120     ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
121     ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r1
122     ; CHECK: [[t2MOVi:%[0-9]+]]:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
123     ; CHECK: t2CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr
124     ; CHECK: [[t2MOVCCi:%[0-9]+]]:rgpr = t2MOVCCi [[t2MOVi]], 1, 2 /* CC::hs */, $cpsr
125     ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[t2MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
126     ; CHECK: $r0 = COPY [[t2ANDri]]
127     ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
128     %0(s32) = COPY $r0
129     %1(s32) = COPY $r1
130     %2(s1) = G_ICMP intpred(uge),  %0(s32), %1
131     %3(s32) = G_ZEXT %2(s1)
132     $r0 = COPY %3(s32)
133     BX_RET 14, $noreg, implicit $r0
136 name:            test_icmp_ult_s32
137 legalized:       true
138 regBankSelected: true
139 selected:        false
140 registers:
141   - { id: 0, class: gprb }
142   - { id: 1, class: gprb }
143   - { id: 2, class: gprb }
144   - { id: 3, class: gprb }
145 body:             |
146   bb.0:
147     liveins: $r0, $r1
149     ; CHECK-LABEL: name: test_icmp_ult_s32
150     ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
151     ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r1
152     ; CHECK: [[t2MOVi:%[0-9]+]]:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
153     ; CHECK: t2CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr
154     ; CHECK: [[t2MOVCCi:%[0-9]+]]:rgpr = t2MOVCCi [[t2MOVi]], 1, 3 /* CC::lo */, $cpsr
155     ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[t2MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
156     ; CHECK: $r0 = COPY [[t2ANDri]]
157     ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
158     %0(s32) = COPY $r0
159     %1(s32) = COPY $r1
160     %2(s1) = G_ICMP intpred(ult),  %0(s32), %1
161     %3(s32) = G_ZEXT %2(s1)
162     $r0 = COPY %3(s32)
163     BX_RET 14, $noreg, implicit $r0
166 name:            test_icmp_ule_s32
167 legalized:       true
168 regBankSelected: true
169 selected:        false
170 registers:
171   - { id: 0, class: gprb }
172   - { id: 1, class: gprb }
173   - { id: 2, class: gprb }
174   - { id: 3, class: gprb }
175 body:             |
176   bb.0:
177     liveins: $r0, $r1
179     ; CHECK-LABEL: name: test_icmp_ule_s32
180     ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
181     ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r1
182     ; CHECK: [[t2MOVi:%[0-9]+]]:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
183     ; CHECK: t2CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr
184     ; CHECK: [[t2MOVCCi:%[0-9]+]]:rgpr = t2MOVCCi [[t2MOVi]], 1, 9 /* CC::ls */, $cpsr
185     ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[t2MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
186     ; CHECK: $r0 = COPY [[t2ANDri]]
187     ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
188     %0(s32) = COPY $r0
189     %1(s32) = COPY $r1
190     %2(s1) = G_ICMP intpred(ule),  %0(s32), %1
191     %3(s32) = G_ZEXT %2(s1)
192     $r0 = COPY %3(s32)
193     BX_RET 14, $noreg, implicit $r0
196 name:            test_icmp_sgt_s32
197 legalized:       true
198 regBankSelected: true
199 selected:        false
200 registers:
201   - { id: 0, class: gprb }
202   - { id: 1, class: gprb }
203   - { id: 2, class: gprb }
204   - { id: 3, class: gprb }
205 body:             |
206   bb.0:
207     liveins: $r0, $r1
209     ; CHECK-LABEL: name: test_icmp_sgt_s32
210     ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
211     ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r1
212     ; CHECK: [[t2MOVi:%[0-9]+]]:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
213     ; CHECK: t2CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr
214     ; CHECK: [[t2MOVCCi:%[0-9]+]]:rgpr = t2MOVCCi [[t2MOVi]], 1, 12 /* CC::gt */, $cpsr
215     ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[t2MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
216     ; CHECK: $r0 = COPY [[t2ANDri]]
217     ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
218     %0(s32) = COPY $r0
219     %1(s32) = COPY $r1
220     %2(s1) = G_ICMP intpred(sgt),  %0(s32), %1
221     %3(s32) = G_ZEXT %2(s1)
222     $r0 = COPY %3(s32)
223     BX_RET 14, $noreg, implicit $r0
226 name:            test_icmp_sge_s32
227 legalized:       true
228 regBankSelected: true
229 selected:        false
230 registers:
231   - { id: 0, class: gprb }
232   - { id: 1, class: gprb }
233   - { id: 2, class: gprb }
234   - { id: 3, class: gprb }
235 body:             |
236   bb.0:
237     liveins: $r0, $r1
239     ; CHECK-LABEL: name: test_icmp_sge_s32
240     ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
241     ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r1
242     ; CHECK: [[t2MOVi:%[0-9]+]]:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
243     ; CHECK: t2CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr
244     ; CHECK: [[t2MOVCCi:%[0-9]+]]:rgpr = t2MOVCCi [[t2MOVi]], 1, 10 /* CC::ge */, $cpsr
245     ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[t2MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
246     ; CHECK: $r0 = COPY [[t2ANDri]]
247     ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
248     %0(s32) = COPY $r0
249     %1(s32) = COPY $r1
250     %2(s1) = G_ICMP intpred(sge),  %0(s32), %1
251     %3(s32) = G_ZEXT %2(s1)
252     $r0 = COPY %3(s32)
253     BX_RET 14, $noreg, implicit $r0
256 name:            test_icmp_slt_s32
257 legalized:       true
258 regBankSelected: true
259 selected:        false
260 registers:
261   - { id: 0, class: gprb }
262   - { id: 1, class: gprb }
263   - { id: 2, class: gprb }
264   - { id: 3, class: gprb }
265 body:             |
266   bb.0:
267     liveins: $r0, $r1
269     ; CHECK-LABEL: name: test_icmp_slt_s32
270     ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
271     ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r1
272     ; CHECK: [[t2MOVi:%[0-9]+]]:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
273     ; CHECK: t2CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr
274     ; CHECK: [[t2MOVCCi:%[0-9]+]]:rgpr = t2MOVCCi [[t2MOVi]], 1, 11 /* CC::lt */, $cpsr
275     ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[t2MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
276     ; CHECK: $r0 = COPY [[t2ANDri]]
277     ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
278     %0(s32) = COPY $r0
279     %1(s32) = COPY $r1
280     %2(s1) = G_ICMP intpred(slt),  %0(s32), %1
281     %3(s32) = G_ZEXT %2(s1)
282     $r0 = COPY %3(s32)
283     BX_RET 14, $noreg, implicit $r0
286 name:            test_icmp_sle_s32
287 legalized:       true
288 regBankSelected: true
289 selected:        false
290 registers:
291   - { id: 0, class: gprb }
292   - { id: 1, class: gprb }
293   - { id: 2, class: gprb }
294   - { id: 3, class: gprb }
295 body:             |
296   bb.0:
297     liveins: $r0, $r1
299     ; CHECK-LABEL: name: test_icmp_sle_s32
300     ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
301     ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r1
302     ; CHECK: [[t2MOVi:%[0-9]+]]:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
303     ; CHECK: t2CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr
304     ; CHECK: [[t2MOVCCi:%[0-9]+]]:rgpr = t2MOVCCi [[t2MOVi]], 1, 13 /* CC::le */, $cpsr
305     ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[t2MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
306     ; CHECK: $r0 = COPY [[t2ANDri]]
307     ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
308     %0(s32) = COPY $r0
309     %1(s32) = COPY $r1
310     %2(s1) = G_ICMP intpred(sle),  %0(s32), %1
311     %3(s32) = G_ZEXT %2(s1)
312     $r0 = COPY %3(s32)
313     BX_RET 14, $noreg, implicit $r0