forked from OSchip/llvm-project
parent
d587e580a6
commit
4c869594bc
|
@ -928,9 +928,9 @@ void FPS::handleSpecialFP(MachineBasicBlock::iterator &I) {
|
|||
pushReg(getFPReg(MI->getOperand(0)));
|
||||
pushReg(getFPReg(MI->getOperand(1)));
|
||||
break;
|
||||
case X86::FpSETRESULT32:
|
||||
case X86::FpSETRESULT64:
|
||||
case X86::FpSETRESULT80:
|
||||
case X86::FpSET_ST0_32:
|
||||
case X86::FpSET_ST0_64:
|
||||
case X86::FpSET_ST0_80:
|
||||
assert(StackTop == 1 && "Stack should have one element on it to return!");
|
||||
--StackTop; // "Forget" we have something on the top of stack!
|
||||
break;
|
||||
|
|
|
@ -869,7 +869,7 @@ SDOperand X86TargetLowering::LowerRET(SDOperand Op, SelectionDAG &DAG) {
|
|||
|
||||
SDVTList Tys = DAG.getVTList(MVT::Other, MVT::Flag);
|
||||
SDOperand Ops[] = { Chain, Value };
|
||||
Chain = DAG.getNode(X86ISD::FP_SET_RESULT, Tys, Ops, 2);
|
||||
Chain = DAG.getNode(X86ISD::FP_SET_ST0, Tys, Ops, 2);
|
||||
Flag = Chain.getValue(1);
|
||||
}
|
||||
|
||||
|
@ -5565,7 +5565,7 @@ const char *X86TargetLowering::getTargetNodeName(unsigned Opcode) const {
|
|||
case X86ISD::FST: return "X86ISD::FST";
|
||||
case X86ISD::FP_GET_ST0: return "X86ISD::FP_GET_ST0";
|
||||
case X86ISD::FP_GET_ST0_ST1: return "X86ISD::FP_GET_ST0_ST1";
|
||||
case X86ISD::FP_SET_RESULT: return "X86ISD::FP_SET_RESULT";
|
||||
case X86ISD::FP_SET_ST0: return "X86ISD::FP_SET_ST0";
|
||||
case X86ISD::CALL: return "X86ISD::CALL";
|
||||
case X86ISD::TAILCALL: return "X86ISD::TAILCALL";
|
||||
case X86ISD::RDTSC_DAG: return "X86ISD::RDTSC_DAG";
|
||||
|
|
|
@ -89,14 +89,14 @@ namespace llvm {
|
|||
/// writes a RFP result and a chain.
|
||||
FP_GET_ST0,
|
||||
|
||||
/// FP_GET_ST0_ST1 - Same as FP_GET_RESULT except it copies two values
|
||||
/// FP_GET_ST0_ST1 - Same as FP_GET_ST0 except it copies two values
|
||||
/// ST(0) and ST(1).
|
||||
FP_GET_ST0_ST1,
|
||||
|
||||
/// FP_SET_RESULT - This corresponds to FpSETRESULT pseudo instruction
|
||||
/// FP_SET_ST0 - This corresponds to FpSET_ST0 pseudo instruction
|
||||
/// which copies the source operand to ST(0). It takes a chain+value and
|
||||
/// returns a chain and a flag.
|
||||
FP_SET_RESULT,
|
||||
FP_SET_ST0,
|
||||
|
||||
/// CALL/TAILCALL - These operations represent an abstract X86 call
|
||||
/// instruction, which includes a bunch of information. In particular the
|
||||
|
|
|
@ -35,7 +35,7 @@ def SDTX86CwdStore : SDTypeProfile<0, 1, [SDTCisPtrTy<0>]>;
|
|||
|
||||
def X86fpget_st0 : SDNode<"X86ISD::FP_GET_ST0", SDTX86FpGet,
|
||||
[SDNPHasChain, SDNPInFlag, SDNPOutFlag]>;
|
||||
def X86fpset : SDNode<"X86ISD::FP_SET_RESULT", SDTX86FpSet,
|
||||
def X86fpset : SDNode<"X86ISD::FP_SET_ST0", SDTX86FpSet,
|
||||
[SDNPHasChain, SDNPOutFlag]>;
|
||||
def X86fld : SDNode<"X86ISD::FLD", SDTX86Fld,
|
||||
[SDNPHasChain, SDNPMayLoad]>;
|
||||
|
@ -150,14 +150,14 @@ def FpGET_ST0_ST1 : FpI_<(outs RFP80:$dst1, RFP80:$dst2), (ins), SpecialFP,
|
|||
|
||||
|
||||
let Defs = [ST0] in {
|
||||
def FpSETRESULT32 : FpI_<(outs), (ins RFP32:$src), SpecialFP,
|
||||
[(X86fpset RFP32:$src)]>;// ST(0) = FPR
|
||||
def FpSET_ST0_32 : FpI_<(outs), (ins RFP32:$src), SpecialFP,
|
||||
[(X86fpset RFP32:$src)]>;// ST(0) = FPR
|
||||
|
||||
def FpSETRESULT64 : FpI_<(outs), (ins RFP64:$src), SpecialFP,
|
||||
[(X86fpset RFP64:$src)]>;// ST(0) = FPR
|
||||
def FpSET_ST0_64 : FpI_<(outs), (ins RFP64:$src), SpecialFP,
|
||||
[(X86fpset RFP64:$src)]>;// ST(0) = FPR
|
||||
|
||||
def FpSETRESULT80 : FpI_<(outs), (ins RFP80:$src), SpecialFP,
|
||||
[(X86fpset RFP80:$src)]>;// ST(0) = FPR
|
||||
def FpSET_ST0_80 : FpI_<(outs), (ins RFP80:$src), SpecialFP,
|
||||
[(X86fpset RFP80:$src)]>;// ST(0) = FPR
|
||||
}
|
||||
|
||||
// FpIf32, FpIf64 - Floating Point Psuedo Instruction template.
|
||||
|
|
Loading…
Reference in New Issue