SDOperand N1, SDOperand N2, SDOperand N3);
SDOperand getNode(unsigned Opcode, MVT::ValueType VT,
SDOperand N1, SDOperand N2, SDOperand N3, SDOperand N4);
+ SDOperand getNode(unsigned Opcode, MVT::ValueType VT,
+ SDOperand N1, SDOperand N2, SDOperand N3, SDOperand N4,
+ SDOperand N5);
SDOperand getNode(unsigned Opcode, MVT::ValueType VT,
std::vector<SDOperand> &Children);
SDOperand getNode(unsigned Opcode, std::vector<MVT::ValueType> &ResultTys,
SDOperand N, MVT::ValueType EVT);
SDOperand getNode(unsigned Opcode, MVT::ValueType VT, SDOperand N1,
SDOperand N2, SDOperand N3, MVT::ValueType EVT);
- SDOperand getNode(unsigned Opcode, MVT::ValueType VT, SDOperand N1,
- SDOperand N2, SDOperand N3, SDOperand N4,
- MVT::ValueType EVT);
/// getLoad - Loads are not normal binary operators: their result type is not
FNEG, FABS, FSQRT, FSIN, FCOS,
// Other operators. LOAD and STORE have token chains as their first
- // operand, then the same operands as an LLVM load/store instruction.
+ // operand, then the same operands as an LLVM load/store instruction, then a
+ // SRCVALUE node that provides alias analysis information.
LOAD, STORE,
// EXTLOAD, SEXTLOAD, ZEXTLOAD - These three operators are instances of the
// TRUNCSTORE - This operators truncates (for integer) or rounds (for FP) a
// value and stores it to memory in one operation. This can be used for
- // either integer or floating point operands, and the stored type
- // represented as the 'extra' value type in the MVTSDNode representing the
- // operator. This node has the same three operands as a standard store.
+ // either integer or floating point operands. The first four operands of
+ // this are the same as a standard store. The fifth is the ValueType to
+ // store it as (which will be smaller than the source value).
TRUNCSTORE,
// DYNAMIC_STACKALLOC - Allocate some number of bytes on the stack aligned
: SDNode(Opc, Op0, Op1, Op2), ExtraValueType(EVT) {
setValueTypes(VT1, VT2);
}
-
- MVTSDNode(unsigned Opc, MVT::ValueType VT,
- SDOperand Op0, SDOperand Op1, SDOperand Op2, SDOperand Op3, MVT::ValueType EVT)
- : SDNode(Opc, Op0, Op1, Op2, Op3), ExtraValueType(EVT) {
- setValueTypes(VT);
- }
public:
MVT::ValueType getExtraValueType() const { return ExtraValueType; }
return
N->getOpcode() == ISD::EXTLOAD ||
N->getOpcode() == ISD::SEXTLOAD ||
- N->getOpcode() == ISD::ZEXTLOAD ||
- N->getOpcode() == ISD::TRUNCSTORE;
+ N->getOpcode() == ISD::ZEXTLOAD;
}
};