[MIPS GlobalISel] NarrowScalar G_ZEXTLOAD and G_SEXTLOAD
[llvm-complete.git] / test / CodeGen / Mips / GlobalISel / instruction-select / icmp.mir
blob0e6f1211b2b8158249351045b4476e77c7a05566
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
3 --- |
5   define void @eq_i32() {entry: ret void}
6   define void @ne_i32() {entry: ret void}
7   define void @sgt_i32() {entry: ret void}
8   define void @sge_i32() {entry: ret void}
9   define void @slt_i32() {entry: ret void}
10   define void @sle_i32() {entry: ret void}
11   define void @ugt_i32() {entry: ret void}
12   define void @uge_i32() {entry: ret void}
13   define void @ult_i32() {entry: ret void}
14   define void @ule_i32() {entry: ret void}
15   define void @eq_ptr() {entry: ret void}
18 ...
19 ---
20 name:            eq_i32
21 alignment:       2
22 legalized:       true
23 regBankSelected: true
24 tracksRegLiveness: true
25 body:             |
26   bb.1.entry:
27     liveins: $a0, $a1
29     ; MIPS32-LABEL: name: eq_i32
30     ; MIPS32: liveins: $a0, $a1
31     ; MIPS32: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
32     ; MIPS32: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
33     ; MIPS32: [[XOR:%[0-9]+]]:gpr32 = XOR [[COPY]], [[COPY1]]
34     ; MIPS32: [[SLTiu:%[0-9]+]]:gpr32 = SLTiu [[XOR]], 1
35     ; MIPS32: $v0 = COPY [[SLTiu]]
36     ; MIPS32: RetRA implicit $v0
37     %0:gprb(s32) = COPY $a0
38     %1:gprb(s32) = COPY $a1
39     %4:gprb(s32) = G_ICMP intpred(eq), %0(s32), %1
40     %3:gprb(s32) = COPY %4(s32)
41     $v0 = COPY %3(s32)
42     RetRA implicit $v0
44 ...
45 ---
46 name:            ne_i32
47 alignment:       2
48 legalized:       true
49 regBankSelected: true
50 tracksRegLiveness: true
51 body:             |
52   bb.1.entry:
53     liveins: $a0, $a1
55     ; MIPS32-LABEL: name: ne_i32
56     ; MIPS32: liveins: $a0, $a1
57     ; MIPS32: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
58     ; MIPS32: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
59     ; MIPS32: [[XOR:%[0-9]+]]:gpr32 = XOR [[COPY]], [[COPY1]]
60     ; MIPS32: [[SLTu:%[0-9]+]]:gpr32 = SLTu $zero, [[XOR]]
61     ; MIPS32: $v0 = COPY [[SLTu]]
62     ; MIPS32: RetRA implicit $v0
63     %0:gprb(s32) = COPY $a0
64     %1:gprb(s32) = COPY $a1
65     %4:gprb(s32) = G_ICMP intpred(ne), %0(s32), %1
66     %3:gprb(s32) = COPY %4(s32)
67     $v0 = COPY %3(s32)
68     RetRA implicit $v0
70 ...
71 ---
72 name:            sgt_i32
73 alignment:       2
74 legalized:       true
75 regBankSelected: true
76 tracksRegLiveness: true
77 body:             |
78   bb.1.entry:
79     liveins: $a0, $a1
81     ; MIPS32-LABEL: name: sgt_i32
82     ; MIPS32: liveins: $a0, $a1
83     ; MIPS32: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
84     ; MIPS32: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
85     ; MIPS32: [[SLT:%[0-9]+]]:gpr32 = SLT [[COPY1]], [[COPY]]
86     ; MIPS32: $v0 = COPY [[SLT]]
87     ; MIPS32: RetRA implicit $v0
88     %0:gprb(s32) = COPY $a0
89     %1:gprb(s32) = COPY $a1
90     %4:gprb(s32) = G_ICMP intpred(sgt), %0(s32), %1
91     %3:gprb(s32) = COPY %4(s32)
92     $v0 = COPY %3(s32)
93     RetRA implicit $v0
95 ...
96 ---
97 name:            sge_i32
98 alignment:       2
99 legalized:       true
100 regBankSelected: true
101 tracksRegLiveness: true
102 body:             |
103   bb.1.entry:
104     liveins: $a0, $a1
106     ; MIPS32-LABEL: name: sge_i32
107     ; MIPS32: liveins: $a0, $a1
108     ; MIPS32: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
109     ; MIPS32: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
110     ; MIPS32: [[SLT:%[0-9]+]]:gpr32 = SLT [[COPY]], [[COPY1]]
111     ; MIPS32: [[XORi:%[0-9]+]]:gpr32 = XORi [[SLT]], 1
112     ; MIPS32: $v0 = COPY [[XORi]]
113     ; MIPS32: RetRA implicit $v0
114     %0:gprb(s32) = COPY $a0
115     %1:gprb(s32) = COPY $a1
116     %4:gprb(s32) = G_ICMP intpred(sge), %0(s32), %1
117     %3:gprb(s32) = COPY %4(s32)
118     $v0 = COPY %3(s32)
119     RetRA implicit $v0
123 name:            slt_i32
124 alignment:       2
125 legalized:       true
126 regBankSelected: true
127 tracksRegLiveness: true
128 body:             |
129   bb.1.entry:
130     liveins: $a0, $a1
132     ; MIPS32-LABEL: name: slt_i32
133     ; MIPS32: liveins: $a0, $a1
134     ; MIPS32: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
135     ; MIPS32: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
136     ; MIPS32: [[SLT:%[0-9]+]]:gpr32 = SLT [[COPY]], [[COPY1]]
137     ; MIPS32: $v0 = COPY [[SLT]]
138     ; MIPS32: RetRA implicit $v0
139     %0:gprb(s32) = COPY $a0
140     %1:gprb(s32) = COPY $a1
141     %4:gprb(s32) = G_ICMP intpred(slt), %0(s32), %1
142     %3:gprb(s32) = COPY %4(s32)
143     $v0 = COPY %3(s32)
144     RetRA implicit $v0
148 name:            sle_i32
149 alignment:       2
150 legalized:       true
151 regBankSelected: true
152 tracksRegLiveness: true
153 body:             |
154   bb.1.entry:
155     liveins: $a0, $a1
157     ; MIPS32-LABEL: name: sle_i32
158     ; MIPS32: liveins: $a0, $a1
159     ; MIPS32: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
160     ; MIPS32: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
161     ; MIPS32: [[SLT:%[0-9]+]]:gpr32 = SLT [[COPY1]], [[COPY]]
162     ; MIPS32: [[XORi:%[0-9]+]]:gpr32 = XORi [[SLT]], 1
163     ; MIPS32: $v0 = COPY [[XORi]]
164     ; MIPS32: RetRA implicit $v0
165     %0:gprb(s32) = COPY $a0
166     %1:gprb(s32) = COPY $a1
167     %4:gprb(s32) = G_ICMP intpred(sle), %0(s32), %1
168     %3:gprb(s32) = COPY %4(s32)
169     $v0 = COPY %3(s32)
170     RetRA implicit $v0
174 name:            ugt_i32
175 alignment:       2
176 legalized:       true
177 regBankSelected: true
178 tracksRegLiveness: true
179 body:             |
180   bb.1.entry:
181     liveins: $a0, $a1
183     ; MIPS32-LABEL: name: ugt_i32
184     ; MIPS32: liveins: $a0, $a1
185     ; MIPS32: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
186     ; MIPS32: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
187     ; MIPS32: [[SLTu:%[0-9]+]]:gpr32 = SLTu [[COPY1]], [[COPY]]
188     ; MIPS32: $v0 = COPY [[SLTu]]
189     ; MIPS32: RetRA implicit $v0
190     %0:gprb(s32) = COPY $a0
191     %1:gprb(s32) = COPY $a1
192     %4:gprb(s32) = G_ICMP intpred(ugt), %0(s32), %1
193     %3:gprb(s32) = COPY %4(s32)
194     $v0 = COPY %3(s32)
195     RetRA implicit $v0
199 name:            uge_i32
200 alignment:       2
201 legalized:       true
202 regBankSelected: true
203 tracksRegLiveness: true
204 body:             |
205   bb.1.entry:
206     liveins: $a0, $a1
208     ; MIPS32-LABEL: name: uge_i32
209     ; MIPS32: liveins: $a0, $a1
210     ; MIPS32: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
211     ; MIPS32: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
212     ; MIPS32: [[SLTu:%[0-9]+]]:gpr32 = SLTu [[COPY]], [[COPY1]]
213     ; MIPS32: [[XORi:%[0-9]+]]:gpr32 = XORi [[SLTu]], 1
214     ; MIPS32: $v0 = COPY [[XORi]]
215     ; MIPS32: RetRA implicit $v0
216     %0:gprb(s32) = COPY $a0
217     %1:gprb(s32) = COPY $a1
218     %4:gprb(s32) = G_ICMP intpred(uge), %0(s32), %1
219     %3:gprb(s32) = COPY %4(s32)
220     $v0 = COPY %3(s32)
221     RetRA implicit $v0
225 name:            ult_i32
226 alignment:       2
227 legalized:       true
228 regBankSelected: true
229 tracksRegLiveness: true
230 body:             |
231   bb.1.entry:
232     liveins: $a0, $a1
234     ; MIPS32-LABEL: name: ult_i32
235     ; MIPS32: liveins: $a0, $a1
236     ; MIPS32: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
237     ; MIPS32: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
238     ; MIPS32: [[SLTu:%[0-9]+]]:gpr32 = SLTu [[COPY]], [[COPY1]]
239     ; MIPS32: $v0 = COPY [[SLTu]]
240     ; MIPS32: RetRA implicit $v0
241     %0:gprb(s32) = COPY $a0
242     %1:gprb(s32) = COPY $a1
243     %4:gprb(s32) = G_ICMP intpred(ult), %0(s32), %1
244     %3:gprb(s32) = COPY %4(s32)
245     $v0 = COPY %3(s32)
246     RetRA implicit $v0
250 name:            ule_i32
251 alignment:       2
252 legalized:       true
253 regBankSelected: true
254 tracksRegLiveness: true
255 body:             |
256   bb.1.entry:
257     liveins: $a0, $a1
259     ; MIPS32-LABEL: name: ule_i32
260     ; MIPS32: liveins: $a0, $a1
261     ; MIPS32: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
262     ; MIPS32: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
263     ; MIPS32: [[SLTu:%[0-9]+]]:gpr32 = SLTu [[COPY1]], [[COPY]]
264     ; MIPS32: [[XORi:%[0-9]+]]:gpr32 = XORi [[SLTu]], 1
265     ; MIPS32: $v0 = COPY [[XORi]]
266     ; MIPS32: RetRA implicit $v0
267     %0:gprb(s32) = COPY $a0
268     %1:gprb(s32) = COPY $a1
269     %4:gprb(s32) = G_ICMP intpred(ule), %0(s32), %1
270     %3:gprb(s32) = COPY %4(s32)
271     $v0 = COPY %3(s32)
272     RetRA implicit $v0
276 name:            eq_ptr
277 alignment:       2
278 legalized:       true
279 regBankSelected: true
280 tracksRegLiveness: true
281 body:             |
282   bb.1.entry:
283     liveins: $a0, $a1
285     ; MIPS32-LABEL: name: eq_ptr
286     ; MIPS32: liveins: $a0, $a1
287     ; MIPS32: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
288     ; MIPS32: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
289     ; MIPS32: [[XOR:%[0-9]+]]:gpr32 = XOR [[COPY]], [[COPY1]]
290     ; MIPS32: [[SLTiu:%[0-9]+]]:gpr32 = SLTiu [[XOR]], 1
291     ; MIPS32: $v0 = COPY [[SLTiu]]
292     ; MIPS32: RetRA implicit $v0
293     %0:gprb(p0) = COPY $a0
294     %1:gprb(p0) = COPY $a1
295     %4:gprb(s32) = G_ICMP intpred(eq), %0(p0), %1
296     %3:gprb(s32) = COPY %4(s32)
297     $v0 = COPY %3(s32)
298     RetRA implicit $v0