[llvm] f3d36b1 - [X86] Add test coverage for #140534

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Mon May 19 07:58:59 PDT 2025


Author: Simon Pilgrim
Date: 2025-05-19T15:50:30+01:00
New Revision: f3d36b15f6dde7ca2d080279274d5d0f4bfc8c30

URL: https://github.com/llvm/llvm-project/commit/f3d36b15f6dde7ca2d080279274d5d0f4bfc8c30
DIFF: https://github.com/llvm/llvm-project/commit/f3d36b15f6dde7ca2d080279274d5d0f4bfc8c30.diff

LOG: [X86] Add test coverage for #140534

Added: 
    

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

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/X86/fcmp-logic.ll b/llvm/test/CodeGen/X86/fcmp-logic.ll
index 4953d004e65c5..794b0ad92aef6 100644
--- a/llvm/test/CodeGen/X86/fcmp-logic.ll
+++ b/llvm/test/CodeGen/X86/fcmp-logic.ll
@@ -413,3 +413,60 @@ define i1 @f32cmp3(float %x, float %y, float %z, float %w) {
   %r = xor i1 %or, %cmpzw
   ret i1 %r
 }
+
+define i1 @PR140534(i32 %a0, i32 %a1, i32 %a2) {
+; SSE2-LABEL: PR140534:
+; SSE2:       # %bb.0:
+; SSE2-NEXT:    movl %edi, %eax
+; SSE2-NEXT:    cvtsi2sd %rax, %xmm0
+; SSE2-NEXT:    movl %esi, %eax
+; SSE2-NEXT:    cvtsi2sd %rax, %xmm1
+; SSE2-NEXT:    movl %edx, %eax
+; SSE2-NEXT:    cvtsi2sd %rax, %xmm2
+; SSE2-NEXT:    mulsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
+; SSE2-NEXT:    movapd %xmm1, %xmm3
+; SSE2-NEXT:    cmpltpd %xmm2, %xmm3
+; SSE2-NEXT:    cmpltpd %xmm0, %xmm1
+; SSE2-NEXT:    orpd %xmm3, %xmm1
+; SSE2-NEXT:    movd %xmm1, %eax
+; SSE2-NEXT:    # kill: def $al killed $al killed $eax
+; SSE2-NEXT:    retq
+;
+; AVX1-LABEL: PR140534:
+; AVX1:       # %bb.0:
+; AVX1-NEXT:    movl %edi, %eax
+; AVX1-NEXT:    vcvtsi2sd %rax, %xmm0, %xmm0
+; AVX1-NEXT:    movl %esi, %eax
+; AVX1-NEXT:    vcvtsi2sd %rax, %xmm1, %xmm1
+; AVX1-NEXT:    movl %edx, %eax
+; AVX1-NEXT:    vcvtsi2sd %rax, %xmm2, %xmm2
+; AVX1-NEXT:    vmulsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1
+; AVX1-NEXT:    vcmpltpd %xmm2, %xmm1, %xmm2
+; AVX1-NEXT:    vcmpltpd %xmm0, %xmm1, %xmm0
+; AVX1-NEXT:    vorpd %xmm2, %xmm0, %xmm0
+; AVX1-NEXT:    vmovd %xmm0, %eax
+; AVX1-NEXT:    # kill: def $al killed $al killed $eax
+; AVX1-NEXT:    retq
+;
+; AVX512-LABEL: PR140534:
+; AVX512:       # %bb.0:
+; AVX512-NEXT:    vcvtusi2sd %edi, %xmm0, %xmm0
+; AVX512-NEXT:    vcvtusi2sd %esi, %xmm1, %xmm1
+; AVX512-NEXT:    vcvtusi2sd %edx, %xmm2, %xmm2
+; AVX512-NEXT:    vmulsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1
+; AVX512-NEXT:    vcmpltpd %zmm2, %zmm1, %k0
+; AVX512-NEXT:    vcmpltpd %zmm0, %zmm1, %k1
+; AVX512-NEXT:    korw %k0, %k1, %k0
+; AVX512-NEXT:    kmovw %k0, %eax
+; AVX512-NEXT:    # kill: def $al killed $al killed $eax
+; AVX512-NEXT:    vzeroupper
+; AVX512-NEXT:    retq
+  %conv0 = uitofp i32 %a0 to double
+  %conv1 = uitofp i32 %a1 to double
+  %conv2 = uitofp i32 %a2 to double
+  %mul = fmul double %conv1, 0x3FF6A09E667F3BCD
+  %cmp0 = fcmp olt double %mul, %conv0
+  %cmp2 = fcmp olt double %mul, %conv2
+  %or = or i1 %cmp0, %cmp2
+  ret i1 %or
+}


        


More information about the llvm-commits mailing list