Home | History | Annotate | Download | only in AArch64

Lines Matching refs:CurDAG

276   Val = CurDAG->getTargetConstant(Immed, dl, MVT::i32);
277 Shift = CurDAG->getTargetConstant(ShVal, dl, MVT::i32);
310 return SelectArithImmed(CurDAG->getConstant(Immed, SDLoc(N), MVT::i32), Val,
357 Shift = CurDAG->getTargetConstant(ShVal, SDLoc(N), MVT::i32);
475 SDValue LaneIdxVal = CurDAG->getTargetConstant(LaneIdx, dl, MVT::i64);
498 ReplaceNode(N, CurDAG->getMachineNode(MLAOpc, dl, N->getValueType(0), Ops));
512 SDValue LaneIdxVal = CurDAG->getTargetConstant(LaneIdx, dl, MVT::i64);
543 ReplaceNode(N, CurDAG->getMachineNode(SMULLOpc, dl, N->getValueType(0), Ops));
551 static SDValue narrowIfNeeded(SelectionDAG *CurDAG, SDValue N) {
556 SDValue SubReg = CurDAG->getTargetConstant(AArch64::sub_32, dl, MVT::i32);
557 MachineSDNode *Node = CurDAG->getMachineNode(TargetOpcode::EXTRACT_SUBREG,
597 Reg = narrowIfNeeded(CurDAG, Reg);
598 Shift = CurDAG->getTargetConstant(getArithExtendImm(Ext, ShiftVal), SDLoc(N),
631 const DataLayout &DL = CurDAG->getDataLayout();
635 Base = CurDAG->getTargetFrameIndex(FI, TLI->getPointerTy(DL));
636 OffImm = CurDAG->getTargetConstant(0, dl, MVT::i64);
643 if (CurDAG->isBaseWithConstantOffset(N)) {
652 Base = CurDAG->getTargetFrameIndex(FI, TLI->getPointerTy(DL));
654 OffImm = CurDAG->getTargetConstant(RHSC >> Scale, dl, MVT::i64);
665 OffImm = CurDAG->getTargetConstant(0, dl, MVT::i64);
675 const DataLayout &DL = CurDAG->getDataLayout();
679 Base = CurDAG->getTargetFrameIndex(FI, TLI->getPointerTy(DL));
680 OffImm = CurDAG->getTargetConstant(0, dl, MVT::i64);
702 if (CurDAG->isBaseWithConstantOffset(N)) {
710 Base = CurDAG->getTargetFrameIndex(FI, TLI->getPointerTy(DL));
712 OffImm = CurDAG->getTargetConstant(RHSC >> Scale, dl, MVT::i64);
728 OffImm = CurDAG->getTargetConstant(0, dl, MVT::i64);
740 if (!CurDAG->isBaseWithConstantOffset(N))
753 Base = CurDAG->getTargetFrameIndex(
754 FI, TLI->getPointerTy(CurDAG->getDataLayout()));
756 OffImm = CurDAG->getTargetConstant(RHSC, SDLoc(N), MVT::i64);
763 static SDValue Widen(SelectionDAG *CurDAG, SDValue N) {
765 SDValue SubReg = CurDAG->getTargetConstant(AArch64::sub_32, dl, MVT::i32);
767 CurDAG->getMachineNode(TargetOpcode::IMPLICIT_DEF, dl, MVT::i64), 0);
768 MachineSDNode *Node = CurDAG->getMachineNode(
790 Offset = narrowIfNeeded(CurDAG, N.getOperand(0).getOperand(0));
791 SignExtend = CurDAG->getTargetConstant(Ext == AArch64_AM::SXTW, dl,
795 SignExtend = CurDAG->getTargetConstant(0, dl, MVT::i32);
838 DoShift = CurDAG->getTargetConstant(true, dl, MVT::i32);
846 DoShift = CurDAG->getTargetConstant(true, dl, MVT::i32);
851 DoShift = CurDAG->getTargetConstant(false, dl, MVT::i32);
859 Offset = narrowIfNeeded(CurDAG, LHS.getOperand(0));
860 SignExtend = CurDAG->getTargetConstant(Ext == AArch64_AM::SXTW, dl,
871 Offset = narrowIfNeeded(CurDAG, RHS.getOperand(0));
872 SignExtend = CurDAG->getTargetConstant(Ext == AArch64_AM::SXTW, dl,
938 CurDAG->getMachineNode(AArch64::MOVi64imm, DL, MVT::i64, Ops);
941 N = CurDAG->getNode(ISD::ADD, DL, MVT::i64, LHS, MOVIV);
951 DoShift = CurDAG->getTargetConstant(true, DL, MVT::i32);
959 DoShift = CurDAG->getTargetConstant(true, DL, MVT::i32);
966 SignExtend = CurDAG->getTargetConstant(false, DL, MVT::i32);
967 DoShift = CurDAG->getTargetConstant(false, DL, MVT::i32);
1006 CurDAG->getTargetConstant(RegClassIDs[Regs.size() - 2], DL, MVT::i32));
1011 Ops.push_back(CurDAG->getTargetConstant(SubRegs[i], DL, MVT::i32));
1015 CurDAG->getMachineNode(TargetOpcode::REG_SEQUENCE, DL, MVT::Untyped, Ops);
1037 ReplaceNode(N, CurDAG->getMachineNode(Opc, dl, VT, Ops));
1111 SDValue Offset = CurDAG->getTargetConstant(OffsetVal, dl, MVT::i64);
1113 SDNode *Res = CurDAG->getMachineNode(Opcode, dl, MVT::i64, DstVT,
1118 SDValue SubReg = CurDAG->getTargetConstant(AArch64::sub_32, dl, MVT::i32);
1120 SDValue(CurDAG->getMachineNode(
1122 CurDAG->getTargetConstant(0, dl, MVT::i64), LoadedVal,
1130 CurDAG->RemoveDeadNode(N);
1145 SDNode *Ld = CurDAG->getMachineNode(Opc, dl, ResTys, Ops);
1149 CurDAG->getTargetExtractSubreg(SubRegIdx + i, dl, VT, SuperReg));
1152 CurDAG->RemoveDeadNode(N);
1168 SDNode *Ld = CurDAG->getMachineNode(Opc, dl, ResTys, Ops);
1180 CurDAG->getTargetExtractSubreg(SubRegIdx + i, dl, VT, SuperReg));
1184 CurDAG->RemoveDeadNode(N);
1198 SDNode *St = CurDAG->getMachineNode(Opc, dl, N->getValueType(0), Ops);
1219 SDNode *St = CurDAG->getMachineNode(Opc, dl, ResTys, Ops);
1270 WidenVector(*CurDAG));
1279 SDValue Ops[] = {RegSeq, CurDAG->getTargetConstant(LaneNo, dl, MVT::i64),
1281 SDNode *Ld = CurDAG->getMachineNode(Opc, dl, ResTys, Ops);
1288 SDValue NV = CurDAG->getTargetExtractSubreg(QSubs[i], dl, WideVT, SuperReg);
1290 NV = NarrowVector(NV, *CurDAG);
1295 CurDAG->RemoveDeadNode(N);
1309 WidenVector(*CurDAG));
1320 CurDAG->getTargetConstant(LaneNo, dl,
1325 SDNode *Ld = CurDAG->getMachineNode(Opc, dl, ResTys, Ops);
1334 Narrow ? NarrowVector(SuperReg, *CurDAG) : SuperReg);
1340 SDValue NV = CurDAG->getTargetExtractSubreg(QSubs[i], dl, WideVT,
1343 NV = NarrowVector(NV, *CurDAG);
1350 CurDAG->RemoveDeadNode(N);
1364 WidenVector(*CurDAG));
1371 SDValue Ops[] = {RegSeq, CurDAG->getTargetConstant(LaneNo, dl, MVT::i64),
1373 SDNode *St = CurDAG->getMachineNode(Opc, dl, MVT::Other, Ops);
1394 WidenVector(*CurDAG));
1404 SDValue Ops[] = {RegSeq, CurDAG->getTargetConstant(LaneNo, dl, MVT::i64),
1408 SDNode *St = CurDAG->getMachineNode(Opc, dl, ResTys, Ops);
1418 static bool isBitfieldExtractOpFromAnd(SelectionDAG *CurDAG, SDNode *N,
1462 Opd0 = Widen(CurDAG, Op0->getOperand(0).getOperand(0));
1669 SDValue Opd0 = Widen(CurDAG, Op.getOperand(0));
1672 SDValue Ops[] = {Opd0, CurDAG->getTargetConstant(Immr, dl, VT),
1673 CurDAG->getTargetConstant(Imms, dl, VT)};
1674 CurDAG->SelectNodeTo(N, AArch64::SBFMXri, VT, Ops);
1678 static bool isBitfieldExtractOp(SelectionDAG *CurDAG, SDNode *N, unsigned &Opc,
1691 return isBitfieldExtractOpFromAnd(CurDAG, N, Opc, Opd0, Immr, Imms,
1722 if (!isBitfieldExtractOp(CurDAG, N, Opc, Opd0, Immr, Imms))
1731 SDValue Ops64[] = {Opd0, CurDAG->getTargetConstant(Immr, dl, MVT::i64),
1732 CurDAG->getTargetConstant(Imms, dl, MVT::i64)};
1734 SDNode *BFM = CurDAG->getMachineNode(Opc, dl, MVT::i64, Ops64);
1735 SDValue SubReg = CurDAG->getTargetConstant(AArch64::sub_32, dl, MVT::i32);
1736 ReplaceNode(N, CurDAG->getMachineNode(TargetOpcode::EXTRACT_SUBREG, dl,
1741 SDValue Ops[] = {Opd0, CurDAG->getTargetConstant(Immr, dl, VT),
1742 CurDAG->getTargetConstant(Imms, dl, VT)};
1743 CurDAG->SelectNodeTo(N, Opc, VT, Ops);
1956 static SDValue getLeftShift(SelectionDAG *CurDAG, SDValue Op, int ShlAmount) {
1968 ShiftNode = CurDAG->getMachineNode(
1970 CurDAG->getTargetConstant(BitWidth - ShlAmount, dl, VT),
1971 CurDAG->getTargetConstant(BitWidth - 1 - ShlAmount, dl, VT));
1976 ShiftNode = CurDAG->getMachineNode(
1977 UBFMOpc, dl, VT, Op, CurDAG->getTargetConstant(ShrAmount, dl, VT),
1978 CurDAG->getTargetConstant(BitWidth - 1, dl, VT));
1986 static bool isBitfieldPositioningOp(SelectionDAG *CurDAG, SDValue Op,
1996 CurDAG->computeKnownBits(Op, KnownZero, KnownOne);
2033 Src = getLeftShift(CurDAG, Op, ShlImm - ShiftAmount);
2047 static bool tryBitfieldInsertOpFromOrAndImm(SDNode *N, SelectionDAG *CurDAG) {
2076 CurDAG->computeKnownBits(And, KnownZero, KnownOne);
2124 SDNode *MOVI = CurDAG->getMachineNode(
2125 MOVIOpc, DL, VT, CurDAG->getTargetConstant(BFIImm, DL, VT));
2129 CurDAG->getTargetConstant(ImmR, DL, VT),
2130 CurDAG->getTargetConstant(ImmS, DL, VT)};
2132 CurDAG->SelectNodeTo(N, Opc, VT, Ops);
2137 SelectionDAG *CurDAG) {
2182 if (isBitfieldExtractOp(CurDAG, OrOpd0, BFXOpc, Src, ImmR, ImmS,
2201 CurDAG, OrOpd0Val,
2218 CurDAG->computeKnownBits(OrOpd1Val, KnownZero, KnownOne);
2241 SDValue Ops[] = {Dst, Src, CurDAG->getTargetConstant(ImmR, DL, VT),
2242 CurDAG->getTargetConstant(ImmS, DL, VT)};
2244 CurDAG->SelectNodeTo(N, Opc, VT, Ops);
2277 SDNode *LSR = CurDAG->getMachineNode(
2278 ShiftOpc, DL, VT, Src, CurDAG->getTargetConstant(LSB, DL, VT),
2279 CurDAG->getTargetConstant(BitWidth - 1, DL, VT));
2287 CurDAG->getTargetConstant(ImmR, DL, VT),
2288 CurDAG->getTargetConstant(ImmS, DL, VT)};
2290 CurDAG->SelectNodeTo(N, Opc, VT, Ops);
2306 CurDAG->SelectNodeTo(N, TargetOpcode::IMPLICIT_DEF, N->getValueType(0));
2310 if (tryBitfieldInsertOpFromOr(N, NUsefulBits, CurDAG))
2313 return tryBitfieldInsertOpFromOrAndImm(N, CurDAG);
2329 if (!isBitfieldPositioningOp(CurDAG, SDValue(N, 0), /*BiggerPattern=*/false,
2339 SDValue Ops[] = {Op0, CurDAG->getTargetConstant(ImmR, DL, VT),
2340 CurDAG->getTargetConstant(ImmS, DL, VT)};
2342 CurDAG->SelectNodeTo(N, Opc, VT, Ops);
2386 FixedPos = CurDAG->getTargetConstant(FBits, SDLoc(N), MVT::i32);
2432 ReplaceNode(N, CurDAG->getMachineNode(
2434 CurDAG->getTargetConstant(Reg, DL, MVT::i32),
2449 ReplaceNode(N, CurDAG->getMachineNode(
2451 CurDAG->getTargetConstant(Reg, DL, MVT::i32),
2471 N, CurDAG->getMachineNode(AArch64::MSR, DL, MVT::Other,
2472 CurDAG->getTargetConstant(Reg, DL, MVT::i32),
2496 ReplaceNode(N, CurDAG->getMachineNode(
2498 CurDAG->getTargetConstant(Reg, DL, MVT::i32),
2499 CurDAG->getTargetConstant(Immed, DL, MVT::i16),
2514 ReplaceNode(N, CurDAG->getMachineNode(
2516 CurDAG->getTargetConstant(Reg, DL, MVT::i32),
2542 SDNode *CmpSwap = CurDAG->getMachineNode(
2544 CurDAG->getVTList(RegTy, MVT::i32, MVT::Other), Ops);
2552 CurDAG->RemoveDeadNode(N);
2558 DEBUG(Node->dump(CurDAG));
2563 DEBUG(errs() << "== "; Node->dump(CurDAG); errs() << "\n");
2657 SDValue Extract = CurDAG->getTargetExtractSubreg(SubReg, SDLoc(Node), VT,
2660 DEBUG(Extract->dumpr(CurDAG));
2671 SDValue New = CurDAG->getCopyFromReg(
2672 CurDAG->getEntryNode(), SDLoc(Node), AArch64::WZR, MVT::i32);
2676 SDValue New = CurDAG->getCopyFromReg(
2677 CurDAG->getEntryNode(), SDLoc(Node), AArch64::XZR, MVT::i64);
2690 SDValue TFI = CurDAG->getTargetFrameIndex(
2691 FI, TLI->getPointerTy(CurDAG->getDataLayout()));
2693 SDValue Ops[] = { TFI, CurDAG->getTargetConstant(0, DL, MVT::i32),
2694 CurDAG->getTargetConstant(Shifter, DL, MVT::i32) };
2695 CurDAG->SelectNodeTo(Node, AArch64::ADDXri, MVT::i64, Ops);
2711 SDNode *Ld = CurDAG->getMachineNode(Op, DL, MVT::i64, MVT::i64,
2734 SDNode *St = CurDAG->getMachineNode(Op, DL, MVT::i32, MVT::Other, Ops);