@@ -5902,10 +5902,11 @@ static MachineBasicBlock *lowerWaveReduce(MachineInstr &MI,
59025902MachineBasicBlock *
59035903SITargetLowering::EmitInstrWithCustomInserter(MachineInstr &MI,
59045904 MachineBasicBlock *BB) const {
5905-
5906- const SIInstrInfo *TII = getSubtarget()->getInstrInfo();
59075905 MachineFunction *MF = BB->getParent();
59085906 SIMachineFunctionInfo *MFI = MF->getInfo<SIMachineFunctionInfo>();
5907+ const GCNSubtarget &ST = MF->getSubtarget<GCNSubtarget>();
5908+ const SIInstrInfo *TII = getSubtarget()->getInstrInfo();
5909+ const SIRegisterInfo *TRI = Subtarget->getRegisterInfo();
59095910
59105911 switch (MI.getOpcode()) {
59115912 case AMDGPU::WAVE_REDUCE_UMIN_PSEUDO_U32:
@@ -5975,8 +5976,6 @@ SITargetLowering::EmitInstrWithCustomInserter(MachineInstr &MI,
59755976 case AMDGPU::V_ADD_U64_PSEUDO:
59765977 case AMDGPU::V_SUB_U64_PSEUDO: {
59775978 MachineRegisterInfo &MRI = BB->getParent()->getRegInfo();
5978- const GCNSubtarget &ST = MF->getSubtarget<GCNSubtarget>();
5979- const SIRegisterInfo *TRI = ST.getRegisterInfo();
59805979 const DebugLoc &DL = MI.getDebugLoc();
59815980
59825981 bool IsAdd = (MI.getOpcode() == AMDGPU::V_ADD_U64_PSEUDO);
@@ -6072,8 +6071,6 @@ SITargetLowering::EmitInstrWithCustomInserter(MachineInstr &MI,
60726071 // only from uniform add/subcarry node. All the VGPR operands
60736072 // therefore assumed to be splat vectors.
60746073 MachineRegisterInfo &MRI = BB->getParent()->getRegInfo();
6075- const GCNSubtarget &ST = MF->getSubtarget<GCNSubtarget>();
6076- const SIRegisterInfo *TRI = ST.getRegisterInfo();
60776074 MachineBasicBlock::iterator MII = MI;
60786075 const DebugLoc &DL = MI.getDebugLoc();
60796076 MachineOperand &Dest = MI.getOperand(0);
@@ -6103,16 +6100,13 @@ SITargetLowering::EmitInstrWithCustomInserter(MachineInstr &MI,
61036100 Src2.setReg(RegOp2);
61046101 }
61056102
6106- const TargetRegisterClass *Src2RC = MRI.getRegClass(Src2.getReg());
6107- unsigned WaveSize = TRI->getRegSizeInBits(*Src2RC);
6108- assert(WaveSize == 64 || WaveSize == 32);
6109-
6110- if (WaveSize == 64) {
6103+ if (ST.isWave64()) {
61116104 if (ST.hasScalarCompareEq64()) {
61126105 BuildMI(*BB, MII, DL, TII->get(AMDGPU::S_CMP_LG_U64))
61136106 .addReg(Src2.getReg())
61146107 .addImm(0);
61156108 } else {
6109+ const TargetRegisterClass *Src2RC = MRI.getRegClass(Src2.getReg());
61166110 const TargetRegisterClass *SubRC =
61176111 TRI->getSubRegisterClass(Src2RC, AMDGPU::sub0);
61186112 MachineOperand Src2Sub0 = TII->buildExtractSubRegOrImm(
@@ -6142,7 +6136,7 @@ SITargetLowering::EmitInstrWithCustomInserter(MachineInstr &MI,
61426136 // clang-format on
61436137
61446138 unsigned SelOpc =
6145- (WaveSize == 64 ) ? AMDGPU::S_CSELECT_B64 : AMDGPU::S_CSELECT_B32;
6139+ (ST.isWave64() ) ? AMDGPU::S_CSELECT_B64 : AMDGPU::S_CSELECT_B32;
61466140
61476141 BuildMI(*BB, MII, DL, TII->get(SelOpc), CarryDest.getReg())
61486142 .addImm(-1)
@@ -6245,8 +6239,6 @@ SITargetLowering::EmitInstrWithCustomInserter(MachineInstr &MI,
62456239 return splitKillBlock(MI, BB);
62466240 case AMDGPU::V_CNDMASK_B64_PSEUDO: {
62476241 MachineRegisterInfo &MRI = BB->getParent()->getRegInfo();
6248- const GCNSubtarget &ST = MF->getSubtarget<GCNSubtarget>();
6249- const SIRegisterInfo *TRI = ST.getRegisterInfo();
62506242
62516243 Register Dst = MI.getOperand(0).getReg();
62526244 const MachineOperand &Src0 = MI.getOperand(1);
@@ -6304,7 +6296,6 @@ SITargetLowering::EmitInstrWithCustomInserter(MachineInstr &MI,
63046296 return BB;
63056297 }
63066298 case AMDGPU::SI_BR_UNDEF: {
6307- const SIInstrInfo *TII = getSubtarget()->getInstrInfo();
63086299 const DebugLoc &DL = MI.getDebugLoc();
63096300 MachineInstr *Br = BuildMI(*BB, MI, DL, TII->get(AMDGPU::S_CBRANCH_SCC1))
63106301 .add(MI.getOperand(0));
@@ -6321,7 +6312,6 @@ SITargetLowering::EmitInstrWithCustomInserter(MachineInstr &MI,
63216312 return BB;
63226313 }
63236314 case AMDGPU::SI_CALL_ISEL: {
6324- const SIInstrInfo *TII = getSubtarget()->getInstrInfo();
63256315 const DebugLoc &DL = MI.getDebugLoc();
63266316
63276317 unsigned ReturnAddrReg = TII->getRegisterInfo().getReturnAddressReg(*MF);
@@ -6351,8 +6341,6 @@ SITargetLowering::EmitInstrWithCustomInserter(MachineInstr &MI,
63516341
63526342 auto I = BuildMI(*BB, MI, DL, TII->get(Opc), MI.getOperand(0).getReg());
63536343 if (TII->isVOP3(*I)) {
6354- const GCNSubtarget &ST = MF->getSubtarget<GCNSubtarget>();
6355- const SIRegisterInfo *TRI = ST.getRegisterInfo();
63566344 I.addReg(TRI->getVCC(), RegState::Define);
63576345 }
63586346 I.add(MI.getOperand(1)).add(MI.getOperand(2));
0 commit comments