Home | History | Annotate | Download | only in NVPTX

Lines Matching defs:DAG

10 // selection DAG.
255 // We have some custom DAG combine patterns for these nodes
485 NVPTXTargetLowering::LowerGlobalAddress(SDValue Op, SelectionDAG &DAG) const {
488 Op = DAG.getTargetGlobalAddress(GV, dl, getPointerTy());
489 return DAG.getNode(NVPTXISD::Wrapper, dl, getPointerTy(), Op);
653 SelectionDAG &DAG = CLI.DAG;
670 MachineFunction &MF = DAG.getMachineFunction();
675 DAG.getCALLSEQ_START(Chain, DAG.getIntPtrConstant(uniqueCallSite, true),
706 SDVTList DeclareParamVTs = DAG.getVTList(MVT::Other, MVT::Glue);
707 SDValue DeclareParamOps[] = { Chain, DAG.getConstant(align, MVT::i32),
708 DAG.getConstant(paramCount, MVT::i32),
709 DAG.getConstant(sz, MVT::i32), InFlag };
710 Chain = DAG.getNode(NVPTXISD::DeclareParam, dl, DeclareParamVTs,
720 StVal = DAG.getNode(ISD::ANY_EXTEND, dl, MVT::i16, StVal);
722 SDVTList CopyParamVTs = DAG.getVTList(MVT::Other, MVT::Glue);
724 DAG.getConstant(paramCount, MVT::i32),
725 DAG.getConstant(Offsets[j], MVT::i32),
727 Chain = DAG.getMemIntrinsicNode(NVPTXISD::StoreParam, dl,
744 SDVTList DeclareParamVTs = DAG.getVTList(MVT::Other, MVT::Glue);
745 SDValue DeclareParamOps[] = { Chain, DAG.getConstant(align, MVT::i32),
746 DAG.getConstant(paramCount, MVT::i32),
747 DAG.getConstant(sz, MVT::i32), InFlag };
748 Chain = DAG.getNode(NVPTXISD::DeclareParam, dl, DeclareParamVTs,
764 Elt = DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i16, Elt);
766 SDVTList CopyParamVTs = DAG.getVTList(MVT::Other, MVT::Glue);
768 DAG.getConstant(paramCount, MVT::i32),
769 DAG.getConstant(0, MVT::i32), Elt,
771 Chain = DAG.getMemIntrinsicNode(NVPTXISD::StoreParam, dl,
779 Elt0 = DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i16, Elt0);
780 Elt1 = DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i16, Elt1);
783 SDVTList CopyParamVTs = DAG.getVTList(MVT::Other, MVT::Glue);
785 DAG.getConstant(paramCount, MVT::i32),
786 DAG.getConstant(0, MVT::i32), Elt0, Elt1,
788 Chain = DAG.getMemIntrinsicNode(NVPTXISD::StoreParamV2, dl,
817 Ops.push_back(DAG.getConstant(paramCount, MVT::i32));
818 Ops.push_back(DAG.getConstant(curOffset, MVT::i32));
824 StoreVal = DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i16, StoreVal);
831 DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i16, StoreVal);
833 StoreVal = DAG.getUNDEF(EltVT);
843 DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i16, StoreVal);
845 StoreVal = DAG.getUNDEF(EltVT);
853 DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i16, StoreVal);
855 StoreVal = DAG.getUNDEF(EltVT);
862 SDVTList CopyParamVTs = DAG.getVTList(MVT::Other, MVT::Glue);
863 Chain = DAG.getMemIntrinsicNode(Opc, dl, CopyParamVTs, Ops,
883 SDVTList DeclareParamVTs = DAG.getVTList(MVT::Other, MVT::Glue);
885 DAG.getConstant(paramCount, MVT::i32),
886 DAG.getConstant(sz, MVT::i32),
887 DAG.getConstant(0, MVT::i32), InFlag };
888 Chain = DAG.getNode(NVPTXISD::DeclareScalarParam, dl, DeclareParamVTs,
897 OutV = DAG.getNode(opc, dl, MVT::i16, OutV);
899 SDVTList CopyParamVTs = DAG.getVTList(MVT::Other, MVT::Glue);
900 SDValue CopyParamOps[] = { Chain, DAG.getConstant(paramCount, MVT::i32),
901 DAG.getConstant(0, MVT::i32), OutV, InFlag };
908 Chain = DAG.getMemIntrinsicNode(opcode, dl, CopyParamVTs, CopyParamOps,
924 SDVTList DeclareParamVTs = DAG.getVTList(MVT::Other, MVT::Glue);
930 Chain, DAG.getConstant(Outs[OIdx].Flags.getByValAlign(), MVT::i32),
931 DAG.getConstant(paramCount, MVT::i32), DAG.getConstant(sz, MVT::i32),
934 Chain = DAG.getNode(NVPTXISD::DeclareParam, dl, DeclareParamVTs,
942 DAG.getNode(ISD::ADD, dl, getPointerTy(), OutVals[OIdx],
943 DAG.getConstant(curOffset, getPointerTy()));
944 SDValue theVal = DAG.getLoad(elemtype, dl, tempChain, srcAddr,
948 theVal = DAG.getNode(ISD::ANY_EXTEND, dl, MVT::i16, theVal);
950 SDVTList CopyParamVTs = DAG.getVTList(MVT::Other, MVT::Glue);
951 SDValue CopyParamOps[] = { Chain, DAG.getConstant(paramCount, MVT::i32),
952 DAG.getConstant(curOffset, MVT::i32), theVal,
954 Chain = DAG.getMemIntrinsicNode(NVPTXISD::StoreParam, dl, CopyParamVTs,
979 SDVTList DeclareRetVTs = DAG.getVTList(MVT::Other, MVT::Glue);
980 SDValue DeclareRetOps[] = { Chain, DAG.getConstant(1, MVT::i32),
981 DAG.getConstant(resultsz, MVT::i32),
982 DAG.getConstant(0, MVT::i32), InFlag };
983 Chain = DAG.getNode(NVPTXISD::DeclareRet, dl, DeclareRetVTs,
988 SDVTList DeclareRetVTs = DAG.getVTList(MVT::Other, MVT::Glue);
990 DAG.getConstant(retAlignment, MVT::i32),
991 DAG.getConstant(resultsz / 8, MVT::i32),
992 DAG.getConstant(0, MVT::i32), InFlag };
993 Chain = DAG.getNode(NVPTXISD::DeclareRetParam, dl, DeclareRetVTs,
1007 SDVTList ProtoVTs = DAG.getVTList(MVT::Other, MVT::Glue);
1012 Chain, DAG.getTargetExternalSymbol(ProtoStr, MVT::i32), InFlag,
1014 Chain = DAG.getNode(NVPTXISD::CallPrototype, dl, ProtoVTs, ProtoOps);
1018 SDVTList PrintCallVTs = DAG.getVTList(MVT::Other, MVT::Glue);
1020 Chain, DAG.getConstant((Ins.size() == 0) ? 0 : 1, MVT::i32), InFlag
1022 Chain = DAG.getNode(Func ? (NVPTXISD::PrintCallUni) : (NVPTXISD::PrintCall),
1027 SDVTList CallVoidVTs = DAG.getVTList(MVT::Other, MVT::Glue);
1029 Chain = DAG.getNode(NVPTXISD::CallVoid, dl, CallVoidVTs, CallVoidOps);
1033 SDVTList CallArgBeginVTs = DAG.getVTList(MVT::Other, MVT::Glue);
1035 Chain = DAG.getNode(NVPTXISD::CallArgBegin, dl, CallArgBeginVTs,
1045 SDVTList CallArgVTs = DAG.getVTList(MVT::Other, MVT::Glue);
1046 SDValue CallArgOps[] = { Chain, DAG.getConstant(1, MVT::i32),
1047 DAG.getConstant(i, MVT::i32), InFlag };
1048 Chain = DAG.getNode(opcode, dl, CallArgVTs, CallArgOps);
1051 SDVTList CallArgEndVTs = DAG.getVTList(MVT::Other, MVT::Glue);
1052 SDValue CallArgEndOps[] = { Chain, DAG.getConstant(Func ? 1 : 0, MVT::i32),
1054 Chain = DAG.getNode(NVPTXISD::CallArgEnd, dl, CallArgEndVTs, CallArgEndOps);
1058 SDVTList PrototypeVTs = DAG.getVTList(MVT::Other, MVT::Glue);
1059 SDValue PrototypeOps[] = { Chain, DAG.getConstant(uniqueCallSite, MVT::i32),
1061 Chain = DAG.getNode(NVPTXISD::Prototype, dl, PrototypeVTs, PrototypeOps);
1092 LoadRetOps.push_back(DAG.getConstant(1, MVT::i32));
1093 LoadRetOps.push_back(DAG.getConstant(0, MVT::i32));
1095 SDValue retval = DAG.getMemIntrinsicNode(
1097 DAG.getVTList(LoadRetVTs), LoadRetOps, EltVT, MachinePointerInfo());
1102 Ret0 = DAG.getNode(ISD::TRUNCATE, dl, EltVT, Ret0);
1122 LoadRetOps.push_back(DAG.getConstant(1, MVT::i32));
1123 LoadRetOps.push_back(DAG.getConstant(0, MVT::i32));
1125 SDValue retval = DAG.getMemIntrinsicNode(
1127 DAG.getVTList(LoadRetVTs), LoadRetOps, EltVT, MachinePointerInfo());
1133 Ret0 = DAG.getNode(ISD::TRUNCATE, dl, MVT::i1, Ret0);
1135 Ret1 = DAG.getNode(ISD::TRUNCATE, dl, MVT::i1, Ret1);
1168 LoadRetOps.push_back(DAG.getConstant(1, MVT::i32));
1169 LoadRetOps.push_back(DAG.getConstant(Ofst, MVT::i32));
1171 SDValue retval = DAG.getMemIntrinsicNode(
1172 Opc, dl, DAG.getVTList(LoadRetVTs),
1187 Elt = DAG.getNode(ISD::TRUNCATE, dl, EltVT, Elt);
1226 LoadRetOps.push_back(DAG.getConstant(1, MVT::i32));
1227 LoadRetOps.push_back(DAG.getConstant(Offsets[i], MVT::i32));
1229 SDValue retval = DAG.getMemIntrinsicNode(
1231 DAG.getVTList(LoadRetVTs), LoadRetOps,
1237 Ret0 = DAG.getNode(ISD::TRUNCATE, dl, Ins[i].VT, Ret0);
1243 Chain = DAG.getCALLSEQ_END(Chain, DAG.getIntPtrConstant(uniqueCallSite, true),
1244 DAG.getIntPtrConstant(uniqueCallSite + 1, true),
1258 NVPTXTargetLowering::LowerCONCAT_VECTORS(SDValue Op, SelectionDAG &DAG) const {
1269 Ops.push_back(DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl, EltVT, SubOp,
1270 DAG.getIntPtrConstant(j)));
1273 return DAG.getNode(ISD::BUILD_VECTOR, dl, Node->getValueType(0), Ops);
1282 SelectionDAG &DAG) const {
1301 SDValue Hi = DAG.getNode(Opc, dl, VT, ShOpHi, ShAmt);
1302 SDValue Lo = DAG.getNode(NVPTXISD::FUN_SHFR_CLAMP, dl, VT, ShOpLo, ShOpHi,
1306 return DAG.getMergeValues(Ops, dl);
1318 SDValue RevShAmt = DAG.getNode(ISD::SUB, dl, MVT::i32,
1319 DAG.getConstant(VTBits, MVT::i32), ShAmt);
1320 SDValue Tmp1 = DAG.getNode(ISD::SRL, dl, VT, ShOpLo, ShAmt);
1321 SDValue ExtraShAmt = DAG.getNode(ISD::SUB, dl, MVT::i32, ShAmt,
1322 DAG.getConstant(VTBits, MVT::i32));
1323 SDValue Tmp2 = DAG.getNode(ISD::SHL, dl, VT, ShOpHi, RevShAmt);
1324 SDValue FalseVal = DAG.getNode(ISD::OR, dl, VT, Tmp1, Tmp2);
1325 SDValue TrueVal = DAG.getNode(Opc, dl, VT, ShOpHi, ExtraShAmt);
1327 SDValue Cmp = DAG.getSetCC(dl, MVT::i1, ShAmt,
1328 DAG.getConstant(VTBits, MVT::i32), ISD::SETGE);
1329 SDValue Hi = DAG.getNode(Opc, dl, VT, ShOpHi, ShAmt);
1330 SDValue Lo = DAG.getNode(ISD::SELECT, dl, VT, Cmp, TrueVal, FalseVal);
1333 return DAG.getMergeValues(Ops, dl);
1343 SelectionDAG &DAG) const {
1361 SDValue Hi = DAG.getNode(NVPTXISD::FUN_SHFL_CLAMP, dl, VT, ShOpLo, ShOpHi,
1363 SDValue Lo = DAG.getNode(ISD::SHL, dl, VT, ShOpLo, ShAmt);
1366 return DAG.getMergeValues(Ops, dl);
1378 SDValue RevShAmt = DAG.getNode(ISD::SUB, dl, MVT::i32,
1379 DAG.getConstant(VTBits, MVT::i32), ShAmt);
1380 SDValue Tmp1 = DAG.getNode(ISD::SHL, dl, VT, ShOpHi, ShAmt);
1381 SDValue ExtraShAmt = DAG.getNode(ISD::SUB, dl, MVT::i32, ShAmt,
1382 DAG.getConstant(VTBits, MVT::i32));
1383 SDValue Tmp2 = DAG.getNode(ISD::SRL, dl, VT, ShOpLo, RevShAmt);
1384 SDValue FalseVal = DAG.getNode(ISD::OR, dl, VT, Tmp1, Tmp2);
1385 SDValue TrueVal = DAG.getNode(ISD::SHL, dl, VT, ShOpLo, ExtraShAmt);
1387 SDValue Cmp = DAG.getSetCC(dl, MVT::i1, ShAmt,
1388 DAG.getConstant(VTBits, MVT::i32), ISD::SETGE);
1389 SDValue Lo = DAG.getNode(ISD::SHL, dl, VT, ShOpLo, ShAmt);
1390 SDValue Hi = DAG.getNode(ISD::SELECT, dl, VT, Cmp, TrueVal, FalseVal);
1393 return DAG.getMergeValues(Ops, dl);
1398 NVPTXTargetLowering::LowerOperation(SDValue Op, SelectionDAG &DAG) const {
1405 return LowerGlobalAddress(Op, DAG);
1412 return LowerCONCAT_VECTORS(Op, DAG);
1414 return LowerSTORE(Op, DAG);
1416 return LowerLOAD(Op, DAG);
1418 return LowerShiftLeftParts(Op, DAG);
1421 return LowerShiftRightParts(Op, DAG);
1427 SDValue NVPTXTargetLowering::LowerLOAD(SDValue Op, SelectionDAG &DAG) const {
1429 return LowerLOADi1(Op, DAG);
1438 SDValue NVPTXTargetLowering::LowerLOADi1(SDValue Op, SelectionDAG &DAG) const {
1446 DAG.getLoad(MVT::i16, dl, LD->getChain(), LD->getBasePtr(),
1449 SDValue result = DAG.getNode(ISD::TRUNCATE, dl, MVT::i1, newLD);
1454 return DAG.getMergeValues(Ops, dl);
1457 SDValue NVPTXTargetLowering::LowerSTORE(SDValue Op, SelectionDAG &DAG) const {
1460 return LowerSTOREi1(Op, DAG);
1462 return LowerSTOREVector(Op, DAG);
1468 NVPTXTargetLowering::LowerSTOREVector(SDValue Op, SelectionDAG &DAG) const {
1501 // Since StoreV2 is a target node, we cannot rely on DAG type legalization.
1527 SDValue ExtVal = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, EltVT, Val,
1528 DAG.getIntPtrConstant(i));
1530 ExtVal = DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i16, ExtVal);
1541 SDValue NewSt = DAG.getMemIntrinsicNode(
1542 Opcode, DL, DAG.getVTList(MVT::Other), Ops,
1556 SDValue NVPTXTargetLowering::LowerSTOREi1(SDValue Op, SelectionDAG &DAG) const {
1567 Tmp3 = DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i16, Tmp3);
1568 SDValue Result = DAG.getTruncStore(Tmp1, dl, Tmp3, Tmp2,
1574 SDValue NVPTXTargetLowering::getExtSymb(SelectionDAG &DAG, const char *inname,
1580 return DAG.getTargetExternalSymbol(name->c_str(), v);
1584 NVPTXTargetLowering::getParamSymbol(SelectionDAG &DAG, int idx, EVT v) const {
1588 ParamStr << DAG.getMachineFunction().getName() << "_param_" << idx;
1593 return DAG.getTargetExternalSymbol(SavedStr->c_str(), v);
1596 SDValue NVPTXTargetLowering::getParamHelpSymbol(SelectionDAG &DAG, int idx) {
1597 return getExtSymb(DAG, ".HLPPARAM", idx);
1628 const SmallVectorImpl<ISD::InputArg> &Ins, SDLoc dl, SelectionDAG &DAG,
1630 MachineFunction &MF = DAG.getMachineFunction();
1635 const TargetLowering *TLI = DAG.getTarget().getTargetLowering();
1637 SDValue Root = DAG.getRoot();
1676 InVals.push_back(DAG.getConstant(i + 1, MVT::i32));
1689 InVals.push_back(DAG.getNode(ISD::UNDEF, dl, Ins[InsIdx].VT));
1700 InVals.push_back(DAG.getNode(ISD::UNDEF, dl, Ins[InsIdx].VT));
1707 InVals.push_back(DAG.getNode(ISD::UNDEF, dl, Ins[InsIdx].VT));
1729 SDValue Arg = getParamSymbol(DAG, idx, getPointerTy());
1737 DAG.getNode(ISD::ADD, dl, getPointerTy(), Arg,
1738 DAG.getConstant(offsets[parti], getPointerTy()));
1747 p = DAG.getExtLoad(ExtOp, dl, Ins[InsIdx].VT, Root, srcAddr,
1751 p = DAG.getLoad(partVT, dl, Root, srcAddr,
1766 SDValue Arg = getParamSymbol(DAG, idx, getPointerTy());
1779 SDValue SrcAddr = DAG.getNode(ISD::ADD, dl, getPointerTy(), Arg,
1780 DAG.getConstant(Ofst, getPointerTy()));
1781 SDValue P = DAG.getLoad(
1789 P = DAG.getNode(ISD::ANY_EXTEND, dl, Ins[InsIdx].VT, P);
1799 SDValue SrcAddr = DAG.getNode(ISD::ADD, dl, getPointerTy(), Arg,
1800 DAG.getConstant(Ofst, getPointerTy()));
1801 SDValue P = DAG.getLoad(
1808 SDValue Elt0 = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl, EltVT, P,
1809 DAG.getIntPtrConstant(0));
1810 SDValue Elt1 = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl, EltVT, P,
1811 DAG.getIntPtrConstant(1));
1814 Elt0 = DAG.getNode(ISD::ANY_EXTEND, dl, Ins[InsIdx].VT, Elt0);
1815 Elt1 = DAG.getNode(ISD::ANY_EXTEND, dl, Ins[InsIdx].VT, Elt1);
1843 DAG.getNode(ISD::ADD, dl, getPointerTy(), Arg,
1844 DAG.getConstant(Ofst, getPointerTy()));
1845 SDValue P = DAG.getLoad(
1855 SDValue Elt = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl, EltVT, P,
1856 DAG.getIntPtrConstant(j));
1858 Elt = DAG.getNode(ISD::ANY_EXTEND, dl, Ins[InsIdx].VT, Elt);
1873 SDValue Arg = getParamSymbol(DAG, idx, getPointerTy());
1880 p = DAG.getExtLoad(ExtOp, dl, Ins[InsIdx].VT, Root, Arg,
1884 p = DAG.getLoad(Ins[InsIdx].VT, dl, Root, Arg,
1904 SDValue Arg = getParamSymbol(DAG, idx, getPointerTy());
1905 SDValue p = DAG.getNode(NVPTXISD::MoveParam, dl, ObjectVT, Arg);
1911 SDValue p2 = DAG.getNode(
1913 DAG.getConstant(Intrinsic::nvvm_ptr_local_to_gen, MVT::i32), p);
1927 DAG.setRoot(DAG.getNode(ISD::TokenFactor, dl, MVT::Other, OutChains));
1938 SDLoc dl, SelectionDAG &DAG) const {
1939 MachineFunction &MF = DAG.getMachineFunction();
1966 StoreVal = DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i16, StoreVal);
1967 SDValue Ops[] = { Chain, DAG.getConstant(0, MVT::i32), StoreVal };
1968 Chain = DAG.getMemIntrinsicNode(NVPTXISD::StoreRetval, dl,
1969 DAG.getVTList(MVT::Other), Ops,
1978 StoreVal0 = DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i16, StoreVal0);
1979 StoreVal1 = DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i16, StoreVal1);
1982 SDValue Ops[] = { Chain, DAG.getConstant(0, MVT::i32), StoreVal0,
1984 Chain = DAG.getMemIntrinsicNode(NVPTXISD::StoreRetvalV2, dl,
1985 DAG.getVTList(MVT::Other), Ops,
2014 Ops.push_back(DAG.getConstant(Offset, MVT::i32));
2020 StoreVal = DAG.getNode(ISD::ZERO_EXTEND, dl, ExtendedVT, StoreVal);
2026 StoreVal = DAG.getNode(ISD::ZERO_EXTEND, dl, ExtendedVT, StoreVal);
2028 StoreVal = DAG.getUNDEF(ExtendedVT);
2038 DAG.getNode(ISD::ZERO_EXTEND, dl, ExtendedVT, StoreVal);
2040 StoreVal = DAG.getUNDEF(ExtendedVT);
2048 DAG.getNode(ISD::ZERO_EXTEND, dl, ExtendedVT, StoreVal);
2050 StoreVal = DAG.getUNDEF(ExtendedVT);
2055 // Chain = DAG.getNode(Opc, dl, MVT::Other, &Ops[0], Ops.size());
2057 DAG.getMemIntrinsicNode(Opc, dl, DAG.getVTList(MVT::Other), Ops,
2077 TmpVal = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl,
2079 DAG.getIntPtrConstant(j));
2085 TmpVal = DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i32, TmpVal);
2089 TmpVal = DAG.getNode(ISD::ANY_EXTEND, dl, MVT::i16, TmpVal);
2093 DAG.getConstant(Offsets[i], MVT::i32),
2095 Chain = DAG.getMemIntrinsicNode(NVPTXISD::StoreRetval, dl,
2096 DAG.getVTList(MVT::Other), Ops,
2103 return DAG.getNode(NVPTXISD::RET_FLAG, dl, MVT::Other, Chain);
2109 SelectionDAG &DAG) const {
2113 TargetLowering::LowerAsmOperandForConstraint(Op, Constraint, Ops, DAG);
2648 // NVPTX DAG Combining
2653 /// PerformADDCombineWithOperands - Try DAG combinations for an ADD with
2661 SelectionDAG &DAG = DCI.DAG;
2680 return DAG.getNode(NVPTXISD::IMAD, SDLoc(N), VT,
2751 return DAG.getNode(ISD::FMA, SDLoc(N), VT,
2759 /// PerformADDCombine - Target-specific dag combine xforms for ISD::ADD.
2783 // target-specific DAG node, the DAG combiner fails to eliminate these AND
2841 Val = DCI.DAG.getNode(ISD::ZERO_EXTEND, SDLoc(N),
2859 /// IsMulWideOperandDemotable - Checks if the provided DAG node is an operand
2933 /// works on both multiply DAG nodes and SHL DAG nodes with a constant shift
2964 RHS = DCI.DAG.getConstant(MulVal, MulType);
2986 DCI.DAG.getNode(ISD::TRUNCATE, SDLoc(N), DemotedVT, LHS);
2988 DCI.DAG.getNode(ISD::TRUNCATE, SDLoc(N), DemotedVT, RHS);
2997 return DCI.DAG.getNode(Opc, SDLoc(N), MulType, TruncLHS, TruncRHS);
3000 /// PerformMULCombine - Runs PTX-specific DAG combine patterns on MUL nodes.
3014 /// PerformSHLCombine - Runs PTX-specific DAG combine patterns on SHL nodes.
3030 // FIXME: Get this from the DAG somehow
3048 static void ReplaceLoadVector(SDNode *N, SelectionDAG &DAG,
3079 // Since LoadV2 is a target node, we cannot rely on DAG type legalization.
3096 LdResVTs = DAG.getVTList(EltVT, EltVT, MVT::Other);
3101 LdResVTs = DAG.getVTList(ListVTs);
3116 OtherOps.push_back(DAG.getIntPtrConstant(LD->getExtensionType()));
3118 SDValue NewLD = DAG.getMemIntrinsicNode(Opcode, DL, LdResVTs, OtherOps,
3127 Res = DAG.getNode(ISD::TRUNCATE, DL, ResVT.getVectorElementType(), Res);
3133 SDValue BuildVec = DAG.getNode(ISD::BUILD_VECTOR, DL, ResVT, ScalarRes);
3139 static void ReplaceINTRINSIC_W_CHAIN(SDNode *N, SelectionDAG &DAG,
3164 // Since LDU/LDG are target nodes, we cannot rely on DAG type
3195 LdResVTs = DAG.getVTList(EltVT, EltVT, MVT::Other);
3213 LdResVTs = DAG.getVTList(ListVTs);
3230 SDValue NewLD = DAG.getMemIntrinsicNode(Opcode, DL, LdResVTs, OtherOps,
3240 DAG.getNode(ISD::TRUNCATE, DL, ResVT.getVectorElementType(), Res);
3247 DAG.getNode(ISD::BUILD_VECTOR, DL, ResVT, ScalarRes);
3262 SDVTList LdResVTs = DAG.getVTList(MVT::i16, MVT::Other);
3269 DAG.getMemIntrinsicNode(ISD::INTRINSIC_W_CHAIN, DL, LdResVTs, Ops,
3272 Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, MVT::i8,
3281 SDNode *N, SmallVectorImpl<SDValue> &Results, SelectionDAG &DAG) const {
3286 ReplaceLoadVector(N, DAG, Results);
3289 ReplaceINTRINSIC_W_CHAIN(N, DAG, Results);