mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-22 10:29:35 +00:00
Expand getVTList, getNodeValueTypes, and SelectNodeTo to handle more value types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60381 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ddc87d4a2c
commit
13d6d446f6
@ -227,6 +227,7 @@ public:
|
||||
SDVTList getVTList(MVT VT);
|
||||
SDVTList getVTList(MVT VT1, MVT VT2);
|
||||
SDVTList getVTList(MVT VT1, MVT VT2, MVT VT3);
|
||||
SDVTList getVTList(MVT VT1, MVT VT2, MVT VT3, MVT VT4);
|
||||
SDVTList getVTList(const MVT *VTs, unsigned NumVTs);
|
||||
|
||||
/// getNodeValueTypes - These are obsolete, use getVTList instead.
|
||||
@ -239,6 +240,9 @@ public:
|
||||
const MVT *getNodeValueTypes(MVT VT1, MVT VT2, MVT VT3) {
|
||||
return getVTList(VT1, VT2, VT3).VTs;
|
||||
}
|
||||
const MVT *getNodeValueTypes(MVT VT1, MVT VT2, MVT VT3, MVT VT4) {
|
||||
return getVTList(VT1, VT2, VT3, VT4).VTs;
|
||||
}
|
||||
const MVT *getNodeValueTypes(const std::vector<MVT> &vtList) {
|
||||
return getVTList(&vtList[0], (unsigned)vtList.size()).VTs;
|
||||
}
|
||||
@ -564,12 +568,17 @@ public:
|
||||
MVT VT2, const SDValue *Ops, unsigned NumOps);
|
||||
SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT VT1,
|
||||
MVT VT2, MVT VT3, const SDValue *Ops, unsigned NumOps);
|
||||
SDNode *SelectNodeTo(SDNode *N, unsigned MachineOpc, MVT VT1,
|
||||
MVT VT2, MVT VT3, MVT VT4, const SDValue *Ops,
|
||||
unsigned NumOps);
|
||||
SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT VT1,
|
||||
MVT VT2, SDValue Op1);
|
||||
SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT VT1,
|
||||
MVT VT2, SDValue Op1, SDValue Op2);
|
||||
SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT VT1,
|
||||
MVT VT2, SDValue Op1, SDValue Op2, SDValue Op3);
|
||||
SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT VT1,
|
||||
MVT VT2, MVT VT3, SDValue Op1, SDValue Op2, SDValue Op3);
|
||||
SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, SDVTList VTs,
|
||||
const SDValue *Ops, unsigned NumOps);
|
||||
|
||||
|
@ -3838,6 +3838,23 @@ SDVTList SelectionDAG::getVTList(MVT VT1, MVT VT2, MVT VT3) {
|
||||
return Result;
|
||||
}
|
||||
|
||||
SDVTList SelectionDAG::getVTList(MVT VT1, MVT VT2, MVT VT3, MVT VT4) {
|
||||
for (std::vector<SDVTList>::reverse_iterator I = VTList.rbegin(),
|
||||
E = VTList.rend(); I != E; ++I)
|
||||
if (I->NumVTs == 4 && I->VTs[0] == VT1 && I->VTs[1] == VT2 &&
|
||||
I->VTs[2] == VT3 && I->VTs[3] == VT4)
|
||||
return *I;
|
||||
|
||||
MVT *Array = Allocator.Allocate<MVT>(3);
|
||||
Array[0] = VT1;
|
||||
Array[1] = VT2;
|
||||
Array[2] = VT3;
|
||||
Array[3] = VT4;
|
||||
SDVTList Result = makeVTList(Array, 4);
|
||||
VTList.push_back(Result);
|
||||
return Result;
|
||||
}
|
||||
|
||||
SDVTList SelectionDAG::getVTList(const MVT *VTs, unsigned NumVTs) {
|
||||
switch (NumVTs) {
|
||||
case 0: assert(0 && "Cannot have nodes without results!");
|
||||
@ -4075,6 +4092,13 @@ SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned MachineOpc,
|
||||
return SelectNodeTo(N, MachineOpc, VTs, Ops, NumOps);
|
||||
}
|
||||
|
||||
SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned MachineOpc,
|
||||
MVT VT1, MVT VT2, MVT VT3, MVT VT4,
|
||||
const SDValue *Ops, unsigned NumOps) {
|
||||
SDVTList VTs = getVTList(VT1, VT2, VT3, VT4);
|
||||
return SelectNodeTo(N, MachineOpc, VTs, Ops, NumOps);
|
||||
}
|
||||
|
||||
SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned MachineOpc,
|
||||
MVT VT1, MVT VT2,
|
||||
SDValue Op1) {
|
||||
@ -4100,6 +4124,15 @@ SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned MachineOpc,
|
||||
return SelectNodeTo(N, MachineOpc, VTs, Ops, 3);
|
||||
}
|
||||
|
||||
SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned MachineOpc,
|
||||
MVT VT1, MVT VT2, MVT VT3,
|
||||
SDValue Op1, SDValue Op2,
|
||||
SDValue Op3) {
|
||||
SDVTList VTs = getVTList(VT1, VT2, VT3);
|
||||
SDValue Ops[] = { Op1, Op2, Op3 };
|
||||
return SelectNodeTo(N, MachineOpc, VTs, Ops, 3);
|
||||
}
|
||||
|
||||
SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned MachineOpc,
|
||||
SDVTList VTs, const SDValue *Ops,
|
||||
unsigned NumOps) {
|
||||
|
Loading…
Reference in New Issue
Block a user