[X86][DAGCombiner] Skip x87 fp80 values in `combineFMulOrFDivWithIntP… · llvm/llvm-project@c99be91 (original) (raw)

Original file line number Diff line number Diff line change
@@ -1662,3 +1662,31 @@ define float @fdiv_pow_shl_cnt32_okay(i32 %cnt) nounwind {
1662 1662 %mul = fdiv float 0x3a20000000000000, %conv
1663 1663 ret float %mul
1664 1664 }
1665 +
1666 +define x86_fp80 @pr128528(i1 %cond) {
1667 +; CHECK-SSE-LABEL: pr128528:
1668 +; CHECK-SSE: # %bb.0:
1669 +; CHECK-SSE-NEXT: testb $1, %dil
1670 +; CHECK-SSE-NEXT: movl $8, %eax
1671 +; CHECK-SSE-NEXT: movl $1, %ecx
1672 +; CHECK-SSE-NEXT: cmovnel %eax, %ecx
1673 +; CHECK-SSE-NEXT: movl %ecx, -{{[0-9]+}}(%rsp)
1674 +; CHECK-SSE-NEXT: fildl -{{[0-9]+}}(%rsp)
1675 +; CHECK-SSE-NEXT: fmull {{\.?LCPI[0-9]+_[0-9]+}}(%rip)
1676 +; CHECK-SSE-NEXT: retq
1677 +;
1678 +; CHECK-AVX-LABEL: pr128528:
1679 +; CHECK-AVX: # %bb.0:
1680 +; CHECK-AVX-NEXT: testb $1, %dil
1681 +; CHECK-AVX-NEXT: movl $8, %eax
1682 +; CHECK-AVX-NEXT: movl $1, %ecx
1683 +; CHECK-AVX-NEXT: cmovnel %eax, %ecx
1684 +; CHECK-AVX-NEXT: movl %ecx, -{{[0-9]+}}(%rsp)
1685 +; CHECK-AVX-NEXT: fildl -{{[0-9]+}}(%rsp)
1686 +; CHECK-AVX-NEXT: fmull {{\.?LCPI[0-9]+_[0-9]+}}(%rip)
1687 +; CHECK-AVX-NEXT: retq
1688 +%sub9 = select i1 %cond, i32 8, i32 1
1689 +%conv = uitofp i32 %sub9 to x86_fp80
1690 +%mul = fmul x86_fp80 %conv, 0xK4007D055555555555800
1691 +ret x86_fp80 %mul
1692 +}