llvm.org GIT mirror llvm / 079ac1e
[x86, SSE] update packed FP compare tests for direct translation from builtin to IR The clang side of this was r272840: http://reviews.llvm.org/rL272840 A follow-up step would be to auto-upgrade and remove these LLVM intrinsics completely. Differential Revision: http://reviews.llvm.org/D21269 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272841 91177308-0d34-0410-b5e6-96231b3b80d8 Sanjay Patel 3 years ago
3 changed file(s) with 101 addition(s) and 57 deletion(s). Raw diff Collapse all Expand all
12141214 ; X32-LABEL: test_mm_i32gather_pd:
12151215 ; X32: # BB#0:
12161216 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1217 ; X32-NEXT: vxorpd %xmm1, %xmm1, %xmm1
1218 ; X32-NEXT: vcmpeqpd %xmm1, %xmm1, %xmm2
1217 ; X32-NEXT: vpcmpeqd %xmm2, %xmm2, %xmm2
12191218 ; X32-NEXT: vgatherdpd %xmm2, (%eax,%xmm0,2), %xmm1
12201219 ; X32-NEXT: vmovapd %xmm1, %xmm0
12211220 ; X32-NEXT: retl
12221221 ;
12231222 ; X64-LABEL: test_mm_i32gather_pd:
12241223 ; X64: # BB#0:
1225 ; X64-NEXT: vxorpd %xmm1, %xmm1, %xmm1
1226 ; X64-NEXT: vcmpeqpd %xmm1, %xmm1, %xmm2
1224 ; X64-NEXT: vpcmpeqd %xmm2, %xmm2, %xmm2
12271225 ; X64-NEXT: vgatherdpd %xmm2, (%rdi,%xmm0,2), %xmm1
12281226 ; X64-NEXT: vmovapd %xmm1, %xmm0
12291227 ; X64-NEXT: retq
12301228 %arg0 = bitcast double *%a0 to i8*
12311229 %arg1 = bitcast <2 x i64> %a1 to <4 x i32>
1232 %mask = call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> zeroinitializer, <2 x double> zeroinitializer, i8 0)
1230 %cmp = fcmp oeq <2 x double> zeroinitializer, zeroinitializer
1231 %sext = sext <2 x i1> %cmp to <2 x i64>
1232 %mask = bitcast <2 x i64> %sext to <2 x double>
12331233 %res = call <2 x double> @llvm.x86.avx2.gather.d.pd(<2 x double> undef, i8* %arg0, <4 x i32> %arg1, <2 x double> %mask, i8 2)
12341234 ret <2 x double> %res
12351235 }
12981298 ; X32-LABEL: test_mm_i32gather_ps:
12991299 ; X32: # BB#0:
13001300 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1301 ; X32-NEXT: vxorps %xmm1, %xmm1, %xmm1
1302 ; X32-NEXT: vcmpeqps %xmm1, %xmm1, %xmm2
1301 ; X32-NEXT: vpcmpeqd %xmm2, %xmm2, %xmm2
13031302 ; X32-NEXT: vgatherdps %xmm2, (%eax,%xmm0,2), %xmm1
13041303 ; X32-NEXT: vmovaps %xmm1, %xmm0
13051304 ; X32-NEXT: retl
13061305 ;
13071306 ; X64-LABEL: test_mm_i32gather_ps:
13081307 ; X64: # BB#0:
1309 ; X64-NEXT: vxorps %xmm1, %xmm1, %xmm1
1310 ; X64-NEXT: vcmpeqps %xmm1, %xmm1, %xmm2
1308 ; X64-NEXT: vpcmpeqd %xmm2, %xmm2, %xmm2
13111309 ; X64-NEXT: vgatherdps %xmm2, (%rdi,%xmm0,2), %xmm1
13121310 ; X64-NEXT: vmovaps %xmm1, %xmm0
13131311 ; X64-NEXT: retq
13141312 %arg0 = bitcast float *%a0 to i8*
13151313 %arg1 = bitcast <2 x i64> %a1 to <4 x i32>
1316 %mask = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> zeroinitializer, <4 x float> zeroinitializer, i8 0)
1314 %cmp = fcmp oeq <4 x float> zeroinitializer, zeroinitializer
1315 %sext = sext <4 x i1> %cmp to <4 x i32>
1316 %mask = bitcast <4 x i32> %sext to <4 x float>
13171317 %call = call <4 x float> @llvm.x86.avx2.gather.d.ps(<4 x float> undef, i8* %arg0, <4 x i32> %arg1, <4 x float> %mask, i8 2)
13181318 ret <4 x float> %call
13191319 }
15441544 ; X32-LABEL: test_mm_i64gather_pd:
15451545 ; X32: # BB#0:
15461546 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1547 ; X32-NEXT: vxorpd %xmm1, %xmm1, %xmm1
1548 ; X32-NEXT: vcmpeqpd %xmm1, %xmm1, %xmm2
1547 ; X32-NEXT: vpcmpeqd %xmm2, %xmm2, %xmm2
15491548 ; X32-NEXT: vgatherqpd %xmm2, (%eax,%xmm0,2), %xmm1
15501549 ; X32-NEXT: vmovapd %xmm1, %xmm0
15511550 ; X32-NEXT: retl
15521551 ;
15531552 ; X64-LABEL: test_mm_i64gather_pd:
15541553 ; X64: # BB#0:
1555 ; X64-NEXT: vxorpd %xmm1, %xmm1, %xmm1
1556 ; X64-NEXT: vcmpeqpd %xmm1, %xmm1, %xmm2
1554 ; X64-NEXT: vpcmpeqd %xmm2, %xmm2, %xmm2
15571555 ; X64-NEXT: vgatherqpd %xmm2, (%rdi,%xmm0,2), %xmm1
15581556 ; X64-NEXT: vmovapd %xmm1, %xmm0
15591557 ; X64-NEXT: retq
15601558 %arg0 = bitcast double *%a0 to i8*
1561 %mask = call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> zeroinitializer, <2 x double> zeroinitializer, i8 0)
1559 %cmp = fcmp oeq <2 x double> zeroinitializer, zeroinitializer
1560 %sext = sext <2 x i1> %cmp to <2 x i64>
1561 %mask = bitcast <2 x i64> %sext to <2 x double>
15621562 %call = call <2 x double> @llvm.x86.avx2.gather.q.pd(<2 x double> undef, i8* %arg0, <2 x i64> %a1, <2 x double> %mask, i8 2)
15631563 ret <2 x double> %call
15641564 }
16241624 ; X32-LABEL: test_mm_i64gather_ps:
16251625 ; X32: # BB#0:
16261626 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1627 ; X32-NEXT: vxorps %xmm1, %xmm1, %xmm1
1628 ; X32-NEXT: vcmpeqps %xmm1, %xmm1, %xmm2
1627 ; X32-NEXT: vpcmpeqd %xmm2, %xmm2, %xmm2
16291628 ; X32-NEXT: vgatherqps %xmm2, (%eax,%xmm0,2), %xmm1
16301629 ; X32-NEXT: vmovaps %xmm1, %xmm0
16311630 ; X32-NEXT: retl
16321631 ;
16331632 ; X64-LABEL: test_mm_i64gather_ps:
16341633 ; X64: # BB#0:
1635 ; X64-NEXT: vxorps %xmm1, %xmm1, %xmm1
1636 ; X64-NEXT: vcmpeqps %xmm1, %xmm1, %xmm2
1634 ; X64-NEXT: vpcmpeqd %xmm2, %xmm2, %xmm2
16371635 ; X64-NEXT: vgatherqps %xmm2, (%rdi,%xmm0,2), %xmm1
16381636 ; X64-NEXT: vmovaps %xmm1, %xmm0
16391637 ; X64-NEXT: retq
16401638 %arg0 = bitcast float *%a0 to i8*
1641 %mask = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> zeroinitializer, <4 x float> zeroinitializer, i8 0)
1639 %cmp = fcmp oeq <4 x float> zeroinitializer, zeroinitializer
1640 %sext = sext <4 x i1> %cmp to <4 x i32>
1641 %mask = bitcast <4 x i32> %sext to <4 x float>
16421642 %call = call <4 x float> @llvm.x86.avx2.gather.q.ps(<4 x float> undef, i8* %arg0, <2 x i64> %a1, <4 x float> %mask, i8 2)
16431643 ret <4 x float> %call
16441644 }
16641664 ; X32-LABEL: test_mm256_i64gather_ps:
16651665 ; X32: # BB#0:
16661666 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1667 ; X32-NEXT: vxorps %xmm1, %xmm1, %xmm1
1668 ; X32-NEXT: vcmpeqps %xmm1, %xmm1, %xmm2
1667 ; X32-NEXT: vpcmpeqd %xmm2, %xmm2, %xmm2
16691668 ; X32-NEXT: vgatherqps %xmm2, (%eax,%ymm0,2), %xmm1
16701669 ; X32-NEXT: vmovaps %xmm1, %xmm0
16711670 ; X32-NEXT: vzeroupper
16731672 ;
16741673 ; X64-LABEL: test_mm256_i64gather_ps:
16751674 ; X64: # BB#0:
1676 ; X64-NEXT: vxorps %xmm1, %xmm1, %xmm1
1677 ; X64-NEXT: vcmpeqps %xmm1, %xmm1, %xmm2
1675 ; X64-NEXT: vpcmpeqd %xmm2, %xmm2, %xmm2
16781676 ; X64-NEXT: vgatherqps %xmm2, (%rdi,%ymm0,2), %xmm1
16791677 ; X64-NEXT: vmovaps %xmm1, %xmm0
16801678 ; X64-NEXT: vzeroupper
16811679 ; X64-NEXT: retq
16821680 %arg0 = bitcast float *%a0 to i8*
1683 %mask = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> zeroinitializer, <4 x float> zeroinitializer, i8 0)
1681 %cmp = fcmp oeq <4 x float> zeroinitializer, zeroinitializer
1682 %sext = sext <4 x i1> %cmp to <4 x i32>
1683 %mask = bitcast <4 x i32> %sext to <4 x float>
16841684 %call = call <4 x float> @llvm.x86.avx2.gather.q.ps.256(<4 x float> undef, i8* %arg0, <4 x i64> %a1, <4 x float> %mask, i8 2)
16851685 ret <4 x float> %call
16861686 }
33603360 ret <4 x i64> %res
33613361 }
33623362
3363 declare <4 x float> @llvm.x86.sse.cmp.ps(<4 x float>, <4 x float>, i8) nounwind readnone
33643363 declare <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float>, <8 x float>, i8) nounwind readnone
33653364
3366 declare <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double>, <2 x double>, i8) nounwind readnone
33673365 declare <4 x double> @llvm.x86.avx.cmp.pd.256(<4 x double>, <4 x double>, i8) nounwind readnone
195195 ; X64: # BB#0:
196196 ; X64-NEXT: cmpeqps %xmm1, %xmm0
197197 ; X64-NEXT: retq
198 %res = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %a0, <4 x float> %a1, i8 0)
199 ret <4 x float> %res
200 }
201 declare <4 x float> @llvm.x86.sse.cmp.ps(<4 x float>, <4 x float>, i8) nounwind readnone
198 %cmp = fcmp oeq <4 x float> %a0, %a1
199 %sext = sext <4 x i1> %cmp to <4 x i32>
200 %res = bitcast <4 x i32> %sext to <4 x float>
201 ret <4 x float> %res
202 }
202203
203204 define <4 x float> @test_mm_cmpeq_ss(<4 x float> %a0, <4 x float> %a1) nounwind {
204205 ; X32-LABEL: test_mm_cmpeq_ss:
227228 ; X64-NEXT: cmpleps %xmm0, %xmm1
228229 ; X64-NEXT: movaps %xmm1, %xmm0
229230 ; X64-NEXT: retq
230 %res = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %a1, <4 x float> %a0, i8 2)
231 %cmp = fcmp ole <4 x float> %a1, %a0
232 %sext = sext <4 x i1> %cmp to <4 x i32>
233 %res = bitcast <4 x i32> %sext to <4 x float>
231234 ret <4 x float> %res
232235 }
233236
260263 ; X64-NEXT: cmpltps %xmm0, %xmm1
261264 ; X64-NEXT: movaps %xmm1, %xmm0
262265 ; X64-NEXT: retq
263 %res = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %a1, <4 x float> %a0, i8 1)
266 %cmp = fcmp olt <4 x float> %a1, %a0
267 %sext = sext <4 x i1> %cmp to <4 x i32>
268 %res = bitcast <4 x i32> %sext to <4 x float>
264269 ret <4 x float> %res
265270 }
266271
291296 ; X64: # BB#0:
292297 ; X64-NEXT: cmpleps %xmm1, %xmm0
293298 ; X64-NEXT: retq
294 %res = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %a0, <4 x float> %a1, i8 2)
299 %cmp = fcmp ole <4 x float> %a0, %a1
300 %sext = sext <4 x i1> %cmp to <4 x i32>
301 %res = bitcast <4 x i32> %sext to <4 x float>
295302 ret <4 x float> %res
296303 }
297304
319326 ; X64: # BB#0:
320327 ; X64-NEXT: cmpltps %xmm1, %xmm0
321328 ; X64-NEXT: retq
322 %res = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %a0, <4 x float> %a1, i8 1)
329 %cmp = fcmp olt <4 x float> %a0, %a1
330 %sext = sext <4 x i1> %cmp to <4 x i32>
331 %res = bitcast <4 x i32> %sext to <4 x float>
323332 ret <4 x float> %res
324333 }
325334
347356 ; X64: # BB#0:
348357 ; X64-NEXT: cmpneqps %xmm1, %xmm0
349358 ; X64-NEXT: retq
350 %res = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %a0, <4 x float> %a1, i8 4)
359 %cmp = fcmp une <4 x float> %a0, %a1
360 %sext = sext <4 x i1> %cmp to <4 x i32>
361 %res = bitcast <4 x i32> %sext to <4 x float>
351362 ret <4 x float> %res
352363 }
353364
377388 ; X64-NEXT: cmpnleps %xmm0, %xmm1
378389 ; X64-NEXT: movaps %xmm1, %xmm0
379390 ; X64-NEXT: retq
380 %res = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %a1, <4 x float> %a0, i8 6)
391 %cmp = fcmp ugt <4 x float> %a1, %a0
392 %sext = sext <4 x i1> %cmp to <4 x i32>
393 %res = bitcast <4 x i32> %sext to <4 x float>
381394 ret <4 x float> %res
382395 }
383396
410423 ; X64-NEXT: cmpnltps %xmm0, %xmm1
411424 ; X64-NEXT: movaps %xmm1, %xmm0
412425 ; X64-NEXT: retq
413 %res = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %a1, <4 x float> %a0, i8 5)
426 %cmp = fcmp uge <4 x float> %a1, %a0
427 %sext = sext <4 x i1> %cmp to <4 x i32>
428 %res = bitcast <4 x i32> %sext to <4 x float>
414429 ret <4 x float> %res
415430 }
416431
441456 ; X64: # BB#0:
442457 ; X64-NEXT: cmpnleps %xmm1, %xmm0
443458 ; X64-NEXT: retq
444 %res = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %a0, <4 x float> %a1, i8 6)
459 %cmp = fcmp ugt <4 x float> %a0, %a1
460 %sext = sext <4 x i1> %cmp to <4 x i32>
461 %res = bitcast <4 x i32> %sext to <4 x float>
445462 ret <4 x float> %res
446463 }
447464
469486 ; X64: # BB#0:
470487 ; X64-NEXT: cmpnltps %xmm1, %xmm0
471488 ; X64-NEXT: retq
472 %res = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %a0, <4 x float> %a1, i8 5)
489 %cmp = fcmp uge <4 x float> %a0, %a1
490 %sext = sext <4 x i1> %cmp to <4 x i32>
491 %res = bitcast <4 x i32> %sext to <4 x float>
473492 ret <4 x float> %res
474493 }
475494
497516 ; X64: # BB#0:
498517 ; X64-NEXT: cmpordps %xmm1, %xmm0
499518 ; X64-NEXT: retq
500 %res = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %a0, <4 x float> %a1, i8 7)
519 %cmp = fcmp ord <4 x float> %a0, %a1
520 %sext = sext <4 x i1> %cmp to <4 x i32>
521 %res = bitcast <4 x i32> %sext to <4 x float>
501522 ret <4 x float> %res
502523 }
503524
525546 ; X64: # BB#0:
526547 ; X64-NEXT: cmpunordps %xmm1, %xmm0
527548 ; X64-NEXT: retq
528 %res = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %a0, <4 x float> %a1, i8 3)
549 %cmp = fcmp uno <4 x float> %a0, %a1
550 %sext = sext <4 x i1> %cmp to <4 x i32>
551 %res = bitcast <4 x i32> %sext to <4 x float>
529552 ret <4 x float> %res
530553 }
531554
459459 ; X64: # BB#0:
460460 ; X64-NEXT: cmpeqpd %xmm1, %xmm0
461461 ; X64-NEXT: retq
462 %res = call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %a0, <2 x double> %a1, i8 0)
463 ret <2 x double> %res
464 }
465 declare <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double>, <2 x double>, i8) nounwind readnone
462 %fcmp = fcmp oeq <2 x double> %a0, %a1
463 %sext = sext <2 x i1> %fcmp to <2 x i64>
464 %res = bitcast <2 x i64> %sext to <2 x double>
465 ret <2 x double> %res
466 }
466467
467468 define <2 x double> @test_mm_cmpeq_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
468469 ; X32-LABEL: test_mm_cmpeq_sd:
491492 ; X64-NEXT: cmplepd %xmm0, %xmm1
492493 ; X64-NEXT: movapd %xmm1, %xmm0
493494 ; X64-NEXT: retq
494 %res = call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %a1, <2 x double> %a0, i8 2)
495 %fcmp = fcmp ole <2 x double> %a1, %a0
496 %sext = sext <2 x i1> %fcmp to <2 x i64>
497 %res = bitcast <2 x i64> %sext to <2 x double>
495498 ret <2 x double> %res
496499 }
497500
581584 ; X64-NEXT: cmpltpd %xmm0, %xmm1
582585 ; X64-NEXT: movapd %xmm1, %xmm0
583586 ; X64-NEXT: retq
584 %res = call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %a1, <2 x double> %a0, i8 1)
587 %fcmp = fcmp olt <2 x double> %a1, %a0
588 %sext = sext <2 x i1> %fcmp to <2 x i64>
589 %res = bitcast <2 x i64> %sext to <2 x double>
585590 ret <2 x double> %res
586591 }
587592
615620 ; X64: # BB#0:
616621 ; X64-NEXT: cmplepd %xmm1, %xmm0
617622 ; X64-NEXT: retq
618 %res = call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %a0, <2 x double> %a1, i8 2)
623 %fcmp = fcmp ole <2 x double> %a0, %a1
624 %sext = sext <2 x i1> %fcmp to <2 x i64>
625 %res = bitcast <2 x i64> %sext to <2 x double>
619626 ret <2 x double> %res
620627 }
621628
703710 ; X64: # BB#0:
704711 ; X64-NEXT: cmpltpd %xmm1, %xmm0
705712 ; X64-NEXT: retq
706 %res = call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %a0, <2 x double> %a1, i8 1)
713 %fcmp = fcmp olt <2 x double> %a0, %a1
714 %sext = sext <2 x i1> %fcmp to <2 x i64>
715 %res = bitcast <2 x i64> %sext to <2 x double>
707716 ret <2 x double> %res
708717 }
709718
731740 ; X64: # BB#0:
732741 ; X64-NEXT: cmpneqpd %xmm1, %xmm0
733742 ; X64-NEXT: retq
734 %res = call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %a0, <2 x double> %a1, i8 4)
743 %fcmp = fcmp une <2 x double> %a0, %a1
744 %sext = sext <2 x i1> %fcmp to <2 x i64>
745 %res = bitcast <2 x i64> %sext to <2 x double>
735746 ret <2 x double> %res
736747 }
737748
761772 ; X64-NEXT: cmpnlepd %xmm0, %xmm1
762773 ; X64-NEXT: movapd %xmm1, %xmm0
763774 ; X64-NEXT: retq
764 %res = call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %a1, <2 x double> %a0, i8 6)
775 %fcmp = fcmp ugt <2 x double> %a1, %a0
776 %sext = sext <2 x i1> %fcmp to <2 x i64>
777 %res = bitcast <2 x i64> %sext to <2 x double>
765778 ret <2 x double> %res
766779 }
767780
797810 ; X64-NEXT: cmpnltpd %xmm0, %xmm1
798811 ; X64-NEXT: movapd %xmm1, %xmm0
799812 ; X64-NEXT: retq
800 %res = call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %a1, <2 x double> %a0, i8 5)
813 %fcmp = fcmp uge <2 x double> %a1, %a0
814 %sext = sext <2 x i1> %fcmp to <2 x i64>
815 %res = bitcast <2 x i64> %sext to <2 x double>
801816 ret <2 x double> %res
802817 }
803818
831846 ; X64: # BB#0:
832847 ; X64-NEXT: cmpnlepd %xmm1, %xmm0
833848 ; X64-NEXT: retq
834 %res = call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %a0, <2 x double> %a1, i8 6)
849 %fcmp = fcmp ugt <2 x double> %a0, %a1
850 %sext = sext <2 x i1> %fcmp to <2 x i64>
851 %res = bitcast <2 x i64> %sext to <2 x double>
835852 ret <2 x double> %res
836853 }
837854
859876 ; X64: # BB#0:
860877 ; X64-NEXT: cmpnltpd %xmm1, %xmm0
861878 ; X64-NEXT: retq
862 %res = call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %a0, <2 x double> %a1, i8 5)
879 %fcmp = fcmp uge <2 x double> %a0, %a1
880 %sext = sext <2 x i1> %fcmp to <2 x i64>
881 %res = bitcast <2 x i64> %sext to <2 x double>
863882 ret <2 x double> %res
864883 }
865884
887906 ; X64: # BB#0:
888907 ; X64-NEXT: cmpordpd %xmm1, %xmm0
889908 ; X64-NEXT: retq
890 %res = call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %a0, <2 x double> %a1, i8 7)
909 %fcmp = fcmp ord <2 x double> %a0, %a1
910 %sext = sext <2 x i1> %fcmp to <2 x i64>
911 %res = bitcast <2 x i64> %sext to <2 x double>
891912 ret <2 x double> %res
892913 }
893914
915936 ; X64: # BB#0:
916937 ; X64-NEXT: cmpunordpd %xmm1, %xmm0
917938 ; X64-NEXT: retq
918 %res = call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %a0, <2 x double> %a1, i8 3)
939 %fcmp = fcmp uno <2 x double> %a0, %a1
940 %sext = sext <2 x i1> %fcmp to <2 x i64>
941 %res = bitcast <2 x i64> %sext to <2 x double>
919942 ret <2 x double> %res
920943 }
921944