Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: tests_lit/assembler/mips32/encoding_test_fcmp.ll

Issue 2350833002: Subzero, MIPS32: Encoding of FP comparison instructions (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« src/IceInstMIPS32.h ('K') | « src/IceInstMIPS32.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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
OLDNEW
« src/IceInstMIPS32.h ('K') | « src/IceInstMIPS32.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698