mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-24 13:06:56 +00:00
Convert getMemIntrinsicNode to take ArrayRef of SDValue instead of pointer and size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207329 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a829ec9131
commit
72c93595de
@ -737,13 +737,13 @@ public:
|
||||
/// INTRINSIC_W_CHAIN, or a target-specific opcode with a value not
|
||||
/// less than FIRST_TARGET_MEMORY_OPCODE.
|
||||
SDValue getMemIntrinsicNode(unsigned Opcode, SDLoc dl, SDVTList VTList,
|
||||
const SDValue *Ops, unsigned NumOps,
|
||||
ArrayRef<SDValue> Ops,
|
||||
EVT MemVT, MachinePointerInfo PtrInfo,
|
||||
unsigned Align = 0, bool Vol = false,
|
||||
bool ReadMem = true, bool WriteMem = true);
|
||||
|
||||
SDValue getMemIntrinsicNode(unsigned Opcode, SDLoc dl, SDVTList VTList,
|
||||
const SDValue *Ops, unsigned NumOps,
|
||||
ArrayRef<SDValue> Ops,
|
||||
EVT MemVT, MachineMemOperand *MMO);
|
||||
|
||||
/// getMergeValues - Create a MERGE_VALUES node from the given operands.
|
||||
|
@ -1215,9 +1215,9 @@ public:
|
||||
class MemIntrinsicSDNode : public MemSDNode {
|
||||
public:
|
||||
MemIntrinsicSDNode(unsigned Opc, unsigned Order, DebugLoc dl, SDVTList VTs,
|
||||
const SDValue *Ops, unsigned NumOps,
|
||||
EVT MemoryVT, MachineMemOperand *MMO)
|
||||
: MemSDNode(Opc, Order, dl, VTs, Ops, NumOps, MemoryVT, MMO) {
|
||||
ArrayRef<SDValue> Ops, EVT MemoryVT,
|
||||
MachineMemOperand *MMO)
|
||||
: MemSDNode(Opc, Order, dl, VTs, Ops.data(), Ops.size(), MemoryVT, MMO) {
|
||||
}
|
||||
|
||||
// Methods to support isa and dyn_cast
|
||||
|
@ -4409,7 +4409,7 @@ SDValue SelectionDAG::getMergeValues(const SDValue *Ops, unsigned NumOps,
|
||||
|
||||
SDValue
|
||||
SelectionDAG::getMemIntrinsicNode(unsigned Opcode, SDLoc dl, SDVTList VTList,
|
||||
const SDValue *Ops, unsigned NumOps,
|
||||
ArrayRef<SDValue> Ops,
|
||||
EVT MemVT, MachinePointerInfo PtrInfo,
|
||||
unsigned Align, bool Vol,
|
||||
bool ReadMem, bool WriteMem) {
|
||||
@ -4427,13 +4427,13 @@ SelectionDAG::getMemIntrinsicNode(unsigned Opcode, SDLoc dl, SDVTList VTList,
|
||||
MachineMemOperand *MMO =
|
||||
MF.getMachineMemOperand(PtrInfo, Flags, MemVT.getStoreSize(), Align);
|
||||
|
||||
return getMemIntrinsicNode(Opcode, dl, VTList, Ops, NumOps, MemVT, MMO);
|
||||
return getMemIntrinsicNode(Opcode, dl, VTList, Ops, MemVT, MMO);
|
||||
}
|
||||
|
||||
SDValue
|
||||
SelectionDAG::getMemIntrinsicNode(unsigned Opcode, SDLoc dl, SDVTList VTList,
|
||||
const SDValue *Ops, unsigned NumOps,
|
||||
EVT MemVT, MachineMemOperand *MMO) {
|
||||
ArrayRef<SDValue> Ops, EVT MemVT,
|
||||
MachineMemOperand *MMO) {
|
||||
assert((Opcode == ISD::INTRINSIC_VOID ||
|
||||
Opcode == ISD::INTRINSIC_W_CHAIN ||
|
||||
Opcode == ISD::PREFETCH ||
|
||||
@ -4447,7 +4447,7 @@ SelectionDAG::getMemIntrinsicNode(unsigned Opcode, SDLoc dl, SDVTList VTList,
|
||||
MemIntrinsicSDNode *N;
|
||||
if (VTList.VTs[VTList.NumVTs-1] != MVT::Glue) {
|
||||
FoldingSetNodeID ID;
|
||||
AddNodeIDNode(ID, Opcode, VTList, Ops, NumOps);
|
||||
AddNodeIDNode(ID, Opcode, VTList, Ops.data(), Ops.size());
|
||||
ID.AddInteger(MMO->getPointerInfo().getAddrSpace());
|
||||
void *IP = nullptr;
|
||||
if (SDNode *E = CSEMap.FindNodeOrInsertPos(ID, IP)) {
|
||||
@ -4457,12 +4457,12 @@ SelectionDAG::getMemIntrinsicNode(unsigned Opcode, SDLoc dl, SDVTList VTList,
|
||||
|
||||
N = new (NodeAllocator) MemIntrinsicSDNode(Opcode, dl.getIROrder(),
|
||||
dl.getDebugLoc(), VTList, Ops,
|
||||
NumOps, MemVT, MMO);
|
||||
MemVT, MMO);
|
||||
CSEMap.InsertNode(N, IP);
|
||||
} else {
|
||||
N = new (NodeAllocator) MemIntrinsicSDNode(Opcode, dl.getIROrder(),
|
||||
dl.getDebugLoc(), VTList, Ops,
|
||||
NumOps, MemVT, MMO);
|
||||
MemVT, MMO);
|
||||
}
|
||||
AllNodes.push_back(N);
|
||||
return SDValue(N, 0);
|
||||
|
@ -3799,8 +3799,7 @@ void SelectionDAGBuilder::visitTargetIntrinsic(const CallInst &I,
|
||||
if (IsTgtIntrinsic) {
|
||||
// This is target intrinsic that touches memory
|
||||
Result = DAG.getMemIntrinsicNode(Info.opc, getCurSDLoc(),
|
||||
VTs, &Ops[0], Ops.size(),
|
||||
Info.memVT,
|
||||
VTs, Ops, Info.memVT,
|
||||
MachinePointerInfo(Info.ptrVal, Info.offset),
|
||||
Info.align, Info.vol,
|
||||
Info.readMem, Info.writeMem);
|
||||
@ -5320,8 +5319,7 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) {
|
||||
Ops[3] = getValue(I.getArgOperand(2));
|
||||
Ops[4] = getValue(I.getArgOperand(3));
|
||||
DAG.setRoot(DAG.getMemIntrinsicNode(ISD::PREFETCH, sdl,
|
||||
DAG.getVTList(MVT::Other),
|
||||
&Ops[0], 5,
|
||||
DAG.getVTList(MVT::Other), Ops,
|
||||
EVT::getIntegerVT(*Context, 8),
|
||||
MachinePointerInfo(I.getArgOperand(0)),
|
||||
0, /* align */
|
||||
|
@ -4189,8 +4189,7 @@ static SDValue CombineBaseUpdate(SDNode *N,
|
||||
}
|
||||
MemIntrinsicSDNode *MemInt = cast<MemIntrinsicSDNode>(N);
|
||||
SDValue UpdN = DAG.getMemIntrinsicNode(NewOpc, SDLoc(N), SDTys,
|
||||
Ops.data(), Ops.size(),
|
||||
MemInt->getMemoryVT(),
|
||||
Ops, MemInt->getMemoryVT(),
|
||||
MemInt->getMemOperand());
|
||||
|
||||
// Update the uses.
|
||||
@ -4258,7 +4257,7 @@ static SDValue CombineVLDDUP(SDNode *N, TargetLowering::DAGCombinerInfo &DCI) {
|
||||
SDVTList SDTys = DAG.getVTList(ArrayRef<EVT>(Tys, NumVecs + 1));
|
||||
SDValue Ops[] = { VLD->getOperand(0), VLD->getOperand(2) };
|
||||
MemIntrinsicSDNode *VLDMemInt = cast<MemIntrinsicSDNode>(VLD);
|
||||
SDValue VLDDup = DAG.getMemIntrinsicNode(NewOpc, SDLoc(VLD), SDTys, Ops, 2,
|
||||
SDValue VLDDup = DAG.getMemIntrinsicNode(NewOpc, SDLoc(VLD), SDTys, Ops,
|
||||
VLDMemInt->getMemoryVT(),
|
||||
VLDMemInt->getMemOperand());
|
||||
|
||||
|
@ -8677,8 +8677,7 @@ static SDValue CombineBaseUpdate(SDNode *N,
|
||||
}
|
||||
MemIntrinsicSDNode *MemInt = cast<MemIntrinsicSDNode>(N);
|
||||
SDValue UpdN = DAG.getMemIntrinsicNode(NewOpc, SDLoc(N), SDTys,
|
||||
Ops.data(), Ops.size(),
|
||||
MemInt->getMemoryVT(),
|
||||
Ops, MemInt->getMemoryVT(),
|
||||
MemInt->getMemOperand());
|
||||
|
||||
// Update the uses.
|
||||
@ -8751,7 +8750,7 @@ static bool CombineVLDDUP(SDNode *N, TargetLowering::DAGCombinerInfo &DCI) {
|
||||
SDValue Ops[] = { VLD->getOperand(0), VLD->getOperand(2) };
|
||||
MemIntrinsicSDNode *VLDMemInt = cast<MemIntrinsicSDNode>(VLD);
|
||||
SDValue VLDDup = DAG.getMemIntrinsicNode(NewOpc, SDLoc(VLD), SDTys,
|
||||
Ops, 2, VLDMemInt->getMemoryVT(),
|
||||
Ops, VLDMemInt->getMemoryVT(),
|
||||
VLDMemInt->getMemOperand());
|
||||
|
||||
// Update the uses.
|
||||
|
@ -1933,7 +1933,7 @@ static SDValue createLoadLR(unsigned Opc, SelectionDAG &DAG, LoadSDNode *LD,
|
||||
DAG.getConstant(Offset, BasePtrVT));
|
||||
|
||||
SDValue Ops[] = { Chain, Ptr, Src };
|
||||
return DAG.getMemIntrinsicNode(Opc, DL, VTList, Ops, 3, MemVT,
|
||||
return DAG.getMemIntrinsicNode(Opc, DL, VTList, Ops, MemVT,
|
||||
LD->getMemOperand());
|
||||
}
|
||||
|
||||
@ -2011,7 +2011,7 @@ static SDValue createStoreLR(unsigned Opc, SelectionDAG &DAG, StoreSDNode *SD,
|
||||
DAG.getConstant(Offset, BasePtrVT));
|
||||
|
||||
SDValue Ops[] = { Chain, Value, Ptr };
|
||||
return DAG.getMemIntrinsicNode(Opc, DL, VTList, Ops, 3, MemVT,
|
||||
return DAG.getMemIntrinsicNode(Opc, DL, VTList, Ops, MemVT,
|
||||
SD->getMemOperand());
|
||||
}
|
||||
|
||||
|
@ -709,7 +709,7 @@ SDValue NVPTXTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
||||
DAG.getConstant(curOffset, MVT::i32),
|
||||
StVal, InFlag };
|
||||
Chain = DAG.getMemIntrinsicNode(NVPTXISD::StoreParam, dl,
|
||||
CopyParamVTs, &CopyParamOps[0], 5,
|
||||
CopyParamVTs, CopyParamOps,
|
||||
elemtype, MachinePointerInfo());
|
||||
InFlag = Chain.getValue(1);
|
||||
curOffset += sz / 8;
|
||||
@ -754,7 +754,7 @@ SDValue NVPTXTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
||||
DAG.getConstant(0, MVT::i32), Elt,
|
||||
InFlag };
|
||||
Chain = DAG.getMemIntrinsicNode(NVPTXISD::StoreParam, dl,
|
||||
CopyParamVTs, &CopyParamOps[0], 5,
|
||||
CopyParamVTs, CopyParamOps,
|
||||
MemVT, MachinePointerInfo());
|
||||
InFlag = Chain.getValue(1);
|
||||
} else if (NumElts == 2) {
|
||||
@ -771,7 +771,7 @@ SDValue NVPTXTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
||||
DAG.getConstant(0, MVT::i32), Elt0, Elt1,
|
||||
InFlag };
|
||||
Chain = DAG.getMemIntrinsicNode(NVPTXISD::StoreParamV2, dl,
|
||||
CopyParamVTs, &CopyParamOps[0], 6,
|
||||
CopyParamVTs, CopyParamOps,
|
||||
MemVT, MachinePointerInfo());
|
||||
InFlag = Chain.getValue(1);
|
||||
} else {
|
||||
@ -845,9 +845,8 @@ SDValue NVPTXTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
||||
Ops.push_back(InFlag);
|
||||
|
||||
SDVTList CopyParamVTs = DAG.getVTList(MVT::Other, MVT::Glue);
|
||||
Chain = DAG.getMemIntrinsicNode(Opc, dl, CopyParamVTs, &Ops[0],
|
||||
Ops.size(), MemVT,
|
||||
MachinePointerInfo());
|
||||
Chain = DAG.getMemIntrinsicNode(Opc, dl, CopyParamVTs, Ops,
|
||||
MemVT, MachinePointerInfo());
|
||||
InFlag = Chain.getValue(1);
|
||||
curOffset += PerStoreOffset;
|
||||
}
|
||||
@ -891,7 +890,7 @@ SDValue NVPTXTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
||||
opcode = NVPTXISD::StoreParamU32;
|
||||
else if (Outs[OIdx].Flags.isSExt())
|
||||
opcode = NVPTXISD::StoreParamS32;
|
||||
Chain = DAG.getMemIntrinsicNode(opcode, dl, CopyParamVTs, CopyParamOps, 5,
|
||||
Chain = DAG.getMemIntrinsicNode(opcode, dl, CopyParamVTs, CopyParamOps,
|
||||
VT, MachinePointerInfo());
|
||||
|
||||
InFlag = Chain.getValue(1);
|
||||
@ -944,7 +943,7 @@ SDValue NVPTXTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
||||
DAG.getConstant(curOffset, MVT::i32), theVal,
|
||||
InFlag };
|
||||
Chain = DAG.getMemIntrinsicNode(NVPTXISD::StoreParam, dl, CopyParamVTs,
|
||||
CopyParamOps, 5, elemtype,
|
||||
CopyParamOps, elemtype,
|
||||
MachinePointerInfo());
|
||||
|
||||
InFlag = Chain.getValue(1);
|
||||
@ -1088,8 +1087,7 @@ SDValue NVPTXTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
||||
LoadRetOps.push_back(InFlag);
|
||||
SDValue retval = DAG.getMemIntrinsicNode(
|
||||
NVPTXISD::LoadParam, dl,
|
||||
DAG.getVTList(LoadRetVTs), &LoadRetOps[0],
|
||||
LoadRetOps.size(), EltVT, MachinePointerInfo());
|
||||
DAG.getVTList(LoadRetVTs), LoadRetOps, EltVT, MachinePointerInfo());
|
||||
Chain = retval.getValue(1);
|
||||
InFlag = retval.getValue(2);
|
||||
SDValue Ret0 = retval;
|
||||
@ -1118,8 +1116,7 @@ SDValue NVPTXTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
||||
LoadRetOps.push_back(InFlag);
|
||||
SDValue retval = DAG.getMemIntrinsicNode(
|
||||
NVPTXISD::LoadParamV2, dl,
|
||||
DAG.getVTList(LoadRetVTs), &LoadRetOps[0],
|
||||
LoadRetOps.size(), EltVT, MachinePointerInfo());
|
||||
DAG.getVTList(LoadRetVTs), LoadRetOps, EltVT, MachinePointerInfo());
|
||||
Chain = retval.getValue(2);
|
||||
InFlag = retval.getValue(3);
|
||||
SDValue Ret0 = retval.getValue(0);
|
||||
@ -1164,7 +1161,7 @@ SDValue NVPTXTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
||||
LoadRetOps.push_back(InFlag);
|
||||
SDValue retval = DAG.getMemIntrinsicNode(
|
||||
Opc, dl, DAG.getVTList(LoadRetVTs),
|
||||
&LoadRetOps[0], LoadRetOps.size(), EltVT, MachinePointerInfo());
|
||||
LoadRetOps, EltVT, MachinePointerInfo());
|
||||
if (VecSize == 2) {
|
||||
Chain = retval.getValue(2);
|
||||
InFlag = retval.getValue(3);
|
||||
@ -1219,8 +1216,8 @@ SDValue NVPTXTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
||||
LoadRetOps.push_back(InFlag);
|
||||
SDValue retval = DAG.getMemIntrinsicNode(
|
||||
NVPTXISD::LoadParam, dl,
|
||||
DAG.getVTList(LoadRetVTs), &LoadRetOps[0],
|
||||
LoadRetOps.size(), TheLoadType, MachinePointerInfo());
|
||||
DAG.getVTList(LoadRetVTs), LoadRetOps,
|
||||
TheLoadType, MachinePointerInfo());
|
||||
Chain = retval.getValue(1);
|
||||
InFlag = retval.getValue(2);
|
||||
SDValue Ret0 = retval.getValue(0);
|
||||
@ -1405,7 +1402,7 @@ NVPTXTargetLowering::LowerSTOREVector(SDValue Op, SelectionDAG &DAG) const {
|
||||
MemSDNode *MemSD = cast<MemSDNode>(N);
|
||||
|
||||
SDValue NewSt = DAG.getMemIntrinsicNode(
|
||||
Opcode, DL, DAG.getVTList(MVT::Other), &Ops[0], Ops.size(),
|
||||
Opcode, DL, DAG.getVTList(MVT::Other), Ops,
|
||||
MemSD->getMemoryVT(), MemSD->getMemOperand());
|
||||
|
||||
//return DCI.CombineTo(N, NewSt, true);
|
||||
@ -1833,7 +1830,7 @@ NVPTXTargetLowering::LowerReturn(SDValue Chain, CallingConv::ID CallConv,
|
||||
StoreVal = DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i16, StoreVal);
|
||||
SDValue Ops[] = { Chain, DAG.getConstant(0, MVT::i32), StoreVal };
|
||||
Chain = DAG.getMemIntrinsicNode(NVPTXISD::StoreRetval, dl,
|
||||
DAG.getVTList(MVT::Other), &Ops[0], 3,
|
||||
DAG.getVTList(MVT::Other), Ops,
|
||||
EltVT, MachinePointerInfo());
|
||||
|
||||
} else if (NumElts == 2) {
|
||||
@ -1849,7 +1846,7 @@ NVPTXTargetLowering::LowerReturn(SDValue Chain, CallingConv::ID CallConv,
|
||||
SDValue Ops[] = { Chain, DAG.getConstant(0, MVT::i32), StoreVal0,
|
||||
StoreVal1 };
|
||||
Chain = DAG.getMemIntrinsicNode(NVPTXISD::StoreRetvalV2, dl,
|
||||
DAG.getVTList(MVT::Other), &Ops[0], 4,
|
||||
DAG.getVTList(MVT::Other), Ops,
|
||||
EltVT, MachinePointerInfo());
|
||||
} else {
|
||||
// V4 stores
|
||||
@ -1921,8 +1918,8 @@ NVPTXTargetLowering::LowerReturn(SDValue Chain, CallingConv::ID CallConv,
|
||||
|
||||
// Chain = DAG.getNode(Opc, dl, MVT::Other, &Ops[0], Ops.size());
|
||||
Chain =
|
||||
DAG.getMemIntrinsicNode(Opc, dl, DAG.getVTList(MVT::Other), &Ops[0],
|
||||
Ops.size(), EltVT, MachinePointerInfo());
|
||||
DAG.getMemIntrinsicNode(Opc, dl, DAG.getVTList(MVT::Other), Ops,
|
||||
EltVT, MachinePointerInfo());
|
||||
Offset += PerStoreOffset;
|
||||
}
|
||||
}
|
||||
@ -1959,8 +1956,8 @@ NVPTXTargetLowering::LowerReturn(SDValue Chain, CallingConv::ID CallConv,
|
||||
|
||||
SDValue Ops[] = { Chain, DAG.getConstant(SizeSoFar, MVT::i32), TmpVal };
|
||||
Chain = DAG.getMemIntrinsicNode(NVPTXISD::StoreRetval, dl,
|
||||
DAG.getVTList(MVT::Other), &Ops[0],
|
||||
3, TheStoreType,
|
||||
DAG.getVTList(MVT::Other), Ops,
|
||||
TheStoreType,
|
||||
MachinePointerInfo());
|
||||
if(TheValType.isVector())
|
||||
SizeSoFar +=
|
||||
@ -2543,8 +2540,8 @@ static void ReplaceLoadVector(SDNode *N, SelectionDAG &DAG,
|
||||
// pass along the extension information
|
||||
OtherOps.push_back(DAG.getIntPtrConstant(LD->getExtensionType()));
|
||||
|
||||
SDValue NewLD = DAG.getMemIntrinsicNode(Opcode, DL, LdResVTs, &OtherOps[0],
|
||||
OtherOps.size(), LD->getMemoryVT(),
|
||||
SDValue NewLD = DAG.getMemIntrinsicNode(Opcode, DL, LdResVTs, OtherOps,
|
||||
LD->getMemoryVT(),
|
||||
LD->getMemOperand());
|
||||
|
||||
SmallVector<SDValue, 4> ScalarRes;
|
||||
@ -2655,9 +2652,9 @@ static void ReplaceINTRINSIC_W_CHAIN(SDNode *N, SelectionDAG &DAG,
|
||||
|
||||
MemIntrinsicSDNode *MemSD = cast<MemIntrinsicSDNode>(N);
|
||||
|
||||
SDValue NewLD = DAG.getMemIntrinsicNode(
|
||||
Opcode, DL, LdResVTs, &OtherOps[0], OtherOps.size(),
|
||||
MemSD->getMemoryVT(), MemSD->getMemOperand());
|
||||
SDValue NewLD = DAG.getMemIntrinsicNode(Opcode, DL, LdResVTs, OtherOps,
|
||||
MemSD->getMemoryVT(),
|
||||
MemSD->getMemOperand());
|
||||
|
||||
SmallVector<SDValue, 4> ScalarRes;
|
||||
|
||||
@ -2694,8 +2691,8 @@ static void ReplaceINTRINSIC_W_CHAIN(SDNode *N, SelectionDAG &DAG,
|
||||
// We make sure the memory type is i8, which will be used during isel
|
||||
// to select the proper instruction.
|
||||
SDValue NewLD =
|
||||
DAG.getMemIntrinsicNode(ISD::INTRINSIC_W_CHAIN, DL, LdResVTs, &Ops[0],
|
||||
Ops.size(), MVT::i8, MemSD->getMemOperand());
|
||||
DAG.getMemIntrinsicNode(ISD::INTRINSIC_W_CHAIN, DL, LdResVTs, Ops,
|
||||
MVT::i8, MemSD->getMemOperand());
|
||||
|
||||
Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, MVT::i8,
|
||||
NewLD.getValue(0)));
|
||||
|
@ -5095,8 +5095,7 @@ SDValue PPCTargetLowering::LowerFP_TO_INT(SDValue Op, SelectionDAG &DAG,
|
||||
MF.getMachineMemOperand(MPI, MachineMemOperand::MOStore, 4, 4);
|
||||
SDValue Ops[] = { DAG.getEntryNode(), Tmp, FIPtr };
|
||||
Chain = DAG.getMemIntrinsicNode(PPCISD::STFIWX, dl,
|
||||
DAG.getVTList(MVT::Other), Ops, array_lengthof(Ops),
|
||||
MVT::i32, MMO);
|
||||
DAG.getVTList(MVT::Other), Ops, MVT::i32, MMO);
|
||||
} else
|
||||
Chain = DAG.getStore(DAG.getEntryNode(), dl, Tmp, FIPtr,
|
||||
MPI, false, false, 0);
|
||||
@ -5223,7 +5222,7 @@ SDValue PPCTargetLowering::LowerINT_TO_FP(SDValue Op,
|
||||
Ld = DAG.getMemIntrinsicNode(Op.getOpcode() == ISD::UINT_TO_FP ?
|
||||
PPCISD::LFIWZX : PPCISD::LFIWAX,
|
||||
dl, DAG.getVTList(MVT::f64, MVT::Other),
|
||||
Ops, 2, MVT::i32, MMO);
|
||||
Ops, MVT::i32, MMO);
|
||||
} else {
|
||||
assert(PPCSubTarget.isPPC64() &&
|
||||
"i32->FP without LFIWAX supported only on PPC64");
|
||||
@ -8008,7 +8007,7 @@ SDValue PPCTargetLowering::PerformDAGCombine(SDNode *N,
|
||||
};
|
||||
|
||||
Val = DAG.getMemIntrinsicNode(PPCISD::STFIWX, dl,
|
||||
DAG.getVTList(MVT::Other), Ops, array_lengthof(Ops),
|
||||
DAG.getVTList(MVT::Other), Ops,
|
||||
cast<StoreSDNode>(N)->getMemoryVT(),
|
||||
cast<StoreSDNode>(N)->getMemOperand());
|
||||
DCI.AddToWorklist(Val.getNode());
|
||||
@ -8035,8 +8034,7 @@ SDValue PPCTargetLowering::PerformDAGCombine(SDNode *N,
|
||||
};
|
||||
return
|
||||
DAG.getMemIntrinsicNode(PPCISD::STBRX, dl, DAG.getVTList(MVT::Other),
|
||||
Ops, array_lengthof(Ops),
|
||||
cast<StoreSDNode>(N)->getMemoryVT(),
|
||||
Ops, cast<StoreSDNode>(N)->getMemoryVT(),
|
||||
cast<StoreSDNode>(N)->getMemOperand());
|
||||
}
|
||||
break;
|
||||
@ -8214,7 +8212,7 @@ SDValue PPCTargetLowering::PerformDAGCombine(SDNode *N,
|
||||
DAG.getMemIntrinsicNode(PPCISD::LBRX, dl,
|
||||
DAG.getVTList(N->getValueType(0) == MVT::i64 ?
|
||||
MVT::i64 : MVT::i32, MVT::Other),
|
||||
Ops, 3, LD->getMemoryVT(), LD->getMemOperand());
|
||||
Ops, LD->getMemoryVT(), LD->getMemOperand());
|
||||
|
||||
// If this is an i16 load, insert the truncate.
|
||||
SDValue ResVal = BSLoad;
|
||||
|
@ -1114,7 +1114,7 @@ SDValue R600TargetLowering::LowerSTORE(SDValue Op, SelectionDAG &DAG) const {
|
||||
SDValue Input = DAG.getNode(ISD::BUILD_VECTOR, DL, MVT::v4i32, Src);
|
||||
SDValue Args[3] = { Chain, Input, DWordAddr };
|
||||
return DAG.getMemIntrinsicNode(AMDGPUISD::STORE_MSKOR, DL,
|
||||
Op->getVTList(), Args, 3, MemVT,
|
||||
Op->getVTList(), Args, MemVT,
|
||||
StoreNode->getMemOperand());
|
||||
} else if (Ptr->getOpcode() != AMDGPUISD::DWORDADDR &&
|
||||
Value.getValueType().bitsGE(MVT::i32)) {
|
||||
|
@ -628,7 +628,7 @@ SDValue SITargetLowering::LowerOperation(SDValue Op, SelectionDAG &DAG) const {
|
||||
MachineMemOperand::MOLoad | MachineMemOperand::MOInvariant,
|
||||
VT.getSizeInBits() / 8, 4);
|
||||
return DAG.getMemIntrinsicNode(AMDGPUISD::LOAD_CONSTANT, DL,
|
||||
Op->getVTList(), Ops, 2, VT, MMO);
|
||||
Op->getVTList(), Ops, VT, MMO);
|
||||
}
|
||||
case AMDGPUIntrinsic::SI_sample:
|
||||
return LowerSampleIntrinsic(AMDGPUISD::SAMPLE, Op, DAG);
|
||||
@ -676,8 +676,7 @@ SDValue SITargetLowering::LowerOperation(SDValue Op, SelectionDAG &DAG) const {
|
||||
MachineMemOperand::MOStore,
|
||||
VT.getSizeInBits() / 8, 4);
|
||||
return DAG.getMemIntrinsicNode(AMDGPUISD::TBUFFER_STORE_FORMAT, DL,
|
||||
Op->getVTList(), Ops,
|
||||
sizeof(Ops)/sizeof(Ops[0]), VT, MMO);
|
||||
Op->getVTList(), Ops, VT, MMO);
|
||||
}
|
||||
default:
|
||||
break;
|
||||
|
@ -2257,7 +2257,6 @@ SDValue SystemZTargetLowering::lowerATOMIC_LOAD_OP(SDValue Op,
|
||||
SDValue Ops[] = { ChainIn, AlignedAddr, Src2, BitShift, NegBitShift,
|
||||
DAG.getConstant(BitSize, WideVT) };
|
||||
SDValue AtomicOp = DAG.getMemIntrinsicNode(Opcode, DL, VTList, Ops,
|
||||
array_lengthof(Ops),
|
||||
NarrowVT, MMO);
|
||||
|
||||
// Rotate the result of the final CS so that the field is in the lower
|
||||
@ -2349,8 +2348,7 @@ SDValue SystemZTargetLowering::lowerATOMIC_CMP_SWAP(SDValue Op,
|
||||
SDValue Ops[] = { ChainIn, AlignedAddr, CmpVal, SwapVal, BitShift,
|
||||
NegBitShift, DAG.getConstant(BitSize, WideVT) };
|
||||
SDValue AtomicOp = DAG.getMemIntrinsicNode(SystemZISD::ATOMIC_CMP_SWAPW, DL,
|
||||
VTList, Ops, array_lengthof(Ops),
|
||||
NarrowVT, MMO);
|
||||
VTList, Ops, NarrowVT, MMO);
|
||||
return AtomicOp;
|
||||
}
|
||||
|
||||
@ -2386,7 +2384,7 @@ SDValue SystemZTargetLowering::lowerPREFETCH(SDValue Op,
|
||||
Op.getOperand(1)
|
||||
};
|
||||
return DAG.getMemIntrinsicNode(SystemZISD::PREFETCH, SDLoc(Op),
|
||||
Node->getVTList(), Ops, array_lengthof(Ops),
|
||||
Node->getVTList(), Ops,
|
||||
Node->getMemoryVT(), Node->getMemOperand());
|
||||
}
|
||||
|
||||
|
@ -5565,8 +5565,7 @@ static SDValue EltsFromConsecutiveLoads(EVT VT, SmallVectorImpl<SDValue> &Elts,
|
||||
SDVTList Tys = DAG.getVTList(MVT::v2i64, MVT::Other);
|
||||
SDValue Ops[] = { LDBase->getChain(), LDBase->getBasePtr() };
|
||||
SDValue ResNode =
|
||||
DAG.getMemIntrinsicNode(X86ISD::VZEXT_LOAD, DL, Tys, Ops,
|
||||
array_lengthof(Ops), MVT::i64,
|
||||
DAG.getMemIntrinsicNode(X86ISD::VZEXT_LOAD, DL, Tys, Ops, MVT::i64,
|
||||
LDBase->getPointerInfo(),
|
||||
LDBase->getAlignment(),
|
||||
false/*isVolatile*/, true/*ReadMem*/,
|
||||
@ -8865,8 +8864,7 @@ SDValue X86TargetLowering::BuildFILD(SDValue Op, EVT SrcVT, SDValue Chain,
|
||||
SDValue Ops[] = { Chain, StackSlot, DAG.getValueType(SrcVT) };
|
||||
SDValue Result = DAG.getMemIntrinsicNode(useSSE ? X86ISD::FILD_FLAG :
|
||||
X86ISD::FILD, DL,
|
||||
Tys, Ops, array_lengthof(Ops),
|
||||
SrcVT, MMO);
|
||||
Tys, Ops, SrcVT, MMO);
|
||||
|
||||
if (useSSE) {
|
||||
Chain = Result.getValue(1);
|
||||
@ -8889,8 +8887,7 @@ SDValue X86TargetLowering::BuildFILD(SDValue Op, EVT SrcVT, SDValue Chain,
|
||||
MachineMemOperand::MOStore, SSFISize, SSFISize);
|
||||
|
||||
Chain = DAG.getMemIntrinsicNode(X86ISD::FST, DL, Tys,
|
||||
Ops, array_lengthof(Ops),
|
||||
Op.getValueType(), MMO);
|
||||
Ops, Op.getValueType(), MMO);
|
||||
Result = DAG.getLoad(Op.getValueType(), DL, Chain, StackSlot,
|
||||
MachinePointerInfo::getFixedStack(SSFI),
|
||||
false, false, false, 0);
|
||||
@ -9085,7 +9082,7 @@ SDValue X86TargetLowering::LowerUINT_TO_FP(SDValue Op,
|
||||
SDVTList Tys = DAG.getVTList(MVT::f80, MVT::Other);
|
||||
SDValue Ops[] = { Store, StackSlot, DAG.getValueType(MVT::i64) };
|
||||
SDValue Fild = DAG.getMemIntrinsicNode(X86ISD::FILD, dl, Tys, Ops,
|
||||
array_lengthof(Ops), MVT::i64, MMO);
|
||||
MVT::i64, MMO);
|
||||
|
||||
APInt FF(32, 0x5F800000ULL);
|
||||
|
||||
@ -9178,8 +9175,7 @@ X86TargetLowering:: FP_TO_INTHelper(SDValue Op, SelectionDAG &DAG,
|
||||
MachineMemOperand *MMO =
|
||||
MF.getMachineMemOperand(MachinePointerInfo::getFixedStack(SSFI),
|
||||
MachineMemOperand::MOLoad, MemSize, MemSize);
|
||||
Value = DAG.getMemIntrinsicNode(X86ISD::FLD, DL, Tys, Ops,
|
||||
array_lengthof(Ops), DstTy, MMO);
|
||||
Value = DAG.getMemIntrinsicNode(X86ISD::FLD, DL, Tys, Ops, DstTy, MMO);
|
||||
Chain = Value.getValue(1);
|
||||
SSFI = MF.getFrameInfo()->CreateStackObject(MemSize, MemSize, false);
|
||||
StackSlot = DAG.getFrameIndex(SSFI, getPointerTy());
|
||||
@ -9193,8 +9189,7 @@ X86TargetLowering:: FP_TO_INTHelper(SDValue Op, SelectionDAG &DAG,
|
||||
// Build the FP_TO_INT*_IN_MEM
|
||||
SDValue Ops[] = { Chain, Value, StackSlot };
|
||||
SDValue FIST = DAG.getMemIntrinsicNode(Opc, DL, DAG.getVTList(MVT::Other),
|
||||
Ops, array_lengthof(Ops), DstTy,
|
||||
MMO);
|
||||
Ops, DstTy, MMO);
|
||||
return std::make_pair(FIST, StackSlot);
|
||||
} else {
|
||||
SDValue ftol = DAG.getNode(X86ISD::WIN_FTOL, DL,
|
||||
@ -11459,8 +11454,7 @@ SDValue X86TargetLowering::LowerVAARG(SDValue Op, SelectionDAG &DAG) const {
|
||||
InstOps.push_back(DAG.getConstant(Align, MVT::i32));
|
||||
SDVTList VTs = DAG.getVTList(getPointerTy(), MVT::Other);
|
||||
SDValue VAARG = DAG.getMemIntrinsicNode(X86ISD::VAARG_64, dl,
|
||||
VTs, &InstOps[0], InstOps.size(),
|
||||
MVT::i64,
|
||||
VTs, InstOps, MVT::i64,
|
||||
MachinePointerInfo(SV),
|
||||
/*Align=*/0,
|
||||
/*Volatile=*/false,
|
||||
@ -12932,8 +12926,7 @@ SDValue X86TargetLowering::LowerFLT_ROUNDS_(SDValue Op,
|
||||
SDValue Ops[] = { DAG.getEntryNode(), StackSlot };
|
||||
SDValue Chain = DAG.getMemIntrinsicNode(X86ISD::FNSTCW16m, DL,
|
||||
DAG.getVTList(MVT::Other),
|
||||
Ops, array_lengthof(Ops), MVT::i16,
|
||||
MMO);
|
||||
Ops, MVT::i16, MMO);
|
||||
|
||||
// Load FP Control Word from stack slot
|
||||
SDValue CWD = DAG.getLoad(MVT::i16, DL, Chain, StackSlot,
|
||||
@ -13966,7 +13959,7 @@ static SDValue LowerCMP_SWAP(SDValue Op, const X86Subtarget *Subtarget,
|
||||
SDVTList Tys = DAG.getVTList(MVT::Other, MVT::Glue);
|
||||
MachineMemOperand *MMO = cast<AtomicSDNode>(Op)->getMemOperand();
|
||||
SDValue Result = DAG.getMemIntrinsicNode(X86ISD::LCMPXCHG_DAG, DL, Tys,
|
||||
Ops, array_lengthof(Ops), T, MMO);
|
||||
Ops, T, MMO);
|
||||
SDValue cpOut =
|
||||
DAG.getCopyFromReg(Result.getValue(0), DL, Reg, T, Result.getValue(1));
|
||||
return cpOut;
|
||||
@ -14237,7 +14230,7 @@ ReplaceATOMIC_BINARY_64(SDNode *Node, SmallVectorImpl<SDValue>&Results,
|
||||
SDValue Ops[] = { Chain, In1, In2L, In2H };
|
||||
SDVTList Tys = DAG.getVTList(MVT::i32, MVT::i32, MVT::Other);
|
||||
SDValue Result =
|
||||
DAG.getMemIntrinsicNode(NewOp, dl, Tys, Ops, array_lengthof(Ops), MVT::i64,
|
||||
DAG.getMemIntrinsicNode(NewOp, dl, Tys, Ops, MVT::i64,
|
||||
cast<MemSDNode>(Node)->getMemOperand());
|
||||
SDValue OpsF[] = { Result.getValue(0), Result.getValue(1)};
|
||||
Results.push_back(DAG.getNode(ISD::BUILD_PAIR, dl, MVT::i64, OpsF));
|
||||
@ -14358,8 +14351,7 @@ void X86TargetLowering::ReplaceNodeResults(SDNode *N,
|
||||
MachineMemOperand *MMO = cast<AtomicSDNode>(N)->getMemOperand();
|
||||
unsigned Opcode = Regs64bit ? X86ISD::LCMPXCHG16_DAG :
|
||||
X86ISD::LCMPXCHG8_DAG;
|
||||
SDValue Result = DAG.getMemIntrinsicNode(Opcode, dl, Tys,
|
||||
Ops, array_lengthof(Ops), T, MMO);
|
||||
SDValue Result = DAG.getMemIntrinsicNode(Opcode, dl, Tys, Ops, T, MMO);
|
||||
SDValue cpOutL = DAG.getCopyFromReg(Result.getValue(0), dl,
|
||||
Regs64bit ? X86::RAX : X86::EAX,
|
||||
HalfT, Result.getValue(1));
|
||||
@ -17046,7 +17038,6 @@ static SDValue PerformShuffleCombine256(SDNode *N, SelectionDAG &DAG,
|
||||
SDValue Ops[] = { Ld->getChain(), Ld->getBasePtr() };
|
||||
SDValue ResNode =
|
||||
DAG.getMemIntrinsicNode(X86ISD::VZEXT_LOAD, dl, Tys, Ops,
|
||||
array_lengthof(Ops),
|
||||
Ld->getMemoryVT(),
|
||||
Ld->getPointerInfo(),
|
||||
Ld->getAlignment(),
|
||||
|
Loading…
Reference in New Issue
Block a user