[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / Mips / GlobalISel / legalizer / icmp.mir
blobe813778035cb9f881481838b8de57314fc922170
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
3 --- |
5   define void @ne_i32() {entry: ret void}
6   define void @eq_ptr() {entry: ret void}
7   define void @ult_i8() {entry: ret void}
8   define void @slt_i16() {entry: ret void}
9   define void @eq_i64() {entry: ret void}
10   define void @ne_i64() {entry: ret void}
11   define void @sgt_i64() {entry: ret void}
12   define void @sge_i64() {entry: ret void}
13   define void @slt_i64() {entry: ret void}
14   define void @sle_i64() {entry: ret void}
15   define void @ugt_i64() {entry: ret void}
16   define void @uge_i64() {entry: ret void}
17   define void @ult_i64() {entry: ret void}
18   define void @ule_i64() {entry: ret void}
20 ...
21 ---
22 name:            ne_i32
23 alignment:       4
24 tracksRegLiveness: true
25 body:             |
26   bb.1.entry:
27     liveins: $a0, $a1
29     ; MIPS32-LABEL: name: ne_i32
30     ; MIPS32: liveins: $a0, $a1
31     ; MIPS32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0
32     ; MIPS32: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1
33     ; MIPS32: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
34     ; MIPS32: [[COPY2:%[0-9]+]]:_(s32) = COPY [[ICMP]](s32)
35     ; MIPS32: $v0 = COPY [[COPY2]](s32)
36     ; MIPS32: RetRA implicit $v0
37     %0:_(s32) = COPY $a0
38     %1:_(s32) = COPY $a1
39     %2:_(s1) = G_ICMP intpred(ne), %0(s32), %1
40     %3:_(s32) = G_ANYEXT %2(s1)
41     $v0 = COPY %3(s32)
42     RetRA implicit $v0
44 ...
45 ---
46 name:            eq_ptr
47 alignment:       4
48 tracksRegLiveness: true
49 body:             |
50   bb.1.entry:
51     liveins: $a0, $a1
53     ; MIPS32-LABEL: name: eq_ptr
54     ; MIPS32: liveins: $a0, $a1
55     ; MIPS32: [[COPY:%[0-9]+]]:_(p0) = COPY $a0
56     ; MIPS32: [[COPY1:%[0-9]+]]:_(p0) = COPY $a1
57     ; MIPS32: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[COPY]](p0), [[COPY1]]
58     ; MIPS32: [[COPY2:%[0-9]+]]:_(s32) = COPY [[ICMP]](s32)
59     ; MIPS32: $v0 = COPY [[COPY2]](s32)
60     ; MIPS32: RetRA implicit $v0
61     %0:_(p0) = COPY $a0
62     %1:_(p0) = COPY $a1
63     %2:_(s1) = G_ICMP intpred(eq), %0(p0), %1
64     %3:_(s32) = G_ANYEXT %2(s1)
65     $v0 = COPY %3(s32)
66     RetRA implicit $v0
68 ...
69 ---
70 name:            ult_i8
71 alignment:       4
72 tracksRegLiveness: true
73 body:             |
74   bb.1.entry:
75     liveins: $a0, $a1
77     ; MIPS32-LABEL: name: ult_i8
78     ; MIPS32: liveins: $a0, $a1
79     ; MIPS32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0
80     ; MIPS32: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1
81     ; MIPS32: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255
82     ; MIPS32: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)
83     ; MIPS32: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]
84     ; MIPS32: [[COPY3:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)
85     ; MIPS32: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY3]], [[C]]
86     ; MIPS32: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[AND]](s32), [[AND1]]
87     ; MIPS32: [[COPY4:%[0-9]+]]:_(s32) = COPY [[ICMP]](s32)
88     ; MIPS32: $v0 = COPY [[COPY4]](s32)
89     ; MIPS32: RetRA implicit $v0
90     %2:_(s32) = COPY $a0
91     %0:_(s8) = G_TRUNC %2(s32)
92     %3:_(s32) = COPY $a1
93     %1:_(s8) = G_TRUNC %3(s32)
94     %4:_(s1) = G_ICMP intpred(ult), %0(s8), %1
95     %5:_(s32) = G_ANYEXT %4(s1)
96     $v0 = COPY %5(s32)
97     RetRA implicit $v0
99 ...
101 name:            slt_i16
102 alignment:       4
103 tracksRegLiveness: true
104 body:             |
105   bb.1.entry:
106     liveins: $a0, $a1
108     ; MIPS32-LABEL: name: slt_i16
109     ; MIPS32: liveins: $a0, $a1
110     ; MIPS32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0
111     ; MIPS32: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1
112     ; MIPS32: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)
113     ; MIPS32: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
114     ; MIPS32: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY2]], [[C]](s32)
115     ; MIPS32: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)
116     ; MIPS32: [[COPY3:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)
117     ; MIPS32: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[COPY3]], [[C]](s32)
118     ; MIPS32: [[ASHR1:%[0-9]+]]:_(s32) = G_ASHR [[SHL1]], [[C]](s32)
119     ; MIPS32: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(slt), [[ASHR]](s32), [[ASHR1]]
120     ; MIPS32: [[COPY4:%[0-9]+]]:_(s32) = COPY [[ICMP]](s32)
121     ; MIPS32: $v0 = COPY [[COPY4]](s32)
122     ; MIPS32: RetRA implicit $v0
123     %2:_(s32) = COPY $a0
124     %0:_(s16) = G_TRUNC %2(s32)
125     %3:_(s32) = COPY $a1
126     %1:_(s16) = G_TRUNC %3(s32)
127     %4:_(s1) = G_ICMP intpred(slt), %0(s16), %1
128     %5:_(s32) = G_ANYEXT %4(s1)
129     $v0 = COPY %5(s32)
130     RetRA implicit $v0
134 name:            eq_i64
135 alignment:       4
136 tracksRegLiveness: true
137 body:             |
138   bb.1.entry:
139     liveins: $a0, $a1, $a2, $a3
141     ; MIPS32-LABEL: name: eq_i64
142     ; MIPS32: liveins: $a0, $a1, $a2, $a3
143     ; MIPS32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0
144     ; MIPS32: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1
145     ; MIPS32: [[COPY2:%[0-9]+]]:_(s32) = COPY $a2
146     ; MIPS32: [[COPY3:%[0-9]+]]:_(s32) = COPY $a3
147     ; MIPS32: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[COPY]], [[COPY2]]
148     ; MIPS32: [[XOR1:%[0-9]+]]:_(s32) = G_XOR [[COPY1]], [[COPY3]]
149     ; MIPS32: [[OR:%[0-9]+]]:_(s32) = G_OR [[XOR]], [[XOR1]]
150     ; MIPS32: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
151     ; MIPS32: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[OR]](s32), [[C]]
152     ; MIPS32: [[COPY4:%[0-9]+]]:_(s32) = COPY [[ICMP]](s32)
153     ; MIPS32: $v0 = COPY [[COPY4]](s32)
154     ; MIPS32: RetRA implicit $v0
155     %2:_(s32) = COPY $a0
156     %3:_(s32) = COPY $a1
157     %0:_(s64) = G_MERGE_VALUES %2(s32), %3(s32)
158     %4:_(s32) = COPY $a2
159     %5:_(s32) = COPY $a3
160     %1:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)
161     %6:_(s1) = G_ICMP intpred(eq), %0(s64), %1
162     %7:_(s32) = G_ANYEXT %6(s1)
163     $v0 = COPY %7(s32)
164     RetRA implicit $v0
168 name:            ne_i64
169 alignment:       4
170 tracksRegLiveness: true
171 body:             |
172   bb.1.entry:
173     liveins: $a0, $a1, $a2, $a3
175     ; MIPS32-LABEL: name: ne_i64
176     ; MIPS32: liveins: $a0, $a1, $a2, $a3
177     ; MIPS32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0
178     ; MIPS32: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1
179     ; MIPS32: [[COPY2:%[0-9]+]]:_(s32) = COPY $a2
180     ; MIPS32: [[COPY3:%[0-9]+]]:_(s32) = COPY $a3
181     ; MIPS32: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[COPY]], [[COPY2]]
182     ; MIPS32: [[XOR1:%[0-9]+]]:_(s32) = G_XOR [[COPY1]], [[COPY3]]
183     ; MIPS32: [[OR:%[0-9]+]]:_(s32) = G_OR [[XOR]], [[XOR1]]
184     ; MIPS32: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
185     ; MIPS32: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ne), [[OR]](s32), [[C]]
186     ; MIPS32: [[COPY4:%[0-9]+]]:_(s32) = COPY [[ICMP]](s32)
187     ; MIPS32: $v0 = COPY [[COPY4]](s32)
188     ; MIPS32: RetRA implicit $v0
189     %2:_(s32) = COPY $a0
190     %3:_(s32) = COPY $a1
191     %0:_(s64) = G_MERGE_VALUES %2(s32), %3(s32)
192     %4:_(s32) = COPY $a2
193     %5:_(s32) = COPY $a3
194     %1:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)
195     %6:_(s1) = G_ICMP intpred(ne), %0(s64), %1
196     %7:_(s32) = G_ANYEXT %6(s1)
197     $v0 = COPY %7(s32)
198     RetRA implicit $v0
202 name:            sgt_i64
203 alignment:       4
204 tracksRegLiveness: true
205 body:             |
206   bb.1.entry:
207     liveins: $a0, $a1, $a2, $a3
209     ; MIPS32-LABEL: name: sgt_i64
210     ; MIPS32: liveins: $a0, $a1, $a2, $a3
211     ; MIPS32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0
212     ; MIPS32: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1
213     ; MIPS32: [[COPY2:%[0-9]+]]:_(s32) = COPY $a2
214     ; MIPS32: [[COPY3:%[0-9]+]]:_(s32) = COPY $a3
215     ; MIPS32: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(sgt), [[COPY1]](s32), [[COPY3]]
216     ; MIPS32: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY3]]
217     ; MIPS32: [[ICMP2:%[0-9]+]]:_(s32) = G_ICMP intpred(ugt), [[COPY]](s32), [[COPY2]]
218     ; MIPS32: [[COPY4:%[0-9]+]]:_(s32) = COPY [[ICMP2]](s32)
219     ; MIPS32: [[COPY5:%[0-9]+]]:_(s32) = COPY [[ICMP]](s32)
220     ; MIPS32: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
221     ; MIPS32: [[COPY6:%[0-9]+]]:_(s32) = COPY [[ICMP1]](s32)
222     ; MIPS32: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY6]], [[C]]
223     ; MIPS32: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[AND]](s32), [[COPY4]], [[COPY5]]
224     ; MIPS32: [[COPY7:%[0-9]+]]:_(s32) = COPY [[SELECT]](s32)
225     ; MIPS32: $v0 = COPY [[COPY7]](s32)
226     ; MIPS32: RetRA implicit $v0
227     %2:_(s32) = COPY $a0
228     %3:_(s32) = COPY $a1
229     %0:_(s64) = G_MERGE_VALUES %2(s32), %3(s32)
230     %4:_(s32) = COPY $a2
231     %5:_(s32) = COPY $a3
232     %1:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)
233     %6:_(s1) = G_ICMP intpred(sgt), %0(s64), %1
234     %7:_(s32) = G_ANYEXT %6(s1)
235     $v0 = COPY %7(s32)
236     RetRA implicit $v0
240 name:            sge_i64
241 alignment:       4
242 tracksRegLiveness: true
243 body:             |
244   bb.1.entry:
245     liveins: $a0, $a1, $a2, $a3
247     ; MIPS32-LABEL: name: sge_i64
248     ; MIPS32: liveins: $a0, $a1, $a2, $a3
249     ; MIPS32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0
250     ; MIPS32: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1
251     ; MIPS32: [[COPY2:%[0-9]+]]:_(s32) = COPY $a2
252     ; MIPS32: [[COPY3:%[0-9]+]]:_(s32) = COPY $a3
253     ; MIPS32: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(sge), [[COPY1]](s32), [[COPY3]]
254     ; MIPS32: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY3]]
255     ; MIPS32: [[ICMP2:%[0-9]+]]:_(s32) = G_ICMP intpred(uge), [[COPY]](s32), [[COPY2]]
256     ; MIPS32: [[COPY4:%[0-9]+]]:_(s32) = COPY [[ICMP2]](s32)
257     ; MIPS32: [[COPY5:%[0-9]+]]:_(s32) = COPY [[ICMP]](s32)
258     ; MIPS32: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
259     ; MIPS32: [[COPY6:%[0-9]+]]:_(s32) = COPY [[ICMP1]](s32)
260     ; MIPS32: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY6]], [[C]]
261     ; MIPS32: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[AND]](s32), [[COPY4]], [[COPY5]]
262     ; MIPS32: [[COPY7:%[0-9]+]]:_(s32) = COPY [[SELECT]](s32)
263     ; MIPS32: $v0 = COPY [[COPY7]](s32)
264     ; MIPS32: RetRA implicit $v0
265     %2:_(s32) = COPY $a0
266     %3:_(s32) = COPY $a1
267     %0:_(s64) = G_MERGE_VALUES %2(s32), %3(s32)
268     %4:_(s32) = COPY $a2
269     %5:_(s32) = COPY $a3
270     %1:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)
271     %6:_(s1) = G_ICMP intpred(sge), %0(s64), %1
272     %7:_(s32) = G_ANYEXT %6(s1)
273     $v0 = COPY %7(s32)
274     RetRA implicit $v0
278 name:            slt_i64
279 alignment:       4
280 tracksRegLiveness: true
281 body:             |
282   bb.1.entry:
283     liveins: $a0, $a1, $a2, $a3
285     ; MIPS32-LABEL: name: slt_i64
286     ; MIPS32: liveins: $a0, $a1, $a2, $a3
287     ; MIPS32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0
288     ; MIPS32: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1
289     ; MIPS32: [[COPY2:%[0-9]+]]:_(s32) = COPY $a2
290     ; MIPS32: [[COPY3:%[0-9]+]]:_(s32) = COPY $a3
291     ; MIPS32: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(slt), [[COPY1]](s32), [[COPY3]]
292     ; MIPS32: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY3]]
293     ; MIPS32: [[ICMP2:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[COPY]](s32), [[COPY2]]
294     ; MIPS32: [[COPY4:%[0-9]+]]:_(s32) = COPY [[ICMP2]](s32)
295     ; MIPS32: [[COPY5:%[0-9]+]]:_(s32) = COPY [[ICMP]](s32)
296     ; MIPS32: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
297     ; MIPS32: [[COPY6:%[0-9]+]]:_(s32) = COPY [[ICMP1]](s32)
298     ; MIPS32: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY6]], [[C]]
299     ; MIPS32: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[AND]](s32), [[COPY4]], [[COPY5]]
300     ; MIPS32: [[COPY7:%[0-9]+]]:_(s32) = COPY [[SELECT]](s32)
301     ; MIPS32: $v0 = COPY [[COPY7]](s32)
302     ; MIPS32: RetRA implicit $v0
303     %2:_(s32) = COPY $a0
304     %3:_(s32) = COPY $a1
305     %0:_(s64) = G_MERGE_VALUES %2(s32), %3(s32)
306     %4:_(s32) = COPY $a2
307     %5:_(s32) = COPY $a3
308     %1:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)
309     %6:_(s1) = G_ICMP intpred(slt), %0(s64), %1
310     %7:_(s32) = G_ANYEXT %6(s1)
311     $v0 = COPY %7(s32)
312     RetRA implicit $v0
316 name:            sle_i64
317 alignment:       4
318 tracksRegLiveness: true
319 body:             |
320   bb.1.entry:
321     liveins: $a0, $a1, $a2, $a3
323     ; MIPS32-LABEL: name: sle_i64
324     ; MIPS32: liveins: $a0, $a1, $a2, $a3
325     ; MIPS32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0
326     ; MIPS32: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1
327     ; MIPS32: [[COPY2:%[0-9]+]]:_(s32) = COPY $a2
328     ; MIPS32: [[COPY3:%[0-9]+]]:_(s32) = COPY $a3
329     ; MIPS32: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(sle), [[COPY1]](s32), [[COPY3]]
330     ; MIPS32: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY3]]
331     ; MIPS32: [[ICMP2:%[0-9]+]]:_(s32) = G_ICMP intpred(ule), [[COPY]](s32), [[COPY2]]
332     ; MIPS32: [[COPY4:%[0-9]+]]:_(s32) = COPY [[ICMP2]](s32)
333     ; MIPS32: [[COPY5:%[0-9]+]]:_(s32) = COPY [[ICMP]](s32)
334     ; MIPS32: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
335     ; MIPS32: [[COPY6:%[0-9]+]]:_(s32) = COPY [[ICMP1]](s32)
336     ; MIPS32: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY6]], [[C]]
337     ; MIPS32: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[AND]](s32), [[COPY4]], [[COPY5]]
338     ; MIPS32: [[COPY7:%[0-9]+]]:_(s32) = COPY [[SELECT]](s32)
339     ; MIPS32: $v0 = COPY [[COPY7]](s32)
340     ; MIPS32: RetRA implicit $v0
341     %2:_(s32) = COPY $a0
342     %3:_(s32) = COPY $a1
343     %0:_(s64) = G_MERGE_VALUES %2(s32), %3(s32)
344     %4:_(s32) = COPY $a2
345     %5:_(s32) = COPY $a3
346     %1:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)
347     %6:_(s1) = G_ICMP intpred(sle), %0(s64), %1
348     %7:_(s32) = G_ANYEXT %6(s1)
349     $v0 = COPY %7(s32)
350     RetRA implicit $v0
354 name:            ugt_i64
355 alignment:       4
356 tracksRegLiveness: true
357 body:             |
358   bb.1.entry:
359     liveins: $a0, $a1, $a2, $a3
361     ; MIPS32-LABEL: name: ugt_i64
362     ; MIPS32: liveins: $a0, $a1, $a2, $a3
363     ; MIPS32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0
364     ; MIPS32: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1
365     ; MIPS32: [[COPY2:%[0-9]+]]:_(s32) = COPY $a2
366     ; MIPS32: [[COPY3:%[0-9]+]]:_(s32) = COPY $a3
367     ; MIPS32: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ugt), [[COPY1]](s32), [[COPY3]]
368     ; MIPS32: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY3]]
369     ; MIPS32: [[ICMP2:%[0-9]+]]:_(s32) = G_ICMP intpred(ugt), [[COPY]](s32), [[COPY2]]
370     ; MIPS32: [[COPY4:%[0-9]+]]:_(s32) = COPY [[ICMP2]](s32)
371     ; MIPS32: [[COPY5:%[0-9]+]]:_(s32) = COPY [[ICMP]](s32)
372     ; MIPS32: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
373     ; MIPS32: [[COPY6:%[0-9]+]]:_(s32) = COPY [[ICMP1]](s32)
374     ; MIPS32: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY6]], [[C]]
375     ; MIPS32: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[AND]](s32), [[COPY4]], [[COPY5]]
376     ; MIPS32: [[COPY7:%[0-9]+]]:_(s32) = COPY [[SELECT]](s32)
377     ; MIPS32: $v0 = COPY [[COPY7]](s32)
378     ; MIPS32: RetRA implicit $v0
379     %2:_(s32) = COPY $a0
380     %3:_(s32) = COPY $a1
381     %0:_(s64) = G_MERGE_VALUES %2(s32), %3(s32)
382     %4:_(s32) = COPY $a2
383     %5:_(s32) = COPY $a3
384     %1:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)
385     %6:_(s1) = G_ICMP intpred(ugt), %0(s64), %1
386     %7:_(s32) = G_ANYEXT %6(s1)
387     $v0 = COPY %7(s32)
388     RetRA implicit $v0
392 name:            uge_i64
393 alignment:       4
394 tracksRegLiveness: true
395 body:             |
396   bb.1.entry:
397     liveins: $a0, $a1, $a2, $a3
399     ; MIPS32-LABEL: name: uge_i64
400     ; MIPS32: liveins: $a0, $a1, $a2, $a3
401     ; MIPS32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0
402     ; MIPS32: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1
403     ; MIPS32: [[COPY2:%[0-9]+]]:_(s32) = COPY $a2
404     ; MIPS32: [[COPY3:%[0-9]+]]:_(s32) = COPY $a3
405     ; MIPS32: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(uge), [[COPY1]](s32), [[COPY3]]
406     ; MIPS32: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY3]]
407     ; MIPS32: [[ICMP2:%[0-9]+]]:_(s32) = G_ICMP intpred(uge), [[COPY]](s32), [[COPY2]]
408     ; MIPS32: [[COPY4:%[0-9]+]]:_(s32) = COPY [[ICMP2]](s32)
409     ; MIPS32: [[COPY5:%[0-9]+]]:_(s32) = COPY [[ICMP]](s32)
410     ; MIPS32: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
411     ; MIPS32: [[COPY6:%[0-9]+]]:_(s32) = COPY [[ICMP1]](s32)
412     ; MIPS32: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY6]], [[C]]
413     ; MIPS32: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[AND]](s32), [[COPY4]], [[COPY5]]
414     ; MIPS32: [[COPY7:%[0-9]+]]:_(s32) = COPY [[SELECT]](s32)
415     ; MIPS32: $v0 = COPY [[COPY7]](s32)
416     ; MIPS32: RetRA implicit $v0
417     %2:_(s32) = COPY $a0
418     %3:_(s32) = COPY $a1
419     %0:_(s64) = G_MERGE_VALUES %2(s32), %3(s32)
420     %4:_(s32) = COPY $a2
421     %5:_(s32) = COPY $a3
422     %1:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)
423     %6:_(s1) = G_ICMP intpred(uge), %0(s64), %1
424     %7:_(s32) = G_ANYEXT %6(s1)
425     $v0 = COPY %7(s32)
426     RetRA implicit $v0
430 name:            ult_i64
431 alignment:       4
432 tracksRegLiveness: true
433 body:             |
434   bb.1.entry:
435     liveins: $a0, $a1, $a2, $a3
437     ; MIPS32-LABEL: name: ult_i64
438     ; MIPS32: liveins: $a0, $a1, $a2, $a3
439     ; MIPS32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0
440     ; MIPS32: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1
441     ; MIPS32: [[COPY2:%[0-9]+]]:_(s32) = COPY $a2
442     ; MIPS32: [[COPY3:%[0-9]+]]:_(s32) = COPY $a3
443     ; MIPS32: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[COPY1]](s32), [[COPY3]]
444     ; MIPS32: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY3]]
445     ; MIPS32: [[ICMP2:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[COPY]](s32), [[COPY2]]
446     ; MIPS32: [[COPY4:%[0-9]+]]:_(s32) = COPY [[ICMP2]](s32)
447     ; MIPS32: [[COPY5:%[0-9]+]]:_(s32) = COPY [[ICMP]](s32)
448     ; MIPS32: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
449     ; MIPS32: [[COPY6:%[0-9]+]]:_(s32) = COPY [[ICMP1]](s32)
450     ; MIPS32: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY6]], [[C]]
451     ; MIPS32: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[AND]](s32), [[COPY4]], [[COPY5]]
452     ; MIPS32: [[COPY7:%[0-9]+]]:_(s32) = COPY [[SELECT]](s32)
453     ; MIPS32: $v0 = COPY [[COPY7]](s32)
454     ; MIPS32: RetRA implicit $v0
455     %2:_(s32) = COPY $a0
456     %3:_(s32) = COPY $a1
457     %0:_(s64) = G_MERGE_VALUES %2(s32), %3(s32)
458     %4:_(s32) = COPY $a2
459     %5:_(s32) = COPY $a3
460     %1:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)
461     %6:_(s1) = G_ICMP intpred(ult), %0(s64), %1
462     %7:_(s32) = G_ANYEXT %6(s1)
463     $v0 = COPY %7(s32)
464     RetRA implicit $v0
468 name:            ule_i64
469 alignment:       4
470 tracksRegLiveness: true
471 body:             |
472   bb.1.entry:
473     liveins: $a0, $a1, $a2, $a3
475     ; MIPS32-LABEL: name: ule_i64
476     ; MIPS32: liveins: $a0, $a1, $a2, $a3
477     ; MIPS32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0
478     ; MIPS32: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1
479     ; MIPS32: [[COPY2:%[0-9]+]]:_(s32) = COPY $a2
480     ; MIPS32: [[COPY3:%[0-9]+]]:_(s32) = COPY $a3
481     ; MIPS32: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ule), [[COPY1]](s32), [[COPY3]]
482     ; MIPS32: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY3]]
483     ; MIPS32: [[ICMP2:%[0-9]+]]:_(s32) = G_ICMP intpred(ule), [[COPY]](s32), [[COPY2]]
484     ; MIPS32: [[COPY4:%[0-9]+]]:_(s32) = COPY [[ICMP2]](s32)
485     ; MIPS32: [[COPY5:%[0-9]+]]:_(s32) = COPY [[ICMP]](s32)
486     ; MIPS32: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
487     ; MIPS32: [[COPY6:%[0-9]+]]:_(s32) = COPY [[ICMP1]](s32)
488     ; MIPS32: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY6]], [[C]]
489     ; MIPS32: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[AND]](s32), [[COPY4]], [[COPY5]]
490     ; MIPS32: [[COPY7:%[0-9]+]]:_(s32) = COPY [[SELECT]](s32)
491     ; MIPS32: $v0 = COPY [[COPY7]](s32)
492     ; MIPS32: RetRA implicit $v0
493     %2:_(s32) = COPY $a0
494     %3:_(s32) = COPY $a1
495     %0:_(s64) = G_MERGE_VALUES %2(s32), %3(s32)
496     %4:_(s32) = COPY $a2
497     %5:_(s32) = COPY $a3
498     %1:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)
499     %6:_(s1) = G_ICMP intpred(ule), %0(s64), %1
500     %7:_(s32) = G_ANYEXT %6(s1)
501     $v0 = COPY %7(s32)
502     RetRA implicit $v0