@@ -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 |
+} |