[llvm] [VPlan] Add VPInst::getNumOperandsForOpcode, use to verify in ctor (NFC) (PR #142284)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Jun 22 11:45:07 PDT 2025
================
@@ -415,8 +415,65 @@ VPInstruction::VPInstruction(unsigned Opcode, ArrayRef<VPValue *> Operands,
VPIRMetadata(), Opcode(Opcode), Name(Name.str()) {
assert(flagsValidForOpcode(getOpcode()) &&
"Set flags not supported for the provided opcode");
+ assert((getNumOperandsForOpcode(Opcode) == -1u ||
+ getNumOperandsForOpcode(Opcode) == getNumOperands()) &&
+ "number of operands does not match opcode");
}
+#ifndef NDEBUG
+unsigned VPInstruction::getNumOperandsForOpcode(unsigned Opcode) {
+ if (Instruction::isUnaryOp(Opcode) || Instruction::isCast(Opcode))
+ return 1;
+
+ if (Instruction::isBinaryOp(Opcode))
+ return 2;
+
+ switch (Opcode) {
+ case VPInstruction::StepVector:
+ return 0;
+ case Instruction::Alloca:
+ case Instruction::ExtractValue:
+ case Instruction::Freeze:
+ case Instruction::Load:
+ case VPInstruction::AnyOf:
+ case VPInstruction::BranchOnCond:
+ case VPInstruction::CalculateTripCountMinusVF:
+ case VPInstruction::CanonicalIVIncrementForPart:
+ case VPInstruction::ExplicitVectorLength:
+ case VPInstruction::ExtractLastElement:
+ case VPInstruction::ExtractPenultimateElement:
+ case VPInstruction::FirstActiveLane:
+ case VPInstruction::Not:
+ return 1;
+
----------------
ayalz wrote:
```suggestion
```
consistency
https://github.com/llvm/llvm-project/pull/142284
More information about the llvm-commits
mailing list