forked from OSchip/llvm-project
Use an integer constant for FABS / FNEG (x86).
This change will ease refactoring LowerFABS() and LowerFNEG() since they have a lot of overlap. Remove the creation of a floating point constant from an integer because it's going to be used for a bitwise integer op anyway. No change to codegen expected, but the verbose comment string for asm output may change from float values to hex (integer), depending on whether the constant already exists or not. Differential Revision: http://reviews.llvm.org/D5052 llvm-svn: 216889
This commit is contained in:
parent
9676a2bc47
commit
601492a3e3
|
@ -12231,13 +12231,9 @@ static SDValue LowerFABS(SDValue Op, SelectionDAG &DAG) {
|
|||
EltVT = VT.getVectorElementType();
|
||||
NumElts = VT.getVectorNumElements();
|
||||
}
|
||||
Constant *C;
|
||||
if (EltVT == MVT::f64)
|
||||
C = ConstantFP::get(*Context, APFloat(APFloat::IEEEdouble,
|
||||
APInt(64, ~(1ULL << 63))));
|
||||
else
|
||||
C = ConstantFP::get(*Context, APFloat(APFloat::IEEEsingle,
|
||||
APInt(32, ~(1U << 31))));
|
||||
|
||||
unsigned EltBits = EltVT.getSizeInBits();
|
||||
Constant *C = ConstantInt::get(*Context, APInt::getSignedMaxValue(EltBits));
|
||||
C = ConstantVector::getSplat(NumElts, C);
|
||||
const TargetLowering &TLI = DAG.getTargetLoweringInfo();
|
||||
SDValue CPIdx = DAG.getConstantPool(C, TLI.getPointerTy());
|
||||
|
@ -12266,13 +12262,9 @@ static SDValue LowerFNEG(SDValue Op, SelectionDAG &DAG) {
|
|||
EltVT = VT.getVectorElementType();
|
||||
NumElts = VT.getVectorNumElements();
|
||||
}
|
||||
Constant *C;
|
||||
if (EltVT == MVT::f64)
|
||||
C = ConstantFP::get(*Context, APFloat(APFloat::IEEEdouble,
|
||||
APInt(64, 1ULL << 63)));
|
||||
else
|
||||
C = ConstantFP::get(*Context, APFloat(APFloat::IEEEsingle,
|
||||
APInt(32, 1U << 31)));
|
||||
|
||||
unsigned EltBits = EltVT.getSizeInBits();
|
||||
Constant *C = ConstantInt::get(*Context, APInt::getSignBit(EltBits));
|
||||
C = ConstantVector::getSplat(NumElts, C);
|
||||
const TargetLowering &TLI = DAG.getTargetLoweringInfo();
|
||||
SDValue CPIdx = DAG.getConstantPool(C, TLI.getPointerTy());
|
||||
|
|
Loading…
Reference in New Issue