[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / X86 / GlobalISel / x86_64-legalize-fcmp.mir
blob4eabd9a4c1ef1f9a9ad40eb56cf741ceb62abfdf
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=x86_64-linux-gnu -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s
4 --- |
6   define i1 @fcmp_float_oeq(float %x, float %y) {
7     %1 = fcmp oeq float %x, %y
8     ret i1 %1
9   }
11   define i1 @fcmp_float_ogt(float %x, float %y) {
12     %1 = fcmp ogt float %x, %y
13     ret i1 %1
14   }
16   define i1 @fcmp_float_oge(float %x, float %y) {
17     %1 = fcmp oge float %x, %y
18     ret i1 %1
19   }
21   define i1 @fcmp_float_olt(float %x, float %y) {
22     %1 = fcmp olt float %x, %y
23     ret i1 %1
24   }
26   define i1 @fcmp_float_ole(float %x, float %y) {
27     %1 = fcmp ole float %x, %y
28     ret i1 %1
29   }
31   define i1 @fcmp_float_one(float %x, float %y) {
32     %1 = fcmp one float %x, %y
33     ret i1 %1
34   }
36   define i1 @fcmp_float_ord(float %x, float %y) {
37     %1 = fcmp ord float %x, %y
38     ret i1 %1
39   }
41   define i1 @fcmp_float_uno(float %x, float %y) {
42     %1 = fcmp uno float %x, %y
43     ret i1 %1
44   }
46   define i1 @fcmp_float_ueq(float %x, float %y) {
47     %1 = fcmp ueq float %x, %y
48     ret i1 %1
49   }
51   define i1 @fcmp_float_ugt(float %x, float %y) {
52     %1 = fcmp ugt float %x, %y
53     ret i1 %1
54   }
56   define i1 @fcmp_float_uge(float %x, float %y) {
57     %1 = fcmp uge float %x, %y
58     ret i1 %1
59   }
61   define i1 @fcmp_float_ult(float %x, float %y) {
62     %1 = fcmp ult float %x, %y
63     ret i1 %1
64   }
66   define i1 @fcmp_float_ule(float %x, float %y) {
67     %1 = fcmp ule float %x, %y
68     ret i1 %1
69   }
71   define i1 @fcmp_float_une(float %x, float %y) {
72     %1 = fcmp une float %x, %y
73     ret i1 %1
74   }
76   define i1 @fcmp_double_oeq(double %x, double %y) {
77     %1 = fcmp oeq double %x, %y
78     ret i1 %1
79   }
81   define i1 @fcmp_double_ogt(double %x, double %y) {
82     %1 = fcmp ogt double %x, %y
83     ret i1 %1
84   }
86   define i1 @fcmp_double_oge(double %x, double %y) {
87     %1 = fcmp oge double %x, %y
88     ret i1 %1
89   }
91   define i1 @fcmp_double_olt(double %x, double %y) {
92     %1 = fcmp olt double %x, %y
93     ret i1 %1
94   }
96   define i1 @fcmp_double_ole(double %x, double %y) {
97     %1 = fcmp ole double %x, %y
98     ret i1 %1
99   }
101   define i1 @fcmp_double_one(double %x, double %y) {
102     %1 = fcmp one double %x, %y
103     ret i1 %1
104   }
106   define i1 @fcmp_double_ord(double %x, double %y) {
107     %1 = fcmp ord double %x, %y
108     ret i1 %1
109   }
111   define i1 @fcmp_double_uno(double %x, double %y) {
112     %1 = fcmp uno double %x, %y
113     ret i1 %1
114   }
116   define i1 @fcmp_double_ueq(double %x, double %y) {
117     %1 = fcmp ueq double %x, %y
118     ret i1 %1
119   }
121   define i1 @fcmp_double_ugt(double %x, double %y) {
122     %1 = fcmp ugt double %x, %y
123     ret i1 %1
124   }
126   define i1 @fcmp_double_uge(double %x, double %y) {
127     %1 = fcmp uge double %x, %y
128     ret i1 %1
129   }
131   define i1 @fcmp_double_ult(double %x, double %y) {
132     %1 = fcmp ult double %x, %y
133     ret i1 %1
134   }
136   define i1 @fcmp_double_ule(double %x, double %y) {
137     %1 = fcmp ule double %x, %y
138     ret i1 %1
139   }
141   define i1 @fcmp_double_une(double %x, double %y) {
142     %1 = fcmp une double %x, %y
143     ret i1 %1
144   }
148 name:            fcmp_float_oeq
149 alignment:       16
150 tracksRegLiveness: true
151 registers:
152   - { id: 0, class: _ }
153   - { id: 1, class: _ }
154   - { id: 2, class: _ }
155   - { id: 3, class: _ }
156   - { id: 4, class: _ }
157   - { id: 5, class: _ }
158 body:             |
159   bb.1 (%ir-block.0):
160     liveins: $xmm0, $xmm1
162     ; CHECK-LABEL: name: fcmp_float_oeq
163     ; CHECK: liveins: $xmm0, $xmm1
164     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
165     ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
166     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
167     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
168     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(oeq), [[TRUNC]](s32), [[TRUNC1]]
169     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
170     ; CHECK: $al = COPY [[COPY2]](s8)
171     ; CHECK: RET 0, implicit $al
172     %2:_(s128) = COPY $xmm0
173     %0:_(s32) = G_TRUNC %2(s128)
174     %3:_(s128) = COPY $xmm1
175     %1:_(s32) = G_TRUNC %3(s128)
176     %4:_(s1) = G_FCMP floatpred(oeq), %0(s32), %1
177     %5:_(s8) = G_ANYEXT %4(s1)
178     $al = COPY %5(s8)
179     RET 0, implicit $al
183 name:            fcmp_float_ogt
184 alignment:       16
185 tracksRegLiveness: true
186 registers:
187   - { id: 0, class: _ }
188   - { id: 1, class: _ }
189   - { id: 2, class: _ }
190   - { id: 3, class: _ }
191   - { id: 4, class: _ }
192   - { id: 5, class: _ }
193 body:             |
194   bb.1 (%ir-block.0):
195     liveins: $xmm0, $xmm1
197     ; CHECK-LABEL: name: fcmp_float_ogt
198     ; CHECK: liveins: $xmm0, $xmm1
199     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
200     ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
201     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
202     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
203     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ogt), [[TRUNC]](s32), [[TRUNC1]]
204     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
205     ; CHECK: $al = COPY [[COPY2]](s8)
206     ; CHECK: RET 0, implicit $al
207     %2:_(s128) = COPY $xmm0
208     %0:_(s32) = G_TRUNC %2(s128)
209     %3:_(s128) = COPY $xmm1
210     %1:_(s32) = G_TRUNC %3(s128)
211     %4:_(s1) = G_FCMP floatpred(ogt), %0(s32), %1
212     %5:_(s8) = G_ANYEXT %4(s1)
213     $al = COPY %5(s8)
214     RET 0, implicit $al
218 name:            fcmp_float_oge
219 alignment:       16
220 tracksRegLiveness: true
221 registers:
222   - { id: 0, class: _ }
223   - { id: 1, class: _ }
224   - { id: 2, class: _ }
225   - { id: 3, class: _ }
226   - { id: 4, class: _ }
227   - { id: 5, class: _ }
228 body:             |
229   bb.1 (%ir-block.0):
230     liveins: $xmm0, $xmm1
232     ; CHECK-LABEL: name: fcmp_float_oge
233     ; CHECK: liveins: $xmm0, $xmm1
234     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
235     ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
236     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
237     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
238     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(oge), [[TRUNC]](s32), [[TRUNC1]]
239     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
240     ; CHECK: $al = COPY [[COPY2]](s8)
241     ; CHECK: RET 0, implicit $al
242     %2:_(s128) = COPY $xmm0
243     %0:_(s32) = G_TRUNC %2(s128)
244     %3:_(s128) = COPY $xmm1
245     %1:_(s32) = G_TRUNC %3(s128)
246     %4:_(s1) = G_FCMP floatpred(oge), %0(s32), %1
247     %5:_(s8) = G_ANYEXT %4(s1)
248     $al = COPY %5(s8)
249     RET 0, implicit $al
253 name:            fcmp_float_olt
254 alignment:       16
255 tracksRegLiveness: true
256 registers:
257   - { id: 0, class: _ }
258   - { id: 1, class: _ }
259   - { id: 2, class: _ }
260   - { id: 3, class: _ }
261   - { id: 4, class: _ }
262   - { id: 5, class: _ }
263 body:             |
264   bb.1 (%ir-block.0):
265     liveins: $xmm0, $xmm1
267     ; CHECK-LABEL: name: fcmp_float_olt
268     ; CHECK: liveins: $xmm0, $xmm1
269     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
270     ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
271     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
272     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
273     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(olt), [[TRUNC]](s32), [[TRUNC1]]
274     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
275     ; CHECK: $al = COPY [[COPY2]](s8)
276     ; CHECK: RET 0, implicit $al
277     %2:_(s128) = COPY $xmm0
278     %0:_(s32) = G_TRUNC %2(s128)
279     %3:_(s128) = COPY $xmm1
280     %1:_(s32) = G_TRUNC %3(s128)
281     %4:_(s1) = G_FCMP floatpred(olt), %0(s32), %1
282     %5:_(s8) = G_ANYEXT %4(s1)
283     $al = COPY %5(s8)
284     RET 0, implicit $al
288 name:            fcmp_float_ole
289 alignment:       16
290 tracksRegLiveness: true
291 registers:
292   - { id: 0, class: _ }
293   - { id: 1, class: _ }
294   - { id: 2, class: _ }
295   - { id: 3, class: _ }
296   - { id: 4, class: _ }
297   - { id: 5, class: _ }
298 body:             |
299   bb.1 (%ir-block.0):
300     liveins: $xmm0, $xmm1
302     ; CHECK-LABEL: name: fcmp_float_ole
303     ; CHECK: liveins: $xmm0, $xmm1
304     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
305     ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
306     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
307     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
308     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ole), [[TRUNC]](s32), [[TRUNC1]]
309     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
310     ; CHECK: $al = COPY [[COPY2]](s8)
311     ; CHECK: RET 0, implicit $al
312     %2:_(s128) = COPY $xmm0
313     %0:_(s32) = G_TRUNC %2(s128)
314     %3:_(s128) = COPY $xmm1
315     %1:_(s32) = G_TRUNC %3(s128)
316     %4:_(s1) = G_FCMP floatpred(ole), %0(s32), %1
317     %5:_(s8) = G_ANYEXT %4(s1)
318     $al = COPY %5(s8)
319     RET 0, implicit $al
323 name:            fcmp_float_one
324 alignment:       16
325 tracksRegLiveness: true
326 registers:
327   - { id: 0, class: _ }
328   - { id: 1, class: _ }
329   - { id: 2, class: _ }
330   - { id: 3, class: _ }
331   - { id: 4, class: _ }
332   - { id: 5, class: _ }
333 body:             |
334   bb.1 (%ir-block.0):
335     liveins: $xmm0, $xmm1
337     ; CHECK-LABEL: name: fcmp_float_one
338     ; CHECK: liveins: $xmm0, $xmm1
339     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
340     ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
341     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
342     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
343     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(one), [[TRUNC]](s32), [[TRUNC1]]
344     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
345     ; CHECK: $al = COPY [[COPY2]](s8)
346     ; CHECK: RET 0, implicit $al
347     %2:_(s128) = COPY $xmm0
348     %0:_(s32) = G_TRUNC %2(s128)
349     %3:_(s128) = COPY $xmm1
350     %1:_(s32) = G_TRUNC %3(s128)
351     %4:_(s1) = G_FCMP floatpred(one), %0(s32), %1
352     %5:_(s8) = G_ANYEXT %4(s1)
353     $al = COPY %5(s8)
354     RET 0, implicit $al
358 name:            fcmp_float_ord
359 alignment:       16
360 tracksRegLiveness: true
361 registers:
362   - { id: 0, class: _ }
363   - { id: 1, class: _ }
364   - { id: 2, class: _ }
365   - { id: 3, class: _ }
366   - { id: 4, class: _ }
367   - { id: 5, class: _ }
368 body:             |
369   bb.1 (%ir-block.0):
370     liveins: $xmm0, $xmm1
372     ; CHECK-LABEL: name: fcmp_float_ord
373     ; CHECK: liveins: $xmm0, $xmm1
374     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
375     ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
376     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
377     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
378     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ord), [[TRUNC]](s32), [[TRUNC1]]
379     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
380     ; CHECK: $al = COPY [[COPY2]](s8)
381     ; CHECK: RET 0, implicit $al
382     %2:_(s128) = COPY $xmm0
383     %0:_(s32) = G_TRUNC %2(s128)
384     %3:_(s128) = COPY $xmm1
385     %1:_(s32) = G_TRUNC %3(s128)
386     %4:_(s1) = G_FCMP floatpred(ord), %0(s32), %1
387     %5:_(s8) = G_ANYEXT %4(s1)
388     $al = COPY %5(s8)
389     RET 0, implicit $al
393 name:            fcmp_float_uno
394 alignment:       16
395 tracksRegLiveness: true
396 registers:
397   - { id: 0, class: _ }
398   - { id: 1, class: _ }
399   - { id: 2, class: _ }
400   - { id: 3, class: _ }
401   - { id: 4, class: _ }
402   - { id: 5, class: _ }
403 body:             |
404   bb.1 (%ir-block.0):
405     liveins: $xmm0, $xmm1
407     ; CHECK-LABEL: name: fcmp_float_uno
408     ; CHECK: liveins: $xmm0, $xmm1
409     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
410     ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
411     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
412     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
413     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(uno), [[TRUNC]](s32), [[TRUNC1]]
414     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
415     ; CHECK: $al = COPY [[COPY2]](s8)
416     ; CHECK: RET 0, implicit $al
417     %2:_(s128) = COPY $xmm0
418     %0:_(s32) = G_TRUNC %2(s128)
419     %3:_(s128) = COPY $xmm1
420     %1:_(s32) = G_TRUNC %3(s128)
421     %4:_(s1) = G_FCMP floatpred(uno), %0(s32), %1
422     %5:_(s8) = G_ANYEXT %4(s1)
423     $al = COPY %5(s8)
424     RET 0, implicit $al
428 name:            fcmp_float_ueq
429 alignment:       16
430 tracksRegLiveness: true
431 registers:
432   - { id: 0, class: _ }
433   - { id: 1, class: _ }
434   - { id: 2, class: _ }
435   - { id: 3, class: _ }
436   - { id: 4, class: _ }
437   - { id: 5, class: _ }
438 body:             |
439   bb.1 (%ir-block.0):
440     liveins: $xmm0, $xmm1
442     ; CHECK-LABEL: name: fcmp_float_ueq
443     ; CHECK: liveins: $xmm0, $xmm1
444     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
445     ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
446     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
447     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
448     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ueq), [[TRUNC]](s32), [[TRUNC1]]
449     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
450     ; CHECK: $al = COPY [[COPY2]](s8)
451     ; CHECK: RET 0, implicit $al
452     %2:_(s128) = COPY $xmm0
453     %0:_(s32) = G_TRUNC %2(s128)
454     %3:_(s128) = COPY $xmm1
455     %1:_(s32) = G_TRUNC %3(s128)
456     %4:_(s1) = G_FCMP floatpred(ueq), %0(s32), %1
457     %5:_(s8) = G_ANYEXT %4(s1)
458     $al = COPY %5(s8)
459     RET 0, implicit $al
463 name:            fcmp_float_ugt
464 alignment:       16
465 tracksRegLiveness: true
466 registers:
467   - { id: 0, class: _ }
468   - { id: 1, class: _ }
469   - { id: 2, class: _ }
470   - { id: 3, class: _ }
471   - { id: 4, class: _ }
472   - { id: 5, class: _ }
473 body:             |
474   bb.1 (%ir-block.0):
475     liveins: $xmm0, $xmm1
477     ; CHECK-LABEL: name: fcmp_float_ugt
478     ; CHECK: liveins: $xmm0, $xmm1
479     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
480     ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
481     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
482     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
483     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ugt), [[TRUNC]](s32), [[TRUNC1]]
484     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
485     ; CHECK: $al = COPY [[COPY2]](s8)
486     ; CHECK: RET 0, implicit $al
487     %2:_(s128) = COPY $xmm0
488     %0:_(s32) = G_TRUNC %2(s128)
489     %3:_(s128) = COPY $xmm1
490     %1:_(s32) = G_TRUNC %3(s128)
491     %4:_(s1) = G_FCMP floatpred(ugt), %0(s32), %1
492     %5:_(s8) = G_ANYEXT %4(s1)
493     $al = COPY %5(s8)
494     RET 0, implicit $al
498 name:            fcmp_float_uge
499 alignment:       16
500 tracksRegLiveness: true
501 registers:
502   - { id: 0, class: _ }
503   - { id: 1, class: _ }
504   - { id: 2, class: _ }
505   - { id: 3, class: _ }
506   - { id: 4, class: _ }
507   - { id: 5, class: _ }
508 body:             |
509   bb.1 (%ir-block.0):
510     liveins: $xmm0, $xmm1
512     ; CHECK-LABEL: name: fcmp_float_uge
513     ; CHECK: liveins: $xmm0, $xmm1
514     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
515     ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
516     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
517     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
518     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(uge), [[TRUNC]](s32), [[TRUNC1]]
519     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
520     ; CHECK: $al = COPY [[COPY2]](s8)
521     ; CHECK: RET 0, implicit $al
522     %2:_(s128) = COPY $xmm0
523     %0:_(s32) = G_TRUNC %2(s128)
524     %3:_(s128) = COPY $xmm1
525     %1:_(s32) = G_TRUNC %3(s128)
526     %4:_(s1) = G_FCMP floatpred(uge), %0(s32), %1
527     %5:_(s8) = G_ANYEXT %4(s1)
528     $al = COPY %5(s8)
529     RET 0, implicit $al
533 name:            fcmp_float_ult
534 alignment:       16
535 tracksRegLiveness: true
536 registers:
537   - { id: 0, class: _ }
538   - { id: 1, class: _ }
539   - { id: 2, class: _ }
540   - { id: 3, class: _ }
541   - { id: 4, class: _ }
542   - { id: 5, class: _ }
543 body:             |
544   bb.1 (%ir-block.0):
545     liveins: $xmm0, $xmm1
547     ; CHECK-LABEL: name: fcmp_float_ult
548     ; CHECK: liveins: $xmm0, $xmm1
549     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
550     ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
551     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
552     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
553     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ult), [[TRUNC]](s32), [[TRUNC1]]
554     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
555     ; CHECK: $al = COPY [[COPY2]](s8)
556     ; CHECK: RET 0, implicit $al
557     %2:_(s128) = COPY $xmm0
558     %0:_(s32) = G_TRUNC %2(s128)
559     %3:_(s128) = COPY $xmm1
560     %1:_(s32) = G_TRUNC %3(s128)
561     %4:_(s1) = G_FCMP floatpred(ult), %0(s32), %1
562     %5:_(s8) = G_ANYEXT %4(s1)
563     $al = COPY %5(s8)
564     RET 0, implicit $al
568 name:            fcmp_float_ule
569 alignment:       16
570 tracksRegLiveness: true
571 registers:
572   - { id: 0, class: _ }
573   - { id: 1, class: _ }
574   - { id: 2, class: _ }
575   - { id: 3, class: _ }
576   - { id: 4, class: _ }
577   - { id: 5, class: _ }
578 body:             |
579   bb.1 (%ir-block.0):
580     liveins: $xmm0, $xmm1
582     ; CHECK-LABEL: name: fcmp_float_ule
583     ; CHECK: liveins: $xmm0, $xmm1
584     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
585     ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
586     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
587     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
588     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ule), [[TRUNC]](s32), [[TRUNC1]]
589     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
590     ; CHECK: $al = COPY [[COPY2]](s8)
591     ; CHECK: RET 0, implicit $al
592     %2:_(s128) = COPY $xmm0
593     %0:_(s32) = G_TRUNC %2(s128)
594     %3:_(s128) = COPY $xmm1
595     %1:_(s32) = G_TRUNC %3(s128)
596     %4:_(s1) = G_FCMP floatpred(ule), %0(s32), %1
597     %5:_(s8) = G_ANYEXT %4(s1)
598     $al = COPY %5(s8)
599     RET 0, implicit $al
603 name:            fcmp_float_une
604 alignment:       16
605 tracksRegLiveness: true
606 registers:
607   - { id: 0, class: _ }
608   - { id: 1, class: _ }
609   - { id: 2, class: _ }
610   - { id: 3, class: _ }
611   - { id: 4, class: _ }
612   - { id: 5, class: _ }
613 body:             |
614   bb.1 (%ir-block.0):
615     liveins: $xmm0, $xmm1
617     ; CHECK-LABEL: name: fcmp_float_une
618     ; CHECK: liveins: $xmm0, $xmm1
619     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
620     ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
621     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
622     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
623     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(une), [[TRUNC]](s32), [[TRUNC1]]
624     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
625     ; CHECK: $al = COPY [[COPY2]](s8)
626     ; CHECK: RET 0, implicit $al
627     %2:_(s128) = COPY $xmm0
628     %0:_(s32) = G_TRUNC %2(s128)
629     %3:_(s128) = COPY $xmm1
630     %1:_(s32) = G_TRUNC %3(s128)
631     %4:_(s1) = G_FCMP floatpred(une), %0(s32), %1
632     %5:_(s8) = G_ANYEXT %4(s1)
633     $al = COPY %5(s8)
634     RET 0, implicit $al
638 name:            fcmp_double_oeq
639 alignment:       16
640 tracksRegLiveness: true
641 registers:
642   - { id: 0, class: _ }
643   - { id: 1, class: _ }
644   - { id: 2, class: _ }
645   - { id: 3, class: _ }
646   - { id: 4, class: _ }
647   - { id: 5, class: _ }
648 body:             |
649   bb.1 (%ir-block.0):
650     liveins: $xmm0, $xmm1
652     ; CHECK-LABEL: name: fcmp_double_oeq
653     ; CHECK: liveins: $xmm0, $xmm1
654     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
655     ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
656     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
657     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
658     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(oeq), [[TRUNC]](s64), [[TRUNC1]]
659     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
660     ; CHECK: $al = COPY [[COPY2]](s8)
661     ; CHECK: RET 0, implicit $al
662     %2:_(s128) = COPY $xmm0
663     %0:_(s64) = G_TRUNC %2(s128)
664     %3:_(s128) = COPY $xmm1
665     %1:_(s64) = G_TRUNC %3(s128)
666     %4:_(s1) = G_FCMP floatpred(oeq), %0(s64), %1
667     %5:_(s8) = G_ANYEXT %4(s1)
668     $al = COPY %5(s8)
669     RET 0, implicit $al
673 name:            fcmp_double_ogt
674 alignment:       16
675 tracksRegLiveness: true
676 registers:
677   - { id: 0, class: _ }
678   - { id: 1, class: _ }
679   - { id: 2, class: _ }
680   - { id: 3, class: _ }
681   - { id: 4, class: _ }
682   - { id: 5, class: _ }
683 body:             |
684   bb.1 (%ir-block.0):
685     liveins: $xmm0, $xmm1
687     ; CHECK-LABEL: name: fcmp_double_ogt
688     ; CHECK: liveins: $xmm0, $xmm1
689     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
690     ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
691     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
692     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
693     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ogt), [[TRUNC]](s64), [[TRUNC1]]
694     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
695     ; CHECK: $al = COPY [[COPY2]](s8)
696     ; CHECK: RET 0, implicit $al
697     %2:_(s128) = COPY $xmm0
698     %0:_(s64) = G_TRUNC %2(s128)
699     %3:_(s128) = COPY $xmm1
700     %1:_(s64) = G_TRUNC %3(s128)
701     %4:_(s1) = G_FCMP floatpred(ogt), %0(s64), %1
702     %5:_(s8) = G_ANYEXT %4(s1)
703     $al = COPY %5(s8)
704     RET 0, implicit $al
708 name:            fcmp_double_oge
709 alignment:       16
710 tracksRegLiveness: true
711 registers:
712   - { id: 0, class: _ }
713   - { id: 1, class: _ }
714   - { id: 2, class: _ }
715   - { id: 3, class: _ }
716   - { id: 4, class: _ }
717   - { id: 5, class: _ }
718 body:             |
719   bb.1 (%ir-block.0):
720     liveins: $xmm0, $xmm1
722     ; CHECK-LABEL: name: fcmp_double_oge
723     ; CHECK: liveins: $xmm0, $xmm1
724     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
725     ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
726     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
727     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
728     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(oge), [[TRUNC]](s64), [[TRUNC1]]
729     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
730     ; CHECK: $al = COPY [[COPY2]](s8)
731     ; CHECK: RET 0, implicit $al
732     %2:_(s128) = COPY $xmm0
733     %0:_(s64) = G_TRUNC %2(s128)
734     %3:_(s128) = COPY $xmm1
735     %1:_(s64) = G_TRUNC %3(s128)
736     %4:_(s1) = G_FCMP floatpred(oge), %0(s64), %1
737     %5:_(s8) = G_ANYEXT %4(s1)
738     $al = COPY %5(s8)
739     RET 0, implicit $al
743 name:            fcmp_double_olt
744 alignment:       16
745 tracksRegLiveness: true
746 registers:
747   - { id: 0, class: _ }
748   - { id: 1, class: _ }
749   - { id: 2, class: _ }
750   - { id: 3, class: _ }
751   - { id: 4, class: _ }
752   - { id: 5, class: _ }
753 body:             |
754   bb.1 (%ir-block.0):
755     liveins: $xmm0, $xmm1
757     ; CHECK-LABEL: name: fcmp_double_olt
758     ; CHECK: liveins: $xmm0, $xmm1
759     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
760     ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
761     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
762     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
763     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(olt), [[TRUNC]](s64), [[TRUNC1]]
764     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
765     ; CHECK: $al = COPY [[COPY2]](s8)
766     ; CHECK: RET 0, implicit $al
767     %2:_(s128) = COPY $xmm0
768     %0:_(s64) = G_TRUNC %2(s128)
769     %3:_(s128) = COPY $xmm1
770     %1:_(s64) = G_TRUNC %3(s128)
771     %4:_(s1) = G_FCMP floatpred(olt), %0(s64), %1
772     %5:_(s8) = G_ANYEXT %4(s1)
773     $al = COPY %5(s8)
774     RET 0, implicit $al
778 name:            fcmp_double_ole
779 alignment:       16
780 tracksRegLiveness: true
781 registers:
782   - { id: 0, class: _ }
783   - { id: 1, class: _ }
784   - { id: 2, class: _ }
785   - { id: 3, class: _ }
786   - { id: 4, class: _ }
787   - { id: 5, class: _ }
788 body:             |
789   bb.1 (%ir-block.0):
790     liveins: $xmm0, $xmm1
792     ; CHECK-LABEL: name: fcmp_double_ole
793     ; CHECK: liveins: $xmm0, $xmm1
794     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
795     ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
796     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
797     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
798     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ole), [[TRUNC]](s64), [[TRUNC1]]
799     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
800     ; CHECK: $al = COPY [[COPY2]](s8)
801     ; CHECK: RET 0, implicit $al
802     %2:_(s128) = COPY $xmm0
803     %0:_(s64) = G_TRUNC %2(s128)
804     %3:_(s128) = COPY $xmm1
805     %1:_(s64) = G_TRUNC %3(s128)
806     %4:_(s1) = G_FCMP floatpred(ole), %0(s64), %1
807     %5:_(s8) = G_ANYEXT %4(s1)
808     $al = COPY %5(s8)
809     RET 0, implicit $al
813 name:            fcmp_double_one
814 alignment:       16
815 tracksRegLiveness: true
816 registers:
817   - { id: 0, class: _ }
818   - { id: 1, class: _ }
819   - { id: 2, class: _ }
820   - { id: 3, class: _ }
821   - { id: 4, class: _ }
822   - { id: 5, class: _ }
823 body:             |
824   bb.1 (%ir-block.0):
825     liveins: $xmm0, $xmm1
827     ; CHECK-LABEL: name: fcmp_double_one
828     ; CHECK: liveins: $xmm0, $xmm1
829     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
830     ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
831     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
832     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
833     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(one), [[TRUNC]](s64), [[TRUNC1]]
834     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
835     ; CHECK: $al = COPY [[COPY2]](s8)
836     ; CHECK: RET 0, implicit $al
837     %2:_(s128) = COPY $xmm0
838     %0:_(s64) = G_TRUNC %2(s128)
839     %3:_(s128) = COPY $xmm1
840     %1:_(s64) = G_TRUNC %3(s128)
841     %4:_(s1) = G_FCMP floatpred(one), %0(s64), %1
842     %5:_(s8) = G_ANYEXT %4(s1)
843     $al = COPY %5(s8)
844     RET 0, implicit $al
848 name:            fcmp_double_ord
849 alignment:       16
850 tracksRegLiveness: true
851 registers:
852   - { id: 0, class: _ }
853   - { id: 1, class: _ }
854   - { id: 2, class: _ }
855   - { id: 3, class: _ }
856   - { id: 4, class: _ }
857   - { id: 5, class: _ }
858 body:             |
859   bb.1 (%ir-block.0):
860     liveins: $xmm0, $xmm1
862     ; CHECK-LABEL: name: fcmp_double_ord
863     ; CHECK: liveins: $xmm0, $xmm1
864     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
865     ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
866     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
867     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
868     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ord), [[TRUNC]](s64), [[TRUNC1]]
869     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
870     ; CHECK: $al = COPY [[COPY2]](s8)
871     ; CHECK: RET 0, implicit $al
872     %2:_(s128) = COPY $xmm0
873     %0:_(s64) = G_TRUNC %2(s128)
874     %3:_(s128) = COPY $xmm1
875     %1:_(s64) = G_TRUNC %3(s128)
876     %4:_(s1) = G_FCMP floatpred(ord), %0(s64), %1
877     %5:_(s8) = G_ANYEXT %4(s1)
878     $al = COPY %5(s8)
879     RET 0, implicit $al
883 name:            fcmp_double_uno
884 alignment:       16
885 tracksRegLiveness: true
886 registers:
887   - { id: 0, class: _ }
888   - { id: 1, class: _ }
889   - { id: 2, class: _ }
890   - { id: 3, class: _ }
891   - { id: 4, class: _ }
892   - { id: 5, class: _ }
893 body:             |
894   bb.1 (%ir-block.0):
895     liveins: $xmm0, $xmm1
897     ; CHECK-LABEL: name: fcmp_double_uno
898     ; CHECK: liveins: $xmm0, $xmm1
899     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
900     ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
901     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
902     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
903     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(uno), [[TRUNC]](s64), [[TRUNC1]]
904     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
905     ; CHECK: $al = COPY [[COPY2]](s8)
906     ; CHECK: RET 0, implicit $al
907     %2:_(s128) = COPY $xmm0
908     %0:_(s64) = G_TRUNC %2(s128)
909     %3:_(s128) = COPY $xmm1
910     %1:_(s64) = G_TRUNC %3(s128)
911     %4:_(s1) = G_FCMP floatpred(uno), %0(s64), %1
912     %5:_(s8) = G_ANYEXT %4(s1)
913     $al = COPY %5(s8)
914     RET 0, implicit $al
918 name:            fcmp_double_ueq
919 alignment:       16
920 tracksRegLiveness: true
921 registers:
922   - { id: 0, class: _ }
923   - { id: 1, class: _ }
924   - { id: 2, class: _ }
925   - { id: 3, class: _ }
926   - { id: 4, class: _ }
927   - { id: 5, class: _ }
928 body:             |
929   bb.1 (%ir-block.0):
930     liveins: $xmm0, $xmm1
932     ; CHECK-LABEL: name: fcmp_double_ueq
933     ; CHECK: liveins: $xmm0, $xmm1
934     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
935     ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
936     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
937     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
938     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ueq), [[TRUNC]](s64), [[TRUNC1]]
939     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
940     ; CHECK: $al = COPY [[COPY2]](s8)
941     ; CHECK: RET 0, implicit $al
942     %2:_(s128) = COPY $xmm0
943     %0:_(s64) = G_TRUNC %2(s128)
944     %3:_(s128) = COPY $xmm1
945     %1:_(s64) = G_TRUNC %3(s128)
946     %4:_(s1) = G_FCMP floatpred(ueq), %0(s64), %1
947     %5:_(s8) = G_ANYEXT %4(s1)
948     $al = COPY %5(s8)
949     RET 0, implicit $al
953 name:            fcmp_double_ugt
954 alignment:       16
955 tracksRegLiveness: true
956 registers:
957   - { id: 0, class: _ }
958   - { id: 1, class: _ }
959   - { id: 2, class: _ }
960   - { id: 3, class: _ }
961   - { id: 4, class: _ }
962   - { id: 5, class: _ }
963 body:             |
964   bb.1 (%ir-block.0):
965     liveins: $xmm0, $xmm1
967     ; CHECK-LABEL: name: fcmp_double_ugt
968     ; CHECK: liveins: $xmm0, $xmm1
969     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
970     ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
971     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
972     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
973     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ugt), [[TRUNC]](s64), [[TRUNC1]]
974     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
975     ; CHECK: $al = COPY [[COPY2]](s8)
976     ; CHECK: RET 0, implicit $al
977     %2:_(s128) = COPY $xmm0
978     %0:_(s64) = G_TRUNC %2(s128)
979     %3:_(s128) = COPY $xmm1
980     %1:_(s64) = G_TRUNC %3(s128)
981     %4:_(s1) = G_FCMP floatpred(ugt), %0(s64), %1
982     %5:_(s8) = G_ANYEXT %4(s1)
983     $al = COPY %5(s8)
984     RET 0, implicit $al
988 name:            fcmp_double_uge
989 alignment:       16
990 tracksRegLiveness: true
991 registers:
992   - { id: 0, class: _ }
993   - { id: 1, class: _ }
994   - { id: 2, class: _ }
995   - { id: 3, class: _ }
996   - { id: 4, class: _ }
997   - { id: 5, class: _ }
998 body:             |
999   bb.1 (%ir-block.0):
1000     liveins: $xmm0, $xmm1
1002     ; CHECK-LABEL: name: fcmp_double_uge
1003     ; CHECK: liveins: $xmm0, $xmm1
1004     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
1005     ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
1006     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
1007     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
1008     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(uge), [[TRUNC]](s64), [[TRUNC1]]
1009     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
1010     ; CHECK: $al = COPY [[COPY2]](s8)
1011     ; CHECK: RET 0, implicit $al
1012     %2:_(s128) = COPY $xmm0
1013     %0:_(s64) = G_TRUNC %2(s128)
1014     %3:_(s128) = COPY $xmm1
1015     %1:_(s64) = G_TRUNC %3(s128)
1016     %4:_(s1) = G_FCMP floatpred(uge), %0(s64), %1
1017     %5:_(s8) = G_ANYEXT %4(s1)
1018     $al = COPY %5(s8)
1019     RET 0, implicit $al
1023 name:            fcmp_double_ult
1024 alignment:       16
1025 tracksRegLiveness: true
1026 registers:
1027   - { id: 0, class: _ }
1028   - { id: 1, class: _ }
1029   - { id: 2, class: _ }
1030   - { id: 3, class: _ }
1031   - { id: 4, class: _ }
1032   - { id: 5, class: _ }
1033 body:             |
1034   bb.1 (%ir-block.0):
1035     liveins: $xmm0, $xmm1
1037     ; CHECK-LABEL: name: fcmp_double_ult
1038     ; CHECK: liveins: $xmm0, $xmm1
1039     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
1040     ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
1041     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
1042     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
1043     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ult), [[TRUNC]](s64), [[TRUNC1]]
1044     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
1045     ; CHECK: $al = COPY [[COPY2]](s8)
1046     ; CHECK: RET 0, implicit $al
1047     %2:_(s128) = COPY $xmm0
1048     %0:_(s64) = G_TRUNC %2(s128)
1049     %3:_(s128) = COPY $xmm1
1050     %1:_(s64) = G_TRUNC %3(s128)
1051     %4:_(s1) = G_FCMP floatpred(ult), %0(s64), %1
1052     %5:_(s8) = G_ANYEXT %4(s1)
1053     $al = COPY %5(s8)
1054     RET 0, implicit $al
1058 name:            fcmp_double_ule
1059 alignment:       16
1060 tracksRegLiveness: true
1061 registers:
1062   - { id: 0, class: _ }
1063   - { id: 1, class: _ }
1064   - { id: 2, class: _ }
1065   - { id: 3, class: _ }
1066   - { id: 4, class: _ }
1067   - { id: 5, class: _ }
1068 body:             |
1069   bb.1 (%ir-block.0):
1070     liveins: $xmm0, $xmm1
1072     ; CHECK-LABEL: name: fcmp_double_ule
1073     ; CHECK: liveins: $xmm0, $xmm1
1074     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
1075     ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
1076     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
1077     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
1078     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ule), [[TRUNC]](s64), [[TRUNC1]]
1079     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
1080     ; CHECK: $al = COPY [[COPY2]](s8)
1081     ; CHECK: RET 0, implicit $al
1082     %2:_(s128) = COPY $xmm0
1083     %0:_(s64) = G_TRUNC %2(s128)
1084     %3:_(s128) = COPY $xmm1
1085     %1:_(s64) = G_TRUNC %3(s128)
1086     %4:_(s1) = G_FCMP floatpred(ule), %0(s64), %1
1087     %5:_(s8) = G_ANYEXT %4(s1)
1088     $al = COPY %5(s8)
1089     RET 0, implicit $al
1093 name:            fcmp_double_une
1094 alignment:       16
1095 tracksRegLiveness: true
1096 registers:
1097   - { id: 0, class: _ }
1098   - { id: 1, class: _ }
1099   - { id: 2, class: _ }
1100   - { id: 3, class: _ }
1101   - { id: 4, class: _ }
1102   - { id: 5, class: _ }
1103 body:             |
1104   bb.1 (%ir-block.0):
1105     liveins: $xmm0, $xmm1
1107     ; CHECK-LABEL: name: fcmp_double_une
1108     ; CHECK: liveins: $xmm0, $xmm1
1109     ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
1110     ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
1111     ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
1112     ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
1113     ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(une), [[TRUNC]](s64), [[TRUNC1]]
1114     ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
1115     ; CHECK: $al = COPY [[COPY2]](s8)
1116     ; CHECK: RET 0, implicit $al
1117     %2:_(s128) = COPY $xmm0
1118     %0:_(s64) = G_TRUNC %2(s128)
1119     %3:_(s128) = COPY $xmm1
1120     %1:_(s64) = G_TRUNC %3(s128)
1121     %4:_(s1) = G_FCMP floatpred(une), %0(s64), %1
1122     %5:_(s8) = G_ANYEXT %4(s1)
1123     $al = COPY %5(s8)
1124     RET 0, implicit $al