Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / instruction-select / fcmp-f16-rv32.mir
blob6fdfd65a15f0059cd22778262be48b5d071e11e5
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv32 -mattr=+zfh -run-pass=instruction-select \
3 # RUN:   -simplify-mir -verify-machineinstrs %s -o - | FileCheck %s
5 ---
6 name:            fcmp_oeq_f16
7 legalized:       true
8 regBankSelected: true
9 tracksRegLiveness: true
10 body:             |
11   bb.1:
12     liveins: $f10_h, $f11_h
14     ; CHECK-LABEL: name: fcmp_oeq_f16
15     ; CHECK: liveins: $f10_h, $f11_h
16     ; CHECK-NEXT: {{  $}}
17     ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h
18     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h
19     ; CHECK-NEXT: [[FEQ_H:%[0-9]+]]:gpr = nofpexcept FEQ_H [[COPY]], [[COPY1]]
20     ; CHECK-NEXT: $x10 = COPY [[FEQ_H]]
21     ; CHECK-NEXT: PseudoRET implicit $x10
22     %0:fprb(s16) = COPY $f10_h
23     %1:fprb(s16) = COPY $f11_h
24     %4:gprb(s32) = G_FCMP floatpred(oeq), %0(s16), %1
25     $x10 = COPY %4(s32)
26     PseudoRET implicit $x10
28 ...
29 ---
30 name:            fcmp_ogt_f16
31 legalized:       true
32 regBankSelected: true
33 tracksRegLiveness: true
34 body:             |
35   bb.1:
36     liveins: $f10_h, $f11_h
38     ; CHECK-LABEL: name: fcmp_ogt_f16
39     ; CHECK: liveins: $f10_h, $f11_h
40     ; CHECK-NEXT: {{  $}}
41     ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h
42     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h
43     ; CHECK-NEXT: [[FLT_H:%[0-9]+]]:gpr = FLT_H [[COPY1]], [[COPY]]
44     ; CHECK-NEXT: $x10 = COPY [[FLT_H]]
45     ; CHECK-NEXT: PseudoRET implicit $x10
46     %0:fprb(s16) = COPY $f10_h
47     %1:fprb(s16) = COPY $f11_h
48     %4:gprb(s32) = G_FCMP floatpred(ogt), %0(s16), %1
49     $x10 = COPY %4(s32)
50     PseudoRET implicit $x10
52 ...
53 ---
54 name:            fcmp_oge_f16
55 legalized:       true
56 regBankSelected: true
57 tracksRegLiveness: true
58 body:             |
59   bb.1:
60     liveins: $f10_h, $f11_h
62     ; CHECK-LABEL: name: fcmp_oge_f16
63     ; CHECK: liveins: $f10_h, $f11_h
64     ; CHECK-NEXT: {{  $}}
65     ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h
66     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h
67     ; CHECK-NEXT: [[FLE_H:%[0-9]+]]:gpr = FLE_H [[COPY1]], [[COPY]]
68     ; CHECK-NEXT: $x10 = COPY [[FLE_H]]
69     ; CHECK-NEXT: PseudoRET implicit $x10
70     %0:fprb(s16) = COPY $f10_h
71     %1:fprb(s16) = COPY $f11_h
72     %4:gprb(s32) = G_FCMP floatpred(oge), %0(s16), %1
73     $x10 = COPY %4(s32)
74     PseudoRET implicit $x10
76 ...
77 ---
78 name:            fcmp_olt_f16
79 legalized:       true
80 regBankSelected: true
81 tracksRegLiveness: true
82 body:             |
83   bb.1:
84     liveins: $f10_h, $f11_h
86     ; CHECK-LABEL: name: fcmp_olt_f16
87     ; CHECK: liveins: $f10_h, $f11_h
88     ; CHECK-NEXT: {{  $}}
89     ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h
90     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h
91     ; CHECK-NEXT: [[FLT_H:%[0-9]+]]:gpr = nofpexcept FLT_H [[COPY]], [[COPY1]]
92     ; CHECK-NEXT: $x10 = COPY [[FLT_H]]
93     ; CHECK-NEXT: PseudoRET implicit $x10
94     %0:fprb(s16) = COPY $f10_h
95     %1:fprb(s16) = COPY $f11_h
96     %4:gprb(s32) = G_FCMP floatpred(olt), %0(s16), %1
97     $x10 = COPY %4(s32)
98     PseudoRET implicit $x10
102 name:            fcmp_ole_f16
103 legalized:       true
104 regBankSelected: true
105 tracksRegLiveness: true
106 body:             |
107   bb.1:
108     liveins: $f10_h, $f11_h
110     ; CHECK-LABEL: name: fcmp_ole_f16
111     ; CHECK: liveins: $f10_h, $f11_h
112     ; CHECK-NEXT: {{  $}}
113     ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h
114     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h
115     ; CHECK-NEXT: [[FLE_H:%[0-9]+]]:gpr = nofpexcept FLE_H [[COPY]], [[COPY1]]
116     ; CHECK-NEXT: $x10 = COPY [[FLE_H]]
117     ; CHECK-NEXT: PseudoRET implicit $x10
118     %0:fprb(s16) = COPY $f10_h
119     %1:fprb(s16) = COPY $f11_h
120     %4:gprb(s32) = G_FCMP floatpred(ole), %0(s16), %1
121     $x10 = COPY %4(s32)
122     PseudoRET implicit $x10
126 name:            fcmp_one_f16
127 legalized:       true
128 regBankSelected: true
129 tracksRegLiveness: true
130 body:             |
131   bb.1:
132     liveins: $f10_h, $f11_h
134     ; CHECK-LABEL: name: fcmp_one_f16
135     ; CHECK: liveins: $f10_h, $f11_h
136     ; CHECK-NEXT: {{  $}}
137     ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h
138     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h
139     ; CHECK-NEXT: [[FLT_H:%[0-9]+]]:gpr = FLT_H [[COPY]], [[COPY1]]
140     ; CHECK-NEXT: [[FLT_H1:%[0-9]+]]:gpr = FLT_H [[COPY1]], [[COPY]]
141     ; CHECK-NEXT: [[OR:%[0-9]+]]:gpr = OR [[FLT_H]], [[FLT_H1]]
142     ; CHECK-NEXT: $x10 = COPY [[OR]]
143     ; CHECK-NEXT: PseudoRET implicit $x10
144     %0:fprb(s16) = COPY $f10_h
145     %1:fprb(s16) = COPY $f11_h
146     %4:gprb(s32) = G_FCMP floatpred(one), %0(s16), %1
147     $x10 = COPY %4(s32)
148     PseudoRET implicit $x10
152 name:            fcmp_ord_f16
153 legalized:       true
154 regBankSelected: true
155 tracksRegLiveness: true
156 body:             |
157   bb.1:
158     liveins: $f10_h, $f11_h
160     ; CHECK-LABEL: name: fcmp_ord_f16
161     ; CHECK: liveins: $f10_h, $f11_h
162     ; CHECK-NEXT: {{  $}}
163     ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h
164     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h
165     ; CHECK-NEXT: [[FEQ_H:%[0-9]+]]:gpr = FEQ_H [[COPY]], [[COPY]]
166     ; CHECK-NEXT: [[FEQ_H1:%[0-9]+]]:gpr = FEQ_H [[COPY1]], [[COPY1]]
167     ; CHECK-NEXT: [[AND:%[0-9]+]]:gpr = AND [[FEQ_H]], [[FEQ_H1]]
168     ; CHECK-NEXT: $x10 = COPY [[AND]]
169     ; CHECK-NEXT: PseudoRET implicit $x10
170     %0:fprb(s16) = COPY $f10_h
171     %1:fprb(s16) = COPY $f11_h
172     %4:gprb(s32) = G_FCMP floatpred(ord), %0(s16), %1
173     $x10 = COPY %4(s32)
174     PseudoRET implicit $x10
178 name:            fcmp_ueq_f16
179 legalized:       true
180 regBankSelected: true
181 tracksRegLiveness: true
182 body:             |
183   bb.1:
184     liveins: $f10_h, $f11_h
186     ; CHECK-LABEL: name: fcmp_ueq_f16
187     ; CHECK: liveins: $f10_h, $f11_h
188     ; CHECK-NEXT: {{  $}}
189     ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h
190     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h
191     ; CHECK-NEXT: [[FLT_H:%[0-9]+]]:gpr = FLT_H [[COPY]], [[COPY1]]
192     ; CHECK-NEXT: [[FLT_H1:%[0-9]+]]:gpr = FLT_H [[COPY1]], [[COPY]]
193     ; CHECK-NEXT: [[OR:%[0-9]+]]:gpr = OR [[FLT_H]], [[FLT_H1]]
194     ; CHECK-NEXT: [[XORI:%[0-9]+]]:gpr = XORI [[OR]], 1
195     ; CHECK-NEXT: $x10 = COPY [[XORI]]
196     ; CHECK-NEXT: PseudoRET implicit $x10
197     %0:fprb(s16) = COPY $f10_h
198     %1:fprb(s16) = COPY $f11_h
199     %4:gprb(s32) = G_FCMP floatpred(ueq), %0(s16), %1
200     $x10 = COPY %4(s32)
201     PseudoRET implicit $x10
205 name:            fcmp_ugt_f16
206 legalized:       true
207 regBankSelected: true
208 tracksRegLiveness: true
209 body:             |
210   bb.1:
211     liveins: $f10_h, $f11_h
213     ; CHECK-LABEL: name: fcmp_ugt_f16
214     ; CHECK: liveins: $f10_h, $f11_h
215     ; CHECK-NEXT: {{  $}}
216     ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h
217     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h
218     ; CHECK-NEXT: [[FLE_H:%[0-9]+]]:gpr = FLE_H [[COPY]], [[COPY1]]
219     ; CHECK-NEXT: [[XORI:%[0-9]+]]:gpr = XORI [[FLE_H]], 1
220     ; CHECK-NEXT: $x10 = COPY [[XORI]]
221     ; CHECK-NEXT: PseudoRET implicit $x10
222     %0:fprb(s16) = COPY $f10_h
223     %1:fprb(s16) = COPY $f11_h
224     %4:gprb(s32) = G_FCMP floatpred(ugt), %0(s16), %1
225     $x10 = COPY %4(s32)
226     PseudoRET implicit $x10
230 name:            fcmp_uge_f16
231 legalized:       true
232 regBankSelected: true
233 tracksRegLiveness: true
234 body:             |
235   bb.1:
236     liveins: $f10_h, $f11_h
238     ; CHECK-LABEL: name: fcmp_uge_f16
239     ; CHECK: liveins: $f10_h, $f11_h
240     ; CHECK-NEXT: {{  $}}
241     ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h
242     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h
243     ; CHECK-NEXT: [[FLT_H:%[0-9]+]]:gpr = FLT_H [[COPY]], [[COPY1]]
244     ; CHECK-NEXT: [[XORI:%[0-9]+]]:gpr = XORI [[FLT_H]], 1
245     ; CHECK-NEXT: $x10 = COPY [[XORI]]
246     ; CHECK-NEXT: PseudoRET implicit $x10
247     %0:fprb(s16) = COPY $f10_h
248     %1:fprb(s16) = COPY $f11_h
249     %4:gprb(s32) = G_FCMP floatpred(uge), %0(s16), %1
250     $x10 = COPY %4(s32)
251     PseudoRET implicit $x10
255 name:            fcmp_ult_f16
256 legalized:       true
257 regBankSelected: true
258 tracksRegLiveness: true
259 body:             |
260   bb.1:
261     liveins: $f10_h, $f11_h
263     ; CHECK-LABEL: name: fcmp_ult_f16
264     ; CHECK: liveins: $f10_h, $f11_h
265     ; CHECK-NEXT: {{  $}}
266     ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h
267     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h
268     ; CHECK-NEXT: [[FLE_H:%[0-9]+]]:gpr = FLE_H [[COPY1]], [[COPY]]
269     ; CHECK-NEXT: [[XORI:%[0-9]+]]:gpr = XORI [[FLE_H]], 1
270     ; CHECK-NEXT: $x10 = COPY [[XORI]]
271     ; CHECK-NEXT: PseudoRET implicit $x10
272     %0:fprb(s16) = COPY $f10_h
273     %1:fprb(s16) = COPY $f11_h
274     %4:gprb(s32) = G_FCMP floatpred(ult), %0(s16), %1
275     $x10 = COPY %4(s32)
276     PseudoRET implicit $x10
280 name:            fcmp_ule_f16
281 legalized:       true
282 regBankSelected: true
283 tracksRegLiveness: true
284 body:             |
285   bb.1:
286     liveins: $f10_h, $f11_h
288     ; CHECK-LABEL: name: fcmp_ule_f16
289     ; CHECK: liveins: $f10_h, $f11_h
290     ; CHECK-NEXT: {{  $}}
291     ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h
292     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h
293     ; CHECK-NEXT: [[FLT_H:%[0-9]+]]:gpr = FLT_H [[COPY1]], [[COPY]]
294     ; CHECK-NEXT: [[XORI:%[0-9]+]]:gpr = XORI [[FLT_H]], 1
295     ; CHECK-NEXT: $x10 = COPY [[XORI]]
296     ; CHECK-NEXT: PseudoRET implicit $x10
297     %0:fprb(s16) = COPY $f10_h
298     %1:fprb(s16) = COPY $f11_h
299     %4:gprb(s32) = G_FCMP floatpred(ule), %0(s16), %1
300     $x10 = COPY %4(s32)
301     PseudoRET implicit $x10
305 name:            fcmp_une_f16
306 legalized:       true
307 regBankSelected: true
308 tracksRegLiveness: true
309 body:             |
310   bb.1:
311     liveins: $f10_h, $f11_h
313     ; CHECK-LABEL: name: fcmp_une_f16
314     ; CHECK: liveins: $f10_h, $f11_h
315     ; CHECK-NEXT: {{  $}}
316     ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h
317     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h
318     ; CHECK-NEXT: [[FEQ_H:%[0-9]+]]:gpr = FEQ_H [[COPY]], [[COPY1]]
319     ; CHECK-NEXT: [[XORI:%[0-9]+]]:gpr = XORI [[FEQ_H]], 1
320     ; CHECK-NEXT: $x10 = COPY [[XORI]]
321     ; CHECK-NEXT: PseudoRET implicit $x10
322     %0:fprb(s16) = COPY $f10_h
323     %1:fprb(s16) = COPY $f11_h
324     %4:gprb(s32) = G_FCMP floatpred(une), %0(s16), %1
325     $x10 = COPY %4(s32)
326     PseudoRET implicit $x10
330 name:            fcmp_uno_f16
331 legalized:       true
332 regBankSelected: true
333 tracksRegLiveness: true
334 body:             |
335   bb.1:
336     liveins: $f10_h, $f11_h
338     ; CHECK-LABEL: name: fcmp_uno_f16
339     ; CHECK: liveins: $f10_h, $f11_h
340     ; CHECK-NEXT: {{  $}}
341     ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h
342     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h
343     ; CHECK-NEXT: [[FEQ_H:%[0-9]+]]:gpr = FEQ_H [[COPY]], [[COPY]]
344     ; CHECK-NEXT: [[FEQ_H1:%[0-9]+]]:gpr = FEQ_H [[COPY1]], [[COPY1]]
345     ; CHECK-NEXT: [[AND:%[0-9]+]]:gpr = AND [[FEQ_H]], [[FEQ_H1]]
346     ; CHECK-NEXT: [[XORI:%[0-9]+]]:gpr = XORI [[AND]], 1
347     ; CHECK-NEXT: $x10 = COPY [[XORI]]
348     ; CHECK-NEXT: PseudoRET implicit $x10
349     %0:fprb(s16) = COPY $f10_h
350     %1:fprb(s16) = COPY $f11_h
351     %4:gprb(s32) = G_FCMP floatpred(uno), %0(s16), %1
352     $x10 = COPY %4(s32)
353     PseudoRET implicit $x10