[llvm] [CodeGen] Add laneBitmask as new MachineOperand type, utilised by newly defined COPY_LANEMASK instruction (PR #151944)
Vikash Gupta via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 18 23:38:38 PDT 2025
================
@@ -2414,6 +2414,39 @@ void MachineVerifier::visitMachineInstrBefore(const MachineInstr *MI) {
}
break;
}
+ case TargetOpcode::COPY_LANEMASK: {
+ const MachineOperand &DstOp = MI->getOperand(0);
+ const MachineOperand &SrcOp = MI->getOperand(1);
+ const MachineOperand &LaneMaskOp = MI->getOperand(2);
+ const Register SrcReg = SrcOp.getReg();
+ const Register DstReg = DstOp.getReg();
+ const LaneBitmask LaneMask = LaneMaskOp.getLaneMask();
+ LaneBitmask SrcMaxLanemask = LaneBitmask::getAll();
+
+ if (DstOp.getSubReg())
+ report("COPY_LANEMASK must not use a subregister index", &DstOp, 0);
+
+ if (SrcOp.getSubReg())
+ report("COPY_LANEMASK must not use a subregister index", &SrcOp, 1);
+
+ if (LaneMask.none())
+ report("COPY_LANEMASK must read at least one lane", MI);
+
+ if (SrcReg.isPhysical()) {
----------------
vg0204 wrote:
Thanks for pointing that out, need to update that. As when started that time made assumption for only PhysReg which eventually got changed to support both virtReg & PhysReg by COPY_LANEMASK opcode
https://github.com/llvm/llvm-project/pull/151944
More information about the llvm-commits
mailing list