mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-17 20:23:59 +00:00
Convert SelectionDAG::getNode methods to use ArrayRef<SDValue>.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207327 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -277,9 +277,9 @@ static SDValue getCopyFromPartsVector(SelectionDAG &DAG, SDLoc DL,
|
||||
|
||||
// Build a vector with BUILD_VECTOR or CONCAT_VECTORS from the
|
||||
// intermediate operands.
|
||||
Val = DAG.getNode(IntermediateVT.isVector() ?
|
||||
ISD::CONCAT_VECTORS : ISD::BUILD_VECTOR, DL,
|
||||
ValueVT, &Ops[0], NumIntermediates);
|
||||
Val = DAG.getNode(IntermediateVT.isVector() ? ISD::CONCAT_VECTORS
|
||||
: ISD::BUILD_VECTOR,
|
||||
DL, ValueVT, Ops);
|
||||
}
|
||||
|
||||
// There is now one part, held in Val. Correct it to match ValueVT.
|
||||
@ -496,7 +496,7 @@ static void getCopyToPartsVector(SelectionDAG &DAG, SDLoc DL,
|
||||
e = PartVT.getVectorNumElements(); i != e; ++i)
|
||||
Ops.push_back(DAG.getUNDEF(ElementVT));
|
||||
|
||||
Val = DAG.getNode(ISD::BUILD_VECTOR, DL, PartVT, &Ops[0], Ops.size());
|
||||
Val = DAG.getNode(ISD::BUILD_VECTOR, DL, PartVT, Ops);
|
||||
|
||||
// FIXME: Use CONCAT for 2x -> 4x.
|
||||
|
||||
@ -753,9 +753,7 @@ SDValue RegsForValue::getCopyFromRegs(SelectionDAG &DAG,
|
||||
Parts.clear();
|
||||
}
|
||||
|
||||
return DAG.getNode(ISD::MERGE_VALUES, dl,
|
||||
DAG.getVTList(ValueVTs),
|
||||
&Values[0], ValueVTs.size());
|
||||
return DAG.getNode(ISD::MERGE_VALUES, dl, DAG.getVTList(ValueVTs), Values);
|
||||
}
|
||||
|
||||
/// getCopyToRegs - Emit a series of CopyToReg nodes that copies the
|
||||
@ -809,7 +807,7 @@ void RegsForValue::getCopyToRegs(SDValue Val, SelectionDAG &DAG, SDLoc dl,
|
||||
// = op c3, ..., f2
|
||||
Chain = Chains[NumRegs-1];
|
||||
else
|
||||
Chain = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, &Chains[0], NumRegs);
|
||||
Chain = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Chains);
|
||||
}
|
||||
|
||||
/// AddInlineAsmOperands - Add this value to the specified inlineasm node
|
||||
@ -911,7 +909,7 @@ SDValue SelectionDAGBuilder::getRoot() {
|
||||
|
||||
// Otherwise, we have to make a token factor node.
|
||||
SDValue Root = DAG.getNode(ISD::TokenFactor, getCurSDLoc(), MVT::Other,
|
||||
&PendingLoads[0], PendingLoads.size());
|
||||
PendingLoads);
|
||||
PendingLoads.clear();
|
||||
DAG.setRoot(Root);
|
||||
return Root;
|
||||
@ -941,8 +939,7 @@ SDValue SelectionDAGBuilder::getControlRoot() {
|
||||
}
|
||||
|
||||
Root = DAG.getNode(ISD::TokenFactor, getCurSDLoc(), MVT::Other,
|
||||
&PendingExports[0],
|
||||
PendingExports.size());
|
||||
PendingExports);
|
||||
PendingExports.clear();
|
||||
DAG.setRoot(Root);
|
||||
return Root;
|
||||
@ -1113,7 +1110,7 @@ SDValue SelectionDAGBuilder::getValueImpl(const Value *V) {
|
||||
if (isa<ArrayType>(CDS->getType()))
|
||||
return DAG.getMergeValues(&Ops[0], Ops.size(), getCurSDLoc());
|
||||
return NodeMap[V] = DAG.getNode(ISD::BUILD_VECTOR, getCurSDLoc(),
|
||||
VT, &Ops[0], Ops.size());
|
||||
VT, Ops);
|
||||
}
|
||||
|
||||
if (C->getType()->isStructTy() || C->getType()->isArrayTy()) {
|
||||
@ -1165,8 +1162,7 @@ SDValue SelectionDAGBuilder::getValueImpl(const Value *V) {
|
||||
}
|
||||
|
||||
// Create a BUILD_VECTOR node.
|
||||
return NodeMap[V] = DAG.getNode(ISD::BUILD_VECTOR, getCurSDLoc(),
|
||||
VT, &Ops[0], Ops.size());
|
||||
return NodeMap[V] = DAG.getNode(ISD::BUILD_VECTOR, getCurSDLoc(), VT, Ops);
|
||||
}
|
||||
|
||||
// If this is a static alloca, generate it as the frameindex instead of
|
||||
@ -1227,7 +1223,7 @@ void SelectionDAGBuilder::visitRet(const ReturnInst &I) {
|
||||
}
|
||||
|
||||
Chain = DAG.getNode(ISD::TokenFactor, getCurSDLoc(),
|
||||
MVT::Other, &Chains[0], NumValues);
|
||||
MVT::Other, Chains);
|
||||
} else if (I.getNumOperands() != 0) {
|
||||
SmallVector<EVT, 4> ValueVTs;
|
||||
ComputeValueVTs(*TLI, I.getOperand(0)->getType(), ValueVTs);
|
||||
@ -2063,8 +2059,7 @@ void SelectionDAGBuilder::visitLandingPad(const LandingPadInst &LP) {
|
||||
|
||||
// Merge into one.
|
||||
SDValue Res = DAG.getNode(ISD::MERGE_VALUES, getCurSDLoc(),
|
||||
DAG.getVTList(ValueVTs),
|
||||
&Ops[0], 2);
|
||||
DAG.getVTList(ValueVTs), Ops);
|
||||
setValue(&LP, Res);
|
||||
}
|
||||
|
||||
@ -2896,8 +2891,7 @@ void SelectionDAGBuilder::visitSelect(const User &I) {
|
||||
FalseVal.getResNo() + i));
|
||||
|
||||
setValue(&I, DAG.getNode(ISD::MERGE_VALUES, getCurSDLoc(),
|
||||
DAG.getVTList(ValueVTs),
|
||||
&Values[0], NumValues));
|
||||
DAG.getVTList(ValueVTs), Values));
|
||||
}
|
||||
|
||||
void SelectionDAGBuilder::visitTrunc(const User &I) {
|
||||
@ -3106,11 +3100,9 @@ void SelectionDAGBuilder::visitShuffleVector(const User &I) {
|
||||
MOps2[0] = Src2;
|
||||
|
||||
Src1 = Src1U ? DAG.getUNDEF(VT) : DAG.getNode(ISD::CONCAT_VECTORS,
|
||||
getCurSDLoc(), VT,
|
||||
&MOps1[0], NumConcat);
|
||||
getCurSDLoc(), VT, MOps1);
|
||||
Src2 = Src2U ? DAG.getUNDEF(VT) : DAG.getNode(ISD::CONCAT_VECTORS,
|
||||
getCurSDLoc(), VT,
|
||||
&MOps2[0], NumConcat);
|
||||
getCurSDLoc(), VT, MOps2);
|
||||
|
||||
// Readjust mask for new input vector length.
|
||||
SmallVector<int, 8> MappedOps;
|
||||
@ -3228,8 +3220,7 @@ void SelectionDAGBuilder::visitShuffleVector(const User &I) {
|
||||
Ops.push_back(Res);
|
||||
}
|
||||
|
||||
setValue(&I, DAG.getNode(ISD::BUILD_VECTOR, getCurSDLoc(),
|
||||
VT, &Ops[0], Ops.size()));
|
||||
setValue(&I, DAG.getNode(ISD::BUILD_VECTOR, getCurSDLoc(), VT, Ops));
|
||||
}
|
||||
|
||||
void SelectionDAGBuilder::visitInsertValue(const InsertValueInst &I) {
|
||||
@ -3271,8 +3262,7 @@ void SelectionDAGBuilder::visitInsertValue(const InsertValueInst &I) {
|
||||
SDValue(Agg.getNode(), Agg.getResNo() + i);
|
||||
|
||||
setValue(&I, DAG.getNode(ISD::MERGE_VALUES, getCurSDLoc(),
|
||||
DAG.getVTList(AggValueVTs),
|
||||
&Values[0], NumAggValues));
|
||||
DAG.getVTList(AggValueVTs), Values));
|
||||
}
|
||||
|
||||
void SelectionDAGBuilder::visitExtractValue(const ExtractValueInst &I) {
|
||||
@ -3306,8 +3296,7 @@ void SelectionDAGBuilder::visitExtractValue(const ExtractValueInst &I) {
|
||||
SDValue(Agg.getNode(), Agg.getResNo() + i);
|
||||
|
||||
setValue(&I, DAG.getNode(ISD::MERGE_VALUES, getCurSDLoc(),
|
||||
DAG.getVTList(ValValueVTs),
|
||||
&Values[0], NumValValues));
|
||||
DAG.getVTList(ValValueVTs), Values));
|
||||
}
|
||||
|
||||
void SelectionDAGBuilder::visitGetElementPtr(const User &I) {
|
||||
@ -3429,8 +3418,7 @@ void SelectionDAGBuilder::visitAlloca(const AllocaInst &I) {
|
||||
|
||||
SDValue Ops[] = { getRoot(), AllocSize, DAG.getIntPtrConstant(Align) };
|
||||
SDVTList VTs = DAG.getVTList(AllocSize.getValueType(), MVT::Other);
|
||||
SDValue DSA = DAG.getNode(ISD::DYNAMIC_STACKALLOC, getCurSDLoc(),
|
||||
VTs, Ops, 3);
|
||||
SDValue DSA = DAG.getNode(ISD::DYNAMIC_STACKALLOC, getCurSDLoc(), VTs, Ops);
|
||||
setValue(&I, DSA);
|
||||
DAG.setRoot(DSA.getValue(1));
|
||||
|
||||
@ -3493,8 +3481,8 @@ void SelectionDAGBuilder::visitLoad(const LoadInst &I) {
|
||||
// (MaxParallelChains should always remain as failsafe).
|
||||
if (ChainI == MaxParallelChains) {
|
||||
assert(PendingLoads.empty() && "PendingLoads must be serialized first");
|
||||
SDValue Chain = DAG.getNode(ISD::TokenFactor, getCurSDLoc(),
|
||||
MVT::Other, &Chains[0], ChainI);
|
||||
SDValue Chain = DAG.getNode(ISD::TokenFactor, getCurSDLoc(), MVT::Other,
|
||||
ArrayRef<SDValue>(Chains.data(), ChainI));
|
||||
Root = Chain;
|
||||
ChainI = 0;
|
||||
}
|
||||
@ -3511,8 +3499,8 @@ void SelectionDAGBuilder::visitLoad(const LoadInst &I) {
|
||||
}
|
||||
|
||||
if (!ConstantMemory) {
|
||||
SDValue Chain = DAG.getNode(ISD::TokenFactor, getCurSDLoc(),
|
||||
MVT::Other, &Chains[0], ChainI);
|
||||
SDValue Chain = DAG.getNode(ISD::TokenFactor, getCurSDLoc(), MVT::Other,
|
||||
ArrayRef<SDValue>(Chains.data(), ChainI));
|
||||
if (isVolatile)
|
||||
DAG.setRoot(Chain);
|
||||
else
|
||||
@ -3520,8 +3508,7 @@ void SelectionDAGBuilder::visitLoad(const LoadInst &I) {
|
||||
}
|
||||
|
||||
setValue(&I, DAG.getNode(ISD::MERGE_VALUES, getCurSDLoc(),
|
||||
DAG.getVTList(ValueVTs),
|
||||
&Values[0], NumValues));
|
||||
DAG.getVTList(ValueVTs), Values));
|
||||
}
|
||||
|
||||
void SelectionDAGBuilder::visitStore(const StoreInst &I) {
|
||||
@ -3557,8 +3544,8 @@ void SelectionDAGBuilder::visitStore(const StoreInst &I) {
|
||||
for (unsigned i = 0; i != NumValues; ++i, ++ChainI) {
|
||||
// See visitLoad comments.
|
||||
if (ChainI == MaxParallelChains) {
|
||||
SDValue Chain = DAG.getNode(ISD::TokenFactor, getCurSDLoc(),
|
||||
MVT::Other, &Chains[0], ChainI);
|
||||
SDValue Chain = DAG.getNode(ISD::TokenFactor, getCurSDLoc(), MVT::Other,
|
||||
ArrayRef<SDValue>(Chains.data(), ChainI));
|
||||
Root = Chain;
|
||||
ChainI = 0;
|
||||
}
|
||||
@ -3571,8 +3558,8 @@ void SelectionDAGBuilder::visitStore(const StoreInst &I) {
|
||||
Chains[ChainI] = St;
|
||||
}
|
||||
|
||||
SDValue StoreNode = DAG.getNode(ISD::TokenFactor, getCurSDLoc(),
|
||||
MVT::Other, &Chains[0], ChainI);
|
||||
SDValue StoreNode = DAG.getNode(ISD::TokenFactor, getCurSDLoc(), MVT::Other,
|
||||
ArrayRef<SDValue>(Chains.data(), ChainI));
|
||||
DAG.setRoot(StoreNode);
|
||||
}
|
||||
|
||||
@ -3597,7 +3584,7 @@ static SDValue InsertFenceForAtomic(SDValue Chain, AtomicOrdering Order,
|
||||
Ops[0] = Chain;
|
||||
Ops[1] = DAG.getConstant(Order, TLI.getPointerTy());
|
||||
Ops[2] = DAG.getConstant(Scope, TLI.getPointerTy());
|
||||
return DAG.getNode(ISD::ATOMIC_FENCE, dl, MVT::Other, Ops, 3);
|
||||
return DAG.getNode(ISD::ATOMIC_FENCE, dl, MVT::Other, Ops);
|
||||
}
|
||||
|
||||
void SelectionDAGBuilder::visitAtomicCmpXchg(const AtomicCmpXchgInst &I) {
|
||||
@ -3689,7 +3676,7 @@ void SelectionDAGBuilder::visitFence(const FenceInst &I) {
|
||||
Ops[0] = getRoot();
|
||||
Ops[1] = DAG.getConstant(I.getOrdering(), TLI->getPointerTy());
|
||||
Ops[2] = DAG.getConstant(I.getSynchScope(), TLI->getPointerTy());
|
||||
DAG.setRoot(DAG.getNode(ISD::ATOMIC_FENCE, dl, MVT::Other, Ops, 3));
|
||||
DAG.setRoot(DAG.getNode(ISD::ATOMIC_FENCE, dl, MVT::Other, Ops));
|
||||
}
|
||||
|
||||
void SelectionDAGBuilder::visitAtomicLoad(const LoadInst &I) {
|
||||
@ -3818,14 +3805,11 @@ void SelectionDAGBuilder::visitTargetIntrinsic(const CallInst &I,
|
||||
Info.align, Info.vol,
|
||||
Info.readMem, Info.writeMem);
|
||||
} else if (!HasChain) {
|
||||
Result = DAG.getNode(ISD::INTRINSIC_WO_CHAIN, getCurSDLoc(),
|
||||
VTs, &Ops[0], Ops.size());
|
||||
Result = DAG.getNode(ISD::INTRINSIC_WO_CHAIN, getCurSDLoc(), VTs, Ops);
|
||||
} else if (!I.getType()->isVoidTy()) {
|
||||
Result = DAG.getNode(ISD::INTRINSIC_W_CHAIN, getCurSDLoc(),
|
||||
VTs, &Ops[0], Ops.size());
|
||||
Result = DAG.getNode(ISD::INTRINSIC_W_CHAIN, getCurSDLoc(), VTs, Ops);
|
||||
} else {
|
||||
Result = DAG.getNode(ISD::INTRINSIC_VOID, getCurSDLoc(),
|
||||
VTs, &Ops[0], Ops.size());
|
||||
Result = DAG.getNode(ISD::INTRINSIC_VOID, getCurSDLoc(), VTs, Ops);
|
||||
}
|
||||
|
||||
if (HasChain) {
|
||||
@ -4909,8 +4893,7 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) {
|
||||
Ops[0] = getRoot();
|
||||
Ops[1] = getValue(I.getArgOperand(0));
|
||||
SDValue Op = DAG.getNode(ISD::EH_SJLJ_SETJMP, sdl,
|
||||
DAG.getVTList(MVT::i32, MVT::Other),
|
||||
Ops, 2);
|
||||
DAG.getVTList(MVT::i32, MVT::Other), Ops);
|
||||
setValue(&I, Op.getValue(0));
|
||||
DAG.setRoot(Op.getValue(1));
|
||||
return nullptr;
|
||||
@ -4971,7 +4954,7 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) {
|
||||
SDValue ShOps[2];
|
||||
ShOps[0] = ShAmt;
|
||||
ShOps[1] = DAG.getConstant(0, MVT::i32);
|
||||
ShAmt = DAG.getNode(ISD::BUILD_VECTOR, sdl, ShAmtVT, &ShOps[0], 2);
|
||||
ShAmt = DAG.getNode(ISD::BUILD_VECTOR, sdl, ShAmtVT, ShOps);
|
||||
EVT DestVT = TLI->getValueType(I.getType());
|
||||
ShAmt = DAG.getNode(ISD::BITCAST, sdl, DestVT, ShAmt);
|
||||
Res = DAG.getNode(ISD::INTRINSIC_WO_CHAIN, sdl, DestVT,
|
||||
@ -5145,8 +5128,7 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) {
|
||||
case Intrinsic::readcyclecounter: {
|
||||
SDValue Op = getRoot();
|
||||
Res = DAG.getNode(ISD::READCYCLECOUNTER, sdl,
|
||||
DAG.getVTList(MVT::i64, MVT::Other),
|
||||
&Op, 1);
|
||||
DAG.getVTList(MVT::i64, MVT::Other), Op);
|
||||
setValue(&I, Res);
|
||||
DAG.setRoot(Res.getValue(1));
|
||||
return nullptr;
|
||||
@ -5181,7 +5163,7 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) {
|
||||
case Intrinsic::stacksave: {
|
||||
SDValue Op = getRoot();
|
||||
Res = DAG.getNode(ISD::STACKSAVE, sdl,
|
||||
DAG.getVTList(TLI->getPointerTy(), MVT::Other), &Op, 1);
|
||||
DAG.getVTList(TLI->getPointerTy(), MVT::Other), Op);
|
||||
setValue(&I, Res);
|
||||
DAG.setRoot(Res.getValue(1));
|
||||
return nullptr;
|
||||
@ -5250,7 +5232,7 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) {
|
||||
Ops[4] = DAG.getSrcValue(I.getArgOperand(0));
|
||||
Ops[5] = DAG.getSrcValue(F);
|
||||
|
||||
Res = DAG.getNode(ISD::INIT_TRAMPOLINE, sdl, MVT::Other, Ops, 6);
|
||||
Res = DAG.getNode(ISD::INIT_TRAMPOLINE, sdl, MVT::Other, Ops);
|
||||
|
||||
DAG.setRoot(Res);
|
||||
return nullptr;
|
||||
@ -5373,7 +5355,7 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) {
|
||||
Ops[1] = DAG.getFrameIndex(FI, TLI->getPointerTy(), true);
|
||||
unsigned Opcode = (IsStart ? ISD::LIFETIME_START : ISD::LIFETIME_END);
|
||||
|
||||
Res = DAG.getNode(Opcode, sdl, MVT::Other, Ops, 2);
|
||||
Res = DAG.getNode(Opcode, sdl, MVT::Other, Ops);
|
||||
DAG.setRoot(Res);
|
||||
}
|
||||
return nullptr;
|
||||
@ -5550,13 +5532,12 @@ void SelectionDAGBuilder::LowerCallTo(ImmutableCallSite CS, SDValue Callee,
|
||||
}
|
||||
|
||||
SDValue Chain = DAG.getNode(ISD::TokenFactor, getCurSDLoc(),
|
||||
MVT::Other, &Chains[0], NumValues);
|
||||
MVT::Other, Chains);
|
||||
PendingLoads.push_back(Chain);
|
||||
|
||||
setValue(CS.getInstruction(),
|
||||
DAG.getNode(ISD::MERGE_VALUES, getCurSDLoc(),
|
||||
DAG.getVTList(RetTys),
|
||||
&Values[0], Values.size()));
|
||||
DAG.getVTList(RetTys), Values));
|
||||
}
|
||||
|
||||
if (!Result.second.getNode()) {
|
||||
@ -6717,8 +6698,7 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCallSite CS) {
|
||||
if (Flag.getNode()) AsmNodeOperands.push_back(Flag);
|
||||
|
||||
Chain = DAG.getNode(ISD::INLINEASM, getCurSDLoc(),
|
||||
DAG.getVTList(MVT::Other, MVT::Glue),
|
||||
&AsmNodeOperands[0], AsmNodeOperands.size());
|
||||
DAG.getVTList(MVT::Other, MVT::Glue), AsmNodeOperands);
|
||||
Flag = Chain.getValue(1);
|
||||
|
||||
// If this asm returns a register value, copy the result from that register
|
||||
@ -6781,8 +6761,7 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCallSite CS) {
|
||||
}
|
||||
|
||||
if (!OutChains.empty())
|
||||
Chain = DAG.getNode(ISD::TokenFactor, getCurSDLoc(), MVT::Other,
|
||||
&OutChains[0], OutChains.size());
|
||||
Chain = DAG.getNode(ISD::TokenFactor, getCurSDLoc(), MVT::Other, OutChains);
|
||||
|
||||
DAG.setRoot(Chain);
|
||||
}
|
||||
@ -7285,8 +7264,7 @@ TargetLowering::LowerCallTo(TargetLowering::CallLoweringInfo &CLI) const {
|
||||
return std::make_pair(SDValue(), CLI.Chain);
|
||||
|
||||
SDValue Res = CLI.DAG.getNode(ISD::MERGE_VALUES, CLI.DL,
|
||||
CLI.DAG.getVTList(RetTys),
|
||||
&ReturnValues[0], ReturnValues.size());
|
||||
CLI.DAG.getVTList(RetTys), ReturnValues);
|
||||
return std::make_pair(Res, CLI.Chain);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user