• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/contrib/llvm-project/llvm/lib/Target/AArch64/

Lines Matching refs:CurDAG

187       Imm = CurDAG->getTargetConstant(MulImm, SDLoc(N), MVT::i32);
318 SDValue RC = CurDAG->getTargetConstant(TRC->getID(), dl, MVT::i64);
320 SDValue(CurDAG->getMachineNode(TargetOpcode::COPY_TO_REGCLASS,
355 Val = CurDAG->getTargetConstant(Immed, dl, MVT::i32);
356 Shift = CurDAG->getTargetConstant(ShVal, dl, MVT::i32);
389 return SelectArithImmed(CurDAG->getConstant(Immed, SDLoc(N), MVT::i32), Val,
438 if (CurDAG->shouldOptForSize() || V.hasOneUse())
477 Shift = CurDAG->getTargetConstant(ShVal, SDLoc(N), MVT::i32);
595 SDValue LaneIdxVal = CurDAG->getTargetConstant(LaneIdx, dl, MVT::i64);
618 ReplaceNode(N, CurDAG->getMachineNode(MLAOpc, dl, N->getValueType(0), Ops));
632 SDValue LaneIdxVal = CurDAG->getTargetConstant(LaneIdx, dl, MVT::i64);
663 ReplaceNode(N, CurDAG->getMachineNode(SMULLOpc, dl, N->getValueType(0), Ops));
671 static SDValue narrowIfNeeded(SelectionDAG *CurDAG, SDValue N) {
676 SDValue SubReg = CurDAG->getTargetConstant(AArch64::sub_32, dl, MVT::i32);
677 MachineSDNode *Node = CurDAG->getMachineNode(TargetOpcode::EXTRACT_SUBREG,
722 Reg = narrowIfNeeded(CurDAG, Reg);
723 Shift = CurDAG->getTargetConstant(getArithExtendImm(Ext, ShiftVal), SDLoc(N),
757 const DataLayout &DL = CurDAG->getDataLayout();
761 Base = CurDAG->getTargetFrameIndex(FI, TLI->getPointerTy(DL));
762 OffImm = CurDAG->getTargetConstant(0, dl, MVT::i64);
768 if (CurDAG->isBaseWithConstantOffset(N)) {
780 Base = CurDAG->getTargetFrameIndex(FI, TLI->getPointerTy(DL));
782 OffImm = CurDAG->getTargetConstant(RHSC >> Scale, dl, MVT::i64);
795 Base = CurDAG->getTargetFrameIndex(FI, TLI->getPointerTy(DL));
797 OffImm = CurDAG->getTargetConstant(RHSC >> Scale, dl, MVT::i64);
808 OffImm = CurDAG->getTargetConstant(0, dl, MVT::i64);
818 const DataLayout &DL = CurDAG->getDataLayout();
822 Base = CurDAG->getTargetFrameIndex(FI, TLI->getPointerTy(DL));
823 OffImm = CurDAG->getTargetConstant(0, dl, MVT::i64);
847 if (CurDAG->isBaseWithConstantOffset(N)) {
855 Base = CurDAG->getTargetFrameIndex(FI, TLI->getPointerTy(DL));
857 OffImm = CurDAG->getTargetConstant(RHSC >> Scale, dl, MVT::i64);
873 OffImm = CurDAG->getTargetConstant(0, dl, MVT::i64);
885 if (!CurDAG->isBaseWithConstantOffset(N))
898 Base = CurDAG->getTargetFrameIndex(
899 FI, TLI->getPointerTy(CurDAG->getDataLayout()));
901 OffImm = CurDAG->getTargetConstant(RHSC, SDLoc(N), MVT::i64);
908 static SDValue Widen(SelectionDAG *CurDAG, SDValue N) {
910 SDValue SubReg = CurDAG->getTargetConstant(AArch64::sub_32, dl, MVT::i32);
912 CurDAG->getMachineNode(TargetOpcode::IMPLICIT_DEF, dl, MVT::i64), 0);
913 MachineSDNode *Node = CurDAG->getMachineNode(
935 Offset = narrowIfNeeded(CurDAG, N.getOperand(0).getOperand(0));
936 SignExtend = CurDAG->getTargetConstant(Ext == AArch64_AM::SXTW, dl,
940 SignExtend = CurDAG->getTargetConstant(0, dl, MVT::i32);
983 DoShift = CurDAG->getTargetConstant(true, dl, MVT::i32);
991 DoShift = CurDAG->getTargetConstant(true, dl, MVT::i32);
996 DoShift = CurDAG->getTargetConstant(false, dl, MVT::i32);
1004 Offset = narrowIfNeeded(CurDAG, LHS.getOperand(0));
1005 SignExtend = CurDAG->getTargetConstant(Ext == AArch64_AM::SXTW, dl,
1016 Offset = narrowIfNeeded(CurDAG, RHS.getOperand(0));
1017 SignExtend = CurDAG->getTargetConstant(Ext == AArch64_AM::SXTW, dl,
1083 CurDAG->getMachineNode(AArch64::MOVi64imm, DL, MVT::i64, Ops);
1086 N = CurDAG->getNode(ISD::ADD, DL, MVT::i64, LHS, MOVIV);
1096 DoShift = CurDAG->getTargetConstant(true, DL, MVT::i32);
1104 DoShift = CurDAG->getTargetConstant(true, DL, MVT::i32);
1111 SignExtend = CurDAG->getTargetConstant(false, DL, MVT::i32);
1112 DoShift = CurDAG->getTargetConstant(false, DL, MVT::i32);
1151 CurDAG->getTargetConstant(RegClassIDs[Regs.size() - 2], DL, MVT::i32));
1156 Ops.push_back(CurDAG->getTargetConstant(SubRegs[i], DL, MVT::i32));
1160 CurDAG->getMachineNode(TargetOpcode::REG_SEQUENCE, DL, MVT::Untyped, Ops);
1182 ReplaceNode(N, CurDAG->getMachineNode(Opc, dl, VT, Ops));
1256 SDValue Offset = CurDAG->getTargetConstant(OffsetVal, dl, MVT::i64);
1258 SDNode *Res = CurDAG->getMachineNode(Opcode, dl, MVT::i64, DstVT,
1263 SDValue SubReg = CurDAG->getTargetConstant(AArch64::sub_32, dl, MVT::i32);
1265 SDValue(CurDAG->getMachineNode(
1267 CurDAG->getTargetConstant(0, dl, MVT::i64), LoadedVal,
1275 CurDAG->RemoveDeadNode(N);
1290 SDNode *Ld = CurDAG->getMachineNode(Opc, dl, ResTys, Ops);
1294 CurDAG->getTargetExtractSubreg(SubRegIdx + i, dl, VT, SuperReg));
1300 CurDAG->setNodeMemRefs(cast<MachineSDNode>(Ld), {MemOp});
1302 CurDAG->RemoveDeadNode(N);
1318 SDNode *Ld = CurDAG->getMachineNode(Opc, dl, ResTys, Ops);
1330 CurDAG->getTargetExtractSubreg(SubRegIdx + i, dl, VT, SuperReg));
1334 CurDAG->RemoveDeadNode(N);
1348 SDNode *St = CurDAG->getMachineNode(Opc, dl, N->getValueType(0), Ops);
1352 CurDAG->setNodeMemRefs(cast<MachineSDNode>(St), {MemOp});
1373 SDNode *St = CurDAG->getMachineNode(Opc, dl, ResTys, Ops);
1424 WidenVector(*CurDAG));
1433 SDValue Ops[] = {RegSeq, CurDAG->getTargetConstant(LaneNo, dl, MVT::i64),
1435 SDNode *Ld = CurDAG->getMachineNode(Opc, dl, ResTys, Ops);
1442 SDValue NV = CurDAG->getTargetExtractSubreg(QSubs[i], dl, WideVT, SuperReg);
1444 NV = NarrowVector(NV, *CurDAG);
1449 CurDAG->RemoveDeadNode(N);
1463 WidenVector(*CurDAG));
1474 CurDAG->getTargetConstant(LaneNo, dl,
1479 SDNode *Ld = CurDAG->getMachineNode(Opc, dl, ResTys, Ops);
1488 Narrow ? NarrowVector(SuperReg, *CurDAG) : SuperReg);
1494 SDValue NV = CurDAG->getTargetExtractSubreg(QSubs[i], dl, WideVT,
1497 NV = NarrowVector(NV, *CurDAG);
1504 CurDAG->RemoveDeadNode(N);
1518 WidenVector(*CurDAG));
1525 SDValue Ops[] = {RegSeq, CurDAG->getTargetConstant(LaneNo, dl, MVT::i64),
1527 SDNode *St = CurDAG->getMachineNode(Opc, dl, MVT::Other, Ops);
1531 CurDAG->setNodeMemRefs(cast<MachineSDNode>(St), {MemOp});
1547 WidenVector(*CurDAG));
1557 SDValue Ops[] = {RegSeq, CurDAG->getTargetConstant(LaneNo, dl, MVT::i64),
1561 SDNode *St = CurDAG->getMachineNode(Opc, dl, ResTys, Ops);
1565 CurDAG->setNodeMemRefs(cast<MachineSDNode>(St), {MemOp});
1570 static bool isBitfieldExtractOpFromAnd(SelectionDAG *CurDAG, SDNode *N,
1614 Opd0 = Widen(CurDAG, Op0->getOperand(0).getOperand(0));
1823 SDValue Opd0 = Widen(CurDAG, Op.getOperand(0));
1826 SDValue Ops[] = {Opd0, CurDAG->getTargetConstant(Immr, dl, VT),
1827 CurDAG->getTargetConstant(Imms, dl, VT)};
1828 CurDAG->SelectNodeTo(N, AArch64::SBFMXri, VT, Ops);
1857 CurDAG->SelectNodeTo(N, Opcode, VT, Extract.getOperand(0));
1861 static bool isBitfieldExtractOp(SelectionDAG *CurDAG, SDNode *N, unsigned &Opc,
1874 return isBitfieldExtractOpFromAnd(CurDAG, N, Opc, Opd0, Immr, Imms,
1905 if (!isBitfieldExtractOp(CurDAG, N, Opc, Opd0, Immr, Imms))
1914 SDValue Ops64[] = {Opd0, CurDAG->getTargetConstant(Immr, dl, MVT::i64),
1915 CurDAG->getTargetConstant(Imms, dl, MVT::i64)};
1917 SDNode *BFM = CurDAG->getMachineNode(Opc, dl, MVT::i64, Ops64);
1918 SDValue SubReg = CurDAG->getTargetConstant(AArch64::sub_32, dl, MVT::i32);
1919 ReplaceNode(N, CurDAG->getMachineNode(TargetOpcode::EXTRACT_SUBREG, dl,
1924 SDValue Ops[] = {Opd0, CurDAG->getTargetConstant(Immr, dl, VT),
1925 CurDAG->getTargetConstant(Imms, dl, VT)};
1926 CurDAG->SelectNodeTo(N, Opc, VT, Ops);
2168 static SDValue getLeftShift(SelectionDAG *CurDAG, SDValue Op, int ShlAmount) {
2180 ShiftNode = CurDAG->getMachineNode(
2182 CurDAG->getTargetConstant(BitWidth - ShlAmount, dl, VT),
2183 CurDAG->getTargetConstant(BitWidth - 1 - ShlAmount, dl, VT));
2188 ShiftNode = CurDAG->getMachineNode(
2189 UBFMOpc, dl, VT, Op, CurDAG->getTargetConstant(ShrAmount, dl, VT),
2190 CurDAG->getTargetConstant(BitWidth - 1, dl, VT));
2198 static bool isBitfieldPositioningOp(SelectionDAG *CurDAG, SDValue Op,
2207 KnownBits Known = CurDAG->computeKnownBits(Op);
2244 Src = getLeftShift(CurDAG, Op, ShlImm - ShiftAmount);
2258 static bool tryBitfieldInsertOpFromOrAndImm(SDNode *N, SelectionDAG *CurDAG) {
2286 KnownBits Known = CurDAG->computeKnownBits(And);
2334 SDNode *MOVI = CurDAG->getMachineNode(
2335 MOVIOpc, DL, VT, CurDAG->getTargetConstant(BFIImm, DL, VT));
2339 CurDAG->getTargetConstant(ImmR, DL, VT),
2340 CurDAG->getTargetConstant(ImmS, DL, VT)};
2342 CurDAG->SelectNodeTo(N, Opc, VT, Ops);
2347 SelectionDAG *CurDAG) {
2392 if (isBitfieldExtractOp(CurDAG, OrOpd0, BFXOpc, Src, ImmR, ImmS,
2411 } else if (isBitfieldPositioningOp(CurDAG, OrOpd0Val,
2427 KnownBits Known = CurDAG->computeKnownBits(OrOpd1Val);
2450 SDValue Ops[] = {Dst, Src, CurDAG->getTargetConstant(ImmR, DL, VT),
2451 CurDAG->getTargetConstant(ImmS, DL, VT)};
2453 CurDAG->SelectNodeTo(N, Opc, VT, Ops);
2486 SDNode *LSR = CurDAG->getMachineNode(
2487 ShiftOpc, DL, VT, Src, CurDAG->getTargetConstant(LSB, DL, VT),
2488 CurDAG->getTargetConstant(BitWidth - 1, DL, VT));
2496 CurDAG->getTargetConstant(ImmR, DL, VT),
2497 CurDAG->getTargetConstant(ImmS, DL, VT)};
2499 CurDAG->SelectNodeTo(N, Opc, VT, Ops);
2515 CurDAG->SelectNodeTo(N, TargetOpcode::IMPLICIT_DEF, N->getValueType(0));
2519 if (tryBitfieldInsertOpFromOr(N, NUsefulBits, CurDAG))
2522 return tryBitfieldInsertOpFromOrAndImm(N, CurDAG);
2538 if (!isBitfieldPositioningOp(CurDAG, SDValue(N, 0), /*BiggerPattern=*/false,
2548 SDValue Ops[] = {Op0, CurDAG->getTargetConstant(ImmR, DL, VT),
2549 CurDAG->getTargetConstant(ImmS, DL, VT)};
2551 CurDAG->SelectNodeTo(N, Opc, VT, Ops);
2624 CurDAG->getCopyFromReg(CurDAG->getEntryNode(), DL, ZeroReg, SubVT);
2626 CurDAG->getMachineNode(NegOpc, DL, SubVT, Zero, Add1);
2646 NewShiftAmt = narrowIfNeeded(CurDAG, NewShiftAmt);
2648 SDValue SubReg = CurDAG->getTargetConstant(AArch64::sub_32, DL, MVT::i32);
2649 MachineSDNode *Ext = CurDAG->getMachineNode(
2651 CurDAG->getTargetConstant(0, DL, MVT::i64), NewShiftAmt, SubReg);
2656 CurDAG->SelectNodeTo(N, Opc, VT, Ops);
2700 FixedPos = CurDAG->getTargetConstant(FBits, SDLoc(N), MVT::i32);
2746 ReplaceNode(N, CurDAG->getMachineNode(
2748 CurDAG->getTargetConstant(Reg, DL, MVT::i32),
2763 ReplaceNode(N, CurDAG->getMachineNode(
2765 CurDAG->getTargetConstant(Reg, DL, MVT::i32),
2771 ReplaceNode(N, CurDAG->getMachineNode(
2773 CurDAG->getTargetConstant(0, DL, MVT::i32),
2793 N, CurDAG->getMachineNode(AArch64::MSR, DL, MVT::Other,
2794 CurDAG->getTargetConstant(Reg, DL, MVT::i32),
2818 ReplaceNode(N, CurDAG->getMachineNode(
2820 CurDAG->getTargetConstant(Reg, DL, MVT::i32),
2821 CurDAG->getTargetConstant(Immed, DL, MVT::i16),
2836 ReplaceNode(N, CurDAG->getMachineNode(
2838 CurDAG->getTargetConstant(Reg, DL, MVT::i32),
2868 SDNode *CmpSwap = CurDAG->getMachineNode(
2870 CurDAG->getVTList(RegTy, MVT::i32, MVT::Other), Ops);
2873 CurDAG->setNodeMemRefs(cast<MachineSDNode>(CmpSwap), {MemOp});
2877 CurDAG->RemoveDeadNode(N);
2890 Shift = CurDAG->getTargetConstant(0, DL, MVT::i32);
2891 Imm = CurDAG->getTargetConstant(ImmVal, DL, MVT::i32);
2899 Shift = CurDAG->getTargetConstant(0, DL, MVT::i32);
2900 Imm = CurDAG->getTargetConstant(ImmVal, DL, MVT::i32);
2903 Shift = CurDAG->getTargetConstant(8, DL, MVT::i32);
2904 Imm = CurDAG->getTargetConstant(ImmVal >> 8, DL, MVT::i32);
2921 Imm = CurDAG->getTargetConstant(ImmVal, DL, MVT::i32);
2934 Imm = CurDAG->getTargetConstant(ImmVal, DL, MVT::i32);
2971 Imm = CurDAG->getTargetConstant(encoding, DL, MVT::i64);
2996 SDValue FiOp = CurDAG->getTargetFrameIndex(
2997 FI, TLI->getPointerTy(CurDAG->getDataLayout()));
3000 SDNode *Out = CurDAG->getMachineNode(
3002 {FiOp, CurDAG->getTargetConstant(0, DL, MVT::i64), N->getOperand(2),
3003 CurDAG->getTargetConstant(TagOffset, DL, MVT::i64)});
3019 SDNode *N1 = CurDAG->getMachineNode(AArch64::SUBP, DL, MVT::i64,
3021 SDNode *N2 = CurDAG->getMachineNode(AArch64::ADDXrr, DL, MVT::i64,
3023 SDNode *N3 = CurDAG->getMachineNode(
3025 {SDValue(N2, 0), CurDAG->getTargetConstant(0, DL, MVT::i64),
3026 CurDAG->getTargetConstant(TagOffset, DL, MVT::i64)});
3033 LLVM_DEBUG(errs() << "== "; Node->dump(CurDAG); errs() << "\n");
3109 SDValue New = CurDAG->getCopyFromReg(
3110 CurDAG->getEntryNode(), SDLoc(Node), AArch64::WZR, MVT::i32);
3114 SDValue New = CurDAG->getCopyFromReg(
3115 CurDAG->getEntryNode(), SDLoc(Node), AArch64::XZR, MVT::i64);
3128 SDValue TFI = CurDAG->getTargetFrameIndex(
3129 FI, TLI->getPointerTy(CurDAG->getDataLayout()));
3131 SDValue Ops[] = { TFI, CurDAG->getTargetConstant(0, DL, MVT::i32),
3132 CurDAG->getTargetConstant(Shifter, DL, MVT::i32) };
3133 CurDAG->SelectNodeTo(Node, AArch64::ADDXri, MVT::i64, Ops);
3149 SDNode *Ld = CurDAG->getMachineNode(Op, DL, MVT::i64, MVT::i64,
3155 CurDAG->setNodeMemRefs(cast<MachineSDNode>(Ld), {MemOp});
3172 SDNode *St = CurDAG->getMachineNode(Op, DL, MVT::i32, MVT::Other, Ops);
3176 CurDAG->setNodeMemRefs(cast<MachineSDNode>(St), {MemOp});