[llvm] [NFC][CodeGen] Add helper function to check SubReg validity (PR #181489)
Jay Foad via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 17 11:17:42 PST 2026
================
@@ -2800,46 +2800,37 @@ MachineVerifier::visitMachineOperand(const MachineOperand *MO, unsigned MONum) {
break;
}
- if (SubIdx) {
- const TargetRegisterClass *SRC =
- TRI->getSubClassWithSubReg(RC, SubIdx);
- if (!SRC) {
- report("Invalid subregister index for virtual register", MO, MONum);
- OS << "Register class " << TRI->getRegClassName(RC)
- << " does not support subreg index "
- << TRI->getSubRegIndexName(SubIdx) << '\n';
- return;
- }
- if (RC != SRC) {
- report("Invalid register class for subregister index", MO, MONum);
- OS << "Register class " << TRI->getRegClassName(RC)
- << " does not fully support subreg index "
- << TRI->getSubRegIndexName(SubIdx) << '\n';
- return;
- }
+ // Validate that SubIdx can be applied to the virtual register.
+ if (!TRI->isSubRegValidForRegClass(RC, SubIdx)) {
+ report("Invalid subregister index for virtual register", MO, MONum);
+ OS << "Register class " << TRI->getRegClassName(RC)
+ << " does not support subreg index "
+ << TRI->getSubRegIndexName(SubIdx) << '\n';
+ return;
}
- if (MONum < MCID.getNumOperands()) {
- if (const TargetRegisterClass *DRC = TII->getRegClass(MCID, MONum)) {
- if (SubIdx) {
- const TargetRegisterClass *SuperRC =
- TRI->getLargestLegalSuperClass(RC, *MF);
- if (!SuperRC) {
- report("No largest legal super class exists.", MO, MONum);
- return;
- }
- DRC = TRI->getMatchingSuperRegClass(SuperRC, DRC, SubIdx);
- if (!DRC) {
- report("No matching super-reg register class.", MO, MONum);
- return;
- }
- }
- if (!RC->hasSuperClassEq(DRC)) {
- report("Illegal virtual register for instruction", MO, MONum);
- OS << "Expected a " << TRI->getRegClassName(DRC)
- << " register, but got a " << TRI->getRegClassName(RC)
- << " register\n";
- }
- }
+ if (MONum >= MCID.getNumOperands())
----------------
jayfoad wrote:
I don't see how this hunk is related to isSubRegValidForRegClass
https://github.com/llvm/llvm-project/pull/181489
More information about the llvm-commits
mailing list