[llvm] [VPlan] Add VPPhiAccessors to provide interface for phi recipes (NFC) (PR #129388)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Sat May 3 05:04:27 PDT 2025
================
@@ -1166,6 +1166,30 @@ class VPIRInstruction : public VPRecipeBase {
void extractLastLaneOfFirstOperand(VPBuilder &Builder);
};
+/// Helper type to provide functions to access incoming values and blocks for
+/// phi-like recipes. RecipeTy must be a sub-class of VPRecipeBase.
+template <typename RecipeTy> class VPPhiAccessors {
+ /// Return a VPRecipeBase* to the current object.
+ const VPRecipeBase *getAsRecipe() const {
+ return static_cast<const RecipeTy *>(this);
----------------
fhahn wrote:
I don't think we could `dyn_cast` from `VPPhiAccessors` to `VPRecipeBase` because there's no directy relationship between them (and the `this` pointer for the `VPPhiAccessors` (sub-)object may not be the same as the VPRecipeBase (base-) object. The other way works, because we can down-cast to the concrete types inheriting from `VPPhiAccessors`).
https://github.com/llvm/llvm-project/pull/129388
More information about the llvm-commits
mailing list