mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-03 09:21:02 +00:00
Just use APFloat for const / const. Fixes
-1. / -0. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42254 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
04fa569320
commit
79653fcdc2
@ -699,23 +699,6 @@ Constant *llvm::ConstantFoldBinaryInstruction(unsigned Opcode,
|
||||
(void)C3V.multiply(C2V, APFloat::rmNearestTiesToEven);
|
||||
return ConstantFP::get(CFP1->getType(), C3V);
|
||||
case Instruction::FDiv:
|
||||
// FIXME better to look at the return code
|
||||
if (C2V.isZero())
|
||||
if (C1V.isZero())
|
||||
// IEEE 754, Section 7.1, #4
|
||||
return ConstantFP::get(CFP1->getType(), isDouble ?
|
||||
APFloat(std::numeric_limits<double>::quiet_NaN()) :
|
||||
APFloat(std::numeric_limits<float>::quiet_NaN()));
|
||||
else if (C2V.isNegZero() || C1V.isNegative())
|
||||
// IEEE 754, Section 7.2, negative infinity case
|
||||
return ConstantFP::get(CFP1->getType(), isDouble ?
|
||||
APFloat(-std::numeric_limits<double>::infinity()) :
|
||||
APFloat(-std::numeric_limits<float>::infinity()));
|
||||
else
|
||||
// IEEE 754, Section 7.2, positive infinity case
|
||||
return ConstantFP::get(CFP1->getType(), isDouble ?
|
||||
APFloat(std::numeric_limits<double>::infinity()) :
|
||||
APFloat(std::numeric_limits<float>::infinity()));
|
||||
(void)C3V.divide(C2V, APFloat::rmNearestTiesToEven);
|
||||
return ConstantFP::get(CFP1->getType(), C3V);
|
||||
case Instruction::FRem:
|
||||
|
Loading…
Reference in New Issue
Block a user