Skip to content

Commit f3d36b1

Browse files
committed
[X86] Add test coverage for #140534
1 parent 1532ee6 commit f3d36b1

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

llvm/test/CodeGen/X86/fcmp-logic.ll

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,3 +413,60 @@ define i1 @f32cmp3(float %x, float %y, float %z, float %w) {
413413
%r = xor i1 %or, %cmpzw
414414
ret i1 %r
415415
}
416+
417+
define i1 @PR140534(i32 %a0, i32 %a1, i32 %a2) {
418+
; SSE2-LABEL: PR140534:
419+
; SSE2: # %bb.0:
420+
; SSE2-NEXT: movl %edi, %eax
421+
; SSE2-NEXT: cvtsi2sd %rax, %xmm0
422+
; SSE2-NEXT: movl %esi, %eax
423+
; SSE2-NEXT: cvtsi2sd %rax, %xmm1
424+
; SSE2-NEXT: movl %edx, %eax
425+
; SSE2-NEXT: cvtsi2sd %rax, %xmm2
426+
; SSE2-NEXT: mulsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
427+
; SSE2-NEXT: movapd %xmm1, %xmm3
428+
; SSE2-NEXT: cmpltpd %xmm2, %xmm3
429+
; SSE2-NEXT: cmpltpd %xmm0, %xmm1
430+
; SSE2-NEXT: orpd %xmm3, %xmm1
431+
; SSE2-NEXT: movd %xmm1, %eax
432+
; SSE2-NEXT: # kill: def $al killed $al killed $eax
433+
; SSE2-NEXT: retq
434+
;
435+
; AVX1-LABEL: PR140534:
436+
; AVX1: # %bb.0:
437+
; AVX1-NEXT: movl %edi, %eax
438+
; AVX1-NEXT: vcvtsi2sd %rax, %xmm0, %xmm0
439+
; AVX1-NEXT: movl %esi, %eax
440+
; AVX1-NEXT: vcvtsi2sd %rax, %xmm1, %xmm1
441+
; AVX1-NEXT: movl %edx, %eax
442+
; AVX1-NEXT: vcvtsi2sd %rax, %xmm2, %xmm2
443+
; AVX1-NEXT: vmulsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1
444+
; AVX1-NEXT: vcmpltpd %xmm2, %xmm1, %xmm2
445+
; AVX1-NEXT: vcmpltpd %xmm0, %xmm1, %xmm0
446+
; AVX1-NEXT: vorpd %xmm2, %xmm0, %xmm0
447+
; AVX1-NEXT: vmovd %xmm0, %eax
448+
; AVX1-NEXT: # kill: def $al killed $al killed $eax
449+
; AVX1-NEXT: retq
450+
;
451+
; AVX512-LABEL: PR140534:
452+
; AVX512: # %bb.0:
453+
; AVX512-NEXT: vcvtusi2sd %edi, %xmm0, %xmm0
454+
; AVX512-NEXT: vcvtusi2sd %esi, %xmm1, %xmm1
455+
; AVX512-NEXT: vcvtusi2sd %edx, %xmm2, %xmm2
456+
; AVX512-NEXT: vmulsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1
457+
; AVX512-NEXT: vcmpltpd %zmm2, %zmm1, %k0
458+
; AVX512-NEXT: vcmpltpd %zmm0, %zmm1, %k1
459+
; AVX512-NEXT: korw %k0, %k1, %k0
460+
; AVX512-NEXT: kmovw %k0, %eax
461+
; AVX512-NEXT: # kill: def $al killed $al killed $eax
462+
; AVX512-NEXT: vzeroupper
463+
; AVX512-NEXT: retq
464+
%conv0 = uitofp i32 %a0 to double
465+
%conv1 = uitofp i32 %a1 to double
466+
%conv2 = uitofp i32 %a2 to double
467+
%mul = fmul double %conv1, 0x3FF6A09E667F3BCD
468+
%cmp0 = fcmp olt double %mul, %conv0
469+
%cmp2 = fcmp olt double %mul, %conv2
470+
%or = or i1 %cmp0, %cmp2
471+
ret i1 %or
472+
}

0 commit comments

Comments
 (0)