Refactor a bit to make some helper methods static.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168546 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Craig Topper 2012-11-24 18:52:06 +00:00
parent 8a2ce5d329
commit 538cd48455
2 changed files with 20 additions and 39 deletions

View File

@ -3687,16 +3687,12 @@ getF32Constant(SelectionDAG &DAG, unsigned Flt) {
return DAG.getConstantFP(APFloat(APInt(32, Flt)), MVT::f32);
}
/// visitExp - Lower an exp intrinsic. Handles the special sequences for
/// expandExp - Lower an exp intrinsic. Handles the special sequences for
/// limited-precision mode.
void
SelectionDAGBuilder::visitExp(const CallInst &I) {
SDValue result;
DebugLoc dl = getCurDebugLoc();
if (getValue(I.getArgOperand(0)).getValueType() == MVT::f32 &&
static SDValue expandExp(DebugLoc dl, SDValue Op, SelectionDAG &DAG,
const TargetLowering &TLI) {
if (Op.getValueType() == MVT::f32 &&
LimitFloatPrecision > 0 && LimitFloatPrecision <= 18) {
SDValue Op = getValue(I.getArgOperand(0));
// Put the exponent in the right bit position for later addition to the
// final result:
@ -3785,17 +3781,13 @@ SelectionDAGBuilder::visitExp(const CallInst &I) {
// Add the exponent into the result in integer domain.
SDValue t13 = DAG.getNode(ISD::BITCAST, dl, MVT::i32, TwoToFracPartOfX);
result = DAG.getNode(ISD::BITCAST, dl, MVT::f32,
DAG.getNode(ISD::ADD, dl, MVT::i32,
t13, IntegerPartOfX));
} else {
// No special expansion.
result = DAG.getNode(ISD::FEXP, dl,
getValue(I.getArgOperand(0)).getValueType(),
getValue(I.getArgOperand(0)));
return DAG.getNode(ISD::BITCAST, dl, MVT::f32,
DAG.getNode(ISD::ADD, dl, MVT::i32,
t13, IntegerPartOfX));
}
setValue(&I, result);
// No special expansion.
return DAG.getNode(ISD::FEXP, dl, Op.getValueType(), Op);
}
/// expandLog - Lower a log intrinsic. Handles the special sequences for
@ -4077,17 +4069,12 @@ static SDValue expandLog10(DebugLoc dl, SDValue Op, SelectionDAG &DAG,
return DAG.getNode(ISD::FLOG10, dl, Op.getValueType(), Op);
}
/// visitExp2 - Lower an exp2 intrinsic. Handles the special sequences for
/// expandExp2 - Lower an exp2 intrinsic. Handles the special sequences for
/// limited-precision mode.
void
SelectionDAGBuilder::visitExp2(const CallInst &I) {
SDValue result;
DebugLoc dl = getCurDebugLoc();
if (getValue(I.getArgOperand(0)).getValueType() == MVT::f32 &&
static SDValue expandExp2(DebugLoc dl, SDValue Op, SelectionDAG &DAG,
const TargetLowering &TLI) {
if (Op.getValueType() == MVT::f32 &&
LimitFloatPrecision > 0 && LimitFloatPrecision <= 18) {
SDValue Op = getValue(I.getArgOperand(0));
SDValue IntegerPartOfX = DAG.getNode(ISD::FP_TO_SINT, dl, MVT::i32, Op);
// FractionalPartOfX = x - (float)IntegerPartOfX;
@ -4168,17 +4155,13 @@ SelectionDAGBuilder::visitExp2(const CallInst &I) {
// Add the exponent into the result in integer domain.
SDValue t13 = DAG.getNode(ISD::BITCAST, dl, MVT::i32,
TwoToFractionalPartOfX);
result = DAG.getNode(ISD::BITCAST, dl, MVT::f32,
DAG.getNode(ISD::ADD, dl, MVT::i32,
t13, IntegerPartOfX));
} else {
// No special expansion.
result = DAG.getNode(ISD::FEXP2, dl,
getValue(I.getArgOperand(0)).getValueType(),
getValue(I.getArgOperand(0)));
return DAG.getNode(ISD::BITCAST, dl, MVT::f32,
DAG.getNode(ISD::ADD, dl, MVT::i32,
t13, IntegerPartOfX));
}
setValue(&I, result);
// No special expansion.
return DAG.getNode(ISD::FEXP2, dl, Op.getValueType(), Op);
}
/// visitPow - Lower a pow intrinsic. Handles the special sequences for
@ -4896,10 +4879,10 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) {
setValue(&I, expandLog10(dl, getValue(I.getArgOperand(0)), DAG, TLI));
return 0;
case Intrinsic::exp:
visitExp(I);
setValue(&I, expandExp(dl, getValue(I.getArgOperand(0)), DAG, TLI));
return 0;
case Intrinsic::exp2:
visitExp2(I);
setValue(&I, expandExp2(dl, getValue(I.getArgOperand(0)), DAG, TLI));
return 0;
case Intrinsic::pow:
visitPow(I);

View File

@ -534,8 +534,6 @@ private:
void visitTargetIntrinsic(const CallInst &I, unsigned Intrinsic);
void visitPow(const CallInst &I);
void visitExp2(const CallInst &I);
void visitExp(const CallInst &I);
void visitVAStart(const CallInst &I);
void visitVAArg(const VAArgInst &I);