Lines Matching defs:RISCV
37 namespace llvm::RISCV {
47 } // namespace llvm::RISCV
67 SDValue VL = CurDAG->getRegister(RISCV::X0, Subtarget->getXLenVT());
114 CurDAG->getRegister(RISCV::X0, MVT::i64),
177 SDValue SrcReg = CurDAG->getRegister(RISCV::X0, VT);
187 CurDAG->getRegister(RISCV::X0, VT));
211 CurDAG->getMachineNode(RISCV::PseudoMovImm, DL, VT,
228 CurDAG->getMachineNode(RISCV::SLLI, DL, VT, Lo,
257 Chain = CurDAG->getCopyToReg(Chain, DL, RISCV::V0, Mask, SDValue());
259 Operands.push_back(CurDAG->getRegister(RISCV::V0, Mask.getValueType()));
300 const RISCV::VLSEGPseudo *P =
301 RISCV::getVLSEGPseudo(NF, IsMasked, IsStrided, /*FF*/ false, Log2SEW,
331 const RISCV::VLSEGPseudo *P =
332 RISCV::getVLSEGPseudo(NF, IsMasked, /*Strided*/ false, /*FF*/ true,
365 unsigned ContainedTyNumElts = RISCV::RVVBitsPerBlock >> Log2SEW;
381 const RISCV::VLXSEGPseudo *P = RISCV::getVLXSEGPseudo(
410 const RISCV::VSSEGPseudo *P = RISCV::getVSSEGPseudo(
440 unsigned ContainedTyNumElts = RISCV::RVVBitsPerBlock >> Log2SEW;
456 const RISCV::VSXSEGPseudo *P = RISCV::getVSXSEGPseudo(
499 unsigned Opcode = RISCV::PseudoVSETVLI;
506 VLOperand = CurDAG->getRegister(RISCV::X0, XLenVT);
507 Opcode = RISCV::PseudoVSETVLIX0;
515 ReplaceNode(Node, CurDAG->getMachineNode(RISCV::PseudoVSETIVLI, DL,
587 case ISD::AND: BinOpc = RISCV::ANDI; break;
588 case ISD::OR: BinOpc = RISCV::ORI; break;
589 case ISD::XOR: BinOpc = RISCV::XORI; break;
592 unsigned ShOpc = SignExt ? RISCV::SLLIW : RISCV::SLLI;
619 return CurDAG->getMachineNode(RISCV::TH_EXT, DL, VT, N0.getOperand(0),
706 Opcode = IsZExt ? RISCV::TH_LBUIB : RISCV::TH_LBIB;
708 Opcode = IsZExt ? RISCV::TH_LBUIA : RISCV::TH_LBIA;
710 Opcode = IsZExt ? RISCV::TH_LHUIB : RISCV::TH_LHIB;
712 Opcode = IsZExt ? RISCV::TH_LHUIA : RISCV::TH_LHIA;
714 Opcode = IsZExt ? RISCV::TH_LWUIB : RISCV::TH_LWIB;
716 Opcode = IsZExt ? RISCV::TH_LWUIA : RISCV::TH_LWIA;
718 Opcode = RISCV::TH_LDIB;
720 Opcode = RISCV::TH_LDIA;
766 Opcode = IntNo == Intrinsic::riscv_sf_vc_x_se ? RISCV::PseudoVC_X_SE_MF8
767 : RISCV::PseudoVC_I_SE_MF8;
770 Opcode = IntNo == Intrinsic::riscv_sf_vc_x_se ? RISCV::PseudoVC_X_SE_MF4
771 : RISCV::PseudoVC_I_SE_MF4;
774 Opcode = IntNo == Intrinsic::riscv_sf_vc_x_se ? RISCV::PseudoVC_X_SE_MF2
775 : RISCV::PseudoVC_I_SE_MF2;
778 Opcode = IntNo == Intrinsic::riscv_sf_vc_x_se ? RISCV::PseudoVC_X_SE_M1
779 : RISCV::PseudoVC_I_SE_M1;
782 Opcode = IntNo == Intrinsic::riscv_sf_vc_x_se ? RISCV::PseudoVC_X_SE_M2
783 : RISCV::PseudoVC_I_SE_M2;
786 Opcode = IntNo == Intrinsic::riscv_sf_vc_x_se ? RISCV::PseudoVC_X_SE_M4
787 : RISCV::PseudoVC_I_SE_M4;
790 Opcode = IntNo == Intrinsic::riscv_sf_vc_x_se ? RISCV::PseudoVC_X_SE_M8
791 : RISCV::PseudoVC_I_SE_M8;
864 CurDAG->getCopyFromReg(CurDAG->getEntryNode(), DL, RISCV::X0, VT);
895 Imm = CurDAG->getRegister(RISCV::X0, XLenVT);
908 Opc = RISCV::FMV_H_X;
911 Opc = Subtarget->hasStdExtZhinxmin() ? RISCV::COPY : RISCV::FMV_H_X;
914 Opc = Subtarget->hasStdExtZfinx() ? RISCV::COPY : RISCV::FMV_W_X;
921 Opc = HasZdinx ? RISCV::COPY : RISCV::FMV_D_X;
923 Opc = HasZdinx ? RISCV::FCVT_D_W_IN32X : RISCV::FCVT_D_W;
928 if (VT.SimpleTy == MVT::f16 && Opc == RISCV::COPY) {
930 CurDAG->getTargetExtractSubreg(RISCV::sub_16, DL, VT, Imm).getNode();
931 } else if (VT.SimpleTy == MVT::f32 && Opc == RISCV::COPY) {
933 CurDAG->getTargetExtractSubreg(RISCV::sub_32, DL, VT, Imm).getNode();
934 } else if (Opc == RISCV::FCVT_D_W_IN32X || Opc == RISCV::FCVT_D_W)
943 Opc = RISCV::FSGNJN_D;
945 Opc = Is64Bit ? RISCV::FSGNJN_D_INX : RISCV::FSGNJN_D_IN32X;
962 CurDAG->getTargetConstant(RISCV::GPRPairRegClassID, DL, MVT::i32),
964 CurDAG->getTargetConstant(RISCV::sub_gpr_even, DL, MVT::i32),
966 CurDAG->getTargetConstant(RISCV::sub_gpr_odd, DL, MVT::i32)};
979 SDValue Lo = CurDAG->getTargetExtractSubreg(RISCV::sub_gpr_even, DL,
987 RISCV::sub_gpr_odd, DL, Node->getValueType(1), Node->getOperand(0));
1005 SDNode *Lo = CurDAG->getMachineNode(RISCV::FMV_X_W_FPR64, DL, VT,
1010 SDNode *Hi = CurDAG->getMachineNode(RISCV::FMVH_X_D, DL, VT,
1037 RISCV::SRLIW, DL, VT, N0->getOperand(0),
1040 RISCV::SLLI, DL, VT, SDValue(SRLIW, 0),
1056 RISCV::SLLI, DL, VT, N0->getOperand(0),
1059 RISCV::SRLI, DL, VT, SDValue(SLLI, 0),
1085 RISCV::SRLIW, DL, VT, N0->getOperand(0),
1088 RISCV::SLLI, DL, VT, SDValue(SRLIW, 0),
1111 Subtarget->is64Bit() ? RISCV::SRLIW : RISCV::SRLI, DL, VT,
1124 Subtarget->hasStdExtZbs() ? RISCV::BEXTI : RISCV::TH_TST, DL, VT,
1133 RISCV::TH_EXTU, DL, VT, N0->getOperand(0),
1141 CurDAG->getMachineNode(RISCV::SLLI, DL, VT, N0->getOperand(0),
1144 RISCV::SRLI, DL, VT, SDValue(SLLI, 0),
1175 CurDAG->getMachineNode(RISCV::SLLI, DL, VT, N0->getOperand(0),
1178 RISCV::SRAI, DL, VT, SDValue(SLLI, 0),
1203 RISCV::TH_EXTU, DL, VT, X, CurDAG->getTargetConstant(Msb, DL, VT),
1248 RISCV::SRLIW, DL, VT, X, CurDAG->getTargetConstant(C2, DL, VT));
1262 CurDAG->getMachineNode(RISCV::SRAIW, DL, VT, X.getOperand(0),
1265 RISCV::SRLIW, DL, VT, SDValue(SRAIW, 0),
1292 RISCV::SLLI, DL, VT, X,
1295 RISCV::SRLI, DL, VT, SDValue(SLLI, 0),
1313 CurDAG->getMachineNode(RISCV::SLLI_UW, DL, VT, X,
1322 RISCV::SLLI, DL, VT, X,
1325 RISCV::SRLI, DL, VT, SDValue(SLLI, 0),
1340 unsigned SrliOpc = RISCV::SRLI;
1345 SrliOpc = RISCV::SRLIW;
1352 RISCV::SLLI, DL, VT, SDValue(SRLI, 0),
1361 RISCV::SRLIW, DL, VT, X,
1364 RISCV::SLLI, DL, VT, SDValue(SRLIW, 0),
1373 RISCV::SRLI, DL, VT, X,
1376 RISCV::SLLI_UW, DL, VT, SDValue(SRLI, 0),
1390 RISCV::SRLI, DL, VT, X,
1393 RISCV::SLLI, DL, VT, SDValue(SRLI, 0),
1401 RISCV::SRLIW, DL, VT, X,
1404 RISCV::SLLI, DL, VT, SDValue(SRLIW, 0),
1414 RISCV::SRLI, DL, VT, X,
1417 RISCV::SLLI_UW, DL, VT, SDValue(SRLI, 0),
1446 RISCV::SRAI, DL, VT, X,
1449 RISCV::SRLI, DL, VT, SDValue(SRAI, 0),
1464 RISCV::SRAI, DL, VT, N0.getOperand(0),
1467 RISCV::SRLI, DL, VT, SDValue(SRAI, 0),
1470 RISCV::SLLI, DL, VT, SDValue(SRLI, 0),
1558 CurDAG->getMachineNode(RISCV::SLLI, DL, VT, N0.getOperand(0),
1560 SDNode *MULHU = CurDAG->getMachineNode(RISCV::MULHU, DL, VT,
1594 Opcode = RISCV::CV_LB_ri_inc;
1596 Opcode = RISCV::CV_LBU_ri_inc;
1598 Opcode = RISCV::CV_LB_rr_inc;
1600 Opcode = RISCV::CV_LBU_rr_inc;
1604 Opcode = RISCV::CV_LH_ri_inc;
1606 Opcode = RISCV::CV_LHU_ri_inc;
1608 Opcode = RISCV::CV_LH_rr_inc;
1610 Opcode = RISCV::CV_LHU_rr_inc;
1614 Opcode = RISCV::CV_LW_ri_inc;
1616 Opcode = RISCV::CV_LW_rr_inc;
1669 VMSLTOpcode = IsUnsigned ? RISCV::PseudoVMSLTU_VX_##suffix \
1670 : RISCV::PseudoVMSLT_VX_##suffix; \
1671 VMSGTOpcode = IsUnsigned ? RISCV::PseudoVMSGTU_VX_##suffix \
1672 : RISCV::PseudoVMSGT_VX_##suffix; \
1689 VMNANDOpcode = RISCV::PseudoVMNAND_MM_##suffix; \
1690 VMSetOpcode = RISCV::PseudoVMSET_M_##suffix; \
1765 VMSLTOpcode = IsUnsigned ? RISCV::PseudoVMSLTU_VX_##suffix \
1766 : RISCV::PseudoVMSLT_VX_##suffix; \
1767 VMSLTMaskOpcode = IsUnsigned ? RISCV::PseudoVMSLTU_VX_##suffix##_MASK \
1768 : RISCV::PseudoVMSLT_VX_##suffix##_MASK; \
1769 VMSGTMaskOpcode = IsUnsigned ? RISCV::PseudoVMSGTU_VX_##suffix##_MASK \
1770 : RISCV::PseudoVMSGT_VX_##suffix##_MASK; \
1787 VMXOROpcode = RISCV::PseudoVMXOR_MM_##suffix; \
1788 VMANDNOpcode = RISCV::PseudoVMANDN_MM_##suffix; \
1789 VMOROpcode = RISCV::PseudoVMOR_MM_##suffix; \
1836 RISCV::V0, Mask, SDValue());
1838 SDValue V0 = CurDAG->getRegister(RISCV::V0, VT);
2011 const RISCV::VLX_VSXPseudo *P = RISCV::getVLXPseudo(
2058 const RISCV::VLEPseudo *P =
2059 RISCV::getVLEPseudo(IsMasked, IsStrided, /*FF*/ false, Log2SEW,
2085 const RISCV::VLEPseudo *P =
2086 RISCV::getVLEPseudo(IsMasked, /*Strided*/ false, /*FF*/ true,
2217 const RISCV::VLX_VSXPseudo *P = RISCV::getVSXPseudo(
2250 const RISCV::VSEPseudo *P = RISCV::getVSEPseudo(
2292 TypeSize VecRegSize = TypeSize::getScalable(RISCV::RVVBitsPerBlock);
2328 if (SubRegIdx == RISCV::NoSubRegister) {
2376 if (SubRegIdx == RISCV::NoSubRegister) {
2440 Operands.push_back(CurDAG->getRegister(RISCV::X0, XLenVT));
2446 const RISCV::VLEPseudo *P = RISCV::getVLEPseudo(
2559 CurDAG->getMachineNode(RISCV::LUI, DL, VT,
2563 Base = CurDAG->getRegister(RISCV::X0, VT);
2574 if (Seq.back().getOpcode() != RISCV::ADDI)
2647 Base = SDValue(CurDAG->getMachineNode(RISCV::ADDI, SDLoc(Addr), VT,
2662 Base = CurDAG->getRegister(RISCV::X0, VT);
2754 CurDAG->getMachineNode(RISCV::ADDI, DL, VT, Addr.getOperand(0),
2772 CurDAG->getMachineNode(RISCV::ADD, DL, VT, Addr.getOperand(0), Base),
2829 RISCV::ADDI, DL, VT, Addr.getOperand(0),
2840 CurDAG->getMachineNode(RISCV::ADD, DL, VT, Addr.getOperand(0), Base),
2917 SDValue Zero = CurDAG->getRegister(RISCV::X0, VT);
2918 unsigned NegOpc = VT == MVT::i64 ? RISCV::SUBW : RISCV::SUB;
2930 RISCV::XORI, DL, VT, ShAmt.getOperand(1),
2980 RISCV::XORI, DL, N->getValueType(0), LHS,
2990 RISCV::ADDI, DL, N->getValueType(0), LHS,
2998 RISCV::BINVI, DL, N->getValueType(0), LHS,
3008 CurDAG->getMachineNode(RISCV::XOR, DL, N->getValueType(0), LHS, RHS), 0);
3089 RISCV::SRLI, DL, VT, N0.getOperand(0),
3102 RISCV::SRLI, DL, VT, N0.getOperand(0),
3125 RISCV::SRAI, DL, VT, N0.getOperand(0),
3129 RISCV::SRLI, DL, VT, Val,
3155 RISCV::SRLIW, DL, VT, N0.getOperand(0),
3167 RISCV::SRLIW, DL, VT, N0.getOperand(0),
3204 RISCV::SLLI, DL, VT, N0.getOperand(0),
3266 unsigned MCOpcode = RISCV::getRVVMCOpcode(User->getMachineOpcode());
3289 RISCV::getVectorLowDemandedScalarBits(MCOpcode, Log2SEW);
3332 case RISCV::ADDW:
3333 case RISCV::ADDIW:
3334 case RISCV::SUBW:
3335 case RISCV::MULW:
3336 case RISCV::SLLW:
3337 case RISCV::SLLIW:
3338 case RISCV::SRAW:
3339 case RISCV::SRAIW:
3340 case RISCV::SRLW:
3341 case RISCV::SRLIW:
3342 case RISCV::DIVW:
3343 case RISCV::DIVUW:
3344 case RISCV::REMW:
3345 case RISCV::REMUW:
3346 case RISCV::ROLW:
3347 case RISCV::RORW:
3348 case RISCV::RORIW:
3349 case RISCV::CLZW:
3350 case RISCV::CTZW:
3351 case RISCV::CPOPW:
3352 case RISCV::SLLI_UW:
3353 case RISCV::FMV_W_X:
3354 case RISCV::FCVT_H_W:
3355 case RISCV::FCVT_H_W_INX:
3356 case RISCV::FCVT_H_WU:
3357 case RISCV::FCVT_H_WU_INX:
3358 case RISCV::FCVT_S_W:
3359 case RISCV::FCVT_S_W_INX:
3360 case RISCV::FCVT_S_WU:
3361 case RISCV::FCVT_S_WU_INX:
3362 case RISCV::FCVT_D_W:
3363 case RISCV::FCVT_D_W_INX:
3364 case RISCV::FCVT_D_WU:
3365 case RISCV::FCVT_D_WU_INX:
3366 case RISCV::TH_REVW:
3367 case RISCV::TH_SRRIW:
3371 case RISCV::SLL:
3372 case RISCV::SRA:
3373 case RISCV::SRL:
3374 case RISCV::ROL:
3375 case RISCV::ROR:
3376 case RISCV::BSET:
3377 case RISCV::BCLR:
3378 case RISCV::BINV:
3383 case RISCV::SLLI:
3388 case RISCV::ANDI:
3392 case RISCV::ORI: {
3398 case RISCV::AND:
3399 case RISCV::OR:
3400 case RISCV::XOR:
3401 case RISCV::XORI:
3402 case RISCV::ANDN:
3403 case RISCV::ORN:
3404 case RISCV::XNOR:
3405 case RISCV::SH1ADD:
3406 case RISCV::SH2ADD:
3407 case RISCV::SH3ADD:
3412 case RISCV::SRLI: {
3421 case RISCV::SEXT_B:
3422 case RISCV::PACKH:
3426 case RISCV::SEXT_H:
3427 case RISCV::FMV_H_X:
3428 case RISCV::ZEXT_H_RV32:
3429 case RISCV::ZEXT_H_RV64:
3430 case RISCV::PACKW:
3434 case RISCV::PACK:
3438 case RISCV::ADD_UW:
3439 case RISCV::SH1ADD_UW:
3440 case RISCV::SH2ADD_UW:
3441 case RISCV::SH3ADD_UW:
3447 case RISCV::SB:
3451 case RISCV::SH:
3455 case RISCV::SW:
3497 VL = CurDAG->getSignedTargetConstant(RISCV::VLMaxSentinel, SDLoc(N),
3500 cast<RegisterSDNode>(N)->getReg() == RISCV::X0) {
3505 VL = CurDAG->getSignedTargetConstant(RISCV::VLMaxSentinel, SDLoc(N),
3677 if (N->getMachineOpcode() != RISCV::ADDIW ||
3688 case RISCV::ADD:
3689 case RISCV::ADDI:
3690 case RISCV::SUB:
3691 case RISCV::MUL:
3692 case RISCV::SLLI: {
3699 case RISCV::ADD: Opc = RISCV::ADDW; break;
3700 case RISCV::ADDI: Opc = RISCV::ADDIW; break;
3701 case RISCV::SUB: Opc = RISCV::SUBW; break;
3702 case RISCV::MUL: Opc = RISCV::MULW; break;
3703 case RISCV::SLLI: Opc = RISCV::SLLIW; break;
3710 if (N0.getMachineOpcode() == RISCV::SLLI &&
3720 case RISCV::ADDW:
3721 case RISCV::ADDIW:
3722 case RISCV::SUBW:
3723 case RISCV::MULW:
3724 case RISCV::SLLIW:
3725 case RISCV::PACKW:
3726 case RISCV::TH_MULAW:
3727 case RISCV::TH_MULAH:
3728 case RISCV::TH_MULSW:
3729 case RISCV::TH_MULSH:
3748 cast<RegisterSDNode>(MaskOp)->getReg() != RISCV::V0)
3759 cast<RegisterSDNode>(Glued->getOperand(1))->getReg() != RISCV::V0)
3767 MaskSetter->getMachineOpcode() == RISCV::COPY_TO_REGCLASS)
3780 return Opc == RISCV::PseudoVMSET_M_B1 || Opc == RISCV::PseudoVMSET_M_B16 ||
3781 Opc == RISCV::PseudoVMSET_M_B2 || Opc == RISCV::PseudoVMSET_M_B32 ||
3782 Opc == RISCV::PseudoVMSET_M_B4 || Opc == RISCV::PseudoVMSET_M_B64 ||
3783 Opc == RISCV::PseudoVMSET_M_B8;
3816 const RISCV::RISCVMaskedPseudoInfo *I =
3817 RISCV::getMaskedPseudoInfo(N->getMachineOpcode());
3871 return RISCV::getRVVMCOpcode(N->getMachineOpcode()) == RISCV::VMERGE_VVM;
3902 assert(cast<RegisterSDNode>(Mask)->getReg() == RISCV::V0);
3929 const RISCV::RISCVMaskedPseudoInfo *Info =
3930 RISCV::lookupMaskedIntrinsicByUnmasked(TrueOpc);
3999 const MCInstrDesc &TrueBaseMCID = TII->get(RISCV::getRVVMCOpcode(TrueOpc));
4116 Ops.push_back(CurDAG->getRegister(RISCV::NoRegister, N->getValueType(0)));
4133 // This pass converts a legalized DAG into a RISCV-specific DAG, ready