mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-13 08:26:02 +00:00
move this over to the dag
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24609 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -247,14 +247,6 @@ SDOperand AlphaDAGToDAGISel::Select(SDOperand Op) {
|
|||||||
CurDAG->getTargetExternalSymbol(cast<ExternalSymbolSDNode>(N)->getSymbol(), MVT::i64),
|
CurDAG->getTargetExternalSymbol(cast<ExternalSymbolSDNode>(N)->getSymbol(), MVT::i64),
|
||||||
getGlobalBaseReg());
|
getGlobalBaseReg());
|
||||||
|
|
||||||
case ISD::CALLSEQ_START:
|
|
||||||
case ISD::CALLSEQ_END: {
|
|
||||||
unsigned Amt = cast<ConstantSDNode>(N->getOperand(1))->getValue();
|
|
||||||
unsigned Opc = N->getOpcode() == ISD::CALLSEQ_START ?
|
|
||||||
Alpha::ADJUSTSTACKDOWN : Alpha::ADJUSTSTACKUP;
|
|
||||||
return CurDAG->SelectNodeTo(N, Opc, MVT::Other,
|
|
||||||
getI64Imm(Amt), Select(N->getOperand(0)));
|
|
||||||
}
|
|
||||||
case ISD::RET: {
|
case ISD::RET: {
|
||||||
SDOperand Chain = Select(N->getOperand(0)); // Token chain.
|
SDOperand Chain = Select(N->getOperand(0)); // Token chain.
|
||||||
SDOperand InFlag;
|
SDOperand InFlag;
|
||||||
|
@@ -26,6 +26,11 @@ def Alpha_cvtqt : SDNode<"AlphaISD::CVTQT_", SDTFPUnaryOpUnC, []>;
|
|||||||
def Alpha_cvtqs : SDNode<"AlphaISD::CVTQS_", SDTFPUnaryOpUnC, []>;
|
def Alpha_cvtqs : SDNode<"AlphaISD::CVTQS_", SDTFPUnaryOpUnC, []>;
|
||||||
def Alpha_cvttq : SDNode<"AlphaISD::CVTTQ_", SDTFPUnaryOp, []>;
|
def Alpha_cvttq : SDNode<"AlphaISD::CVTTQ_", SDTFPUnaryOp, []>;
|
||||||
|
|
||||||
|
// These are target-independent nodes, but have target-specific formats.
|
||||||
|
def SDT_AlphaCallSeq : SDTypeProfile<0, 1, [ SDTCisVT<0, i64> ]>;
|
||||||
|
def callseq_start : SDNode<"ISD::CALLSEQ_START", SDT_AlphaCallSeq,[SDNPHasChain]>;
|
||||||
|
def callseq_end : SDNode<"ISD::CALLSEQ_END", SDT_AlphaCallSeq,[SDNPHasChain]>;
|
||||||
|
|
||||||
|
|
||||||
//********************
|
//********************
|
||||||
//Paterns for matching
|
//Paterns for matching
|
||||||
@@ -99,8 +104,10 @@ def IDEF_F64 : PseudoInstAlpha<(ops F8RC:$RA), "#idef $RA",
|
|||||||
[(set F8RC:$RA, (undef))]>;
|
[(set F8RC:$RA, (undef))]>;
|
||||||
|
|
||||||
def WTF : PseudoInstAlpha<(ops variable_ops), "#wtf", []>;
|
def WTF : PseudoInstAlpha<(ops variable_ops), "#wtf", []>;
|
||||||
def ADJUSTSTACKUP : PseudoInstAlpha<(ops variable_ops), "ADJUP", []>;
|
def ADJUSTSTACKUP : PseudoInstAlpha<(ops s64imm:$amt), "ADJUP",
|
||||||
def ADJUSTSTACKDOWN : PseudoInstAlpha<(ops variable_ops), "ADJDOWN", []>;
|
[(callseq_start imm:$amt)]>;
|
||||||
|
def ADJUSTSTACKDOWN : PseudoInstAlpha<(ops s64imm:$amt), "ADJDOWN",
|
||||||
|
[(callseq_end imm:$amt)]>;
|
||||||
def ALTENT : PseudoInstAlpha<(ops s64imm:$TARGET), "$TARGET:\n", []>;
|
def ALTENT : PseudoInstAlpha<(ops s64imm:$TARGET), "$TARGET:\n", []>;
|
||||||
def PCLABEL : PseudoInstAlpha<(ops s64imm:$num), "PCMARKER_$num:\n",[]>;
|
def PCLABEL : PseudoInstAlpha<(ops s64imm:$num), "PCMARKER_$num:\n",[]>;
|
||||||
def MEMLABEL : PseudoInstAlpha<(ops s64imm:$i, s64imm:$j, s64imm:$k, s64imm:$m),
|
def MEMLABEL : PseudoInstAlpha<(ops s64imm:$i, s64imm:$j, s64imm:$k, s64imm:$m),
|
||||||
|
Reference in New Issue
Block a user