OLD | NEW |
---|---|
(Empty) | |
1 ; Test encoding of MIPS32 floating point comaprison | |
Jim Stichnoth
2016/09/20 00:09:23
comparison
though when you work with floating-poi
obucinac
2016/09/20 13:24:52
Done.
| |
2 | |
3 ; REQUIRES: allow_dump | |
4 | |
5 ; Compile using standalone assembler. | |
6 ; RUN: %p2i --filetype=asm -i %s --target=mips32 --args -O2 \ | |
7 ; RUN: --allow-externally-defined-symbols --skip-unimplemented \ | |
8 ; RUN: | FileCheck %s --check-prefix=ASM | |
9 | |
10 ; Show bytes in assembled standalone code. | |
11 ; RUN: %p2i --filetype=asm -i %s --target=mips32 --assemble --disassemble \ | |
12 ; RUN: --args -O2 --allow-externally-defined-symbols --skip-unimplemented \ | |
13 ; RUN: | FileCheck %s --check-prefix=DIS | |
14 | |
15 ; Compile using integrated assembler. | |
16 ; RUN: %p2i --filetype=iasm -i %s --target=mips32 --args -O2 \ | |
17 ; RUN: --allow-externally-defined-symbols --skip-unimplemented \ | |
18 ; RUN: | FileCheck %s --check-prefix=IASM | |
19 | |
20 ; Show bytes in assembled integrated code. | |
21 ; RUN: %p2i --filetype=iasm -i %s --target=mips32 --assemble --disassemble \ | |
22 ; RUN: --args -O2 --allow-externally-defined-symbols --skip-unimplemented \ | |
23 ; RUN: | FileCheck %s --check-prefix=DIS | |
24 | |
25 define internal i32 @fcmpFalseFloat(float %a, float %b) { | |
26 entry: | |
27 %cmp = fcmp false float %a, %b | |
28 %cmp.ret_ext = zext i1 %cmp to i32 | |
29 ret i32 %cmp.ret_ext | |
30 } | |
31 | |
32 ; ASM-LABEL: fcmpFalseFloat: | |
33 ; ASM-NEXT: .LfcmpFalseFloat$entry: | |
34 ; ASM-NEXT: addiu $v0, $zero, 0 | |
35 ; ASM-NEXT: andi $v0, $v0, 1 | |
36 ; ASM-NEXT: jr $ra | |
37 | |
38 ; DIS-LABEL: 00000000 <fcmpFalseFloat>: | |
39 ; DIS-NEXT: 0: 24020000 li v0,0 | |
40 ; DIS-NEXT: 4: 30420001 andi v0,v0,0x1 | |
41 ; DIS-NEXT: 8: 03e00008 jr ra | |
42 | |
43 ; IASM-LABEL: fcmpFalseFloat: | |
44 ; IASM-NEXT: .LfcmpFalseFloat$entry: | |
45 ; IASM-NEXT: .byte 0x0 | |
46 ; IASM-NEXT: .byte 0x0 | |
47 ; IASM-NEXT: .byte 0x2 | |
48 ; IASM-NEXT: .byte 0x24 | |
49 ; IASM-NEXT: .byte 0x1 | |
50 ; IASM-NEXT: .byte 0x0 | |
51 ; IASM-NEXT: .byte 0x42 | |
52 ; IASM-NEXT: .byte 0x30 | |
53 ; IASM-NEXT: .byte 0x8 | |
54 ; IASM-NEXT: .byte 0x0 | |
55 ; IASM-NEXT: .byte 0xe0 | |
56 ; IASM-NEXT: .byte 0x3 | |
57 | |
58 define internal i32 @fcmpFalseDouble(double %a, double %b) { | |
59 entry: | |
60 %cmp = fcmp false double %a, %b | |
61 %cmp.ret_ext = zext i1 %cmp to i32 | |
62 ret i32 %cmp.ret_ext | |
63 } | |
64 | |
65 ; ASM-LABEL: fcmpFalseDouble: | |
66 ; ASM-NEXT: .LfcmpFalseDouble$entry: | |
67 ; ASM-NEXT: addiu $v0, $zero, 0 | |
68 ; ASM-NEXT: andi $v0, $v0, 1 | |
69 ; ASM-NEXT: jr $ra | |
70 | |
71 ; DIS-LABEL: 00000010 <fcmpFalseDouble>: | |
72 ; DIS-NEXT: 10: 24020000 li v0,0 | |
73 ; DIS-NEXT: 14: 30420001 andi v0,v0,0x1 | |
74 ; DIS-NEXT: 18: 03e00008 jr ra | |
75 | |
76 ; IASM-LABEL: fcmpFalseDouble: | |
77 ; IASM-NEXT: .LfcmpFalseDouble$entry: | |
78 ; IASM-NEXT: .byte 0x0 | |
79 ; IASM-NEXT: .byte 0x0 | |
80 ; IASM-NEXT: .byte 0x2 | |
81 ; IASM-NEXT: .byte 0x24 | |
82 ; IASM-NEXT: .byte 0x1 | |
83 ; IASM-NEXT: .byte 0x0 | |
84 ; IASM-NEXT: .byte 0x42 | |
85 ; IASM-NEXT: .byte 0x30 | |
86 ; IASM-NEXT: .byte 0x8 | |
87 ; IASM-NEXT: .byte 0x0 | |
88 ; IASM-NEXT: .byte 0xe0 | |
89 ; IASM-NEXT: .byte 0x3 | |
90 | |
91 define internal i32 @fcmpOeqFloat(float %a, float %b) { | |
92 entry: | |
93 %cmp = fcmp oeq float %a, %b | |
94 %cmp.ret_ext = zext i1 %cmp to i32 | |
95 ret i32 %cmp.ret_ext | |
96 } | |
97 | |
98 ; ASM-LABEL: fcmpOeqFloat | |
99 ; ASM-NEXT: .LfcmpOeqFloat$entry: | |
100 ; ASM-NEXT: c.eq.s $f12, $f14 | |
101 ; ASM-NEXT: movf $v0, $zero, $fcc0 | |
102 ; ASM-NEXT: andi $v0, $v0, 1 | |
103 ; ASM-NEXT: jr $ra | |
104 | |
105 ; DIS-LABEL: 00000020 <fcmpOeqFloat>: | |
106 ; DIS-NEXT: 20: 460e6032 c.eq.s $f12,$f14 | |
107 ; DIS-NEXT: 24: 00001001 movf v0,zero,$fcc0 | |
108 ; DIS-NEXT: 28: 30420001 andi v0,v0,0x1 | |
109 ; DIS-NEXT: 2c: 03e00008 jr ra | |
110 | |
111 ; IASM-LABEL: fcmpOeqFloat: | |
112 ; IASM-NEXT: .LfcmpOeqFloat$entry: | |
113 ; IASM-NEXT: .byte 0x32 | |
114 ; IASM-NEXT: .byte 0x60 | |
115 ; IASM-NEXT: .byte 0xe | |
116 ; IASM-NEXT: .byte 0x46 | |
117 ; IASM-NEXT: .byte 0x1 | |
118 ; IASM-NEXT: .byte 0x10 | |
119 ; IASM-NEXT: .byte 0x0 | |
120 ; IASM-NEXT: .byte 0x0 | |
121 ; IASM-NEXT: .byte 0x1 | |
122 ; IASM-NEXT: .byte 0x0 | |
123 ; IASM-NEXT: .byte 0x42 | |
124 ; IASM-NEXT: .byte 0x30 | |
125 ; IASM-NEXT: .byte 0x8 | |
126 ; IASM-NEXT: .byte 0x0 | |
127 ; IASM-NEXT: .byte 0xe0 | |
128 ; IASM-NEXT: .byte 0x3 | |
129 | |
130 define internal i32 @fcmpOeqDouble(double %a, double %b) { | |
131 entry: | |
132 %cmp = fcmp oeq double %a, %b | |
133 %cmp.ret_ext = zext i1 %cmp to i32 | |
134 ret i32 %cmp.ret_ext | |
135 } | |
136 | |
137 ; ASM-LABEL: fcmpOeqDouble | |
138 ; ASM-NEXT: .LfcmpOeqDouble$entry: | |
139 ; ASM-NEXT: c.eq.d $f12, $f14 | |
140 ; ASM-NEXT: movf $v0, $zero, $fcc0 | |
141 ; ASM-NEXT: andi $v0, $v0, 1 | |
142 ; ASM-NEXT: jr $ra | |
143 | |
144 ; DIS-LABEL: 00000040 <fcmpOeqDouble>: | |
145 ; DIS-NEXT: 40: 462e6032 c.eq.d $f12,$f14 | |
146 ; DIS-NEXT: 44: 00001001 movf v0,zero,$fcc0 | |
147 ; DIS-NEXT: 48: 30420001 andi v0,v0,0x1 | |
148 ; DIS-NEXT: 4c: 03e00008 jr ra | |
149 | |
150 ; IASM-LABEL: fcmpOeqDouble: | |
151 ; IASM-NEXT: .LfcmpOeqDouble$entry: | |
152 ; IASM-NEXT: .byte 0x32 | |
153 ; IASM-NEXT: .byte 0x60 | |
154 ; IASM-NEXT: .byte 0x2e | |
155 ; IASM-NEXT: .byte 0x46 | |
156 ; IASM-NEXT: .byte 0x1 | |
157 ; IASM-NEXT: .byte 0x10 | |
158 ; IASM-NEXT: .byte 0x0 | |
159 ; IASM-NEXT: .byte 0x0 | |
160 ; IASM-NEXT: .byte 0x1 | |
161 ; IASM-NEXT: .byte 0x0 | |
162 ; IASM-NEXT: .byte 0x42 | |
163 ; IASM-NEXT: .byte 0x30 | |
164 ; IASM-NEXT: .byte 0x8 | |
165 ; IASM-NEXT: .byte 0x0 | |
166 ; IASM-NEXT: .byte 0xe0 | |
167 ; IASM-NEXT: .byte 0x3 | |
168 | |
169 define internal i32 @fcmpOgtFloat(float %a, float %b) { | |
170 entry: | |
171 %cmp = fcmp ogt float %a, %b | |
172 %cmp.ret_ext = zext i1 %cmp to i32 | |
173 ret i32 %cmp.ret_ext | |
174 } | |
175 | |
176 ; ASM-LABEL: fcmpOgtFloat | |
177 ; ASM-NEXT: .LfcmpOgtFloat$entry: | |
178 ; ASM-NEXT: c.ule.s $f12, $f14 | |
179 ; ASM-NEXT: movt $v0, $zero, $fcc0 | |
180 ; ASM-NEXT: andi $v0, $v0, 1 | |
181 ; ASM-NEXT: jr $ra | |
182 | |
183 ; DIS-LABEL: 00000060 <fcmpOgtFloat>: | |
184 ; DIS-NEXT: 60: 460e6037 c.ule.s $f12,$f14 | |
185 ; DIS-NEXT: 64: 00011001 movt v0,zero,$fcc0 | |
186 ; DIS-NEXT: 68: 30420001 andi v0,v0,0x1 | |
187 ; DIS-NEXT: 6c: 03e00008 jr ra | |
188 | |
189 ; IASM-LABEL: fcmpOgtFloat: | |
190 ; IASM-NEXT: .LfcmpOgtFloat$entry: | |
191 ; IASM-NEXT: .byte 0x37 | |
192 ; IASM-NEXT: .byte 0x60 | |
193 ; IASM-NEXT: .byte 0xe | |
194 ; IASM-NEXT: .byte 0x46 | |
195 ; IASM-NEXT: .byte 0x1 | |
196 ; IASM-NEXT: .byte 0x10 | |
197 ; IASM-NEXT: .byte 0x1 | |
198 ; IASM-NEXT: .byte 0x0 | |
199 ; IASM-NEXT: .byte 0x1 | |
200 ; IASM-NEXT: .byte 0x0 | |
201 ; IASM-NEXT: .byte 0x42 | |
202 ; IASM-NEXT: .byte 0x30 | |
203 ; IASM-NEXT: .byte 0x8 | |
204 ; IASM-NEXT: .byte 0x0 | |
205 ; IASM-NEXT: .byte 0xe0 | |
206 ; IASM-NEXT: .byte 0x3 | |
207 | |
208 define internal i32 @fcmpOgtDouble(double %a, double %b) { | |
209 entry: | |
210 %cmp = fcmp ogt double %a, %b | |
211 %cmp.ret_ext = zext i1 %cmp to i32 | |
212 ret i32 %cmp.ret_ext | |
213 } | |
214 | |
215 ; ASM-LABEL: fcmpOgtDouble | |
216 ; ASM-NEXT: .LfcmpOgtDouble$entry: | |
217 ; ASM-NEXT: c.ule.d $f12, $f14 | |
218 ; ASM-NEXT: movt $v0, $zero, $fcc0 | |
219 ; ASM-NEXT: andi $v0, $v0, 1 | |
220 ; ASM-NEXT: jr $ra | |
221 | |
222 ; DIS-LABEL: 00000080 <fcmpOgtDouble>: | |
223 ; DIS-NEXT: 80: 462e6037 c.ule.d $f12,$f14 | |
224 ; DIS-NEXT: 84: 00011001 movt v0,zero,$fcc0 | |
225 ; DIS-NEXT: 88: 30420001 andi v0,v0,0x1 | |
226 ; DIS-NEXT: 8c: 03e00008 jr ra | |
227 | |
228 ; IASM-LABEL: fcmpOgtDouble: | |
229 ; IASM-NEXT: .LfcmpOgtDouble$entry: | |
230 ; IASM-NEXT: .byte 0x37 | |
231 ; IASM-NEXT: .byte 0x60 | |
232 ; IASM-NEXT: .byte 0x2e | |
233 ; IASM-NEXT: .byte 0x46 | |
234 ; IASM-NEXT: .byte 0x1 | |
235 ; IASM-NEXT: .byte 0x10 | |
236 ; IASM-NEXT: .byte 0x1 | |
237 ; IASM-NEXT: .byte 0x0 | |
238 ; IASM-NEXT: .byte 0x1 | |
239 ; IASM-NEXT: .byte 0x0 | |
240 ; IASM-NEXT: .byte 0x42 | |
241 ; IASM-NEXT: .byte 0x30 | |
242 ; IASM-NEXT: .byte 0x8 | |
243 ; IASM-NEXT: .byte 0x0 | |
244 ; IASM-NEXT: .byte 0xe0 | |
245 ; IASM-NEXT: .byte 0x3 | |
246 | |
247 define internal i32 @fcmpOgeFloat(float %a, float %b) { | |
248 entry: | |
249 %cmp = fcmp oge float %a, %b | |
250 %cmp.ret_ext = zext i1 %cmp to i32 | |
251 ret i32 %cmp.ret_ext | |
252 } | |
253 | |
254 ; ASM-LABEL: fcmpOgeFloat | |
255 ; ASM-NEXT: .LfcmpOgeFloat$entry: | |
256 ; ASM-NEXT: c.ult.s $f12, $f14 | |
257 ; ASM-NEXT: movt $v0, $zero, $fcc0 | |
258 ; ASM-NEXT: andi $v0, $v0, 1 | |
259 ; ASM-NEXT: jr $ra | |
260 | |
261 ; DIS-LABEL: 000000a0 <fcmpOgeFloat>: | |
262 ; DIS-NEXT: a0: 460e6035 c.ult.s $f12,$f14 | |
263 ; DIS-NEXT: a4: 00011001 movt v0,zero,$fcc0 | |
264 ; DIS-NEXT: a8: 30420001 andi v0,v0,0x1 | |
265 ; DIS-NEXT: ac: 03e00008 jr ra | |
266 | |
267 ; IASM-LABEL: fcmpOgeFloat: | |
268 ; IASM-NEXT: .LfcmpOgeFloat$entry: | |
269 ; IASM-NEXT: .byte 0x35 | |
270 ; IASM-NEXT: .byte 0x60 | |
271 ; IASM-NEXT: .byte 0xe | |
272 ; IASM-NEXT: .byte 0x46 | |
273 ; IASM-NEXT: .byte 0x1 | |
274 ; IASM-NEXT: .byte 0x10 | |
275 ; IASM-NEXT: .byte 0x1 | |
276 ; IASM-NEXT: .byte 0x0 | |
277 ; IASM-NEXT: .byte 0x1 | |
278 ; IASM-NEXT: .byte 0x0 | |
279 ; IASM-NEXT: .byte 0x42 | |
280 ; IASM-NEXT: .byte 0x30 | |
281 ; IASM-NEXT: .byte 0x8 | |
282 ; IASM-NEXT: .byte 0x0 | |
283 ; IASM-NEXT: .byte 0xe0 | |
284 ; IASM-NEXT: .byte 0x3 | |
285 | |
286 define internal i32 @fcmpOgeDouble(double %a, double %b) { | |
287 entry: | |
288 %cmp = fcmp oge double %a, %b | |
289 %cmp.ret_ext = zext i1 %cmp to i32 | |
290 ret i32 %cmp.ret_ext | |
291 } | |
292 | |
293 ; ASM-LABEL: fcmpOgeDouble | |
294 ; ASM-NEXT: .LfcmpOgeDouble$entry: | |
295 ; ASM-NEXT: c.ult.d $f12, $f14 | |
296 ; ASM-NEXT: movt $v0, $zero, $fcc0 | |
297 ; ASM-NEXT: andi $v0, $v0, 1 | |
298 ; ASM-NEXT: jr $ra | |
299 | |
300 ; DIS-LABEL: 000000c0 <fcmpOgeDouble>: | |
301 ; DIS-NEXT: c0: 462e6035 c.ult.d $f12,$f14 | |
302 ; DIS-NEXT: c4: 00011001 movt v0,zero,$fcc0 | |
303 ; DIS-NEXT: c8: 30420001 andi v0,v0,0x1 | |
304 ; DIS-NEXT: cc: 03e00008 jr ra | |
305 | |
306 ; IASM-LABEL: fcmpOgeDouble: | |
307 ; IASM-NEXT: .LfcmpOgeDouble$entry: | |
308 ; IASM-NEXT: .byte 0x35 | |
309 ; IASM-NEXT: .byte 0x60 | |
310 ; IASM-NEXT: .byte 0x2e | |
311 ; IASM-NEXT: .byte 0x46 | |
312 ; IASM-NEXT: .byte 0x1 | |
313 ; IASM-NEXT: .byte 0x10 | |
314 ; IASM-NEXT: .byte 0x1 | |
315 ; IASM-NEXT: .byte 0x0 | |
316 ; IASM-NEXT: .byte 0x1 | |
317 ; IASM-NEXT: .byte 0x0 | |
318 ; IASM-NEXT: .byte 0x42 | |
319 ; IASM-NEXT: .byte 0x30 | |
320 ; IASM-NEXT: .byte 0x8 | |
321 ; IASM-NEXT: .byte 0x0 | |
322 ; IASM-NEXT: .byte 0xe0 | |
323 ; IASM-NEXT: .byte 0x3 | |
324 | |
325 define internal i32 @fcmpOltFloat(float %a, float %b) { | |
326 entry: | |
327 %cmp = fcmp olt float %a, %b | |
328 %cmp.ret_ext = zext i1 %cmp to i32 | |
329 ret i32 %cmp.ret_ext | |
330 } | |
331 | |
332 ; ASM-LABEL: fcmpOltFloat | |
333 ; ASM-NEXT: .LfcmpOltFloat$entry: | |
334 ; ASM-NEXT: c.olt.s $f12, $f14 | |
335 ; ASM-NEXT: movf $v0, $zero, $fcc0 | |
336 ; ASM-NEXT: andi $v0, $v0, 1 | |
337 ; ASM-NEXT: jr $ra | |
338 | |
339 ; DIS-LABEL: 000000e0 <fcmpOltFloat>: | |
340 ; DIS-NEXT: e0: 460e6034 c.olt.s $f12,$f14 | |
341 ; DIS-NEXT: e4: 00001001 movf v0,zero,$fcc0 | |
342 ; DIS-NEXT: e8: 30420001 andi v0,v0,0x1 | |
343 ; DIS-NEXT: ec: 03e00008 jr ra | |
344 | |
345 ; IASM-LABEL: fcmpOltFloat: | |
346 ; IASM-NEXT: .LfcmpOltFloat$entry: | |
347 ; IASM-NEXT: .byte 0x34 | |
348 ; IASM-NEXT: .byte 0x60 | |
349 ; IASM-NEXT: .byte 0xe | |
350 ; IASM-NEXT: .byte 0x46 | |
351 ; IASM-NEXT: .byte 0x1 | |
352 ; IASM-NEXT: .byte 0x10 | |
353 ; IASM-NEXT: .byte 0x0 | |
354 ; IASM-NEXT: .byte 0x0 | |
355 ; IASM-NEXT: .byte 0x1 | |
356 ; IASM-NEXT: .byte 0x0 | |
357 ; IASM-NEXT: .byte 0x42 | |
358 ; IASM-NEXT: .byte 0x30 | |
359 ; IASM-NEXT: .byte 0x8 | |
360 ; IASM-NEXT: .byte 0x0 | |
361 ; IASM-NEXT: .byte 0xe0 | |
362 ; IASM-NEXT: .byte 0x3 | |
363 | |
364 define internal i32 @fcmpOltDouble(double %a, double %b) { | |
365 entry: | |
366 %cmp = fcmp olt double %a, %b | |
367 %cmp.ret_ext = zext i1 %cmp to i32 | |
368 ret i32 %cmp.ret_ext | |
369 } | |
370 | |
371 ; ASM-LABEL: fcmpOltDouble | |
372 ; ASM-NEXT: .LfcmpOltDouble$entry: | |
373 ; ASM-NEXT: c.olt.d $f12, $f14 | |
374 ; ASM-NEXT: movf $v0, $zero, $fcc0 | |
375 ; ASM-NEXT: andi $v0, $v0, 1 | |
376 ; ASM-NEXT: jr $ra | |
377 | |
378 ; DIS-LABEL: 00000100 <fcmpOltDouble>: | |
379 ; DIS-NEXT: 100: 462e6034 c.olt.d $f12,$f14 | |
380 ; DIS-NEXT: 104: 00001001 movf v0,zero,$fcc0 | |
381 ; DIS-NEXT: 108: 30420001 andi v0,v0,0x1 | |
382 ; DIS-NEXT: 10c: 03e00008 jr ra | |
383 | |
384 ; IASM-LABEL: fcmpOltDouble: | |
385 ; IASM-NEXT: .LfcmpOltDouble$entry: | |
386 ; IASM-NEXT: .byte 0x34 | |
387 ; IASM-NEXT: .byte 0x60 | |
388 ; IASM-NEXT: .byte 0x2e | |
389 ; IASM-NEXT: .byte 0x46 | |
390 ; IASM-NEXT: .byte 0x1 | |
391 ; IASM-NEXT: .byte 0x10 | |
392 ; IASM-NEXT: .byte 0x0 | |
393 ; IASM-NEXT: .byte 0x0 | |
394 ; IASM-NEXT: .byte 0x1 | |
395 ; IASM-NEXT: .byte 0x0 | |
396 ; IASM-NEXT: .byte 0x42 | |
397 ; IASM-NEXT: .byte 0x30 | |
398 ; IASM-NEXT: .byte 0x8 | |
399 ; IASM-NEXT: .byte 0x0 | |
400 ; IASM-NEXT: .byte 0xe0 | |
401 ; IASM-NEXT: .byte 0x3 | |
402 | |
403 define internal i32 @fcmpOleFloat(float %a, float %b) { | |
404 entry: | |
405 %cmp = fcmp ole float %a, %b | |
406 %cmp.ret_ext = zext i1 %cmp to i32 | |
407 ret i32 %cmp.ret_ext | |
408 } | |
409 | |
410 ; ASM-LABEL: fcmpOleFloat | |
411 ; ASM-NEXT: .LfcmpOleFloat$entry: | |
412 ; ASM-NEXT: c.ole.s $f12, $f14 | |
413 ; ASM-NEXT: movf $v0, $zero, $fcc0 | |
414 ; ASM-NEXT: andi $v0, $v0, 1 | |
415 ; ASM-NEXT: jr $ra | |
416 | |
417 ; DIS-LABEL: 00000120 <fcmpOleFloat>: | |
418 ; DIS-NEXT: 120: 460e6036 c.ole.s $f12,$f14 | |
419 ; DIS-NEXT: 124: 00001001 movf v0,zero,$fcc0 | |
420 ; DIS-NEXT: 128: 30420001 andi v0,v0,0x1 | |
421 ; DIS-NEXT: 12c: 03e00008 jr ra | |
422 | |
423 ; IASM-LABEL: fcmpOleFloat: | |
424 ; IASM-NEXT: .LfcmpOleFloat$entry: | |
425 ; IASM-NEXT: .byte 0x36 | |
426 ; IASM-NEXT: .byte 0x60 | |
427 ; IASM-NEXT: .byte 0xe | |
428 ; IASM-NEXT: .byte 0x46 | |
429 ; IASM-NEXT: .byte 0x1 | |
430 ; IASM-NEXT: .byte 0x10 | |
431 ; IASM-NEXT: .byte 0x0 | |
432 ; IASM-NEXT: .byte 0x0 | |
433 ; IASM-NEXT: .byte 0x1 | |
434 ; IASM-NEXT: .byte 0x0 | |
435 ; IASM-NEXT: .byte 0x42 | |
436 ; IASM-NEXT: .byte 0x30 | |
437 ; IASM-NEXT: .byte 0x8 | |
438 ; IASM-NEXT: .byte 0x0 | |
439 ; IASM-NEXT: .byte 0xe0 | |
440 ; IASM-NEXT: .byte 0x3 | |
441 | |
442 define internal i32 @fcmpOleDouble(double %a, double %b) { | |
443 entry: | |
444 %cmp = fcmp ole double %a, %b | |
445 %cmp.ret_ext = zext i1 %cmp to i32 | |
446 ret i32 %cmp.ret_ext | |
447 } | |
448 | |
449 ; ASM-LABEL: fcmpOleDouble | |
450 ; ASM-NEXT: .LfcmpOleDouble$entry: | |
451 ; ASM-NEXT: c.ole.d $f12, $f14 | |
452 ; ASM-NEXT: movf $v0, $zero, $fcc0 | |
453 ; ASM-NEXT: andi $v0, $v0, 1 | |
454 ; ASM-NEXT: jr $ra | |
455 | |
456 ; DIS-LABEL: 00000140 <fcmpOleDouble>: | |
457 ; DIS-NEXT: 140: 462e6036 c.ole.d $f12,$f14 | |
458 ; DIS-NEXT: 144: 00001001 movf v0,zero,$fcc0 | |
459 ; DIS-NEXT: 148: 30420001 andi v0,v0,0x1 | |
460 ; DIS-NEXT: 14c: 03e00008 jr ra | |
461 | |
462 ; IASM-LABEL: fcmpOleDouble: | |
463 ; IASM-NEXT: .LfcmpOleDouble$entry: | |
464 ; IASM-NEXT: .byte 0x36 | |
465 ; IASM-NEXT: .byte 0x60 | |
466 ; IASM-NEXT: .byte 0x2e | |
467 ; IASM-NEXT: .byte 0x46 | |
468 ; IASM-NEXT: .byte 0x1 | |
469 ; IASM-NEXT: .byte 0x10 | |
470 ; IASM-NEXT: .byte 0x0 | |
471 ; IASM-NEXT: .byte 0x0 | |
472 ; IASM-NEXT: .byte 0x1 | |
473 ; IASM-NEXT: .byte 0x0 | |
474 ; IASM-NEXT: .byte 0x42 | |
475 ; IASM-NEXT: .byte 0x30 | |
476 ; IASM-NEXT: .byte 0x8 | |
477 ; IASM-NEXT: .byte 0x0 | |
478 ; IASM-NEXT: .byte 0xe0 | |
479 ; IASM-NEXT: .byte 0x3 | |
480 | |
481 define internal i32 @fcmpOneFloat(float %a, float %b) { | |
482 entry: | |
483 %cmp = fcmp one float %a, %b | |
484 %cmp.ret_ext = zext i1 %cmp to i32 | |
485 ret i32 %cmp.ret_ext | |
486 } | |
487 | |
488 ; ASM-LABEL: fcmpOneFloat | |
489 ; ASM-NEXT: .LfcmpOneFloat$entry: | |
490 ; ASM-NEXT: c.ueq.s $f12, $f14 | |
491 ; ASM-NEXT: movt $v0, $zero, $fcc0 | |
492 ; ASM-NEXT: andi $v0, $v0, 1 | |
493 ; ASM-NEXT: jr $ra | |
494 | |
495 ; DIS-LABEL: 00000160 <fcmpOneFloat>: | |
496 ; DIS-NEXT: 160: 460e6033 c.ueq.s $f12,$f14 | |
497 ; DIS-NEXT: 164: 00011001 movt v0,zero,$fcc0 | |
498 ; DIS-NEXT: 168: 30420001 andi v0,v0,0x1 | |
499 ; DIS-NEXT: 16c: 03e00008 jr ra | |
500 | |
501 ; IASM-LABEL: fcmpOneFloat: | |
502 ; IASM-NEXT: .LfcmpOneFloat$entry: | |
503 ; IASM-NEXT: .byte 0x33 | |
504 ; IASM-NEXT: .byte 0x60 | |
505 ; IASM-NEXT: .byte 0xe | |
506 ; IASM-NEXT: .byte 0x46 | |
507 ; IASM-NEXT: .byte 0x1 | |
508 ; IASM-NEXT: .byte 0x10 | |
509 ; IASM-NEXT: .byte 0x1 | |
510 ; IASM-NEXT: .byte 0x0 | |
511 ; IASM-NEXT: .byte 0x1 | |
512 ; IASM-NEXT: .byte 0x0 | |
513 ; IASM-NEXT: .byte 0x42 | |
514 ; IASM-NEXT: .byte 0x30 | |
515 ; IASM-NEXT: .byte 0x8 | |
516 ; IASM-NEXT: .byte 0x0 | |
517 ; IASM-NEXT: .byte 0xe0 | |
518 ; IASM-NEXT: .byte 0x3 | |
519 | |
520 define internal i32 @fcmpOneDouble(double %a, double %b) { | |
521 entry: | |
522 %cmp = fcmp one double %a, %b | |
523 %cmp.ret_ext = zext i1 %cmp to i32 | |
524 ret i32 %cmp.ret_ext | |
525 } | |
526 | |
527 ; ASM-LABEL: fcmpOneDouble | |
528 ; ASM-NEXT: .LfcmpOneDouble$entry: | |
529 ; ASM-NEXT: c.ueq.d $f12, $f14 | |
530 ; ASM-NEXT: movt $v0, $zero, $fcc0 | |
531 ; ASM-NEXT: andi $v0, $v0, 1 | |
532 ; ASM-NEXT: jr $ra | |
533 | |
534 ; DIS-LABEL: 00000180 <fcmpOneDouble>: | |
535 ; DIS-NEXT: 180: 462e6033 c.ueq.d $f12,$f14 | |
536 ; DIS-NEXT: 184: 00011001 movt v0,zero,$fcc0 | |
537 ; DIS-NEXT: 188: 30420001 andi v0,v0,0x1 | |
538 ; DIS-NEXT: 18c: 03e00008 jr ra | |
539 | |
540 ; IASM-LABEL: fcmpOneDouble: | |
541 ; IASM-NEXT: .LfcmpOneDouble$entry: | |
542 ; IASM-NEXT: .byte 0x33 | |
543 ; IASM-NEXT: .byte 0x60 | |
544 ; IASM-NEXT: .byte 0x2e | |
545 ; IASM-NEXT: .byte 0x46 | |
546 ; IASM-NEXT: .byte 0x1 | |
547 ; IASM-NEXT: .byte 0x10 | |
548 ; IASM-NEXT: .byte 0x1 | |
549 ; IASM-NEXT: .byte 0x0 | |
550 ; IASM-NEXT: .byte 0x1 | |
551 ; IASM-NEXT: .byte 0x0 | |
552 ; IASM-NEXT: .byte 0x42 | |
553 ; IASM-NEXT: .byte 0x30 | |
554 ; IASM-NEXT: .byte 0x8 | |
555 ; IASM-NEXT: .byte 0x0 | |
556 ; IASM-NEXT: .byte 0xe0 | |
557 ; IASM-NEXT: .byte 0x3 | |
558 | |
559 define internal i32 @fcmpOrdFloat(float %a, float %b) { | |
560 entry: | |
561 %cmp = fcmp ord float %a, %b | |
562 %cmp.ret_ext = zext i1 %cmp to i32 | |
563 ret i32 %cmp.ret_ext | |
564 } | |
565 | |
566 ; ASM-LABEL: fcmpOrdFloat: | |
567 ; ASM-NEXT: .LfcmpOrdFloat$entry: | |
568 ; ASM-NEXT: c.un.s $f12, $f14 | |
569 ; ASM-NEXT: movt $v0, $zero, $fcc0 | |
570 ; ASM-NEXT: andi $v0, $v0, 1 | |
571 ; ASM-NEXT: jr $ra | |
572 | |
573 ; DIS-LABEL: 000001a0 <fcmpOrdFloat>: | |
574 ; DIS-NEXT: 1a0: 460e6031 c.un.s $f12,$f14 | |
575 ; DIS-NEXT: 1a4: 00011001 movt v0,zero,$fcc0 | |
576 ; DIS-NEXT: 1a8: 30420001 andi v0,v0,0x1 | |
577 ; DIS-NEXT: 1ac: 03e00008 jr ra | |
578 | |
579 ; IASM-LABEL: fcmpOrdFloat: | |
580 ; IASM-NEXT: .LfcmpOrdFloat$entry: | |
581 ; IASM-NEXT: .byte 0x31 | |
582 ; IASM-NEXT: .byte 0x60 | |
583 ; IASM-NEXT: .byte 0xe | |
584 ; IASM-NEXT: .byte 0x46 | |
585 ; IASM-NEXT: .byte 0x1 | |
586 ; IASM-NEXT: .byte 0x10 | |
587 ; IASM-NEXT: .byte 0x1 | |
588 ; IASM-NEXT: .byte 0x0 | |
589 ; IASM-NEXT: .byte 0x1 | |
590 ; IASM-NEXT: .byte 0x0 | |
591 ; IASM-NEXT: .byte 0x42 | |
592 ; IASM-NEXT: .byte 0x30 | |
593 ; IASM-NEXT: .byte 0x8 | |
594 ; IASM-NEXT: .byte 0x0 | |
595 ; IASM-NEXT: .byte 0xe0 | |
596 ; IASM-NEXT: .byte 0x3 | |
597 | |
598 define internal i32 @fcmpOrdDouble(double %a, double %b) { | |
599 entry: | |
600 %cmp = fcmp ord double %a, %b | |
601 %cmp.ret_ext = zext i1 %cmp to i32 | |
602 ret i32 %cmp.ret_ext | |
603 } | |
604 | |
605 ; ASM-LABEL: fcmpOrdDouble: | |
606 ; ASM-NEXT: .LfcmpOrdDouble$entry: | |
607 ; ASM-NEXT: c.un.d $f12, $f14 | |
608 ; ASM-NEXT: movt $v0, $zero, $fcc0 | |
609 ; ASM-NEXT: andi $v0, $v0, 1 | |
610 ; ASM-NEXT: jr $ra | |
611 | |
612 ; DIS-LABEL: 000001c0 <fcmpOrdDouble>: | |
613 ; DIS-NEXT: 1c0: 462e6031 c.un.d $f12,$f14 | |
614 ; DIS-NEXT: 1c4: 00011001 movt v0,zero,$fcc0 | |
615 ; DIS-NEXT: 1c8: 30420001 andi v0,v0,0x1 | |
616 ; DIS-NEXT: 1cc: 03e00008 jr ra | |
617 | |
618 ; IASM-LABEL: fcmpOrdDouble: | |
619 ; IASM-NEXT: .LfcmpOrdDouble$entry: | |
620 ; IASM-NEXT: .byte 0x31 | |
621 ; IASM-NEXT: .byte 0x60 | |
622 ; IASM-NEXT: .byte 0x2e | |
623 ; IASM-NEXT: .byte 0x46 | |
624 ; IASM-NEXT: .byte 0x1 | |
625 ; IASM-NEXT: .byte 0x10 | |
626 ; IASM-NEXT: .byte 0x1 | |
627 ; IASM-NEXT: .byte 0x0 | |
628 ; IASM-NEXT: .byte 0x1 | |
629 ; IASM-NEXT: .byte 0x0 | |
630 ; IASM-NEXT: .byte 0x42 | |
631 ; IASM-NEXT: .byte 0x30 | |
632 ; IASM-NEXT: .byte 0x8 | |
633 ; IASM-NEXT: .byte 0x0 | |
634 ; IASM-NEXT: .byte 0xe0 | |
635 ; IASM-NEXT: .byte 0x3 | |
636 | |
637 define internal i32 @fcmpUeqFloat(float %a, float %b) { | |
638 entry: | |
639 %cmp = fcmp ueq float %a, %b | |
640 %cmp.ret_ext = zext i1 %cmp to i32 | |
641 ret i32 %cmp.ret_ext | |
642 } | |
643 | |
644 ; ASM-LABEL: fcmpUeqFloat | |
645 ; ASM-NEXT: .LfcmpUeqFloat$entry: | |
646 ; ASM-NEXT: c.ueq.s $f12, $f14 | |
647 ; ASM-NEXT: movf $v0, $zero, $fcc0 | |
648 ; ASM-NEXT: andi $v0, $v0, 1 | |
649 ; ASM-NEXT: jr $ra | |
650 | |
651 ; DIS-LABEL: 000001e0 <fcmpUeqFloat>: | |
652 ; DIS-NEXT: 1e0: 460e6033 c.ueq.s $f12,$f14 | |
653 ; DIS-NEXT: 1e4: 00001001 movf v0,zero,$fcc0 | |
654 ; DIS-NEXT: 1e8: 30420001 andi v0,v0,0x1 | |
655 ; DIS-NEXT: 1ec: 03e00008 jr ra | |
656 | |
657 ; IASM-LABEL: fcmpUeqFloat: | |
658 ; IASM-NEXT: .LfcmpUeqFloat$entry: | |
659 ; IASM-NEXT: .byte 0x33 | |
660 ; IASM-NEXT: .byte 0x60 | |
661 ; IASM-NEXT: .byte 0xe | |
662 ; IASM-NEXT: .byte 0x46 | |
663 ; IASM-NEXT: .byte 0x1 | |
664 ; IASM-NEXT: .byte 0x10 | |
665 ; IASM-NEXT: .byte 0x0 | |
666 ; IASM-NEXT: .byte 0x0 | |
667 ; IASM-NEXT: .byte 0x1 | |
668 ; IASM-NEXT: .byte 0x0 | |
669 ; IASM-NEXT: .byte 0x42 | |
670 ; IASM-NEXT: .byte 0x30 | |
671 ; IASM-NEXT: .byte 0x8 | |
672 ; IASM-NEXT: .byte 0x0 | |
673 ; IASM-NEXT: .byte 0xe0 | |
674 ; IASM-NEXT: .byte 0x3 | |
675 | |
676 define internal i32 @fcmpUeqDouble(double %a, double %b) { | |
677 entry: | |
678 %cmp = fcmp ueq double %a, %b | |
679 %cmp.ret_ext = zext i1 %cmp to i32 | |
680 ret i32 %cmp.ret_ext | |
681 } | |
682 | |
683 ; ASM-LABEL: fcmpUeqDouble | |
684 ; ASM-NEXT: .LfcmpUeqDouble$entry: | |
685 ; ASM-NEXT: c.ueq.d $f12, $f14 | |
686 ; ASM-NEXT: movf $v0, $zero, $fcc0 | |
687 ; ASM-NEXT: andi $v0, $v0, 1 | |
688 ; ASM-NEXT: jr $ra | |
689 | |
690 ; DIS-LABEL: 00000200 <fcmpUeqDouble>: | |
691 ; DIS-NEXT: 200: 462e6033 c.ueq.d $f12,$f14 | |
692 ; DIS-NEXT: 204: 00001001 movf v0,zero,$fcc0 | |
693 ; DIS-NEXT: 208: 30420001 andi v0,v0,0x1 | |
694 ; DIS-NEXT: 20c: 03e00008 jr ra | |
695 | |
696 ; IASM-LABEL: fcmpUeqDouble: | |
697 ; IASM-NEXT: .LfcmpUeqDouble$entry: | |
698 ; IASM-NEXT: .byte 0x33 | |
699 ; IASM-NEXT: .byte 0x60 | |
700 ; IASM-NEXT: .byte 0x2e | |
701 ; IASM-NEXT: .byte 0x46 | |
702 ; IASM-NEXT: .byte 0x1 | |
703 ; IASM-NEXT: .byte 0x10 | |
704 ; IASM-NEXT: .byte 0x0 | |
705 ; IASM-NEXT: .byte 0x0 | |
706 ; IASM-NEXT: .byte 0x1 | |
707 ; IASM-NEXT: .byte 0x0 | |
708 ; IASM-NEXT: .byte 0x42 | |
709 ; IASM-NEXT: .byte 0x30 | |
710 ; IASM-NEXT: .byte 0x8 | |
711 ; IASM-NEXT: .byte 0x0 | |
712 ; IASM-NEXT: .byte 0xe0 | |
713 ; IASM-NEXT: .byte 0x3 | |
714 | |
715 define internal i32 @fcmpUgtFloat(float %a, float %b) { | |
716 entry: | |
717 %cmp = fcmp ugt float %a, %b | |
718 %cmp.ret_ext = zext i1 %cmp to i32 | |
719 ret i32 %cmp.ret_ext | |
720 } | |
721 | |
722 ; ASM-LABEL: fcmpUgtFloat | |
723 ; ASM-NEXT: .LfcmpUgtFloat$entry: | |
724 ; ASM-NEXT: c.ole.s $f12, $f14 | |
725 ; ASM-NEXT: movt $v0, $zero, $fcc0 | |
726 ; ASM-NEXT: andi $v0, $v0, 1 | |
727 ; ASM-NEXT: jr $ra | |
728 | |
729 ; DIS-LABEL: 00000220 <fcmpUgtFloat>: | |
730 ; DIS-NEXT: 220: 460e6036 c.ole.s $f12,$f14 | |
731 ; DIS-NEXT: 224: 00011001 movt v0,zero,$fcc0 | |
732 ; DIS-NEXT: 228: 30420001 andi v0,v0,0x1 | |
733 ; DIS-NEXT: 22c: 03e00008 jr ra | |
734 | |
735 ; IASM-LABEL: fcmpUgtFloat: | |
736 ; IASM-NEXT: .LfcmpUgtFloat$entry: | |
737 ; IASM-NEXT: .byte 0x36 | |
738 ; IASM-NEXT: .byte 0x60 | |
739 ; IASM-NEXT: .byte 0xe | |
740 ; IASM-NEXT: .byte 0x46 | |
741 ; IASM-NEXT: .byte 0x1 | |
742 ; IASM-NEXT: .byte 0x10 | |
743 ; IASM-NEXT: .byte 0x1 | |
744 ; IASM-NEXT: .byte 0x0 | |
745 ; IASM-NEXT: .byte 0x1 | |
746 ; IASM-NEXT: .byte 0x0 | |
747 ; IASM-NEXT: .byte 0x42 | |
748 ; IASM-NEXT: .byte 0x30 | |
749 ; IASM-NEXT: .byte 0x8 | |
750 ; IASM-NEXT: .byte 0x0 | |
751 ; IASM-NEXT: .byte 0xe0 | |
752 ; IASM-NEXT: .byte 0x3 | |
753 | |
754 define internal i32 @fcmpUgtDouble(double %a, double %b) { | |
755 entry: | |
756 %cmp = fcmp ugt double %a, %b | |
757 %cmp.ret_ext = zext i1 %cmp to i32 | |
758 ret i32 %cmp.ret_ext | |
759 } | |
760 | |
761 ; ASM-LABEL: fcmpUgtDouble | |
762 ; ASM-NEXT: .LfcmpUgtDouble$entry: | |
763 ; ASM-NEXT: c.ole.d $f12, $f14 | |
764 ; ASM-NEXT: movt $v0, $zero, $fcc0 | |
765 ; ASM-NEXT: andi $v0, $v0, 1 | |
766 ; ASM-NEXT: jr $ra | |
767 | |
768 ; DIS-LABEL: 00000240 <fcmpUgtDouble>: | |
769 ; DIS-NEXT: 240: 462e6036 c.ole.d $f12,$f14 | |
770 ; DIS-NEXT: 244: 00011001 movt v0,zero,$fcc0 | |
771 ; DIS-NEXT: 248: 30420001 andi v0,v0,0x1 | |
772 ; DIS-NEXT: 24c: 03e00008 jr ra | |
773 | |
774 ; IASM-LABEL: fcmpUgtDouble: | |
775 ; IASM-NEXT: .LfcmpUgtDouble$entry: | |
776 ; IASM-NEXT: .byte 0x36 | |
777 ; IASM-NEXT: .byte 0x60 | |
778 ; IASM-NEXT: .byte 0x2e | |
779 ; IASM-NEXT: .byte 0x46 | |
780 ; IASM-NEXT: .byte 0x1 | |
781 ; IASM-NEXT: .byte 0x10 | |
782 ; IASM-NEXT: .byte 0x1 | |
783 ; IASM-NEXT: .byte 0x0 | |
784 ; IASM-NEXT: .byte 0x1 | |
785 ; IASM-NEXT: .byte 0x0 | |
786 ; IASM-NEXT: .byte 0x42 | |
787 ; IASM-NEXT: .byte 0x30 | |
788 ; IASM-NEXT: .byte 0x8 | |
789 ; IASM-NEXT: .byte 0x0 | |
790 ; IASM-NEXT: .byte 0xe0 | |
791 ; IASM-NEXT: .byte 0x3 | |
792 | |
793 define internal i32 @fcmpUgeFloat(float %a, float %b) { | |
794 entry: | |
795 %cmp = fcmp uge float %a, %b | |
796 %cmp.ret_ext = zext i1 %cmp to i32 | |
797 ret i32 %cmp.ret_ext | |
798 } | |
799 | |
800 ; ASM-LABEL: fcmpUgeFloat | |
801 ; ASM-NEXT: .LfcmpUgeFloat$entry: | |
802 ; ASM-NEXT: c.olt.s $f12, $f14 | |
803 ; ASM-NEXT: movt $v0, $zero, $fcc0 | |
804 ; ASM-NEXT: andi $v0, $v0, 1 | |
805 ; ASM-NEXT: jr $ra | |
806 | |
807 ; DIS-LABEL: 00000260 <fcmpUgeFloat>: | |
808 ; DIS-NEXT: 260: 460e6034 c.olt.s $f12,$f14 | |
809 ; DIS-NEXT: 264: 00011001 movt v0,zero,$fcc0 | |
810 ; DIS-NEXT: 268: 30420001 andi v0,v0,0x1 | |
811 ; DIS-NEXT: 26c: 03e00008 jr ra | |
812 | |
813 ; IASM-LABEL: fcmpUgeFloat: | |
814 ; IASM-NEXT: .LfcmpUgeFloat$entry: | |
815 ; IASM-NEXT: .byte 0x34 | |
816 ; IASM-NEXT: .byte 0x60 | |
817 ; IASM-NEXT: .byte 0xe | |
818 ; IASM-NEXT: .byte 0x46 | |
819 ; IASM-NEXT: .byte 0x1 | |
820 ; IASM-NEXT: .byte 0x10 | |
821 ; IASM-NEXT: .byte 0x1 | |
822 ; IASM-NEXT: .byte 0x0 | |
823 ; IASM-NEXT: .byte 0x1 | |
824 ; IASM-NEXT: .byte 0x0 | |
825 ; IASM-NEXT: .byte 0x42 | |
826 ; IASM-NEXT: .byte 0x30 | |
827 ; IASM-NEXT: .byte 0x8 | |
828 ; IASM-NEXT: .byte 0x0 | |
829 ; IASM-NEXT: .byte 0xe0 | |
830 ; IASM-NEXT: .byte 0x3 | |
831 | |
832 define internal i32 @fcmpUgeDouble(double %a, double %b) { | |
833 entry: | |
834 %cmp = fcmp uge double %a, %b | |
835 %cmp.ret_ext = zext i1 %cmp to i32 | |
836 ret i32 %cmp.ret_ext | |
837 } | |
838 | |
839 ; ASM-LABEL: fcmpUgeDouble | |
840 ; ASM-NEXT: .LfcmpUgeDouble$entry: | |
841 ; ASM-NEXT: c.olt.d $f12, $f14 | |
842 ; ASM-NEXT: movt $v0, $zero, $fcc0 | |
843 ; ASM-NEXT: andi $v0, $v0, 1 | |
844 ; ASM-NEXT: jr $ra | |
845 | |
846 ; DIS-LABEL: 00000280 <fcmpUgeDouble>: | |
847 ; DIS-NEXT: 280: 462e6034 c.olt.d $f12,$f14 | |
848 ; DIS-NEXT: 284: 00011001 movt v0,zero,$fcc0 | |
849 ; DIS-NEXT: 288: 30420001 andi v0,v0,0x1 | |
850 ; DIS-NEXT: 28c: 03e00008 jr ra | |
851 | |
852 ; IASM-LABEL: fcmpUgeDouble: | |
853 ; IASM-NEXT: .LfcmpUgeDouble$entry: | |
854 ; IASM-NEXT: .byte 0x34 | |
855 ; IASM-NEXT: .byte 0x60 | |
856 ; IASM-NEXT: .byte 0x2e | |
857 ; IASM-NEXT: .byte 0x46 | |
858 ; IASM-NEXT: .byte 0x1 | |
859 ; IASM-NEXT: .byte 0x10 | |
860 ; IASM-NEXT: .byte 0x1 | |
861 ; IASM-NEXT: .byte 0x0 | |
862 ; IASM-NEXT: .byte 0x1 | |
863 ; IASM-NEXT: .byte 0x0 | |
864 ; IASM-NEXT: .byte 0x42 | |
865 ; IASM-NEXT: .byte 0x30 | |
866 ; IASM-NEXT: .byte 0x8 | |
867 ; IASM-NEXT: .byte 0x0 | |
868 ; IASM-NEXT: .byte 0xe0 | |
869 ; IASM-NEXT: .byte 0x3 | |
870 | |
871 define internal i32 @fcmpUltFloat(float %a, float %b) { | |
872 entry: | |
873 %cmp = fcmp ult float %a, %b | |
874 %cmp.ret_ext = zext i1 %cmp to i32 | |
875 ret i32 %cmp.ret_ext | |
876 } | |
877 | |
878 ; ASM-LABEL: fcmpUltFloat | |
879 ; ASM-NEXT: .LfcmpUltFloat$entry: | |
880 ; ASM-NEXT: c.ult.s $f12, $f14 | |
881 ; ASM-NEXT: movf $v0, $zero, $fcc0 | |
882 ; ASM-NEXT: andi $v0, $v0, 1 | |
883 ; ASM-NEXT: jr $ra | |
884 | |
885 ; DIS-LABEL: 000002a0 <fcmpUltFloat>: | |
886 ; DIS-NEXT: 2a0: 460e6035 c.ult.s $f12,$f14 | |
887 ; DIS-NEXT: 2a4: 00001001 movf v0,zero,$fcc0 | |
888 ; DIS-NEXT: 2a8: 30420001 andi v0,v0,0x1 | |
889 ; DIS-NEXT: 2ac: 03e00008 jr ra | |
890 | |
891 ; IASM-LABEL: fcmpUltFloat: | |
892 ; IASM-NEXT: .LfcmpUltFloat$entry: | |
893 ; IASM-NEXT: .byte 0x35 | |
894 ; IASM-NEXT: .byte 0x60 | |
895 ; IASM-NEXT: .byte 0xe | |
896 ; IASM-NEXT: .byte 0x46 | |
897 ; IASM-NEXT: .byte 0x1 | |
898 ; IASM-NEXT: .byte 0x10 | |
899 ; IASM-NEXT: .byte 0x0 | |
900 ; IASM-NEXT: .byte 0x0 | |
901 ; IASM-NEXT: .byte 0x1 | |
902 ; IASM-NEXT: .byte 0x0 | |
903 ; IASM-NEXT: .byte 0x42 | |
904 ; IASM-NEXT: .byte 0x30 | |
905 ; IASM-NEXT: .byte 0x8 | |
906 ; IASM-NEXT: .byte 0x0 | |
907 ; IASM-NEXT: .byte 0xe0 | |
908 ; IASM-NEXT: .byte 0x3 | |
909 | |
910 define internal i32 @fcmpUltDouble(double %a, double %b) { | |
911 entry: | |
912 %cmp = fcmp ult double %a, %b | |
913 %cmp.ret_ext = zext i1 %cmp to i32 | |
914 ret i32 %cmp.ret_ext | |
915 } | |
916 | |
917 ; ASM-LABEL: fcmpUltDouble | |
918 ; ASM-NEXT: .LfcmpUltDouble$entry: | |
919 ; ASM-NEXT: c.ult.d $f12, $f14 | |
920 ; ASM-NEXT: movf $v0, $zero, $fcc0 | |
921 ; ASM-NEXT: andi $v0, $v0, 1 | |
922 ; ASM-NEXT: jr $ra | |
923 | |
924 ; DIS-LABEL: 000002c0 <fcmpUltDouble>: | |
925 ; DIS-NEXT: 2c0: 462e6035 c.ult.d $f12,$f14 | |
926 ; DIS-NEXT: 2c4: 00001001 movf v0,zero,$fcc0 | |
927 ; DIS-NEXT: 2c8: 30420001 andi v0,v0,0x1 | |
928 ; DIS-NEXT: 2cc: 03e00008 jr ra | |
929 | |
930 ; IASM-LABEL: fcmpUltDouble: | |
931 ; IASM-NEXT: .LfcmpUltDouble$entry: | |
932 ; IASM-NEXT: .byte 0x35 | |
933 ; IASM-NEXT: .byte 0x60 | |
934 ; IASM-NEXT: .byte 0x2e | |
935 ; IASM-NEXT: .byte 0x46 | |
936 ; IASM-NEXT: .byte 0x1 | |
937 ; IASM-NEXT: .byte 0x10 | |
938 ; IASM-NEXT: .byte 0x0 | |
939 ; IASM-NEXT: .byte 0x0 | |
940 ; IASM-NEXT: .byte 0x1 | |
941 ; IASM-NEXT: .byte 0x0 | |
942 ; IASM-NEXT: .byte 0x42 | |
943 ; IASM-NEXT: .byte 0x30 | |
944 ; IASM-NEXT: .byte 0x8 | |
945 ; IASM-NEXT: .byte 0x0 | |
946 ; IASM-NEXT: .byte 0xe0 | |
947 ; IASM-NEXT: .byte 0x3 | |
948 | |
949 define internal i32 @fcmpUleFloat(float %a, float %b) { | |
950 entry: | |
951 %cmp = fcmp ule float %a, %b | |
952 %cmp.ret_ext = zext i1 %cmp to i32 | |
953 ret i32 %cmp.ret_ext | |
954 } | |
955 | |
956 ; ASM-LABEL: fcmpUleFloat | |
957 ; ASM-NEXT: .LfcmpUleFloat$entry: | |
958 ; ASM-NEXT: c.ule.s $f12, $f14 | |
959 ; ASM-NEXT: movf $v0, $zero, $fcc0 | |
960 ; ASM-NEXT: andi $v0, $v0, 1 | |
961 ; ASM-NEXT: jr $ra | |
962 | |
963 ; DIS-LABEL: 000002e0 <fcmpUleFloat>: | |
964 ; DIS-NEXT: 2e0: 460e6037 c.ule.s $f12,$f14 | |
965 ; DIS-NEXT: 2e4: 00001001 movf v0,zero,$fcc0 | |
966 ; DIS-NEXT: 2e8: 30420001 andi v0,v0,0x1 | |
967 ; DIS-NEXT: 2ec: 03e00008 jr ra | |
968 | |
969 ; IASM-LABEL: fcmpUleFloat: | |
970 ; IASM-NEXT: .LfcmpUleFloat$entry: | |
971 ; IASM-NEXT: .byte 0x37 | |
972 ; IASM-NEXT: .byte 0x60 | |
973 ; IASM-NEXT: .byte 0xe | |
974 ; IASM-NEXT: .byte 0x46 | |
975 ; IASM-NEXT: .byte 0x1 | |
976 ; IASM-NEXT: .byte 0x10 | |
977 ; IASM-NEXT: .byte 0x0 | |
978 ; IASM-NEXT: .byte 0x0 | |
979 ; IASM-NEXT: .byte 0x1 | |
980 ; IASM-NEXT: .byte 0x0 | |
981 ; IASM-NEXT: .byte 0x42 | |
982 ; IASM-NEXT: .byte 0x30 | |
983 ; IASM-NEXT: .byte 0x8 | |
984 ; IASM-NEXT: .byte 0x0 | |
985 ; IASM-NEXT: .byte 0xe0 | |
986 ; IASM-NEXT: .byte 0x3 | |
987 | |
988 define internal i32 @fcmpUleDouble(double %a, double %b) { | |
989 entry: | |
990 %cmp = fcmp ule double %a, %b | |
991 %cmp.ret_ext = zext i1 %cmp to i32 | |
992 ret i32 %cmp.ret_ext | |
993 } | |
994 | |
995 ; ASM-LABEL: fcmpUleDouble | |
996 ; ASM-NEXT: .LfcmpUleDouble$entry: | |
997 ; ASM-NEXT: c.ule.d $f12, $f14 | |
998 ; ASM-NEXT: movf $v0, $zero, $fcc0 | |
999 ; ASM-NEXT: andi $v0, $v0, 1 | |
1000 ; ASM-NEXT: jr $ra | |
1001 | |
1002 ; DIS-LABEL: 00000300 <fcmpUleDouble>: | |
1003 ; DIS-NEXT: 300: 462e6037 c.ule.d $f12,$f14 | |
1004 ; DIS-NEXT: 304: 00001001 movf v0,zero,$fcc0 | |
1005 ; DIS-NEXT: 308: 30420001 andi v0,v0,0x1 | |
1006 ; DIS-NEXT: 30c: 03e00008 jr ra | |
1007 | |
1008 ; IASM-LABEL: fcmpUleDouble: | |
1009 ; IASM-NEXT: .LfcmpUleDouble$entry: | |
1010 ; IASM-NEXT: .byte 0x37 | |
1011 ; IASM-NEXT: .byte 0x60 | |
1012 ; IASM-NEXT: .byte 0x2e | |
1013 ; IASM-NEXT: .byte 0x46 | |
1014 ; IASM-NEXT: .byte 0x1 | |
1015 ; IASM-NEXT: .byte 0x10 | |
1016 ; IASM-NEXT: .byte 0x0 | |
1017 ; IASM-NEXT: .byte 0x0 | |
1018 ; IASM-NEXT: .byte 0x1 | |
1019 ; IASM-NEXT: .byte 0x0 | |
1020 ; IASM-NEXT: .byte 0x42 | |
1021 ; IASM-NEXT: .byte 0x30 | |
1022 ; IASM-NEXT: .byte 0x8 | |
1023 ; IASM-NEXT: .byte 0x0 | |
1024 ; IASM-NEXT: .byte 0xe0 | |
1025 ; IASM-NEXT: .byte 0x3 | |
1026 | |
1027 define internal i32 @fcmpUneFloat(float %a, float %b) { | |
1028 entry: | |
1029 %cmp = fcmp une float %a, %b | |
1030 %cmp.ret_ext = zext i1 %cmp to i32 | |
1031 ret i32 %cmp.ret_ext | |
1032 } | |
1033 | |
1034 ; ASM-LABEL: fcmpUneFloat | |
1035 ; ASM-NEXT: .LfcmpUneFloat$entry: | |
1036 ; ASM-NEXT: c.eq.s $f12, $f14 | |
1037 ; ASM-NEXT: movt $v0, $zero, $fcc0 | |
1038 ; ASM-NEXT: andi $v0, $v0, 1 | |
1039 ; ASM-NEXT: jr $ra | |
1040 | |
1041 ; DIS-LABEL: 00000320 <fcmpUneFloat>: | |
1042 ; DIS-NEXT: 320: 460e6032 c.eq.s $f12,$f14 | |
1043 ; DIS-NEXT: 324: 00011001 movt v0,zero,$fcc0 | |
1044 ; DIS-NEXT: 328: 30420001 andi v0,v0,0x1 | |
1045 ; DIS-NEXT: 32c: 03e00008 jr ra | |
1046 | |
1047 ; IASM-LABEL: fcmpUneFloat: | |
1048 ; IASM-NEXT: .LfcmpUneFloat$entry: | |
1049 ; IASM-NEXT: .byte 0x32 | |
1050 ; IASM-NEXT: .byte 0x60 | |
1051 ; IASM-NEXT: .byte 0xe | |
1052 ; IASM-NEXT: .byte 0x46 | |
1053 ; IASM-NEXT: .byte 0x1 | |
1054 ; IASM-NEXT: .byte 0x10 | |
1055 ; IASM-NEXT: .byte 0x1 | |
1056 ; IASM-NEXT: .byte 0x0 | |
1057 ; IASM-NEXT: .byte 0x1 | |
1058 ; IASM-NEXT: .byte 0x0 | |
1059 ; IASM-NEXT: .byte 0x42 | |
1060 ; IASM-NEXT: .byte 0x30 | |
1061 ; IASM-NEXT: .byte 0x8 | |
1062 ; IASM-NEXT: .byte 0x0 | |
1063 ; IASM-NEXT: .byte 0xe0 | |
1064 ; IASM-NEXT: .byte 0x3 | |
1065 | |
1066 define internal i32 @fcmpUneDouble(double %a, double %b) { | |
1067 entry: | |
1068 %cmp = fcmp une double %a, %b | |
1069 %cmp.ret_ext = zext i1 %cmp to i32 | |
1070 ret i32 %cmp.ret_ext | |
1071 } | |
1072 | |
1073 ; ASM-LABEL: fcmpUneDouble | |
1074 ; ASM-NEXT: .LfcmpUneDouble$entry: | |
1075 ; ASM-NEXT: c.eq.d $f12, $f14 | |
1076 ; ASM-NEXT: movt $v0, $zero, $fcc0 | |
1077 ; ASM-NEXT: andi $v0, $v0, 1 | |
1078 ; ASM-NEXT: jr $ra | |
1079 | |
1080 ; DIS-LABEL: 00000340 <fcmpUneDouble>: | |
1081 ; DIS-NEXT: 340: 462e6032 c.eq.d $f12,$f14 | |
1082 ; DIS-NEXT: 344: 00011001 movt v0,zero,$fcc0 | |
1083 ; DIS-NEXT: 348: 30420001 andi v0,v0,0x1 | |
1084 ; DIS-NEXT: 34c: 03e00008 jr ra | |
1085 | |
1086 ; IASM-LABEL: fcmpUneDouble: | |
1087 ; IASM-NEXT: .LfcmpUneDouble$entry: | |
1088 ; IASM-NEXT: .byte 0x32 | |
1089 ; IASM-NEXT: .byte 0x60 | |
1090 ; IASM-NEXT: .byte 0x2e | |
1091 ; IASM-NEXT: .byte 0x46 | |
1092 ; IASM-NEXT: .byte 0x1 | |
1093 ; IASM-NEXT: .byte 0x10 | |
1094 ; IASM-NEXT: .byte 0x1 | |
1095 ; IASM-NEXT: .byte 0x0 | |
1096 ; IASM-NEXT: .byte 0x1 | |
1097 ; IASM-NEXT: .byte 0x0 | |
1098 ; IASM-NEXT: .byte 0x42 | |
1099 ; IASM-NEXT: .byte 0x30 | |
1100 ; IASM-NEXT: .byte 0x8 | |
1101 ; IASM-NEXT: .byte 0x0 | |
1102 ; IASM-NEXT: .byte 0xe0 | |
1103 ; IASM-NEXT: .byte 0x3 | |
1104 | |
1105 define internal i32 @fcmpUnoFloat(float %a, float %b) { | |
1106 entry: | |
1107 %cmp = fcmp uno float %a, %b | |
1108 %cmp.ret_ext = zext i1 %cmp to i32 | |
1109 ret i32 %cmp.ret_ext | |
1110 } | |
1111 | |
1112 ; ASM-LABEL: fcmpUnoFloat | |
1113 ; ASM-NEXT: .LfcmpUnoFloat$entry: | |
1114 ; ASM-NEXT: c.un.s $f12, $f14 | |
1115 ; ASM-NEXT: movf $v0, $zero, $fcc0 | |
1116 ; ASM-NEXT: andi $v0, $v0, 1 | |
1117 ; ASM-NEXT: jr $ra | |
1118 | |
1119 ; DIS-LABEL: 00000360 <fcmpUnoFloat>: | |
1120 ; DIS-NEXT: 360: 460e6031 c.un.s $f12,$f14 | |
1121 ; DIS-NEXT: 364: 00001001 movf v0,zero,$fcc0 | |
1122 ; DIS-NEXT: 368: 30420001 andi v0,v0,0x1 | |
1123 ; DIS-NEXT: 36c: 03e00008 jr ra | |
1124 | |
1125 ; IASM-LABEL: fcmpUnoFloat: | |
1126 ; IASM-NEXT: .LfcmpUnoFloat$entry: | |
1127 ; IASM-NEXT: .byte 0x31 | |
1128 ; IASM-NEXT: .byte 0x60 | |
1129 ; IASM-NEXT: .byte 0xe | |
1130 ; IASM-NEXT: .byte 0x46 | |
1131 ; IASM-NEXT: .byte 0x1 | |
1132 ; IASM-NEXT: .byte 0x10 | |
1133 ; IASM-NEXT: .byte 0x0 | |
1134 ; IASM-NEXT: .byte 0x0 | |
1135 ; IASM-NEXT: .byte 0x1 | |
1136 ; IASM-NEXT: .byte 0x0 | |
1137 ; IASM-NEXT: .byte 0x42 | |
1138 ; IASM-NEXT: .byte 0x30 | |
1139 ; IASM-NEXT: .byte 0x8 | |
1140 ; IASM-NEXT: .byte 0x0 | |
1141 ; IASM-NEXT: .byte 0xe0 | |
1142 ; IASM-NEXT: .byte 0x3 | |
1143 | |
1144 define internal i32 @fcmpUnoDouble(double %a, double %b) { | |
1145 entry: | |
1146 %cmp = fcmp uno double %a, %b | |
1147 %cmp.ret_ext = zext i1 %cmp to i32 | |
1148 ret i32 %cmp.ret_ext | |
1149 } | |
1150 | |
1151 ; ASM-LABEL: fcmpUnoDouble | |
1152 ; ASM-NEXT: .LfcmpUnoDouble$entry: | |
1153 ; ASM-NEXT: c.un.d $f12, $f14 | |
1154 ; ASM-NEXT: movf $v0, $zero, $fcc0 | |
1155 ; ASM-NEXT: andi $v0, $v0, 1 | |
1156 ; ASM-NEXT: jr $ra | |
1157 | |
1158 ; DIS-LABEL: 00000380 <fcmpUnoDouble>: | |
1159 ; DIS-NEXT: 380: 462e6031 c.un.d $f12,$f14 | |
1160 ; DIS-NEXT: 384: 00001001 movf v0,zero,$fcc0 | |
1161 ; DIS-NEXT: 388: 30420001 andi v0,v0,0x1 | |
1162 ; DIS-NEXT: 38c: 03e00008 jr ra | |
1163 | |
1164 ; IASM-LABEL: fcmpUnoDouble: | |
1165 ; IASM-NEXT: .LfcmpUnoDouble$entry: | |
1166 ; IASM-NEXT: .byte 0x31 | |
1167 ; IASM-NEXT: .byte 0x60 | |
1168 ; IASM-NEXT: .byte 0x2e | |
1169 ; IASM-NEXT: .byte 0x46 | |
1170 ; IASM-NEXT: .byte 0x1 | |
1171 ; IASM-NEXT: .byte 0x10 | |
1172 ; IASM-NEXT: .byte 0x0 | |
1173 ; IASM-NEXT: .byte 0x0 | |
1174 ; IASM-NEXT: .byte 0x1 | |
1175 ; IASM-NEXT: .byte 0x0 | |
1176 ; IASM-NEXT: .byte 0x42 | |
1177 ; IASM-NEXT: .byte 0x30 | |
1178 ; IASM-NEXT: .byte 0x8 | |
1179 ; IASM-NEXT: .byte 0x0 | |
1180 ; IASM-NEXT: .byte 0xe0 | |
1181 ; IASM-NEXT: .byte 0x3 | |
1182 | |
1183 define internal i32 @fcmpTrueFloat(float %a, float %b) { | |
1184 entry: | |
1185 %cmp = fcmp true float %a, %b | |
1186 %cmp.ret_ext = zext i1 %cmp to i32 | |
1187 ret i32 %cmp.ret_ext | |
1188 } | |
1189 | |
1190 ; ASM-LABEL: fcmpTrueFloat | |
1191 ; ASM-NEXT: .LfcmpTrueFloat$entry: | |
1192 ; ASM-NEXT: addiu $v0, $zero, 1 | |
1193 ; ASM-NEXT: andi $v0, $v0, 1 | |
1194 ; ASM-NEXT: jr $ra | |
1195 | |
1196 ; DIS-LABEL: 000003a0 <fcmpTrueFloat>: | |
1197 ; DIS-NEXT: 3a0: 24020001 li v0,1 | |
1198 ; DIS-NEXT: 3a4: 30420001 andi v0,v0,0x1 | |
1199 ; DIS-NEXT: 3a8: 03e00008 jr ra | |
1200 | |
1201 ; IASM-LABEL: fcmpTrueFloat: | |
1202 ; IASM-NEXT: .LfcmpTrueFloat$entry: | |
1203 ; IASM-NEXT: .byte 0x1 | |
1204 ; IASM-NEXT: .byte 0x0 | |
1205 ; IASM-NEXT: .byte 0x2 | |
1206 ; IASM-NEXT: .byte 0x24 | |
1207 ; IASM-NEXT: .byte 0x1 | |
1208 ; IASM-NEXT: .byte 0x0 | |
1209 ; IASM-NEXT: .byte 0x42 | |
1210 ; IASM-NEXT: .byte 0x30 | |
1211 ; IASM-NEXT: .byte 0x8 | |
1212 ; IASM-NEXT: .byte 0x0 | |
1213 ; IASM-NEXT: .byte 0xe0 | |
1214 ; IASM-NEXT: .byte 0x3 | |
1215 | |
1216 define internal i32 @fcmpTrueDouble(double %a, double %b) { | |
1217 entry: | |
1218 %cmp = fcmp true double %a, %b | |
1219 %cmp.ret_ext = zext i1 %cmp to i32 | |
1220 ret i32 %cmp.ret_ext | |
1221 } | |
1222 | |
1223 ; ASM-LABEL: fcmpTrueDouble | |
1224 ; ASM-NEXT: .LfcmpTrueDouble$entry: | |
1225 ; ASM-NEXT: addiu $v0, $zero, 1 | |
1226 ; ASM-NEXT: andi $v0, $v0, 1 | |
1227 ; ASM-NEXT: jr $ra | |
1228 | |
1229 ; DIS-LABEL: 000003b0 <fcmpTrueDouble>: | |
1230 ; DIS-NEXT: 3b0: 24020001 li v0,1 | |
1231 ; DIS-NEXT: 3b4: 30420001 andi v0,v0,0x1 | |
1232 ; DIS-NEXT: 3b8: 03e00008 jr ra | |
1233 | |
1234 ; IASM-LABEL: fcmpTrueDouble: | |
1235 ; IASM-NEXT: .LfcmpTrueDouble$entry: | |
1236 ; IASM-NEXT: .byte 0x1 | |
1237 ; IASM-NEXT: .byte 0x0 | |
1238 ; IASM-NEXT: .byte 0x2 | |
1239 ; IASM-NEXT: .byte 0x24 | |
1240 ; IASM-NEXT: .byte 0x1 | |
1241 ; IASM-NEXT: .byte 0x0 | |
1242 ; IASM-NEXT: .byte 0x42 | |
1243 ; IASM-NEXT: .byte 0x30 | |
1244 ; IASM-NEXT: .byte 0x8 | |
1245 ; IASM-NEXT: .byte 0x0 | |
1246 ; IASM-NEXT: .byte 0xe0 | |
1247 ; IASM-NEXT: .byte 0x3 | |
OLD | NEW |