mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-25 00:29:20 +00:00
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:
parent
8a2ce5d329
commit
538cd48455
@ -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);
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user