================ @@ -107,3 +107,183 @@ void IntrinsicLaneMaskAnalyzer::findLCSSAPhi(Register Reg) { S32S64LaneMask.insert(LCSSAPhi.getOperand(0).getReg()); } } + +MachineInstrBuilder AMDGPU::buildReadAnyLaneB32(MachineIRBuilder &B, + const DstOp &SgprDst, + const SrcOp &VgprSrc, + const RegisterBankInfo &RBI) { + auto RFL = B.buildInstr(AMDGPU::G_READANYLANE, {SgprDst}, {VgprSrc}); + Register Dst = RFL->getOperand(0).getReg(); + Register Src = RFL->getOperand(1).getReg(); + MachineRegisterInfo &MRI = *B.getMRI(); + if (!MRI.getRegBankOrNull(Dst)) + MRI.setRegBank(Dst, RBI.getRegBank(SGPRRegBankID)); + if (!MRI.getRegBankOrNull(Src)) + MRI.setRegBank(Src, RBI.getRegBank(VGPRRegBankID)); ---------------- petar-avramovic wrote:
How should it work in regards to possibility to insert illegal sgpr to vgpr copy and can it fail like register class version? Or are we looking for something much simpler: no reg bank -set reg bank same reg bank - do nothing different reg bank - insert copy https://github.com/llvm/llvm-project/pull/112864 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits