[llvm] [AMDGPU] Add MachineVerifer check to detect illegal copies from vector register to SGPR (PR #105494)
Aditi Medhane via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 27 22:03:28 PDT 2024
================
@@ -4613,15 +4613,45 @@ static bool isSubRegOf(const SIRegisterInfo &TRI,
SubReg.getReg() == SuperVec.getReg();
}
+// Verify the illegal copy from VGPR to SGPR for generic opcode COPY
+bool SIInstrInfo::verifyCopy(const MachineInstr &MI,
+ const MachineRegisterInfo &MRI,
+ StringRef &ErrInfo) const {
+ const MachineOperand &Dst = MI.getOperand(0);
+ const MachineOperand &Src = MI.getOperand(1);
+
+ Register DstReg = Dst.getReg();
+ Register SrcReg = Src.getReg();
+ // This is a check for copy from an VGPR to SGPR
+ if (RI.isVGPR(MRI, SrcReg) && RI.isSGPRReg(MRI, DstReg)) {
+ ErrInfo = "illegal copy from VGPR to SGPR";
+ return false;
+ }
+
+ // This is a check for copy from an AGPR to SGPR
+ if (RI.isAGPR(MRI, SrcReg) && RI.isSGPRReg(MRI, DstReg)) {
+ ErrInfo = "illegal copy from AGPR to SGPR";
+ return false;
+ }
----------------
AditiRM wrote:
Updated the error message with single check.
https://github.com/llvm/llvm-project/pull/105494
More information about the llvm-commits
mailing list