[llvm] [VPlan] Separate out logic to manage IR flags to VPIRFlags (NFC). (PR #140621)
via llvm-commits
llvm-commits at lists.llvm.org
Sun May 25 07:20:37 PDT 2025
================
@@ -855,24 +845,11 @@ bool VPInstruction::isSingleScalar() const {
getOpcode() == Instruction::PHI;
}
-#if !defined(NDEBUG)
-bool VPInstruction::isFPMathOp() const {
- // Inspired by FPMathOperator::classof. Notable differences are that we don't
- // support Call, PHI and Select opcodes here yet.
- return Opcode == Instruction::FAdd || Opcode == Instruction::FMul ||
- Opcode == Instruction::FNeg || Opcode == Instruction::FSub ||
- Opcode == Instruction::FDiv || Opcode == Instruction::FRem ||
- Opcode == Instruction::FCmp || Opcode == Instruction::Select ||
- Opcode == VPInstruction::WideIVStep;
-}
-#endif
-
void VPInstruction::execute(VPTransformState &State) {
assert(!State.Lane && "VPInstruction executing an Lane");
IRBuilderBase::FastMathFlagGuard FMFGuard(State.Builder);
- assert((hasFastMathFlags() == isFPMathOp() ||
- getOpcode() == Instruction::Select) &&
- "Recipe not a FPMathOp but has fast-math flags?");
+ assert(flagsValidForOpcode(getOpcode()) &&
+ "Set flags not supported for the provided opcode");
----------------
ayalz wrote:
Consistency: if desired both at construction and at execution (considering flags as mutable), should `VPWidenCastRecipe::execute()` also assert?
https://github.com/llvm/llvm-project/pull/140621
More information about the llvm-commits
mailing list