2197  B.setInstrAndDebugLoc(
MI);
 
 2198  unsigned Opc = 
MI.getOpcode();
 
 2201  case AMDGPU::G_CONSTANT:
 
 2202  case AMDGPU::G_IMPLICIT_DEF: {
 
 2204    LLT DstTy = 
MRI.getType(DstReg);
 
 2210    if (DstBank == &AMDGPU::VCCRegBank)
 
 2213    if (DefRegs.
empty())
 
 2216    B.setInsertPt(*
MI.getParent(), ++
MI.getIterator());
 
 2219    LLVMContext &Ctx = 
B.getMF().getFunction().getContext();
 
 2221    MI.getOperand(0).setReg(NewDstReg);
 
 2222    if (
Opc != AMDGPU::G_IMPLICIT_DEF) {
 
 2223      uint64_t ConstVal = 
MI.getOperand(1).getCImm()->getZExtValue();
 
 2224      MI.getOperand(1).setCImm(
 
 2228    MRI.setRegBank(NewDstReg, *DstBank);
 
 2229    B.buildTrunc(DefRegs[0], NewDstReg);
 
 2232  case AMDGPU::G_PHI: {
 
 2234    LLT DstTy = 
MRI.getType(DstReg);
 
 2241    if (DstBank == &AMDGPU::VCCRegBank) {
 
 2248      for (
unsigned I = 1, E = 
MI.getNumOperands(); 
I != E; 
I += 2) {
 
 2252        if (SrcBank != &AMDGPU::VCCRegBank) {
 
 2257          MRI.setRegBank(Copy.getReg(0), AMDGPU::VCCRegBank);
 
 2258          MI.getOperand(
I).setReg(Copy.getReg(0));
 
 2269    ApplyRegBankMapping ApplyBank(
B, *
this, 
MRI, DstBank);
 
 2270    B.setInsertPt(
B.getMBB(), 
MI);
 
 2278  case AMDGPU::G_FCMP:
 
 2282  case AMDGPU::G_ICMP:
 
 2283  case AMDGPU::G_UADDO:
 
 2284  case AMDGPU::G_USUBO:
 
 2285  case AMDGPU::G_UADDE:
 
 2286  case AMDGPU::G_SADDE:
 
 2287  case AMDGPU::G_USUBE:
 
 2288  case AMDGPU::G_SSUBE: {
 
 2289    unsigned BoolDstOp =
 
 2290        (
Opc == AMDGPU::G_ICMP || 
Opc == AMDGPU::G_FCMP) ? 0 : 1;
 
 2291    Register DstReg = 
MI.getOperand(BoolDstOp).getReg();
 
 2295    if (DstBank != &AMDGPU::SGPRRegBank)
 
 2298    const bool HasCarryIn = 
MI.getNumOperands() == 5;
 
 2304    MRI.setRegBank(NewDstReg, AMDGPU::SGPRRegBank);
 
 2305    MI.getOperand(BoolDstOp).setReg(NewDstReg);
 
 2309      MRI.setRegBank(NewSrcReg, AMDGPU::SGPRRegBank);
 
 2310      B.buildZExt(NewSrcReg, 
MI.getOperand(4).getReg());
 
 2311      MI.getOperand(4).setReg(NewSrcReg);
 
 2315    B.setInsertPt(*
MBB, std::next(
MI.getIterator()));
 
 2320    if (DefRegs.
empty())
 
 2322    B.buildTrunc(DefRegs[0], NewDstReg);
 
 2325  case AMDGPU::G_SELECT: {
 
 2327    LLT DstTy = 
MRI.getType(DstReg);
 
 2330    if (CondRegs.
empty())
 
 2337    if (CondBank == &AMDGPU::SGPRRegBank) {
 
 2340      MRI.setRegBank(NewCondReg, AMDGPU::SGPRRegBank);
 
 2342      MI.getOperand(1).setReg(NewCondReg);
 
 2343      B.buildZExt(NewCondReg, CondRegs[0]);
 
 2356    if (DefRegs.
empty()) {
 
 2361    if (Src1Regs.
empty())
 
 2367    if (Src2Regs.
empty())
 
 2374    auto Flags = 
MI.getFlags();
 
 2375    B.buildSelect(DefRegs[0], CondRegs[0], Src1Regs[0], Src2Regs[0], Flags);
 
 2376    B.buildSelect(DefRegs[1], CondRegs[0], Src1Regs[1], Src2Regs[1], Flags);
 
 2378    MRI.setRegBank(DstReg, AMDGPU::VGPRRegBank);
 
 2379    MI.eraseFromParent();
 
 2382  case AMDGPU::G_BRCOND: {
 
 2383    Register CondReg = 
MI.getOperand(0).getReg();
 
 2388    if (CondBank == &AMDGPU::SGPRRegBank) {
 
 2391      MRI.setRegBank(NewCondReg, AMDGPU::SGPRRegBank);
 
 2393      MI.getOperand(0).setReg(NewCondReg);
 
 2394      B.buildZExt(NewCondReg, CondReg);
 
 2402  case AMDGPU::G_XOR: {
 
 2406    LLT DstTy = 
MRI.getType(DstReg);
 
 2412      if (DstBank == &AMDGPU::VCCRegBank)
 
 2416      ApplyRegBankMapping ApplyBank(
B, *
this, 
MRI, DstBank);
 
 2425    if (DstTy.
getSizeInBits() == 16 && DstBank == &AMDGPU::SGPRRegBank) {
 
 2429      ApplyRegBankMapping ApplySALU(
B, *
this, 
MRI, &AMDGPU::SGPRRegBank);
 
 2434      if (
MI.getOpcode() == AMDGPU::G_XOR &&
 
 2455    if (DefRegs.
empty()) {
 
 2462           (Src0Regs.
empty() || Src0Regs.
size() == 2));
 
 2468    if (Src0Regs.
empty())
 
 2473    if (Src1Regs.
empty())
 
 2480    auto Flags = 
MI.getFlags();
 
 2481    B.buildInstr(
Opc, {DefRegs[0]}, {Src0Regs[0], Src1Regs[0]}, Flags);
 
 2482    B.buildInstr(
Opc, {DefRegs[1]}, {Src0Regs[1], Src1Regs[1]}, Flags);
 
 2484    MRI.setRegBank(DstReg, AMDGPU::VGPRRegBank);
 
 2485    MI.eraseFromParent();
 
 2488  case AMDGPU::G_ABS: {
 
 2494    if (SrcBank && SrcBank == &AMDGPU::VGPRRegBank) {
 
 2496      ApplyRegBankMapping Apply(
B, *
this, 
MRI, &AMDGPU::VGPRRegBank);
 
 2509  case AMDGPU::G_LSHR:
 
 2510  case AMDGPU::G_ASHR:
 
 2511  case AMDGPU::G_SMIN:
 
 2512  case AMDGPU::G_SMAX:
 
 2513  case AMDGPU::G_UMIN:
 
 2514  case AMDGPU::G_UMAX: {
 
 2516    LLT DstTy = 
MRI.getType(DstReg);
 
 2521    if (!
Subtarget.hasVectorMulU64() && 
Opc == AMDGPU::G_MUL &&
 
 2534    if (DstBank == &AMDGPU::VGPRRegBank)
 
 2540    ApplyRegBankMapping ApplySALU(
B, *
this, 
MRI, &AMDGPU::SGPRRegBank);
 
 2545      std::tie(WideSrcLo, WideSrcHi) =
 
 2547      auto Lo = 
B.buildInstr(AMDGPU::G_ABS, {
S32}, {WideSrcLo});
 
 2548      auto Hi = 
B.buildInstr(AMDGPU::G_ABS, {
S32}, {WideSrcHi});
 
 2549      B.buildBuildVectorTrunc(DstReg, {
Lo.getReg(0), 
Hi.getReg(0)});
 
 2550      MI.eraseFromParent();
 
 2559      std::tie(WideSrc0Lo, WideSrc0Hi)
 
 2561      std::tie(WideSrc1Lo, WideSrc1Hi)
 
 2563      auto Lo = 
B.buildInstr(
MI.getOpcode(), {S32}, {WideSrc0Lo, WideSrc1Lo});
 
 2564      auto Hi = 
B.buildInstr(
MI.getOpcode(), {S32}, {WideSrc0Hi, WideSrc1Hi});
 
 2565      B.buildBuildVectorTrunc(DstReg, {
Lo.getReg(0), 
Hi.getReg(0)});
 
 2566      MI.eraseFromParent();
 
 2574      if (
Opc == AMDGPU::G_SHL || 
Opc == AMDGPU::G_LSHR ||
 
 2575          Opc == AMDGPU::G_ASHR) {
 
 2576        B.setInsertPt(*
MBB, 
MI.getIterator());
 
 2584  case AMDGPU::G_AMDGPU_S_MUL_I64_I32:
 
 2585  case AMDGPU::G_AMDGPU_S_MUL_U64_U32: {
 
 2599    Register SrcReg0 = 
MI.getOperand(1).getReg();
 
 2600    Register SrcReg1 = 
MI.getOperand(2).getReg();
 
 2603    assert(
MRI.getType(DstReg) == 
S64 && 
"This is a special case for s_mul_u64 " 
 2604                                         "that handles only 64-bit operands.");
 
 2610    if (DstBank == &AMDGPU::SGPRRegBank) {
 
 2611      MI.setDesc(
TII->get(AMDGPU::S_MUL_U64));
 
 2612      MRI.setRegClass(DstReg, &AMDGPU::SGPR_64RegClass);
 
 2613      MRI.setRegClass(SrcReg0, &AMDGPU::SGPR_64RegClass);
 
 2614      MRI.setRegClass(SrcReg1, &AMDGPU::SGPR_64RegClass);
 
 2620    assert(
MRI.getRegBankOrNull(DstReg) == &AMDGPU::VGPRRegBank &&
 
 2621           "The destination operand should be in vector registers.");
 
 2624    Register Op0L = 
MRI.createVirtualRegister(&AMDGPU::VGPR_32RegClass);
 
 2625    MRI.setRegClass(Op0L, &AMDGPU::VGPR_32RegClass);
 
 2627    B.buildTrunc(Op0L, SrcReg0);
 
 2630    Register Op1L = 
MRI.createVirtualRegister(&AMDGPU::VGPR_32RegClass);
 
 2631    MRI.setRegClass(Op1L, &AMDGPU::VGPR_32RegClass);
 
 2633    B.buildTrunc(Op1L, SrcReg1);
 
 2635    unsigned NewOpc = 
Opc == AMDGPU::G_AMDGPU_S_MUL_U64_U32
 
 2636                          ? AMDGPU::G_AMDGPU_MAD_U64_U32
 
 2637                          : AMDGPU::G_AMDGPU_MAD_I64_I32;
 
 2641    MRI.setRegClass(Zero64, &AMDGPU::VReg_64RegClass);
 
 2642    Register CarryOut = 
MRI.createVirtualRegister(&AMDGPU::VReg_64RegClass);
 
 2643    MRI.setRegClass(CarryOut, &AMDGPU::VReg_64RegClass);
 
 2644    B.buildInstr(NewOpc, {DstReg, CarryOut}, {Op0L, Op1L, Zero64});
 
 2645    MI.eraseFromParent();
 
 2648  case AMDGPU::G_SEXT_INREG: {
 
 2650    if (SrcRegs.
empty())
 
 2654    ApplyRegBankMapping O(
B, *
this, 
MRI, &AMDGPU::VGPRRegBank);
 
 2661    int Amt = 
MI.getOperand(2).getImm();
 
 2667        B.buildFreeze(DstRegs[0], SrcRegs[0]);
 
 2669        auto Freeze = 
B.buildFreeze(
S32, SrcRegs[0]);
 
 2671        B.buildSExtInReg(DstRegs[0], Freeze, Amt);
 
 2674      B.buildAShr(DstRegs[1], DstRegs[0], 
B.buildConstant(
S32, 31));
 
 2678      B.buildCopy(DstRegs[0], SrcRegs[0]);
 
 2679      B.buildSExtInReg(DstRegs[1], DstRegs[0], Amt - 32);
 
 2683    MRI.setRegBank(DstReg, AMDGPU::VGPRRegBank);
 
 2684    MI.eraseFromParent();
 
 2687  case AMDGPU::G_CTPOP:
 
 2688  case AMDGPU::G_BITREVERSE: {
 
 2691    if (DstBank == &AMDGPU::SGPRRegBank)
 
 2696    LLT Ty = 
MRI.getType(SrcReg);
 
 2700    ApplyRegBankMapping ApplyVALU(
B, *
this, 
MRI, &AMDGPU::VGPRRegBank);
 
 2709  case AMDGPU::G_AMDGPU_FFBH_U32:
 
 2710  case AMDGPU::G_AMDGPU_FFBL_B32:
 
 2711  case AMDGPU::G_CTLZ_ZERO_UNDEF:
 
 2712  case AMDGPU::G_CTTZ_ZERO_UNDEF: {
 
 2715    if (DstBank == &AMDGPU::SGPRRegBank)
 
 2720    LLT Ty = 
MRI.getType(SrcReg);
 
 2730    ApplyRegBankMapping ApplyVALU(
B, *
this, 
MRI, &AMDGPU::VGPRRegBank);
 
 2732    unsigned NewOpc = 
Opc == AMDGPU::G_CTLZ_ZERO_UNDEF
 
 2733                          ? (
unsigned)AMDGPU::G_AMDGPU_FFBH_U32
 
 2734                          : 
Opc == AMDGPU::G_CTTZ_ZERO_UNDEF
 
 2735                                ? (
unsigned)AMDGPU::G_AMDGPU_FFBL_B32
 
 2737    unsigned Idx = NewOpc == AMDGPU::G_AMDGPU_FFBH_U32;
 
 2738    auto X = 
B.buildInstr(NewOpc, {
S32}, {SrcRegs[Idx]});
 
 2739    auto Y = 
B.buildInstr(NewOpc, {
S32}, {SrcRegs[Idx ^ 1]});
 
 2741        Opc == AMDGPU::G_CTLZ_ZERO_UNDEF || 
Opc == AMDGPU::G_CTTZ_ZERO_UNDEF
 
 2743            : AMDGPU::G_UADDSAT;
 
 2744    Y = 
B.buildInstr(AddOpc, {
S32}, {
Y, 
B.buildConstant(
S32, 32)});
 
 2746    B.buildUMin(DstReg, 
X, 
Y);
 
 2747    MI.eraseFromParent();
 
 2750  case AMDGPU::G_SEXT:
 
 2751  case AMDGPU::G_ZEXT:
 
 2752  case AMDGPU::G_ANYEXT: {
 
 2754    LLT SrcTy = 
MRI.getType(SrcReg);
 
 2755    const bool Signed = 
Opc == AMDGPU::G_SEXT;
 
 2763    LLT DstTy = 
MRI.getType(DstReg);
 
 2765        SrcBank != &AMDGPU::SGPRRegBank &&
 
 2766        SrcBank != &AMDGPU::VCCRegBank &&
 
 2770        SrcTy.getSizeInBits() <= 32) {
 
 2776        B.buildSExtOrTrunc(DefRegs[0], SrcReg);
 
 2777      } 
else if (
Opc == AMDGPU::G_ZEXT) {
 
 2778        B.buildZExtOrTrunc(DefRegs[0], SrcReg);
 
 2780        B.buildAnyExtOrTrunc(DefRegs[0], SrcReg);
 
 2784      MRI.setRegBank(DstReg, *SrcBank);
 
 2785      MI.eraseFromParent();
 
 2795    if (SrcBank == &AMDGPU::VCCRegBank) {
 
 2802      const bool UseSel64 = DstSize > 32 &&
 
 2803        SrcBank->
getID() == AMDGPU::SGPRRegBankID;
 
 2807      auto True = 
B.buildConstant(SelType, 
Signed ? -1 : 1);
 
 2808      auto False = 
B.buildConstant(SelType, 0);
 
 2810      MRI.setRegBank(True.getReg(0), *DstBank);
 
 2811      MRI.setRegBank(False.getReg(0), *DstBank);
 
 2812      MRI.setRegBank(DstReg, *DstBank);
 
 2815        B.buildSelect(DefRegs[0], SrcReg, True, False);
 
 2817      } 
else if (DstSize < 32) {
 
 2818        auto Sel = 
B.buildSelect(SelType, SrcReg, True, False);
 
 2819        MRI.setRegBank(Sel.getReg(0), *DstBank);
 
 2820        B.buildTrunc(DstReg, Sel);
 
 2822        B.buildSelect(DstReg, SrcReg, True, False);
 
 2825      MI.eraseFromParent();
 
 2831  case AMDGPU::G_EXTRACT_VECTOR_ELT: {
 
 2840    LLT DstTy = 
MRI.getType(DstReg);
 
 2841    LLT SrcTy = 
MRI.getType(SrcReg);
 
 2843    if (foldExtractEltToCmpSelect(
B, 
MI, OpdMapper))
 
 2855    unsigned ConstOffset;
 
 2856    std::tie(BaseIdxReg, ConstOffset) =
 
 2863    bool ShouldMoveIndexIntoLoop = IdxBank != &AMDGPU::SGPRRegBank &&
 
 2865                                   ConstOffset < SrcTy.getNumElements();
 
 2868    if (ShouldMoveIndexIntoLoop)
 
 2869      MI.getOperand(2).setReg(BaseIdxReg);
 
 2875    const bool NeedCopyToVGPR = DstBank == &AMDGPU::VGPRRegBank &&
 
 2876                                SrcBank == &AMDGPU::SGPRRegBank;
 
 2877    if (DstRegs.
empty()) {
 
 2882      if (NeedCopyToVGPR) {
 
 2884        Register TmpReg = 
MRI.createGenericVirtualRegister(DstTy);
 
 2885        MRI.setRegBank(TmpReg, AMDGPU::SGPRRegBank);
 
 2886        MI.getOperand(0).setReg(TmpReg);
 
 2887        B.setInsertPt(*
MI.getParent(), ++
MI.getIterator());
 
 2894      if (ShouldMoveIndexIntoLoop)
 
 2904    auto CastSrc = 
B.buildBitcast(Vec32, SrcReg);
 
 2905    auto One = 
B.buildConstant(
S32, 1);
 
 2916    auto IdxLo = 
B.buildShl(
S32, BaseIdxReg, One);
 
 2917    auto IdxHi = 
B.buildAdd(
S32, IdxLo, One);
 
 2919    auto Extract0 = 
B.buildExtractVectorElement(DstRegs[0], CastSrc, IdxLo);
 
 2920    auto Extract1 = 
B.buildExtractVectorElement(DstRegs[1], CastSrc, IdxHi);
 
 2922    MRI.setRegBank(DstReg, *DstBank);
 
 2923    MRI.setRegBank(CastSrc.getReg(0), *SrcBank);
 
 2924    MRI.setRegBank(One.getReg(0), AMDGPU::SGPRRegBank);
 
 2925    MRI.setRegBank(IdxLo.getReg(0), AMDGPU::SGPRRegBank);
 
 2926    MRI.setRegBank(IdxHi.getReg(0), AMDGPU::SGPRRegBank);
 
 2930      MI.eraseFromParent();
 
 2936    B.setInstr(*Span.
begin());
 
 2937    MI.eraseFromParent();
 
 2941    if (NeedCopyToVGPR) {
 
 2945      MRI.setRegBank(TmpReg0, AMDGPU::SGPRRegBank);
 
 2946      MRI.setRegBank(TmpReg1, AMDGPU::SGPRRegBank);
 
 2948      Extract0->getOperand(0).setReg(TmpReg0);
 
 2949      Extract1->getOperand(0).setReg(TmpReg1);
 
 2957    if (ShouldMoveIndexIntoLoop)
 
 2962  case AMDGPU::G_INSERT_VECTOR_ELT: {
 
 2966    LLT VecTy = 
MRI.getType(DstReg);
 
 2972      MRI.setType(
MI.getOperand(1).getReg(), VecTy);
 
 2974    if (foldInsertEltToCmpSelect(
B, 
MI, OpdMapper))
 
 2982    LLT InsTy = 
MRI.getType(InsReg);
 
 2986    unsigned ConstOffset;
 
 2987    std::tie(BaseIdxReg, ConstOffset) =
 
 2994    bool ShouldMoveIndexIntoLoop = IdxBank != &AMDGPU::SGPRRegBank &&
 
 2999    if (ShouldMoveIndexIntoLoop)
 
 3000      MI.getOperand(3).setReg(BaseIdxReg);
 
 3003    if (InsRegs.
empty()) {
 
 3007      if (ShouldMoveIndexIntoLoop) {
 
 3019    auto CastSrc = 
B.buildBitcast(Vec32, SrcReg);
 
 3020    auto One = 
B.buildConstant(
S32, 1);
 
 3029    auto IdxLo = 
B.buildShl(
S32, BaseIdxReg, One);
 
 3030    auto IdxHi = 
B.buildAdd(
S32, IdxLo, One);
 
 3032    auto InsLo = 
B.buildInsertVectorElement(Vec32, CastSrc, InsRegs[0], IdxLo);
 
 3033    auto InsHi = 
B.buildInsertVectorElement(Vec32, InsLo, InsRegs[1], IdxHi);
 
 3042    MRI.setRegBank(InsReg, *InsSrcBank);
 
 3043    MRI.setRegBank(CastSrc.getReg(0), *SrcBank);
 
 3044    MRI.setRegBank(InsLo.getReg(0), *DstBank);
 
 3045    MRI.setRegBank(InsHi.getReg(0), *DstBank);
 
 3046    MRI.setRegBank(One.getReg(0), AMDGPU::SGPRRegBank);
 
 3047    MRI.setRegBank(IdxLo.getReg(0), AMDGPU::SGPRRegBank);
 
 3048    MRI.setRegBank(IdxHi.getReg(0), AMDGPU::SGPRRegBank);
 
 3053      B.setInsertPt(
B.getMBB(), 
MI);
 
 3054      B.buildBitcast(DstReg, InsHi);
 
 3055      MI.eraseFromParent();
 
 3059    B.setInstr(*Span.
begin());
 
 3060    MI.eraseFromParent();
 
 3071    B.buildBitcast(DstReg, InsHi);
 
 3074    if (ShouldMoveIndexIntoLoop)
 
 3079  case AMDGPU::G_AMDGPU_BUFFER_LOAD:
 
 3080  case AMDGPU::G_AMDGPU_BUFFER_LOAD_USHORT:
 
 3081  case AMDGPU::G_AMDGPU_BUFFER_LOAD_SSHORT:
 
 3082  case AMDGPU::G_AMDGPU_BUFFER_LOAD_UBYTE:
 
 3083  case AMDGPU::G_AMDGPU_BUFFER_LOAD_SBYTE:
 
 3084  case AMDGPU::G_AMDGPU_BUFFER_LOAD_TFE:
 
 3085  case AMDGPU::G_AMDGPU_BUFFER_LOAD_USHORT_TFE:
 
 3086  case AMDGPU::G_AMDGPU_BUFFER_LOAD_SSHORT_TFE:
 
 3087  case AMDGPU::G_AMDGPU_BUFFER_LOAD_UBYTE_TFE:
 
 3088  case AMDGPU::G_AMDGPU_BUFFER_LOAD_SBYTE_TFE:
 
 3089  case AMDGPU::G_AMDGPU_BUFFER_LOAD_FORMAT:
 
 3090  case AMDGPU::G_AMDGPU_BUFFER_LOAD_FORMAT_TFE:
 
 3091  case AMDGPU::G_AMDGPU_BUFFER_LOAD_FORMAT_D16:
 
 3092  case AMDGPU::G_AMDGPU_TBUFFER_LOAD_FORMAT:
 
 3093  case AMDGPU::G_AMDGPU_TBUFFER_LOAD_FORMAT_D16:
 
 3094  case AMDGPU::G_AMDGPU_BUFFER_STORE:
 
 3095  case AMDGPU::G_AMDGPU_BUFFER_STORE_BYTE:
 
 3096  case AMDGPU::G_AMDGPU_BUFFER_STORE_SHORT:
 
 3097  case AMDGPU::G_AMDGPU_BUFFER_STORE_FORMAT:
 
 3098  case AMDGPU::G_AMDGPU_BUFFER_STORE_FORMAT_D16:
 
 3099  case AMDGPU::G_AMDGPU_TBUFFER_STORE_FORMAT:
 
 3100  case AMDGPU::G_AMDGPU_TBUFFER_STORE_FORMAT_D16: {
 
 3105  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_SWAP:
 
 3106  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_ADD:
 
 3107  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_SUB:
 
 3108  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_SMIN:
 
 3109  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_UMIN:
 
 3110  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_SMAX:
 
 3111  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_UMAX:
 
 3112  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_AND:
 
 3113  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_OR:
 
 3114  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_XOR:
 
 3115  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_INC:
 
 3116  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_DEC:
 
 3117  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_FADD:
 
 3118  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_FMIN:
 
 3119  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_FMAX: {
 
 3124  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_CMPSWAP: {
 
 3129  case AMDGPU::G_AMDGPU_S_BUFFER_LOAD:
 
 3130  case AMDGPU::G_AMDGPU_S_BUFFER_LOAD_UBYTE:
 
 3131  case AMDGPU::G_AMDGPU_S_BUFFER_LOAD_SBYTE:
 
 3132  case AMDGPU::G_AMDGPU_S_BUFFER_LOAD_USHORT:
 
 3133  case AMDGPU::G_AMDGPU_S_BUFFER_LOAD_SSHORT: {
 
 3137  case AMDGPU::G_AMDGPU_S_BUFFER_PREFETCH:
 
 3141  case AMDGPU::G_INTRINSIC:
 
 3142  case AMDGPU::G_INTRINSIC_CONVERGENT: {
 
 3144    case Intrinsic::amdgcn_readlane: {
 
 3155    case Intrinsic::amdgcn_writelane: {
 
 3165    case Intrinsic::amdgcn_interp_p1:
 
 3166    case Intrinsic::amdgcn_interp_p2:
 
 3167    case Intrinsic::amdgcn_interp_mov:
 
 3168    case Intrinsic::amdgcn_interp_p1_f16:
 
 3169    case Intrinsic::amdgcn_interp_p2_f16:
 
 3170    case Intrinsic::amdgcn_lds_param_load: {
 
 3178    case Intrinsic::amdgcn_interp_inreg_p10:
 
 3179    case Intrinsic::amdgcn_interp_inreg_p2:
 
 3180    case Intrinsic::amdgcn_interp_inreg_p10_f16:
 
 3181    case Intrinsic::amdgcn_interp_inreg_p2_f16:
 
 3182    case Intrinsic::amdgcn_interp_p10_rtz_f16:
 
 3183    case Intrinsic::amdgcn_interp_p2_rtz_f16:
 
 3184    case Intrinsic::amdgcn_permlane16_swap:
 
 3185    case Intrinsic::amdgcn_permlane32_swap:
 
 3188    case Intrinsic::amdgcn_permlane16:
 
 3189    case Intrinsic::amdgcn_permlanex16: {
 
 3197    case Intrinsic::amdgcn_permlane_bcast:
 
 3198    case Intrinsic::amdgcn_permlane_up:
 
 3199    case Intrinsic::amdgcn_permlane_down:
 
 3200    case Intrinsic::amdgcn_permlane_xor:
 
 3205    case Intrinsic::amdgcn_permlane_idx_gen: {
 
 3209    case Intrinsic::amdgcn_sbfe:
 
 3212    case Intrinsic::amdgcn_ubfe:
 
 3215    case Intrinsic::amdgcn_inverse_ballot:
 
 3216    case Intrinsic::amdgcn_s_bitreplicate:
 
 3217    case Intrinsic::amdgcn_s_quadmask:
 
 3218    case Intrinsic::amdgcn_s_wqm:
 
 3222    case Intrinsic::amdgcn_ballot:
 
 3228  case AMDGPU::G_AMDGPU_INTRIN_IMAGE_LOAD:
 
 3229  case AMDGPU::G_AMDGPU_INTRIN_IMAGE_LOAD_D16:
 
 3230  case AMDGPU::G_AMDGPU_INTRIN_IMAGE_LOAD_NORET:
 
 3231  case AMDGPU::G_AMDGPU_INTRIN_IMAGE_STORE:
 
 3232  case AMDGPU::G_AMDGPU_INTRIN_IMAGE_STORE_D16: {
 
 3242  case AMDGPU::G_AMDGPU_BVH_INTERSECT_RAY:
 
 3243  case AMDGPU::G_AMDGPU_BVH8_INTERSECT_RAY:
 
 3244  case AMDGPU::G_AMDGPU_BVH_DUAL_INTERSECT_RAY: {
 
 3246        MI.getOpcode() == AMDGPU::G_AMDGPU_BVH_DUAL_INTERSECT_RAY ||
 
 3247        MI.getOpcode() == AMDGPU::G_AMDGPU_BVH8_INTERSECT_RAY;
 
 3248    unsigned NumMods = IsDualOrBVH8 ? 0 : 1; 
 
 3249    unsigned LastRegOpIdx = 
MI.getNumExplicitOperands() - 1 - NumMods;
 
 3254  case AMDGPU::G_INTRINSIC_W_SIDE_EFFECTS:
 
 3255  case AMDGPU::G_INTRINSIC_CONVERGENT_W_SIDE_EFFECTS: {
 
 3258    case Intrinsic::amdgcn_ds_ordered_add:
 
 3259    case Intrinsic::amdgcn_ds_ordered_swap: {
 
 3266    case Intrinsic::amdgcn_ds_gws_init:
 
 3267    case Intrinsic::amdgcn_ds_gws_barrier:
 
 3268    case Intrinsic::amdgcn_ds_gws_sema_br: {
 
 3274    case Intrinsic::amdgcn_ds_gws_sema_v:
 
 3275    case Intrinsic::amdgcn_ds_gws_sema_p:
 
 3276    case Intrinsic::amdgcn_ds_gws_sema_release_all: {
 
 3281    case Intrinsic::amdgcn_ds_append:
 
 3282    case Intrinsic::amdgcn_ds_consume: {
 
 3286    case Intrinsic::amdgcn_s_sendmsg:
 
 3287    case Intrinsic::amdgcn_s_sendmsghalt: {
 
 3292    case Intrinsic::amdgcn_s_setreg: {
 
 3296    case Intrinsic::amdgcn_s_ttracedata:
 
 3299    case Intrinsic::amdgcn_raw_buffer_load_lds:
 
 3300    case Intrinsic::amdgcn_raw_ptr_buffer_load_lds: {
 
 3307    case Intrinsic::amdgcn_struct_buffer_load_lds:
 
 3308    case Intrinsic::amdgcn_struct_ptr_buffer_load_lds: {
 
 3315    case Intrinsic::amdgcn_cluster_load_async_to_lds_b8:
 
 3316    case Intrinsic::amdgcn_cluster_load_async_to_lds_b32:
 
 3317    case Intrinsic::amdgcn_cluster_load_async_to_lds_b64:
 
 3318    case Intrinsic::amdgcn_cluster_load_async_to_lds_b128: {
 
 3323    case Intrinsic::amdgcn_load_to_lds:
 
 3324    case Intrinsic::amdgcn_global_load_lds: {
 
 3329    case Intrinsic::amdgcn_lds_direct_load: {
 
 3335    case Intrinsic::amdgcn_exp_row:
 
 3339    case Intrinsic::amdgcn_cluster_load_b32:
 
 3340    case Intrinsic::amdgcn_cluster_load_b64:
 
 3341    case Intrinsic::amdgcn_cluster_load_b128: {
 
 3346    case Intrinsic::amdgcn_s_sleep_var:
 
 3350    case Intrinsic::amdgcn_s_barrier_join:
 
 3353    case Intrinsic::amdgcn_s_barrier_init:
 
 3354    case Intrinsic::amdgcn_s_barrier_signal_var:
 
 3358    case Intrinsic::amdgcn_s_get_barrier_state:
 
 3359    case Intrinsic::amdgcn_s_get_named_barrier_state: {
 
 3363    case Intrinsic::amdgcn_s_prefetch_data: {
 
 3365      unsigned AS = 
MRI.getType(PtrReg).getAddressSpace();
 
 3370        MI.eraseFromParent();
 
 3373    case Intrinsic::amdgcn_tensor_load_to_lds:
 
 3374    case Intrinsic::amdgcn_tensor_store_from_lds: {
 
 3381    case Intrinsic::amdgcn_tensor_load_to_lds_d2:
 
 3382    case Intrinsic::amdgcn_tensor_store_from_lds_d2: {
 
 3393        if (RSrcIntrin->IsImage) {
 
 3404  case AMDGPU::G_SI_CALL: {
 
 3415    unsigned FrameSetupOpcode = AMDGPU::ADJCALLSTACKUP;
 
 3416    unsigned FrameDestroyOpcode = AMDGPU::ADJCALLSTACKDOWN;
 
 3422    unsigned NonCopyInstrsLen = 0;
 
 3428    while (Start->getOpcode() != FrameSetupOpcode) {
 
 3430      bool IsCopy = 
false;
 
 3431      if (Start->getOpcode() == AMDGPU::COPY) {
 
 3432        auto &Dst = Start->getOperand(0);
 
 3435          if (Reg.isPhysical() && 
MI.readsRegister(Reg, 
TRI)) {
 
 3440            auto &Src = Start->getOperand(1);
 
 3443              IsCopy = Info->getScratchRSrcReg() == Reg;
 
 3451        NonCopyInstrsLen = NonCopyInstrs.
size();
 
 3456    NonCopyInstrs.
resize(NonCopyInstrsLen);
 
 3458    for (
auto *NonCopy : 
reverse(NonCopyInstrs)) {
 
 3459      MBB->splice(LastCopy, 
MBB, NonCopy->getIterator());
 
 3464    NonCopyInstrs.
clear();
 
 3465    NonCopyInstrsLen = 0;
 
 3468    while (End->getOpcode() != FrameDestroyOpcode) {
 
 3470      bool IsCopy = 
false;
 
 3471      if (End->getOpcode() == AMDGPU::COPY) {
 
 3472        auto &Src = End->getOperand(1);
 
 3475          IsCopy = Reg.isPhysical() && 
MI.modifiesRegister(Reg, 
TRI);
 
 3481        NonCopyInstrsLen = NonCopyInstrs.
size();
 
 3486    NonCopyInstrs.
resize(NonCopyInstrsLen);
 
 3490    for (
auto *NonCopy : 
reverse(NonCopyInstrs)) {
 
 3491      MBB->splice(LastCopy, 
MBB, NonCopy->getIterator());
 
 3495    B.setInsertPt(
B.getMBB(), Start);
 
 3499  case AMDGPU::G_LOAD:
 
 3500  case AMDGPU::G_ZEXTLOAD:
 
 3501  case AMDGPU::G_SEXTLOAD: {
 
 3506  case AMDGPU::G_DYN_STACKALLOC:
 
 3509  case AMDGPU::G_STACKRESTORE: {
 
 3514  case AMDGPU::G_SBFX:
 
 3517  case AMDGPU::G_UBFX:
 
 3520  case AMDGPU::G_AMDGPU_MAD_U64_U32:
 
 3521  case AMDGPU::G_AMDGPU_MAD_I64_I32:
 
 3524  case AMDGPU::G_PREFETCH: {
 
 3526      MI.eraseFromParent();
 
 3531    if (PtrBank == AMDGPU::VGPRRegBankID &&
 
 3532        (!
Subtarget.hasVmemPrefInsts() || !
MI.getOperand(3).getImm())) {
 
 3534      MI.eraseFromParent();
 
 3537    unsigned AS = 
MRI.getType(PtrReg).getAddressSpace();
 
 3542          !
MI.getOperand(3).getImm() ))) {
 
 3543      MI.eraseFromParent();
 
 
 3840  if (
MI.isCopy() || 
MI.getOpcode() == AMDGPU::G_FREEZE) {
 
 3855      DstBank = &AMDGPU::VCCRegBank;
 
 3858      DstBank = &AMDGPU::VCCRegBank;
 
 3869    if (
MI.getOpcode() != AMDGPU::G_FREEZE &&
 
 3874    unsigned OpdsMappingSize = 
MI.isCopy() ? 1 : 2;
 
 3876    OpdsMapping[0] = &ValMap;
 
 3877    if (
MI.getOpcode() == AMDGPU::G_FREEZE)
 
 3878      OpdsMapping[1] = &ValMap;
 
 3885  if (
MI.isRegSequence()) {
 
 3888    unsigned BankID = AMDGPU::SGPRRegBankID;
 
 3890    for (
unsigned I = 1, E = 
MI.getNumOperands(); 
I != E; 
I += 2) {
 
 3894      if (OpBank != AMDGPU::SGPRRegBankID) {
 
 3895        BankID = AMDGPU::VGPRRegBankID;
 
 3912    unsigned ResultBank = AMDGPU::InvalidRegBankID;
 
 3917      ResultBank = DstBank->
getID();
 
 3919    for (
unsigned I = 0; 
I < 
PHI->getNumIncomingValues(); ++
I) {
 
 3924      if (!Bank || Bank->
getID() == AMDGPU::VGPRRegBankID) {
 
 3925        ResultBank = AMDGPU::VGPRRegBankID;
 
 3930      unsigned OpBank = Bank->
getID();
 
 3934    assert(ResultBank != AMDGPU::InvalidRegBankID);
 
 3936    unsigned Size = 
MRI.getType(DstReg).getSizeInBits();
 
 3951  switch (
MI.getOpcode()) {
 
 3958  case AMDGPU::G_MUL: {
 
 3959    unsigned Size = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 3964      unsigned TargetBankID = AMDGPU::InvalidRegBankID;
 
 3965      unsigned BankLHS = AMDGPU::InvalidRegBankID;
 
 3966      unsigned BankRHS = AMDGPU::InvalidRegBankID;
 
 3968        TargetBankID = DstBank->
getID();
 
 3969        if (DstBank == &AMDGPU::VCCRegBank) {
 
 3970          TargetBankID = AMDGPU::VCCRegBankID;
 
 3971          BankLHS = AMDGPU::VCCRegBankID;
 
 3972          BankRHS = AMDGPU::VCCRegBankID;
 
 3975                                 AMDGPU::SGPRRegBankID);
 
 3977                                 AMDGPU::SGPRRegBankID);
 
 3981                               AMDGPU::VCCRegBankID);
 
 3983                               AMDGPU::VCCRegBankID);
 
 3986        if (BankLHS == AMDGPU::VGPRRegBankID || BankRHS == AMDGPU::VGPRRegBankID) {
 
 3987          TargetBankID = AMDGPU::VGPRRegBankID;
 
 3988        } 
else if (BankLHS == AMDGPU::VCCRegBankID || BankRHS == AMDGPU::VCCRegBankID) {
 
 3989          TargetBankID = AMDGPU::VCCRegBankID;
 
 3990          BankLHS = AMDGPU::VCCRegBankID;
 
 3991          BankRHS = AMDGPU::VCCRegBankID;
 
 3992        } 
else if (BankLHS == AMDGPU::SGPRRegBankID && BankRHS == AMDGPU::SGPRRegBankID) {
 
 3993          TargetBankID = AMDGPU::SGPRRegBankID;
 
 3997      OpdsMapping[0] = AMDGPU::getValueMapping(TargetBankID, 
Size);
 
 3998      OpdsMapping[1] = AMDGPU::getValueMapping(BankLHS, 
Size);
 
 3999      OpdsMapping[2] = AMDGPU::getValueMapping(BankRHS, 
Size);
 
 4006        OpdsMapping[0] = getValueMappingSGPR64Only(AMDGPU::SGPRRegBankID, 
Size);
 
 4007        OpdsMapping[1] = OpdsMapping[2] = OpdsMapping[0];
 
 4009        if (
MI.getOpcode() == AMDGPU::G_MUL && 
Subtarget.hasVectorMulU64())
 
 4010          OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 
Size);
 
 4013              getValueMappingSGPR64Only(AMDGPU::VGPRRegBankID, 
Size);
 
 4015        OpdsMapping[1] = AMDGPU::getValueMapping(Bank1, 
Size);
 
 4018        OpdsMapping[2] = AMDGPU::getValueMapping(Bank2, 
Size);
 
 4026  case AMDGPU::G_PTR_ADD:
 
 4027  case AMDGPU::G_PTRMASK:
 
 4031  case AMDGPU::G_LSHR:
 
 4032  case AMDGPU::G_ASHR:
 
 4033  case AMDGPU::G_UADDO:
 
 4034  case AMDGPU::G_USUBO:
 
 4035  case AMDGPU::G_UADDE:
 
 4036  case AMDGPU::G_SADDE:
 
 4037  case AMDGPU::G_USUBE:
 
 4038  case AMDGPU::G_SSUBE:
 
 4040  case AMDGPU::G_SHUFFLE_VECTOR:
 
 4041  case AMDGPU::G_SBFX:
 
 4042  case AMDGPU::G_UBFX:
 
 4043  case AMDGPU::G_AMDGPU_S_MUL_I64_I32:
 
 4044  case AMDGPU::G_AMDGPU_S_MUL_U64_U32:
 
 4048  case AMDGPU::G_SMIN:
 
 4049  case AMDGPU::G_SMAX:
 
 4050  case AMDGPU::G_UMIN:
 
 4051  case AMDGPU::G_UMAX:
 
 4054      if (
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits() == 64 &&
 
 4060  case AMDGPU::G_FADD:
 
 4061  case AMDGPU::G_FSUB:
 
 4062  case AMDGPU::G_FMUL:
 
 4064  case AMDGPU::G_FFLOOR:
 
 4065  case AMDGPU::G_FCEIL:
 
 4066  case AMDGPU::G_INTRINSIC_ROUNDEVEN:
 
 4067  case AMDGPU::G_FMINNUM:
 
 4068  case AMDGPU::G_FMAXNUM:
 
 4069  case AMDGPU::G_FMINIMUM:
 
 4070  case AMDGPU::G_FMAXIMUM:
 
 4071  case AMDGPU::G_FMINIMUMNUM:
 
 4072  case AMDGPU::G_FMAXIMUMNUM:
 
 4073  case AMDGPU::G_INTRINSIC_TRUNC:
 
 4074  case AMDGPU::G_STRICT_FADD:
 
 4075  case AMDGPU::G_STRICT_FSUB:
 
 4076  case AMDGPU::G_STRICT_FMUL:
 
 4077  case AMDGPU::G_STRICT_FMA: {
 
 4078    LLT Ty = 
MRI.getType(
MI.getOperand(0).getReg());
 
 4079    unsigned Size = Ty.getSizeInBits();
 
 4080    if (
Subtarget.hasSALUFloatInsts() && Ty.isScalar() &&
 
 4085  case AMDGPU::G_FPTOSI:
 
 4086  case AMDGPU::G_FPTOUI:
 
 4087  case AMDGPU::G_SITOFP:
 
 4088  case AMDGPU::G_UITOFP: {
 
 4089    unsigned SizeDst = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 4090    unsigned SizeSrc = 
MRI.getType(
MI.getOperand(1).getReg()).getSizeInBits();
 
 4091    if (
Subtarget.hasSALUFloatInsts() && SizeDst == 32 && SizeSrc == 32 &&
 
 4096  case AMDGPU::G_FPTRUNC:
 
 4097  case AMDGPU::G_FPEXT: {
 
 4098    unsigned SizeDst = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 4099    unsigned SizeSrc = 
MRI.getType(
MI.getOperand(1).getReg()).getSizeInBits();
 
 4100    if (
Subtarget.hasSALUFloatInsts() && SizeDst != 64 && SizeSrc != 64 &&
 
 4105  case AMDGPU::G_FSQRT:
 
 4106  case AMDGPU::G_FEXP2:
 
 4107  case AMDGPU::G_FLOG2: {
 
 4108    unsigned Size = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 4114  case AMDGPU::G_SADDSAT: 
 
 4115  case AMDGPU::G_SSUBSAT:
 
 4116  case AMDGPU::G_UADDSAT:
 
 4117  case AMDGPU::G_USUBSAT:
 
 4118  case AMDGPU::G_FMAD:
 
 4119  case AMDGPU::G_FLDEXP:
 
 4120  case AMDGPU::G_FMINNUM_IEEE:
 
 4121  case AMDGPU::G_FMAXNUM_IEEE:
 
 4122  case AMDGPU::G_FCANONICALIZE:
 
 4123  case AMDGPU::G_STRICT_FLDEXP:
 
 4124  case AMDGPU::G_BSWAP: 
 
 4125  case AMDGPU::G_FSHR: 
 
 4126  case AMDGPU::G_AMDGPU_FMIN_LEGACY:
 
 4127  case AMDGPU::G_AMDGPU_FMAX_LEGACY:
 
 4128  case AMDGPU::G_AMDGPU_RCP_IFLAG:
 
 4129  case AMDGPU::G_AMDGPU_CVT_F32_UBYTE0:
 
 4130  case AMDGPU::G_AMDGPU_CVT_F32_UBYTE1:
 
 4131  case AMDGPU::G_AMDGPU_CVT_F32_UBYTE2:
 
 4132  case AMDGPU::G_AMDGPU_CVT_F32_UBYTE3:
 
 4133  case AMDGPU::G_AMDGPU_CVT_PK_I16_I32:
 
 4134  case AMDGPU::G_AMDGPU_SMED3:
 
 4135  case AMDGPU::G_AMDGPU_FMED3:
 
 4137  case AMDGPU::G_UMULH:
 
 4138  case AMDGPU::G_SMULH: {
 
 4143  case AMDGPU::G_AMDGPU_MAD_U64_U32:
 
 4144  case AMDGPU::G_AMDGPU_MAD_I64_I32: {
 
 4153    bool AllSalu = 
true;
 
 4154    bool MulSalu = 
true;
 
 4155    for (
unsigned i = 0; i < 5; ++i) {
 
 4158        if (Bank->getID() != AMDGPU::SGPRRegBankID) {
 
 4160          if (i == 2 || i == 3) {
 
 4174    if (!MulSalu || 
Subtarget.hasFullRate64Ops())
 
 4178    OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 64);
 
 4179    OpdsMapping[1] = AMDGPU::getValueMapping(AMDGPU::VCCRegBankID, 1);
 
 4180    OpdsMapping[2] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 32);
 
 4181    OpdsMapping[3] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 32);
 
 4182    OpdsMapping[4] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 64);
 
 4185  case AMDGPU::G_IMPLICIT_DEF: {
 
 4186    unsigned Size = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 4187    OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 
Size);
 
 4190  case AMDGPU::G_FCONSTANT:
 
 4191  case AMDGPU::G_CONSTANT:
 
 4192  case AMDGPU::G_GLOBAL_VALUE:
 
 4193  case AMDGPU::G_FRAME_INDEX:
 
 4194  case AMDGPU::G_BLOCK_ADDR:
 
 4195  case AMDGPU::G_READSTEADYCOUNTER:
 
 4196  case AMDGPU::G_READCYCLECOUNTER: {
 
 4197    unsigned Size = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 4198    OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 
Size);
 
 4201  case AMDGPU::G_DYN_STACKALLOC: {
 
 4203    OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 32);
 
 4205    OpdsMapping[1] = AMDGPU::getValueMapping(SrcBankID, 32);
 
 4208  case AMDGPU::G_AMDGPU_WAVE_ADDRESS: {
 
 4213    OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 32);
 
 4214    OpdsMapping[1] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 32);
 
 4217  case AMDGPU::G_INSERT: {
 
 4222    OpdsMapping[0] = AMDGPU::getValueMapping(BankID, DstSize);
 
 4223    OpdsMapping[1] = AMDGPU::getValueMapping(BankID, SrcSize);
 
 4224    OpdsMapping[2] = AMDGPU::getValueMapping(BankID, EltSize);
 
 4225    OpdsMapping[3] = 
nullptr;
 
 4228  case AMDGPU::G_EXTRACT: {
 
 4232    OpdsMapping[0] = AMDGPU::getValueMapping(BankID, DstSize);
 
 4233    OpdsMapping[1] = AMDGPU::getValueMapping(BankID, SrcSize);
 
 4234    OpdsMapping[2] = 
nullptr;
 
 4237  case AMDGPU::G_BUILD_VECTOR:
 
 4238  case AMDGPU::G_BUILD_VECTOR_TRUNC: {
 
 4239    LLT DstTy = 
MRI.getType(
MI.getOperand(0).getReg());
 
 4242      unsigned SrcSize = 
MRI.getType(
MI.getOperand(1).getReg()).getSizeInBits();
 
 4245      unsigned DstBankID = 
regBankUnion(Src0BankID, Src1BankID);
 
 4247      OpdsMapping[0] = AMDGPU::getValueMapping(DstBankID, DstSize);
 
 4248      OpdsMapping[1] = AMDGPU::getValueMapping(Src0BankID, SrcSize);
 
 4249      OpdsMapping[2] = AMDGPU::getValueMapping(Src1BankID, SrcSize);
 
 4255  case AMDGPU::G_MERGE_VALUES:
 
 4256  case AMDGPU::G_CONCAT_VECTORS: {
 
 4258    unsigned DstSize = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 4259    unsigned SrcSize = 
MRI.getType(
MI.getOperand(1).getReg()).getSizeInBits();
 
 4261    OpdsMapping[0] = AMDGPU::getValueMapping(Bank, DstSize);
 
 4263    for (
unsigned i = 1, e = 
MI.getNumOperands(); i != e; ++i)
 
 4264      OpdsMapping[i] = AMDGPU::getValueMapping(Bank, SrcSize);
 
 4267  case AMDGPU::G_BITREVERSE:
 
 4268  case AMDGPU::G_BITCAST:
 
 4269  case AMDGPU::G_INTTOPTR:
 
 4270  case AMDGPU::G_PTRTOINT:
 
 4271  case AMDGPU::G_FABS:
 
 4272  case AMDGPU::G_FNEG: {
 
 4273    unsigned Size = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 4275    OpdsMapping[0] = OpdsMapping[1] = AMDGPU::getValueMapping(BankID, 
Size);
 
 4278  case AMDGPU::G_AMDGPU_FFBH_U32:
 
 4279  case AMDGPU::G_AMDGPU_FFBL_B32:
 
 4280  case AMDGPU::G_CTLZ_ZERO_UNDEF:
 
 4281  case AMDGPU::G_CTTZ_ZERO_UNDEF: {
 
 4282    unsigned Size = 
MRI.getType(
MI.getOperand(1).getReg()).getSizeInBits();
 
 4284    OpdsMapping[0] = AMDGPU::getValueMapping(BankID, 32);
 
 4285    OpdsMapping[1] = AMDGPU::getValueMappingSGPR64Only(BankID, 
Size);
 
 4288  case AMDGPU::G_CTPOP: {
 
 4289    unsigned Size = 
MRI.getType(
MI.getOperand(1).getReg()).getSizeInBits();
 
 4291    OpdsMapping[0] = AMDGPU::getValueMapping(BankID, 32);
 
 4296    OpdsMapping[1] = AMDGPU::getValueMapping(BankID, 
Size);
 
 4299  case AMDGPU::G_TRUNC: {
 
 4305    OpdsMapping[0] = AMDGPU::getValueMapping(Bank, DstSize);
 
 4306    OpdsMapping[1] = AMDGPU::getValueMapping(Bank, SrcSize);
 
 4309  case AMDGPU::G_ZEXT:
 
 4310  case AMDGPU::G_SEXT:
 
 4311  case AMDGPU::G_ANYEXT:
 
 4312  case AMDGPU::G_SEXT_INREG: {
 
 4321    switch (SrcBank->
getID()) {
 
 4322    case AMDGPU::SGPRRegBankID:
 
 4323      DstBank = AMDGPU::SGPRRegBankID;
 
 4326      DstBank = AMDGPU::VGPRRegBankID;
 
 4332    OpdsMapping[0] = AMDGPU::getValueMappingSGPR64Only(DstBank, DstSize);
 
 4333    OpdsMapping[1] = AMDGPU::getValueMappingSGPR64Only(SrcBank->
getID(),
 
 4337  case AMDGPU::G_IS_FPCLASS: {
 
 4339    unsigned SrcSize = 
MRI.getType(SrcReg).getSizeInBits();
 
 4340    unsigned DstSize = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 4341    OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VCCRegBankID, DstSize);
 
 4342    OpdsMapping[1] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, SrcSize);
 
 4345  case AMDGPU::G_STORE: {
 
 4347    unsigned Size = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 4352        AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 
Size);
 
 4353    OpdsMapping[0] = ValMapping;
 
 4357  case AMDGPU::G_ICMP:
 
 4358  case AMDGPU::G_FCMP: {
 
 4359    unsigned Size = 
MRI.getType(
MI.getOperand(2).getReg()).getSizeInBits();
 
 4364                                    AMDGPU::SGPRRegBankID);
 
 4368    auto canUseSCCICMP = [&]() {
 
 4371      return Size == 32 ||
 
 4376    auto canUseSCCFCMP = [&]() {
 
 4380    bool isICMP = 
MI.getOpcode() == AMDGPU::G_ICMP;
 
 4381    bool CanUseSCC = DstBank == AMDGPU::SGPRRegBankID &&
 
 4382                     Op2Bank == AMDGPU::SGPRRegBankID &&
 
 4383                     Op3Bank == AMDGPU::SGPRRegBankID &&
 
 4384                     (isICMP ? canUseSCCICMP() : canUseSCCFCMP());
 
 4386    DstBank = CanUseSCC ? AMDGPU::SGPRRegBankID : AMDGPU::VCCRegBankID;
 
 4387    unsigned SrcBank = CanUseSCC ? AMDGPU::SGPRRegBankID : AMDGPU::VGPRRegBankID;
 
 4391    const unsigned ResultSize = 1;
 
 4393    OpdsMapping[0] = AMDGPU::getValueMapping(DstBank, ResultSize);
 
 4394    OpdsMapping[1] = 
nullptr; 
 
 4395    OpdsMapping[2] = AMDGPU::getValueMapping(SrcBank, 
Size);
 
 4396    OpdsMapping[3] = AMDGPU::getValueMapping(SrcBank, 
Size);
 
 4399  case AMDGPU::G_EXTRACT_VECTOR_ELT: {
 
 4402    unsigned DstSize = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 4403    unsigned SrcSize = 
MRI.getType(
MI.getOperand(1).getReg()).getSizeInBits();
 
 4404    unsigned IdxSize = 
MRI.getType(
MI.getOperand(2).getReg()).getSizeInBits();
 
 4406    unsigned OutputBankID = 
regBankUnion(SrcBankID, IdxBank);
 
 4408    OpdsMapping[0] = AMDGPU::getValueMappingSGPR64Only(OutputBankID, DstSize);
 
 4409    OpdsMapping[1] = AMDGPU::getValueMapping(SrcBankID, SrcSize);
 
 4412    OpdsMapping[2] = AMDGPU::getValueMapping(IdxBank, IdxSize);
 
 4415  case AMDGPU::G_INSERT_VECTOR_ELT: {
 
 4417      AMDGPU::SGPRRegBankID : AMDGPU::VGPRRegBankID;
 
 4419    unsigned VecSize = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 4420    unsigned InsertSize = 
MRI.getType(
MI.getOperand(2).getReg()).getSizeInBits();
 
 4421    unsigned IdxSize = 
MRI.getType(
MI.getOperand(3).getReg()).getSizeInBits();
 
 4425    OpdsMapping[0] = AMDGPU::getValueMapping(OutputBankID, VecSize);
 
 4426    OpdsMapping[1] = AMDGPU::getValueMapping(OutputBankID, VecSize);
 
 4430    if (InsertSize == 64 && OutputBankID == AMDGPU::VGPRRegBankID) {
 
 4431      OpdsMapping[2] = AMDGPU::getValueMappingSplit64(InsertEltBankID,
 
 4434      assert(InsertSize == 32 || InsertSize == 64);
 
 4435      OpdsMapping[2] = AMDGPU::getValueMapping(InsertEltBankID, InsertSize);
 
 4439    OpdsMapping[3] = AMDGPU::getValueMapping(IdxBankID, IdxSize);
 
 4442  case AMDGPU::G_UNMERGE_VALUES: {
 
 4447    for (
unsigned i = 0, e = 
MI.getNumOperands(); i != e; ++i) {
 
 4449      OpdsMapping[i] = AMDGPU::getValueMapping(Bank, 
Size);
 
 4453  case AMDGPU::G_AMDGPU_BUFFER_LOAD:
 
 4454  case AMDGPU::G_AMDGPU_BUFFER_LOAD_UBYTE:
 
 4455  case AMDGPU::G_AMDGPU_BUFFER_LOAD_SBYTE:
 
 4456  case AMDGPU::G_AMDGPU_BUFFER_LOAD_USHORT:
 
 4457  case AMDGPU::G_AMDGPU_BUFFER_LOAD_SSHORT:
 
 4458  case AMDGPU::G_AMDGPU_BUFFER_LOAD_TFE:
 
 4459  case AMDGPU::G_AMDGPU_BUFFER_LOAD_UBYTE_TFE:
 
 4460  case AMDGPU::G_AMDGPU_BUFFER_LOAD_SBYTE_TFE:
 
 4461  case AMDGPU::G_AMDGPU_BUFFER_LOAD_USHORT_TFE:
 
 4462  case AMDGPU::G_AMDGPU_BUFFER_LOAD_SSHORT_TFE:
 
 4463  case AMDGPU::G_AMDGPU_BUFFER_LOAD_FORMAT:
 
 4464  case AMDGPU::G_AMDGPU_BUFFER_LOAD_FORMAT_TFE:
 
 4465  case AMDGPU::G_AMDGPU_BUFFER_LOAD_FORMAT_D16:
 
 4466  case AMDGPU::G_AMDGPU_TBUFFER_LOAD_FORMAT:
 
 4467  case AMDGPU::G_AMDGPU_TBUFFER_LOAD_FORMAT_D16:
 
 4468  case AMDGPU::G_AMDGPU_TBUFFER_STORE_FORMAT:
 
 4469  case AMDGPU::G_AMDGPU_TBUFFER_STORE_FORMAT_D16:
 
 4470  case AMDGPU::G_AMDGPU_BUFFER_STORE:
 
 4471  case AMDGPU::G_AMDGPU_BUFFER_STORE_BYTE:
 
 4472  case AMDGPU::G_AMDGPU_BUFFER_STORE_SHORT:
 
 4473  case AMDGPU::G_AMDGPU_BUFFER_STORE_FORMAT:
 
 4474  case AMDGPU::G_AMDGPU_BUFFER_STORE_FORMAT_D16: {
 
 4493  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_SWAP:
 
 4494  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_ADD:
 
 4495  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_SUB:
 
 4496  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_SMIN:
 
 4497  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_UMIN:
 
 4498  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_SMAX:
 
 4499  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_UMAX:
 
 4500  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_AND:
 
 4501  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_OR:
 
 4502  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_XOR:
 
 4503  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_INC:
 
 4504  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_DEC:
 
 4505  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_FADD:
 
 4506  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_FMIN:
 
 4507  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_FMAX: {
 
 4530  case AMDGPU::G_AMDGPU_BUFFER_ATOMIC_CMPSWAP: {
 
 4556  case AMDGPU::G_AMDGPU_S_BUFFER_LOAD:
 
 4557  case AMDGPU::G_AMDGPU_S_BUFFER_LOAD_UBYTE:
 
 4558  case AMDGPU::G_AMDGPU_S_BUFFER_LOAD_SBYTE:
 
 4559  case AMDGPU::G_AMDGPU_S_BUFFER_LOAD_USHORT:
 
 4560  case AMDGPU::G_AMDGPU_S_BUFFER_LOAD_SSHORT: {
 
 4568    unsigned RSrcBank = OpdsMapping[1]->BreakDown[0].RegBank->getID();
 
 4569    unsigned OffsetBank = OpdsMapping[2]->BreakDown[0].RegBank->getID();
 
 4570    unsigned ResultBank = 
regBankUnion(RSrcBank, OffsetBank);
 
 4572    unsigned Size0 = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 4573    OpdsMapping[0] = AMDGPU::getValueMapping(ResultBank, Size0);
 
 4576  case AMDGPU::G_AMDGPU_S_BUFFER_PREFETCH:
 
 4580  case AMDGPU::G_INTRINSIC:
 
 4581  case AMDGPU::G_INTRINSIC_CONVERGENT: {
 
 4585    case Intrinsic::amdgcn_div_fmas:
 
 4586    case Intrinsic::amdgcn_div_fixup:
 
 4587    case Intrinsic::amdgcn_trig_preop:
 
 4588    case Intrinsic::amdgcn_sin:
 
 4589    case Intrinsic::amdgcn_cos:
 
 4590    case Intrinsic::amdgcn_log_clamp:
 
 4591    case Intrinsic::amdgcn_rcp_legacy:
 
 4592    case Intrinsic::amdgcn_rsq_legacy:
 
 4593    case Intrinsic::amdgcn_rsq_clamp:
 
 4594    case Intrinsic::amdgcn_tanh:
 
 4595    case Intrinsic::amdgcn_fmul_legacy:
 
 4596    case Intrinsic::amdgcn_fma_legacy:
 
 4597    case Intrinsic::amdgcn_frexp_mant:
 
 4598    case Intrinsic::amdgcn_frexp_exp:
 
 4599    case Intrinsic::amdgcn_fract:
 
 4600    case Intrinsic::amdgcn_cvt_pknorm_i16:
 
 4601    case Intrinsic::amdgcn_cvt_pknorm_u16:
 
 4602    case Intrinsic::amdgcn_cvt_pk_i16:
 
 4603    case Intrinsic::amdgcn_cvt_pk_u16:
 
 4604    case Intrinsic::amdgcn_cvt_sr_pk_f16_f32:
 
 4605    case Intrinsic::amdgcn_cvt_sr_pk_bf16_f32:
 
 4606    case Intrinsic::amdgcn_cvt_pk_f16_fp8:
 
 4607    case Intrinsic::amdgcn_cvt_pk_f16_bf8:
 
 4608    case Intrinsic::amdgcn_cvt_pk_fp8_f16:
 
 4609    case Intrinsic::amdgcn_cvt_pk_bf8_f16:
 
 4610    case Intrinsic::amdgcn_cvt_sr_fp8_f16:
 
 4611    case Intrinsic::amdgcn_cvt_sr_bf8_f16:
 
 4612    case Intrinsic::amdgcn_cvt_scale_pk8_f16_fp8:
 
 4613    case Intrinsic::amdgcn_cvt_scale_pk8_bf16_fp8:
 
 4614    case Intrinsic::amdgcn_cvt_scale_pk8_f16_bf8:
 
 4615    case Intrinsic::amdgcn_cvt_scale_pk8_bf16_bf8:
 
 4616    case Intrinsic::amdgcn_cvt_scale_pk8_f16_fp4:
 
 4617    case Intrinsic::amdgcn_cvt_scale_pk8_bf16_fp4:
 
 4618    case Intrinsic::amdgcn_cvt_scale_pk8_f32_fp8:
 
 4619    case Intrinsic::amdgcn_cvt_scale_pk8_f32_bf8:
 
 4620    case Intrinsic::amdgcn_cvt_scale_pk8_f32_fp4:
 
 4621    case Intrinsic::amdgcn_cvt_scale_pk16_f16_fp6:
 
 4622    case Intrinsic::amdgcn_cvt_scale_pk16_bf16_fp6:
 
 4623    case Intrinsic::amdgcn_cvt_scale_pk16_f16_bf6:
 
 4624    case Intrinsic::amdgcn_cvt_scale_pk16_bf16_bf6:
 
 4625    case Intrinsic::amdgcn_cvt_scale_pk16_f32_fp6:
 
 4626    case Intrinsic::amdgcn_cvt_scale_pk16_f32_bf6:
 
 4627    case Intrinsic::amdgcn_cvt_scalef32_pk8_fp8_bf16:
 
 4628    case Intrinsic::amdgcn_cvt_scalef32_pk8_bf8_bf16:
 
 4629    case Intrinsic::amdgcn_cvt_scalef32_pk8_fp8_f16:
 
 4630    case Intrinsic::amdgcn_cvt_scalef32_pk8_bf8_f16:
 
 4631    case Intrinsic::amdgcn_cvt_scalef32_pk8_fp8_f32:
 
 4632    case Intrinsic::amdgcn_cvt_scalef32_pk8_bf8_f32:
 
 4633    case Intrinsic::amdgcn_cvt_scalef32_pk8_fp4_f32:
 
 4634    case Intrinsic::amdgcn_cvt_scalef32_pk8_fp4_f16:
 
 4635    case Intrinsic::amdgcn_cvt_scalef32_pk8_fp4_bf16:
 
 4636    case Intrinsic::amdgcn_cvt_scalef32_pk16_fp6_f32:
 
 4637    case Intrinsic::amdgcn_cvt_scalef32_pk16_bf6_f32:
 
 4638    case Intrinsic::amdgcn_cvt_scalef32_pk16_fp6_f16:
 
 4639    case Intrinsic::amdgcn_cvt_scalef32_pk16_bf6_f16:
 
 4640    case Intrinsic::amdgcn_cvt_scalef32_pk16_fp6_bf16:
 
 4641    case Intrinsic::amdgcn_cvt_scalef32_pk16_bf6_bf16:
 
 4642    case Intrinsic::amdgcn_cvt_scalef32_sr_pk8_fp8_bf16:
 
 4643    case Intrinsic::amdgcn_cvt_scalef32_sr_pk8_bf8_bf16:
 
 4644    case Intrinsic::amdgcn_cvt_scalef32_sr_pk8_fp8_f16:
 
 4645    case Intrinsic::amdgcn_cvt_scalef32_sr_pk8_bf8_f16:
 
 4646    case Intrinsic::amdgcn_cvt_scalef32_sr_pk8_fp8_f32:
 
 4647    case Intrinsic::amdgcn_cvt_scalef32_sr_pk8_bf8_f32:
 
 4648    case Intrinsic::amdgcn_cvt_scalef32_sr_pk8_fp4_f32:
 
 4649    case Intrinsic::amdgcn_cvt_scalef32_sr_pk8_fp4_f16:
 
 4650    case Intrinsic::amdgcn_cvt_scalef32_sr_pk8_fp4_bf16:
 
 4651    case Intrinsic::amdgcn_cvt_scalef32_sr_pk16_fp6_f32:
 
 4652    case Intrinsic::amdgcn_cvt_scalef32_sr_pk16_bf6_f32:
 
 4653    case Intrinsic::amdgcn_cvt_scalef32_sr_pk16_fp6_f16:
 
 4654    case Intrinsic::amdgcn_cvt_scalef32_sr_pk16_bf6_f16:
 
 4655    case Intrinsic::amdgcn_cvt_scalef32_sr_pk16_fp6_bf16:
 
 4656    case Intrinsic::amdgcn_cvt_scalef32_sr_pk16_bf6_bf16:
 
 4657    case Intrinsic::amdgcn_sat_pk4_i4_i8:
 
 4658    case Intrinsic::amdgcn_sat_pk4_u4_u8:
 
 4659    case Intrinsic::amdgcn_fmed3:
 
 4660    case Intrinsic::amdgcn_cubeid:
 
 4661    case Intrinsic::amdgcn_cubema:
 
 4662    case Intrinsic::amdgcn_cubesc:
 
 4663    case Intrinsic::amdgcn_cubetc:
 
 4664    case Intrinsic::amdgcn_sffbh:
 
 4665    case Intrinsic::amdgcn_fmad_ftz:
 
 4666    case Intrinsic::amdgcn_mbcnt_lo:
 
 4667    case Intrinsic::amdgcn_mbcnt_hi:
 
 4668    case Intrinsic::amdgcn_mul_u24:
 
 4669    case Intrinsic::amdgcn_mul_i24:
 
 4670    case Intrinsic::amdgcn_mulhi_u24:
 
 4671    case Intrinsic::amdgcn_mulhi_i24:
 
 4672    case Intrinsic::amdgcn_lerp:
 
 4673    case Intrinsic::amdgcn_sad_u8:
 
 4674    case Intrinsic::amdgcn_msad_u8:
 
 4675    case Intrinsic::amdgcn_sad_hi_u8:
 
 4676    case Intrinsic::amdgcn_sad_u16:
 
 4677    case Intrinsic::amdgcn_qsad_pk_u16_u8:
 
 4678    case Intrinsic::amdgcn_mqsad_pk_u16_u8:
 
 4679    case Intrinsic::amdgcn_mqsad_u32_u8:
 
 4680    case Intrinsic::amdgcn_cvt_pk_u8_f32:
 
 4681    case Intrinsic::amdgcn_alignbyte:
 
 4682    case Intrinsic::amdgcn_perm:
 
 4683    case Intrinsic::amdgcn_prng_b32:
 
 4684    case Intrinsic::amdgcn_fdot2:
 
 4685    case Intrinsic::amdgcn_sdot2:
 
 4686    case Intrinsic::amdgcn_udot2:
 
 4687    case Intrinsic::amdgcn_sdot4:
 
 4688    case Intrinsic::amdgcn_udot4:
 
 4689    case Intrinsic::amdgcn_sdot8:
 
 4690    case Intrinsic::amdgcn_udot8:
 
 4691    case Intrinsic::amdgcn_fdot2_bf16_bf16:
 
 4692    case Intrinsic::amdgcn_fdot2_f16_f16:
 
 4693    case Intrinsic::amdgcn_fdot2_f32_bf16:
 
 4694    case Intrinsic::amdgcn_fdot2c_f32_bf16:
 
 4695    case Intrinsic::amdgcn_sudot4:
 
 4696    case Intrinsic::amdgcn_sudot8:
 
 4697    case Intrinsic::amdgcn_dot4_f32_fp8_bf8:
 
 4698    case Intrinsic::amdgcn_dot4_f32_bf8_fp8:
 
 4699    case Intrinsic::amdgcn_dot4_f32_fp8_fp8:
 
 4700    case Intrinsic::amdgcn_dot4_f32_bf8_bf8:
 
 4701    case Intrinsic::amdgcn_cvt_f32_fp8:
 
 4702    case Intrinsic::amdgcn_cvt_f32_fp8_e5m3:
 
 4703    case Intrinsic::amdgcn_cvt_f32_bf8:
 
 4704    case Intrinsic::amdgcn_cvt_off_f32_i4:
 
 4705    case Intrinsic::amdgcn_cvt_pk_f32_fp8:
 
 4706    case Intrinsic::amdgcn_cvt_pk_f32_bf8:
 
 4707    case Intrinsic::amdgcn_cvt_pk_fp8_f32:
 
 4708    case Intrinsic::amdgcn_cvt_pk_fp8_f32_e5m3:
 
 4709    case Intrinsic::amdgcn_cvt_pk_bf8_f32:
 
 4710    case Intrinsic::amdgcn_cvt_sr_fp8_f32:
 
 4711    case Intrinsic::amdgcn_cvt_sr_fp8_f32_e5m3:
 
 4712    case Intrinsic::amdgcn_cvt_sr_bf8_f32:
 
 4713    case Intrinsic::amdgcn_cvt_sr_bf16_f32:
 
 4714    case Intrinsic::amdgcn_cvt_sr_f16_f32:
 
 4715    case Intrinsic::amdgcn_cvt_f16_fp8:
 
 4716    case Intrinsic::amdgcn_cvt_f16_bf8:
 
 4717    case Intrinsic::amdgcn_cvt_scalef32_pk32_fp6_f16:
 
 4718    case Intrinsic::amdgcn_cvt_scalef32_pk32_bf6_f16:
 
 4719    case Intrinsic::amdgcn_cvt_scalef32_pk32_fp6_bf16:
 
 4720    case Intrinsic::amdgcn_cvt_scalef32_pk32_bf6_bf16:
 
 4721    case Intrinsic::amdgcn_cvt_scalef32_f16_fp8:
 
 4722    case Intrinsic::amdgcn_cvt_scalef32_f16_bf8:
 
 4723    case Intrinsic::amdgcn_cvt_scalef32_f32_fp8:
 
 4724    case Intrinsic::amdgcn_cvt_scalef32_f32_bf8:
 
 4725    case Intrinsic::amdgcn_cvt_scalef32_pk_fp8_f32:
 
 4726    case Intrinsic::amdgcn_cvt_scalef32_pk_bf8_f32:
 
 4727    case Intrinsic::amdgcn_cvt_scalef32_pk_f32_fp8:
 
 4728    case Intrinsic::amdgcn_cvt_scalef32_pk_f32_bf8:
 
 4729    case Intrinsic::amdgcn_cvt_scalef32_pk_fp8_f16:
 
 4730    case Intrinsic::amdgcn_cvt_scalef32_pk_fp8_bf16:
 
 4731    case Intrinsic::amdgcn_cvt_scalef32_pk_bf8_f16:
 
 4732    case Intrinsic::amdgcn_cvt_scalef32_pk_bf8_bf16:
 
 4733    case Intrinsic::amdgcn_cvt_scalef32_pk_f32_fp4:
 
 4734    case Intrinsic::amdgcn_cvt_scalef32_pk_fp4_f32:
 
 4735    case Intrinsic::amdgcn_cvt_scalef32_pk_f16_fp4:
 
 4736    case Intrinsic::amdgcn_cvt_scalef32_pk_bf16_fp4:
 
 4737    case Intrinsic::amdgcn_cvt_scalef32_pk32_f32_fp6:
 
 4738    case Intrinsic::amdgcn_cvt_scalef32_pk32_f32_bf6:
 
 4739    case Intrinsic::amdgcn_cvt_scalef32_pk32_f16_bf6:
 
 4740    case Intrinsic::amdgcn_cvt_scalef32_pk32_bf16_bf6:
 
 4741    case Intrinsic::amdgcn_cvt_scalef32_pk32_f16_fp6:
 
 4742    case Intrinsic::amdgcn_cvt_scalef32_pk32_bf16_fp6:
 
 4743    case Intrinsic::amdgcn_cvt_scalef32_pk_f16_bf8:
 
 4744    case Intrinsic::amdgcn_cvt_scalef32_pk_bf16_bf8:
 
 4745    case Intrinsic::amdgcn_cvt_scalef32_pk_f16_fp8:
 
 4746    case Intrinsic::amdgcn_cvt_scalef32_pk_bf16_fp8:
 
 4747    case Intrinsic::amdgcn_cvt_scalef32_pk_fp4_f16:
 
 4748    case Intrinsic::amdgcn_cvt_scalef32_pk_fp4_bf16:
 
 4749    case Intrinsic::amdgcn_cvt_scalef32_sr_pk_fp4_f16:
 
 4750    case Intrinsic::amdgcn_cvt_scalef32_sr_pk_fp4_bf16:
 
 4751    case Intrinsic::amdgcn_cvt_scalef32_sr_pk_fp4_f32:
 
 4752    case Intrinsic::amdgcn_cvt_scalef32_sr_pk32_bf6_bf16:
 
 4753    case Intrinsic::amdgcn_cvt_scalef32_sr_pk32_bf6_f16:
 
 4754    case Intrinsic::amdgcn_cvt_scalef32_sr_pk32_bf6_f32:
 
 4755    case Intrinsic::amdgcn_cvt_scalef32_sr_pk32_fp6_bf16:
 
 4756    case Intrinsic::amdgcn_cvt_scalef32_sr_pk32_fp6_f16:
 
 4757    case Intrinsic::amdgcn_cvt_scalef32_sr_pk32_fp6_f32:
 
 4758    case Intrinsic::amdgcn_cvt_scalef32_sr_bf8_bf16:
 
 4759    case Intrinsic::amdgcn_cvt_scalef32_sr_bf8_f16:
 
 4760    case Intrinsic::amdgcn_cvt_scalef32_sr_bf8_f32:
 
 4761    case Intrinsic::amdgcn_cvt_scalef32_sr_fp8_bf16:
 
 4762    case Intrinsic::amdgcn_cvt_scalef32_sr_fp8_f16:
 
 4763    case Intrinsic::amdgcn_cvt_scalef32_sr_fp8_f32:
 
 4764    case Intrinsic::amdgcn_ashr_pk_i8_i32:
 
 4765    case Intrinsic::amdgcn_ashr_pk_u8_i32:
 
 4766    case Intrinsic::amdgcn_cvt_scalef32_2xpk16_fp6_f32:
 
 4767    case Intrinsic::amdgcn_cvt_scalef32_2xpk16_bf6_f32:
 
 4768    case Intrinsic::amdgcn_wmma_bf16_16x16x16_bf16:
 
 4769    case Intrinsic::amdgcn_wmma_f16_16x16x16_f16:
 
 4770    case Intrinsic::amdgcn_wmma_bf16_16x16x16_bf16_tied:
 
 4771    case Intrinsic::amdgcn_wmma_f16_16x16x16_f16_tied:
 
 4772    case Intrinsic::amdgcn_wmma_f32_16x16x16_bf16:
 
 4773    case Intrinsic::amdgcn_wmma_f32_16x16x16_f16:
 
 4774    case Intrinsic::amdgcn_wmma_i32_16x16x16_iu4:
 
 4775    case Intrinsic::amdgcn_wmma_i32_16x16x16_iu8:
 
 4776    case Intrinsic::amdgcn_wmma_f32_16x16x16_fp8_fp8:
 
 4777    case Intrinsic::amdgcn_wmma_f32_16x16x16_fp8_bf8:
 
 4778    case Intrinsic::amdgcn_wmma_f32_16x16x16_bf8_fp8:
 
 4779    case Intrinsic::amdgcn_wmma_f32_16x16x16_bf8_bf8:
 
 4780    case Intrinsic::amdgcn_wmma_i32_16x16x32_iu4:
 
 4781    case Intrinsic::amdgcn_swmmac_f32_16x16x32_f16:
 
 4782    case Intrinsic::amdgcn_swmmac_f32_16x16x32_bf16:
 
 4783    case Intrinsic::amdgcn_swmmac_f16_16x16x32_f16:
 
 4784    case Intrinsic::amdgcn_swmmac_bf16_16x16x32_bf16:
 
 4785    case Intrinsic::amdgcn_swmmac_i32_16x16x32_iu8:
 
 4786    case Intrinsic::amdgcn_swmmac_i32_16x16x32_iu4:
 
 4787    case Intrinsic::amdgcn_swmmac_i32_16x16x64_iu4:
 
 4788    case Intrinsic::amdgcn_swmmac_f32_16x16x32_fp8_fp8:
 
 4789    case Intrinsic::amdgcn_swmmac_f32_16x16x32_fp8_bf8:
 
 4790    case Intrinsic::amdgcn_swmmac_f32_16x16x32_bf8_fp8:
 
 4791    case Intrinsic::amdgcn_swmmac_f32_16x16x32_bf8_bf8:
 
 4792    case Intrinsic::amdgcn_wmma_f32_16x16x4_f32:
 
 4793    case Intrinsic::amdgcn_wmma_f32_16x16x32_bf16:
 
 4794    case Intrinsic::amdgcn_wmma_f32_16x16x32_f16:
 
 4795    case Intrinsic::amdgcn_wmma_f16_16x16x32_f16:
 
 4796    case Intrinsic::amdgcn_wmma_bf16_16x16x32_bf16:
 
 4797    case Intrinsic::amdgcn_wmma_bf16f32_16x16x32_bf16:
 
 4798    case Intrinsic::amdgcn_wmma_f32_16x16x64_fp8_fp8:
 
 4799    case Intrinsic::amdgcn_wmma_f32_16x16x64_fp8_bf8:
 
 4800    case Intrinsic::amdgcn_wmma_f32_16x16x64_bf8_fp8:
 
 4801    case Intrinsic::amdgcn_wmma_f32_16x16x64_bf8_bf8:
 
 4802    case Intrinsic::amdgcn_wmma_f16_16x16x64_fp8_fp8:
 
 4803    case Intrinsic::amdgcn_wmma_f16_16x16x64_fp8_bf8:
 
 4804    case Intrinsic::amdgcn_wmma_f16_16x16x64_bf8_fp8:
 
 4805    case Intrinsic::amdgcn_wmma_f16_16x16x64_bf8_bf8:
 
 4806    case Intrinsic::amdgcn_wmma_f16_16x16x128_fp8_fp8:
 
 4807    case Intrinsic::amdgcn_wmma_f16_16x16x128_fp8_bf8:
 
 4808    case Intrinsic::amdgcn_wmma_f16_16x16x128_bf8_fp8:
 
 4809    case Intrinsic::amdgcn_wmma_f16_16x16x128_bf8_bf8:
 
 4810    case Intrinsic::amdgcn_wmma_f32_16x16x128_fp8_fp8:
 
 4811    case Intrinsic::amdgcn_wmma_f32_16x16x128_fp8_bf8:
 
 4812    case Intrinsic::amdgcn_wmma_f32_16x16x128_bf8_fp8:
 
 4813    case Intrinsic::amdgcn_wmma_f32_16x16x128_bf8_bf8:
 
 4814    case Intrinsic::amdgcn_wmma_i32_16x16x64_iu8:
 
 4815    case Intrinsic::amdgcn_wmma_f32_16x16x128_f8f6f4:
 
 4816    case Intrinsic::amdgcn_wmma_scale_f32_16x16x128_f8f6f4:
 
 4817    case Intrinsic::amdgcn_wmma_scale16_f32_16x16x128_f8f6f4:
 
 4818    case Intrinsic::amdgcn_wmma_f32_32x16x128_f4:
 
 4819    case Intrinsic::amdgcn_wmma_scale_f32_32x16x128_f4:
 
 4820    case Intrinsic::amdgcn_wmma_scale16_f32_32x16x128_f4:
 
 4821    case Intrinsic::amdgcn_swmmac_f16_16x16x64_f16:
 
 4822    case Intrinsic::amdgcn_swmmac_bf16_16x16x64_bf16:
 
 4823    case Intrinsic::amdgcn_swmmac_f32_16x16x64_bf16:
 
 4824    case Intrinsic::amdgcn_swmmac_bf16f32_16x16x64_bf16:
 
 4825    case Intrinsic::amdgcn_swmmac_f32_16x16x64_f16:
 
 4826    case Intrinsic::amdgcn_swmmac_f32_16x16x128_fp8_fp8:
 
 4827    case Intrinsic::amdgcn_swmmac_f32_16x16x128_fp8_bf8:
 
 4828    case Intrinsic::amdgcn_swmmac_f32_16x16x128_bf8_fp8:
 
 4829    case Intrinsic::amdgcn_swmmac_f32_16x16x128_bf8_bf8:
 
 4830    case Intrinsic::amdgcn_swmmac_f16_16x16x128_fp8_fp8:
 
 4831    case Intrinsic::amdgcn_swmmac_f16_16x16x128_fp8_bf8:
 
 4832    case Intrinsic::amdgcn_swmmac_f16_16x16x128_bf8_fp8:
 
 4833    case Intrinsic::amdgcn_swmmac_f16_16x16x128_bf8_bf8:
 
 4834    case Intrinsic::amdgcn_swmmac_i32_16x16x128_iu8:
 
 4835    case Intrinsic::amdgcn_perm_pk16_b4_u4:
 
 4836    case Intrinsic::amdgcn_perm_pk16_b6_u4:
 
 4837    case Intrinsic::amdgcn_perm_pk16_b8_u4:
 
 4838    case Intrinsic::amdgcn_add_max_i32:
 
 4839    case Intrinsic::amdgcn_add_max_u32:
 
 4840    case Intrinsic::amdgcn_add_min_i32:
 
 4841    case Intrinsic::amdgcn_add_min_u32:
 
 4842    case Intrinsic::amdgcn_pk_add_max_i16:
 
 4843    case Intrinsic::amdgcn_pk_add_max_u16:
 
 4844    case Intrinsic::amdgcn_pk_add_min_i16:
 
 4845    case Intrinsic::amdgcn_pk_add_min_u16:
 
 4847    case Intrinsic::amdgcn_log:
 
 4848    case Intrinsic::amdgcn_exp2:
 
 4849    case Intrinsic::amdgcn_rcp:
 
 4850    case Intrinsic::amdgcn_rsq:
 
 4851    case Intrinsic::amdgcn_sqrt: {
 
 4852      unsigned Size = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 4858    case Intrinsic::amdgcn_sbfe:
 
 4859    case Intrinsic::amdgcn_ubfe:
 
 4863    case Intrinsic::amdgcn_ds_swizzle:
 
 4864    case Intrinsic::amdgcn_ds_permute:
 
 4865    case Intrinsic::amdgcn_ds_bpermute:
 
 4866    case Intrinsic::amdgcn_update_dpp:
 
 4867    case Intrinsic::amdgcn_mov_dpp8:
 
 4868    case Intrinsic::amdgcn_mov_dpp:
 
 4869    case Intrinsic::amdgcn_strict_wwm:
 
 4870    case Intrinsic::amdgcn_wwm:
 
 4871    case Intrinsic::amdgcn_strict_wqm:
 
 4872    case Intrinsic::amdgcn_wqm:
 
 4873    case Intrinsic::amdgcn_softwqm:
 
 4874    case Intrinsic::amdgcn_set_inactive:
 
 4875    case Intrinsic::amdgcn_set_inactive_chain_arg:
 
 4876    case Intrinsic::amdgcn_permlane64:
 
 4877    case Intrinsic::amdgcn_ds_bpermute_fi_b32:
 
 4879    case Intrinsic::amdgcn_cvt_pkrtz:
 
 4883    case Intrinsic::amdgcn_kernarg_segment_ptr:
 
 4884    case Intrinsic::amdgcn_s_getpc:
 
 4885    case Intrinsic::amdgcn_groupstaticsize:
 
 4886    case Intrinsic::amdgcn_reloc_constant:
 
 4887    case Intrinsic::returnaddress: {
 
 4888      unsigned Size = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 4889      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 
Size);
 
 4892    case Intrinsic::amdgcn_wqm_vote: {
 
 4893      unsigned Size = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 4894      OpdsMapping[0] = OpdsMapping[2]
 
 4895        = AMDGPU::getValueMapping(AMDGPU::VCCRegBankID, 
Size);
 
 4898    case Intrinsic::amdgcn_ps_live: {
 
 4899      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VCCRegBankID, 1);
 
 4902    case Intrinsic::amdgcn_div_scale: {
 
 4903      unsigned Dst0Size = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 4904      unsigned Dst1Size = 
MRI.getType(
MI.getOperand(1).getReg()).getSizeInBits();
 
 4905      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Dst0Size);
 
 4906      OpdsMapping[1] = AMDGPU::getValueMapping(AMDGPU::VCCRegBankID, Dst1Size);
 
 4908      unsigned SrcSize = 
MRI.getType(
MI.getOperand(3).getReg()).getSizeInBits();
 
 4909      OpdsMapping[3] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, SrcSize);
 
 4910      OpdsMapping[4] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, SrcSize);
 
 4913    case Intrinsic::amdgcn_class: {
 
 4914      Register Src0Reg = 
MI.getOperand(2).getReg();
 
 4915      Register Src1Reg = 
MI.getOperand(3).getReg();
 
 4916      unsigned Src0Size = 
MRI.getType(Src0Reg).getSizeInBits();
 
 4917      unsigned Src1Size = 
MRI.getType(Src1Reg).getSizeInBits();
 
 4918      unsigned DstSize = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 4919      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VCCRegBankID, DstSize);
 
 4920      OpdsMapping[2] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Src0Size);
 
 4921      OpdsMapping[3] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Src1Size);
 
 4924    case Intrinsic::amdgcn_icmp:
 
 4925    case Intrinsic::amdgcn_fcmp: {
 
 4926      unsigned DstSize = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 4928      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, DstSize);
 
 4929      unsigned OpSize = 
MRI.getType(
MI.getOperand(2).getReg()).getSizeInBits();
 
 4930      OpdsMapping[2] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, OpSize);
 
 4931      OpdsMapping[3] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, OpSize);
 
 4934    case Intrinsic::amdgcn_readlane: {
 
 4937      unsigned IdxSize = 
MRI.getType(IdxReg).getSizeInBits();
 
 4939      OpdsMapping[3] = AMDGPU::getValueMapping(IdxBank, IdxSize);
 
 4942    case Intrinsic::amdgcn_readfirstlane: {
 
 4943      unsigned DstSize = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 4944      unsigned SrcSize = 
MRI.getType(
MI.getOperand(2).getReg()).getSizeInBits();
 
 4945      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, DstSize);
 
 4946      OpdsMapping[2] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, SrcSize);
 
 4949    case Intrinsic::amdgcn_writelane: {
 
 4950      unsigned DstSize = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 4952      unsigned SrcSize = 
MRI.getType(SrcReg).getSizeInBits();
 
 4955      unsigned IdxSize = 
MRI.getType(IdxReg).getSizeInBits();
 
 4957      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, DstSize);
 
 4961      OpdsMapping[2] = AMDGPU::getValueMapping(SrcBank, SrcSize);
 
 4962      OpdsMapping[3] = AMDGPU::getValueMapping(IdxBank, IdxSize);
 
 4963      OpdsMapping[4] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, SrcSize);
 
 4966    case Intrinsic::amdgcn_if_break: {
 
 4968      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 
Size);
 
 4969      OpdsMapping[2] = AMDGPU::getValueMapping(AMDGPU::VCCRegBankID, 1);
 
 4970      OpdsMapping[3] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 
Size);
 
 4973    case Intrinsic::amdgcn_permlane16:
 
 4974    case Intrinsic::amdgcn_permlanex16: {
 
 4976      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 
Size);
 
 4977      OpdsMapping[2] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 
Size);
 
 4978      OpdsMapping[3] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 
Size);
 
 4983    case Intrinsic::amdgcn_permlane_bcast:
 
 4984    case Intrinsic::amdgcn_permlane_up:
 
 4985    case Intrinsic::amdgcn_permlane_down:
 
 4986    case Intrinsic::amdgcn_permlane_xor: {
 
 4988      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 
Size);
 
 4989      OpdsMapping[2] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 
Size);
 
 4994    case Intrinsic::amdgcn_permlane_idx_gen: {
 
 4996      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 
Size);
 
 4997      OpdsMapping[2] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 
Size);
 
 5001    case Intrinsic::amdgcn_permlane16_var:
 
 5002    case Intrinsic::amdgcn_permlanex16_var: {
 
 5004      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 
Size);
 
 5005      OpdsMapping[2] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 
Size);
 
 5006      OpdsMapping[3] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 
Size);
 
 5007      OpdsMapping[4] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 
Size);
 
 5010    case Intrinsic::amdgcn_mfma_f32_4x4x1f32:
 
 5011    case Intrinsic::amdgcn_mfma_f32_4x4x4f16:
 
 5012    case Intrinsic::amdgcn_mfma_i32_4x4x4i8:
 
 5013    case Intrinsic::amdgcn_mfma_f32_4x4x2bf16:
 
 5014    case Intrinsic::amdgcn_mfma_f32_16x16x1f32:
 
 5015    case Intrinsic::amdgcn_mfma_f32_16x16x4f32:
 
 5016    case Intrinsic::amdgcn_mfma_f32_16x16x4f16:
 
 5017    case Intrinsic::amdgcn_mfma_f32_16x16x16f16:
 
 5018    case Intrinsic::amdgcn_mfma_i32_16x16x4i8:
 
 5019    case Intrinsic::amdgcn_mfma_i32_16x16x16i8:
 
 5020    case Intrinsic::amdgcn_mfma_f32_16x16x2bf16:
 
 5021    case Intrinsic::amdgcn_mfma_f32_16x16x8bf16:
 
 5022    case Intrinsic::amdgcn_mfma_f32_32x32x1f32:
 
 5023    case Intrinsic::amdgcn_mfma_f32_32x32x2f32:
 
 5024    case Intrinsic::amdgcn_mfma_f32_32x32x4f16:
 
 5025    case Intrinsic::amdgcn_mfma_f32_32x32x8f16:
 
 5026    case Intrinsic::amdgcn_mfma_i32_32x32x4i8:
 
 5027    case Intrinsic::amdgcn_mfma_i32_32x32x8i8:
 
 5028    case Intrinsic::amdgcn_mfma_f32_32x32x2bf16:
 
 5029    case Intrinsic::amdgcn_mfma_f32_32x32x4bf16:
 
 5030    case Intrinsic::amdgcn_mfma_f32_32x32x4bf16_1k:
 
 5031    case Intrinsic::amdgcn_mfma_f32_16x16x4bf16_1k:
 
 5032    case Intrinsic::amdgcn_mfma_f32_4x4x4bf16_1k:
 
 5033    case Intrinsic::amdgcn_mfma_f32_32x32x8bf16_1k:
 
 5034    case Intrinsic::amdgcn_mfma_f32_16x16x16bf16_1k:
 
 5035    case Intrinsic::amdgcn_mfma_f64_16x16x4f64:
 
 5036    case Intrinsic::amdgcn_mfma_f64_4x4x4f64:
 
 5037    case Intrinsic::amdgcn_mfma_i32_16x16x32_i8:
 
 5038    case Intrinsic::amdgcn_mfma_i32_32x32x16_i8:
 
 5039    case Intrinsic::amdgcn_mfma_f32_16x16x8_xf32:
 
 5040    case Intrinsic::amdgcn_mfma_f32_32x32x4_xf32:
 
 5041    case Intrinsic::amdgcn_mfma_f32_16x16x32_bf8_bf8:
 
 5042    case Intrinsic::amdgcn_mfma_f32_16x16x32_bf8_fp8:
 
 5043    case Intrinsic::amdgcn_mfma_f32_16x16x32_fp8_bf8:
 
 5044    case Intrinsic::amdgcn_mfma_f32_16x16x32_fp8_fp8:
 
 5045    case Intrinsic::amdgcn_mfma_f32_32x32x16_bf8_bf8:
 
 5046    case Intrinsic::amdgcn_mfma_f32_32x32x16_bf8_fp8:
 
 5047    case Intrinsic::amdgcn_mfma_f32_32x32x16_fp8_bf8:
 
 5048    case Intrinsic::amdgcn_mfma_f32_32x32x16_fp8_fp8:
 
 5049    case Intrinsic::amdgcn_mfma_f32_16x16x32_f16:
 
 5050    case Intrinsic::amdgcn_mfma_f32_32x32x16_f16:
 
 5051    case Intrinsic::amdgcn_mfma_i32_16x16x64_i8:
 
 5052    case Intrinsic::amdgcn_mfma_i32_32x32x32_i8:
 
 5053    case Intrinsic::amdgcn_mfma_f32_16x16x32_bf16: {
 
 5054      unsigned DstSize = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 5055      unsigned MinNumRegsRequired = DstSize / 32;
 
 5065      bool UseAGPRForm = !
Subtarget.hasGFX90AInsts() ||
 
 5066                         Info->selectAGPRFormMFMA(MinNumRegsRequired);
 
 5078    case Intrinsic::amdgcn_mfma_scale_f32_16x16x128_f8f6f4:
 
 5079    case Intrinsic::amdgcn_mfma_scale_f32_32x32x64_f8f6f4: {
 
 5080      unsigned DstSize = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 5081      unsigned MinNumRegsRequired = DstSize / 32;
 
 5085          Info->getMinNumAGPRs() >= MinNumRegsRequired
 
 5100    case Intrinsic::amdgcn_smfmac_f32_16x16x32_f16:
 
 5101    case Intrinsic::amdgcn_smfmac_f32_32x32x16_f16:
 
 5102    case Intrinsic::amdgcn_smfmac_f32_16x16x32_bf16:
 
 5103    case Intrinsic::amdgcn_smfmac_f32_32x32x16_bf16:
 
 5104    case Intrinsic::amdgcn_smfmac_i32_16x16x64_i8:
 
 5105    case Intrinsic::amdgcn_smfmac_i32_32x32x32_i8:
 
 5106    case Intrinsic::amdgcn_smfmac_f32_16x16x64_bf8_bf8:
 
 5107    case Intrinsic::amdgcn_smfmac_f32_16x16x64_bf8_fp8:
 
 5108    case Intrinsic::amdgcn_smfmac_f32_16x16x64_fp8_bf8:
 
 5109    case Intrinsic::amdgcn_smfmac_f32_16x16x64_fp8_fp8:
 
 5110    case Intrinsic::amdgcn_smfmac_f32_32x32x32_bf8_bf8:
 
 5111    case Intrinsic::amdgcn_smfmac_f32_32x32x32_bf8_fp8:
 
 5112    case Intrinsic::amdgcn_smfmac_f32_32x32x32_fp8_bf8:
 
 5113    case Intrinsic::amdgcn_smfmac_f32_32x32x32_fp8_fp8:
 
 5114    case Intrinsic::amdgcn_smfmac_f32_16x16x64_f16:
 
 5115    case Intrinsic::amdgcn_smfmac_f32_32x32x32_f16:
 
 5116    case Intrinsic::amdgcn_smfmac_f32_16x16x64_bf16:
 
 5117    case Intrinsic::amdgcn_smfmac_f32_32x32x32_bf16:
 
 5118    case Intrinsic::amdgcn_smfmac_i32_16x16x128_i8:
 
 5119    case Intrinsic::amdgcn_smfmac_i32_32x32x64_i8:
 
 5120    case Intrinsic::amdgcn_smfmac_f32_16x16x128_bf8_bf8:
 
 5121    case Intrinsic::amdgcn_smfmac_f32_16x16x128_bf8_fp8:
 
 5122    case Intrinsic::amdgcn_smfmac_f32_16x16x128_fp8_bf8:
 
 5123    case Intrinsic::amdgcn_smfmac_f32_16x16x128_fp8_fp8:
 
 5124    case Intrinsic::amdgcn_smfmac_f32_32x32x64_bf8_bf8:
 
 5125    case Intrinsic::amdgcn_smfmac_f32_32x32x64_bf8_fp8:
 
 5126    case Intrinsic::amdgcn_smfmac_f32_32x32x64_fp8_bf8:
 
 5127    case Intrinsic::amdgcn_smfmac_f32_32x32x64_fp8_fp8: {
 
 5129      unsigned DstSize = 
MRI.getType(DstReg).getSizeInBits();
 
 5130      unsigned MinNumRegsRequired = DstSize / 32;
 
 5146    case Intrinsic::amdgcn_interp_p1:
 
 5147    case Intrinsic::amdgcn_interp_p2:
 
 5148    case Intrinsic::amdgcn_interp_mov:
 
 5149    case Intrinsic::amdgcn_interp_p1_f16:
 
 5150    case Intrinsic::amdgcn_interp_p2_f16:
 
 5151    case Intrinsic::amdgcn_lds_param_load: {
 
 5152      const int M0Idx = 
MI.getNumOperands() - 1;
 
 5153      Register M0Reg = 
MI.getOperand(M0Idx).getReg();
 
 5155      unsigned DstSize = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 5157      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, DstSize);
 
 5158      for (
int I = 2; 
I != M0Idx && 
MI.getOperand(
I).
isReg(); ++
I)
 
 5159        OpdsMapping[
I] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 32);
 
 5163      OpdsMapping[M0Idx] = AMDGPU::getValueMapping(M0Bank, 32);
 
 5166    case Intrinsic::amdgcn_interp_inreg_p10:
 
 5167    case Intrinsic::amdgcn_interp_inreg_p2:
 
 5168    case Intrinsic::amdgcn_interp_inreg_p10_f16:
 
 5169    case Intrinsic::amdgcn_interp_inreg_p2_f16:
 
 5170    case Intrinsic::amdgcn_interp_p10_rtz_f16:
 
 5171    case Intrinsic::amdgcn_interp_p2_rtz_f16: {
 
 5172      unsigned DstSize = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 5173      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, DstSize);
 
 5174      OpdsMapping[2] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 32);
 
 5175      OpdsMapping[3] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 32);
 
 5176      OpdsMapping[4] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 32);
 
 5179    case Intrinsic::amdgcn_permlane16_swap:
 
 5180    case Intrinsic::amdgcn_permlane32_swap: {
 
 5181      unsigned DstSize = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 5182      OpdsMapping[0] = OpdsMapping[1] = OpdsMapping[3] = OpdsMapping[4] =
 
 5183          AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, DstSize);
 
 5186    case Intrinsic::amdgcn_ballot: {
 
 5187      unsigned DstSize = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 5188      unsigned SrcSize = 
MRI.getType(
MI.getOperand(2).getReg()).getSizeInBits();
 
 5189      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, DstSize);
 
 5190      OpdsMapping[2] = AMDGPU::getValueMapping(AMDGPU::VCCRegBankID, SrcSize);
 
 5193    case Intrinsic::amdgcn_inverse_ballot: {
 
 5195      Register MaskReg = 
MI.getOperand(2).getReg();
 
 5196      unsigned MaskSize = 
MRI.getType(MaskReg).getSizeInBits();
 
 5197      unsigned MaskBank = 
getRegBankID(MaskReg, 
MRI, AMDGPU::SGPRRegBankID);
 
 5198      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VCCRegBankID, 1);
 
 5199      OpdsMapping[2] = AMDGPU::getValueMapping(MaskBank, MaskSize);
 
 5202    case Intrinsic::amdgcn_bitop3: {
 
 5204      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 
Size);
 
 5205      OpdsMapping[2] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 
Size);
 
 5206      OpdsMapping[3] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 
Size);
 
 5207      OpdsMapping[4] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 
Size);
 
 5210    case Intrinsic::amdgcn_s_quadmask:
 
 5211    case Intrinsic::amdgcn_s_wqm: {
 
 5212      Register MaskReg = 
MI.getOperand(2).getReg();
 
 5213      unsigned MaskSize = 
MRI.getType(MaskReg).getSizeInBits();
 
 5214      unsigned MaskBank = 
getRegBankID(MaskReg, 
MRI, AMDGPU::SGPRRegBankID);
 
 5215      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, MaskSize);
 
 5216      OpdsMapping[2] = AMDGPU::getValueMapping(MaskBank, MaskSize);
 
 5219    case Intrinsic::amdgcn_wave_reduce_add:
 
 5220    case Intrinsic::amdgcn_wave_reduce_sub:
 
 5221    case Intrinsic::amdgcn_wave_reduce_min:
 
 5222    case Intrinsic::amdgcn_wave_reduce_umin:
 
 5223    case Intrinsic::amdgcn_wave_reduce_max:
 
 5224    case Intrinsic::amdgcn_wave_reduce_umax:
 
 5225    case Intrinsic::amdgcn_wave_reduce_and:
 
 5226    case Intrinsic::amdgcn_wave_reduce_or:
 
 5227    case Intrinsic::amdgcn_wave_reduce_xor: {
 
 5228      unsigned DstSize = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 5229      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, DstSize);
 
 5230      unsigned OpSize = 
MRI.getType(
MI.getOperand(2).getReg()).getSizeInBits();
 
 5233      OpdsMapping[2] = AMDGPU::getValueMapping(regBankID, OpSize);
 
 5236    case Intrinsic::amdgcn_s_bitreplicate:
 
 5237      Register MaskReg = 
MI.getOperand(2).getReg();
 
 5238      unsigned MaskBank = 
getRegBankID(MaskReg, 
MRI, AMDGPU::SGPRRegBankID);
 
 5239      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 64);
 
 5240      OpdsMapping[2] = AMDGPU::getValueMapping(MaskBank, 32);
 
 5244  case AMDGPU::G_AMDGPU_INTRIN_IMAGE_LOAD:
 
 5245  case AMDGPU::G_AMDGPU_INTRIN_IMAGE_LOAD_D16:
 
 5246  case AMDGPU::G_AMDGPU_INTRIN_IMAGE_LOAD_NORET:
 
 5247  case AMDGPU::G_AMDGPU_INTRIN_IMAGE_STORE:
 
 5248  case AMDGPU::G_AMDGPU_INTRIN_IMAGE_STORE_D16: {
 
 5251    assert(RSrcIntrin && 
"missing RsrcIntrinsic for image intrinsic");
 
 5258  case AMDGPU::G_AMDGPU_BVH_INTERSECT_RAY:
 
 5259  case AMDGPU::G_AMDGPU_BVH8_INTERSECT_RAY:
 
 5260  case AMDGPU::G_AMDGPU_BVH_DUAL_INTERSECT_RAY: {
 
 5262        MI.getOpcode() == AMDGPU::G_AMDGPU_BVH_DUAL_INTERSECT_RAY ||
 
 5263        MI.getOpcode() == AMDGPU::G_AMDGPU_BVH8_INTERSECT_RAY;
 
 5264    unsigned NumMods = IsDualOrBVH8 ? 0 : 1; 
 
 5265    unsigned LastRegOpIdx = 
MI.getNumExplicitOperands() - 1 - NumMods;
 
 5266    unsigned DstSize = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 5267    OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, DstSize);
 
 5269      OpdsMapping[1] = AMDGPU::getValueMapping(
 
 5270          AMDGPU::VGPRRegBankID,
 
 5271          MRI.getType(
MI.getOperand(1).getReg()).getSizeInBits());
 
 5272      OpdsMapping[2] = AMDGPU::getValueMapping(
 
 5273          AMDGPU::VGPRRegBankID,
 
 5274          MRI.getType(
MI.getOperand(2).getReg()).getSizeInBits());
 
 5276    OpdsMapping[LastRegOpIdx] =
 
 5278    if (LastRegOpIdx == 3) {
 
 5280      unsigned Size = 
MRI.getType(
MI.getOperand(2).getReg()).getSizeInBits();
 
 5283      OpdsMapping[2] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 
Size);
 
 5286      unsigned FirstSrcOpIdx = IsDualOrBVH8 ? 4 : 2;
 
 5287      for (
unsigned I = FirstSrcOpIdx; 
I < LastRegOpIdx; ++
I) {
 
 5288        unsigned Size = 
MRI.getType(
MI.getOperand(
I).getReg()).getSizeInBits();
 
 5289        OpdsMapping[
I] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 
Size);
 
 5294  case AMDGPU::G_INTRINSIC_W_SIDE_EFFECTS:
 
 5295  case AMDGPU::G_INTRINSIC_CONVERGENT_W_SIDE_EFFECTS: {
 
 5298    case Intrinsic::amdgcn_s_getreg:
 
 5299    case Intrinsic::amdgcn_s_memtime:
 
 5300    case Intrinsic::amdgcn_s_memrealtime:
 
 5301    case Intrinsic::amdgcn_s_get_waveid_in_workgroup:
 
 5302    case Intrinsic::amdgcn_s_sendmsg_rtn: {
 
 5303      unsigned Size = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 5304      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 
Size);
 
 5307    case Intrinsic::amdgcn_global_atomic_csub:
 
 5308    case Intrinsic::amdgcn_global_atomic_fmin_num:
 
 5309    case Intrinsic::amdgcn_global_atomic_fmax_num:
 
 5310    case Intrinsic::amdgcn_flat_atomic_fmin_num:
 
 5311    case Intrinsic::amdgcn_flat_atomic_fmax_num:
 
 5312    case Intrinsic::amdgcn_atomic_cond_sub_u32:
 
 5313    case Intrinsic::amdgcn_global_atomic_ordered_add_b64:
 
 5314    case Intrinsic::amdgcn_global_load_tr_b64:
 
 5315    case Intrinsic::amdgcn_global_load_tr_b128:
 
 5316    case Intrinsic::amdgcn_global_load_tr4_b64:
 
 5317    case Intrinsic::amdgcn_global_load_tr6_b96:
 
 5318    case Intrinsic::amdgcn_ds_load_tr8_b64:
 
 5319    case Intrinsic::amdgcn_ds_load_tr16_b128:
 
 5320    case Intrinsic::amdgcn_ds_load_tr4_b64:
 
 5321    case Intrinsic::amdgcn_ds_load_tr6_b96:
 
 5322    case Intrinsic::amdgcn_flat_load_monitor_b32:
 
 5323    case Intrinsic::amdgcn_flat_load_monitor_b64:
 
 5324    case Intrinsic::amdgcn_flat_load_monitor_b128:
 
 5325    case Intrinsic::amdgcn_global_load_monitor_b32:
 
 5326    case Intrinsic::amdgcn_global_load_monitor_b64:
 
 5327    case Intrinsic::amdgcn_global_load_monitor_b128:
 
 5328    case Intrinsic::amdgcn_ds_read_tr4_b64:
 
 5329    case Intrinsic::amdgcn_ds_read_tr6_b96:
 
 5330    case Intrinsic::amdgcn_ds_read_tr8_b64:
 
 5331    case Intrinsic::amdgcn_ds_read_tr16_b64:
 
 5332    case Intrinsic::amdgcn_ds_atomic_async_barrier_arrive_b64:
 
 5333    case Intrinsic::amdgcn_ds_atomic_barrier_arrive_rtn_b64:
 
 5335    case Intrinsic::amdgcn_ds_ordered_add:
 
 5336    case Intrinsic::amdgcn_ds_ordered_swap: {
 
 5337      unsigned DstSize = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 5338      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, DstSize);
 
 5340                                 AMDGPU::SGPRRegBankID);
 
 5341      OpdsMapping[2] = AMDGPU::getValueMapping(M0Bank, 32);
 
 5342      OpdsMapping[3] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 32);
 
 5345    case Intrinsic::amdgcn_ds_append:
 
 5346    case Intrinsic::amdgcn_ds_consume: {
 
 5347      unsigned DstSize = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 5348      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, DstSize);
 
 5352    case Intrinsic::amdgcn_exp_compr:
 
 5353      OpdsMapping[3] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 32);
 
 5354      OpdsMapping[4] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 32);
 
 5356    case Intrinsic::amdgcn_exp:
 
 5358      OpdsMapping[3] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 32);
 
 5359      OpdsMapping[4] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 32);
 
 5360      OpdsMapping[5] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 32);
 
 5361      OpdsMapping[6] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 32);
 
 5363    case Intrinsic::amdgcn_exp_row:
 
 5364      OpdsMapping[3] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 32);
 
 5365      OpdsMapping[4] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 32);
 
 5366      OpdsMapping[5] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 32);
 
 5367      OpdsMapping[6] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 32);
 
 5370    case Intrinsic::amdgcn_s_sendmsg:
 
 5371    case Intrinsic::amdgcn_s_sendmsghalt: {
 
 5374                                   AMDGPU::SGPRRegBankID);
 
 5375      OpdsMapping[2] = AMDGPU::getValueMapping(Bank, 32);
 
 5378    case Intrinsic::amdgcn_s_setreg: {
 
 5381                                   AMDGPU::SGPRRegBankID);
 
 5382      OpdsMapping[2] = AMDGPU::getValueMapping(Bank, 32);
 
 5385    case Intrinsic::amdgcn_s_ttracedata: {
 
 5389      OpdsMapping[1] = AMDGPU::getValueMapping(Bank, 32);
 
 5392    case Intrinsic::amdgcn_end_cf: {
 
 5394      OpdsMapping[1] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 
Size);
 
 5397    case Intrinsic::amdgcn_else: {
 
 5399      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VCCRegBankID, 1);
 
 5400      OpdsMapping[1] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, WaveSize);
 
 5401      OpdsMapping[3] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, WaveSize);
 
 5404    case Intrinsic::amdgcn_init_whole_wave:
 
 5405    case Intrinsic::amdgcn_live_mask: {
 
 5406      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VCCRegBankID, 1);
 
 5409    case Intrinsic::amdgcn_wqm_demote:
 
 5410    case Intrinsic::amdgcn_kill: {
 
 5411      OpdsMapping[1] = AMDGPU::getValueMapping(AMDGPU::VCCRegBankID, 1);
 
 5414    case Intrinsic::amdgcn_raw_buffer_load:
 
 5415    case Intrinsic::amdgcn_raw_ptr_buffer_load:
 
 5416    case Intrinsic::amdgcn_raw_atomic_buffer_load:
 
 5417    case Intrinsic::amdgcn_raw_ptr_atomic_buffer_load:
 
 5418    case Intrinsic::amdgcn_raw_tbuffer_load:
 
 5419    case Intrinsic::amdgcn_raw_ptr_tbuffer_load: {
 
 5428    case Intrinsic::amdgcn_raw_buffer_load_lds:
 
 5429    case Intrinsic::amdgcn_raw_ptr_buffer_load_lds: {
 
 5436    case Intrinsic::amdgcn_raw_buffer_store:
 
 5437    case Intrinsic::amdgcn_raw_ptr_buffer_store:
 
 5438    case Intrinsic::amdgcn_raw_buffer_store_format:
 
 5439    case Intrinsic::amdgcn_raw_ptr_buffer_store_format:
 
 5440    case Intrinsic::amdgcn_raw_tbuffer_store:
 
 5441    case Intrinsic::amdgcn_raw_ptr_tbuffer_store: {
 
 5448    case Intrinsic::amdgcn_struct_buffer_load:
 
 5449    case Intrinsic::amdgcn_struct_ptr_buffer_load:
 
 5450    case Intrinsic::amdgcn_struct_tbuffer_load:
 
 5451    case Intrinsic::amdgcn_struct_ptr_tbuffer_load:
 
 5452    case Intrinsic::amdgcn_struct_atomic_buffer_load:
 
 5453    case Intrinsic::amdgcn_struct_ptr_atomic_buffer_load: {
 
 5461    case Intrinsic::amdgcn_struct_buffer_load_lds:
 
 5462    case Intrinsic::amdgcn_struct_ptr_buffer_load_lds: {
 
 5470    case Intrinsic::amdgcn_struct_buffer_store:
 
 5471    case Intrinsic::amdgcn_struct_ptr_buffer_store:
 
 5472    case Intrinsic::amdgcn_struct_tbuffer_store:
 
 5473    case Intrinsic::amdgcn_struct_ptr_tbuffer_store: {
 
 5481    case Intrinsic::amdgcn_init_exec_from_input: {
 
 5483      OpdsMapping[1] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 
Size);
 
 5486    case Intrinsic::amdgcn_ds_gws_init:
 
 5487    case Intrinsic::amdgcn_ds_gws_barrier:
 
 5488    case Intrinsic::amdgcn_ds_gws_sema_br: {
 
 5489      OpdsMapping[1] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 32);
 
 5493                                   AMDGPU::SGPRRegBankID);
 
 5494      OpdsMapping[2] = AMDGPU::getValueMapping(Bank, 32);
 
 5497    case Intrinsic::amdgcn_ds_gws_sema_v:
 
 5498    case Intrinsic::amdgcn_ds_gws_sema_p:
 
 5499    case Intrinsic::amdgcn_ds_gws_sema_release_all: {
 
 5502                                   AMDGPU::SGPRRegBankID);
 
 5503      OpdsMapping[1] = AMDGPU::getValueMapping(Bank, 32);
 
 5506    case Intrinsic::amdgcn_cluster_load_b32:
 
 5507    case Intrinsic::amdgcn_cluster_load_b64:
 
 5508    case Intrinsic::amdgcn_cluster_load_b128: {
 
 5513      OpdsMapping[4] = AMDGPU::getValueMapping(M0Bank, 32);
 
 5516    case Intrinsic::amdgcn_cluster_load_async_to_lds_b8:
 
 5517    case Intrinsic::amdgcn_cluster_load_async_to_lds_b32:
 
 5518    case Intrinsic::amdgcn_cluster_load_async_to_lds_b64:
 
 5519    case Intrinsic::amdgcn_cluster_load_async_to_lds_b128: {
 
 5524      OpdsMapping[5] = AMDGPU::getValueMapping(M0Bank, 32);
 
 5527    case Intrinsic::amdgcn_global_store_async_from_lds_b8:
 
 5528    case Intrinsic::amdgcn_global_store_async_from_lds_b32:
 
 5529    case Intrinsic::amdgcn_global_store_async_from_lds_b64:
 
 5530    case Intrinsic::amdgcn_global_store_async_from_lds_b128:
 
 5531    case Intrinsic::amdgcn_global_load_async_to_lds_b8:
 
 5532    case Intrinsic::amdgcn_global_load_async_to_lds_b32:
 
 5533    case Intrinsic::amdgcn_global_load_async_to_lds_b64:
 
 5534    case Intrinsic::amdgcn_global_load_async_to_lds_b128:
 
 5535    case Intrinsic::amdgcn_load_to_lds:
 
 5536    case Intrinsic::amdgcn_global_load_lds: {
 
 5541    case Intrinsic::amdgcn_lds_direct_load: {
 
 5542      const int M0Idx = 
MI.getNumOperands() - 1;
 
 5543      Register M0Reg = 
MI.getOperand(M0Idx).getReg();
 
 5545      unsigned DstSize = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 5547      OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, DstSize);
 
 5548      for (
int I = 2; 
I != M0Idx && 
MI.getOperand(
I).
isReg(); ++
I)
 
 5549        OpdsMapping[
I] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, 32);
 
 5553      OpdsMapping[M0Idx] = AMDGPU::getValueMapping(M0Bank, 32);
 
 5556    case Intrinsic::amdgcn_ds_add_gs_reg_rtn:
 
 5557    case Intrinsic::amdgcn_ds_sub_gs_reg_rtn:
 
 5561    case Intrinsic::amdgcn_ds_bvh_stack_rtn:
 
 5562    case Intrinsic::amdgcn_ds_bvh_stack_push4_pop1_rtn:
 
 5563    case Intrinsic::amdgcn_ds_bvh_stack_push8_pop1_rtn:
 
 5564    case Intrinsic::amdgcn_ds_bvh_stack_push8_pop2_rtn: {
 
 5577    case Intrinsic::amdgcn_s_sleep_var:
 
 5580    case Intrinsic::amdgcn_s_barrier_join:
 
 5583    case Intrinsic::amdgcn_s_barrier_init:
 
 5584    case Intrinsic::amdgcn_s_barrier_signal_var:
 
 5588    case Intrinsic::amdgcn_s_barrier_signal_isfirst: {
 
 5589      const unsigned ResultSize = 1;
 
 5591          AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, ResultSize);
 
 5594    case Intrinsic::amdgcn_s_get_barrier_state:
 
 5595    case Intrinsic::amdgcn_s_get_named_barrier_state: {
 
 5600    case Intrinsic::amdgcn_pops_exiting_wave_id:
 
 5602    case Intrinsic::amdgcn_tensor_load_to_lds_d2:
 
 5603    case Intrinsic::amdgcn_tensor_store_from_lds_d2:
 
 5604    case Intrinsic::amdgcn_tensor_load_to_lds:
 
 5605    case Intrinsic::amdgcn_tensor_store_from_lds: {
 
 5608      for (
unsigned I = 1; 
I < 
MI.getNumOperands(); ++
I) {
 
 5609        if (
MI.getOperand(
I).isReg()) {
 
 5613          OpdsMapping[
I] = AMDGPU::getValueMapping(OpBank, 
Size);
 
 5618    case Intrinsic::amdgcn_s_prefetch_data: {
 
 5623    case Intrinsic::amdgcn_flat_prefetch:
 
 5624    case Intrinsic::amdgcn_global_prefetch:
 
 5631  case AMDGPU::G_SELECT: {
 
 5632    unsigned Size = 
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits();
 
 5634                                    AMDGPU::SGPRRegBankID);
 
 5636                                    AMDGPU::SGPRRegBankID);
 
 5637    bool SGPRSrcs = Op2Bank == AMDGPU::SGPRRegBankID &&
 
 5638                    Op3Bank == AMDGPU::SGPRRegBankID;
 
 5640    unsigned CondBankDefault = SGPRSrcs ?
 
 5641      AMDGPU::SGPRRegBankID : AMDGPU::VCCRegBankID;
 
 5644    if (CondBank == AMDGPU::SGPRRegBankID)
 
 5645      CondBank = SGPRSrcs ? AMDGPU::SGPRRegBankID : AMDGPU::VCCRegBankID;
 
 5646    else if (CondBank == AMDGPU::VGPRRegBankID)
 
 5647      CondBank = AMDGPU::VCCRegBankID;
 
 5649    unsigned Bank = SGPRSrcs && CondBank == AMDGPU::SGPRRegBankID ?
 
 5650      AMDGPU::SGPRRegBankID : AMDGPU::VGPRRegBankID;
 
 5652    assert(CondBank == AMDGPU::VCCRegBankID || CondBank == AMDGPU::SGPRRegBankID);
 
 5656      OpdsMapping[0] = AMDGPU::getValueMappingSGPR64Only(Bank, 
Size);
 
 5657      OpdsMapping[1] = AMDGPU::getValueMapping(CondBank, 1);
 
 5658      OpdsMapping[2] = AMDGPU::getValueMappingSGPR64Only(Bank, 
Size);
 
 5659      OpdsMapping[3] = AMDGPU::getValueMappingSGPR64Only(Bank, 
Size);
 
 5661      OpdsMapping[0] = AMDGPU::getValueMapping(Bank, 
Size);
 
 5662      OpdsMapping[1] = AMDGPU::getValueMapping(CondBank, 1);
 
 5663      OpdsMapping[2] = AMDGPU::getValueMapping(Bank, 
Size);
 
 5664      OpdsMapping[3] = AMDGPU::getValueMapping(Bank, 
Size);
 
 5670  case AMDGPU::G_SI_CALL: {
 
 5671    OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 64);
 
 5677    for (
unsigned I = 4; 
I < 
MI.getNumOperands(); ++
I) {
 
 5678      if (
MI.getOperand(
I).isReg()) {
 
 5682        OpdsMapping[
I] = AMDGPU::getValueMapping(OpBank, 
Size);
 
 5687  case AMDGPU::G_LOAD:
 
 5688  case AMDGPU::G_ZEXTLOAD:
 
 5689  case AMDGPU::G_SEXTLOAD:
 
 5692  case AMDGPU::G_ATOMICRMW_XCHG:
 
 5693  case AMDGPU::G_ATOMICRMW_ADD:
 
 5694  case AMDGPU::G_ATOMICRMW_SUB:
 
 5695  case AMDGPU::G_ATOMICRMW_AND:
 
 5696  case AMDGPU::G_ATOMICRMW_OR:
 
 5697  case AMDGPU::G_ATOMICRMW_XOR:
 
 5698  case AMDGPU::G_ATOMICRMW_MAX:
 
 5699  case AMDGPU::G_ATOMICRMW_MIN:
 
 5700  case AMDGPU::G_ATOMICRMW_UMAX:
 
 5701  case AMDGPU::G_ATOMICRMW_UMIN:
 
 5702  case AMDGPU::G_ATOMICRMW_FADD:
 
 5703  case AMDGPU::G_ATOMICRMW_FMIN:
 
 5704  case AMDGPU::G_ATOMICRMW_FMAX:
 
 5705  case AMDGPU::G_ATOMICRMW_UINC_WRAP:
 
 5706  case AMDGPU::G_ATOMICRMW_UDEC_WRAP:
 
 5707  case AMDGPU::G_AMDGPU_ATOMIC_CMPXCHG: {
 
 5713  case AMDGPU::G_ATOMIC_CMPXCHG: {
 
 5720  case AMDGPU::G_BRCOND: {
 
 5722                                 AMDGPU::SGPRRegBankID);
 
 5723    assert(
MRI.getType(
MI.getOperand(0).getReg()).getSizeInBits() == 1);
 
 5724    if (Bank != AMDGPU::SGPRRegBankID)
 
 5725      Bank = AMDGPU::VCCRegBankID;
 
 5727    OpdsMapping[0] = AMDGPU::getValueMapping(Bank, 1);
 
 5730  case AMDGPU::G_INTRINSIC_FPTRUNC_ROUND:
 
 5732  case AMDGPU::G_PREFETCH:
 
 5735  case AMDGPU::G_AMDGPU_WHOLE_WAVE_FUNC_SETUP:
 
 5736  case AMDGPU::G_AMDGPU_WHOLE_WAVE_FUNC_RETURN:
 
 5737    OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VCCRegBankID, 1);
 
 5743                               MI.getNumOperands());