summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp10
-rw-r--r--llvm/test/CodeGen/AArch64/fp-const-fold.ll6
-rw-r--r--llvm/test/CodeGen/X86/fdiv-combine.ll9
3 files changed, 5 insertions, 20 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
index f17fee2fe74..e85695755d4 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
@@ -4816,17 +4816,13 @@ SDValue SelectionDAG::foldConstantFPMath(unsigned Opcode, const SDLoc &DL,
break;
case ISD::FDIV:
Status = C1.divide(C2, APFloat::rmNearestTiesToEven);
- if (!HasFPExceptions || (Status != APFloat::opInvalidOp &&
- Status != APFloat::opDivByZero)) {
+ if (!HasFPExceptions || Status != APFloat::opInvalidOp)
return getConstantFP(C1, DL, VT);
- }
break;
case ISD::FREM:
Status = C1.mod(C2);
- if (!HasFPExceptions || (Status != APFloat::opInvalidOp &&
- Status != APFloat::opDivByZero)) {
+ if (!HasFPExceptions || Status != APFloat::opInvalidOp)
return getConstantFP(C1, DL, VT);
- }
break;
case ISD::FCOPYSIGN:
C1.copySign(C2);
@@ -4840,7 +4836,7 @@ SDValue SelectionDAG::foldConstantFPMath(unsigned Opcode, const SDLoc &DL,
// This can return overflow, underflow, or inexact; we don't care.
// FIXME need to be more flexible about rounding mode.
(void) C1.convert(EVTToAPFloatSemantics(VT), APFloat::rmNearestTiesToEven,
- &Unused);
+ &Unused);
return getConstantFP(C1, DL, VT);
}
diff --git a/llvm/test/CodeGen/AArch64/fp-const-fold.ll b/llvm/test/CodeGen/AArch64/fp-const-fold.ll
index b8b4722ade1..398671b79b5 100644
--- a/llvm/test/CodeGen/AArch64/fp-const-fold.ll
+++ b/llvm/test/CodeGen/AArch64/fp-const-fold.ll
@@ -6,10 +6,8 @@
define double @constant_fold_fdiv_by_zero(double* %p) {
; CHECK-LABEL: constant_fold_fdiv_by_zero:
; CHECK: // %bb.0:
-; CHECK-NEXT: mov x8, #1
-; CHECK-NEXT: fmov d0, xzr
-; CHECK-NEXT: fmov d1, x8
-; CHECK-NEXT: fdiv d0, d1, d0
+; CHECK-NEXT: mov x8, #9218868437227405312
+; CHECK-NEXT: fmov d0, x8
; CHECK-NEXT: ret
%r = fdiv double 4.940660e-324, 0.0
ret double %r
diff --git a/llvm/test/CodeGen/X86/fdiv-combine.ll b/llvm/test/CodeGen/X86/fdiv-combine.ll
index c0c5baa2c8b..cd2b959ee0d 100644
--- a/llvm/test/CodeGen/X86/fdiv-combine.ll
+++ b/llvm/test/CodeGen/X86/fdiv-combine.ll
@@ -115,16 +115,7 @@ define float @div_select_constant_fold(i1 zeroext %arg) {
define float @div_select_constant_fold_zero(i1 zeroext %arg) {
; CHECK-LABEL: div_select_constant_fold_zero:
; CHECK: # %bb.0:
-; CHECK-NEXT: testl %edi, %edi
-; CHECK-NEXT: jne .LBB7_1
-; CHECK-NEXT: # %bb.2:
; CHECK-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
-; CHECK-NEXT: jmp .LBB7_3
-; CHECK-NEXT: .LBB7_1:
-; CHECK-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
-; CHECK-NEXT: .LBB7_3:
-; CHECK-NEXT: xorps %xmm1, %xmm1
-; CHECK-NEXT: divss %xmm1, %xmm0
; CHECK-NEXT: retq
%tmp = select i1 %arg, float 5.000000e+00, float 6.000000e+00
%B2 = fdiv float %tmp, 0.000000e+00
OpenPOWER on IntegriCloud