[llvm] [VPlan] Add new VPPhi subclass for VPInstruction with PHI opcodes. (PR #139151)
via llvm-commits
llvm-commits at lists.llvm.org
Fri May 9 11:52:49 PDT 2025
================
@@ -1131,6 +1122,30 @@ void VPInstructionWithType::print(raw_ostream &O, const Twine &Indent,
}
#endif
+void VPPhi::execute(VPTransformState &State) {
+ State.setDebugLocFrom(getDebugLoc());
+ assert(getParent() ==
+ getParent()->getPlan()->getVectorLoopRegion()->getEntry() &&
+ "VPInstructions with PHI opcodes must be used for header phis only "
+ "at the moment");
+ BasicBlock *VectorPH = State.CFG.VPBB2IRBB.at(getIncomingBlock(0));
+ Value *Start = State.get(getIncomingValue(0), VPLane(0));
+ PHINode *Phi = State.Builder.CreatePHI(Start->getType(), 2, getName());
+ Phi->addIncoming(Start, VectorPH);
+ State.set(this, Phi, VPLane(0));
+}
+
+#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
+void VPPhi::print(raw_ostream &O, const Twine &Indent,
+ VPSlotTracker &SlotTracker) const {
+ O << Indent << "EMIT ";
+ printAsOperand(O, SlotTracker);
+ O << " = phi ";
+
+ printPhiOperands(O, SlotTracker);
----------------
ayalz wrote:
nit: worth separating this change of how the recipe is printed to a follow-up patch, associated with the test changes?
Patch should be marked NFC.
https://github.com/llvm/llvm-project/pull/139151
More information about the llvm-commits
mailing list