-
Notifications
You must be signed in to change notification settings - Fork 12.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[VP] Add method for looking up functional intrinsic ID for VP. NFC #66190
[VP] Add method for looking up functional intrinsic ID for VP. NFC #66190
Conversation
This adds a helper method to get the ID of the functionally equivalent intrinsic, similar to the existing getFunctionalOpcodeForVP and getConstrainedIntrinsicIDForVP method. It could potentially be used in llvm#65706 to scalarize VP intrinsics.
@llvm/pr-subscribers-llvm-ir ChangesThis adds a helper method to get the ID of the functionally equivalent intrinsic, similar to the existing getFunctionalOpcodeForVP and getConstrainedIntrinsicIDForVP methods.Not sure if it's notable or not, but I can't find any existing uses of VP_PROPERTY_FUNCTIONAL_INTRINSIC? It could potentially be used in #65706 to scalarize VP intrinsics. -- 2 Files Affected:
diff --git a/llvm/include/llvm/IR/IntrinsicInst.h b/llvm/include/llvm/IR/IntrinsicInst.h index 62bd833198f022b..83ab88252ac2feb 100644 --- a/llvm/include/llvm/IR/IntrinsicInst.h +++ b/llvm/include/llvm/IR/IntrinsicInst.h @@ -596,6 +596,11 @@ class VPIntrinsic : public IntrinsicInst { return getFunctionalOpcodeForVP(getIntrinsicID()); } + // Equivalent non-predicated intrinsic ID + std::optional<unsigned> getFunctionalIntrinsicID() const { + return getFunctionalIntrinsicIDForVP(getIntrinsicID()); + } + // Equivalent non-predicated constrained ID std::optional<unsigned> getConstrainedIntrinsicID() const { return getConstrainedIntrinsicIDForVP(getIntrinsicID()); @@ -604,6 +609,10 @@ class VPIntrinsic : public IntrinsicInst { // Equivalent non-predicated opcode static std::optional<unsigned> getFunctionalOpcodeForVP(Intrinsic::ID ID); + // Equivalent non-predicated intrinsic ID + static std::optional<unsigned> + getFunctionalIntrinsicIDForVP(Intrinsic::ID ID); + // Equivalent non-predicated constrained ID static std::optional<unsigned> getConstrainedIntrinsicIDForVP(Intrinsic::ID ID); diff --git a/llvm/lib/IR/IntrinsicInst.cpp b/llvm/lib/IR/IntrinsicInst.cpp index 61be167ebaa28db..5e5a09d6dd50210 100644 --- a/llvm/lib/IR/IntrinsicInst.cpp +++ b/llvm/lib/IR/IntrinsicInst.cpp @@ -529,6 +529,20 @@ VPIntrinsic::getFunctionalOpcodeForVP(Intrinsic::ID ID) { return std::nullopt; } +// Equivalent non-predicated intrinsic +std::optional<unsigned> +VPIntrinsic::getFunctionalIntrinsicIDForVP(Intrinsic::ID ID) { + switch (ID) { + default: + break; +#define BEGIN_REGISTER_VP_INTRINSIC(VPID, ...) case Intrinsic::VPID: +#define VP_PROPERTY_FUNCTIONAL_INTRINSIC(INTRIN) return Intrinsic::INTRIN; +#define END_REGISTER_VP_INTRINSIC(VPID) break; +#include "llvm/IR/VPIntrinsics.def" + } + return std::nullopt; +} + // Equivalent non-predicated constrained intrinsic std::optional<unsigned> VPIntrinsic::getConstrainedIntrinsicIDForVP(Intrinsic::ID ID) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
…lvm#66190) This adds a helper method to get the ID of the functionally equivalent intrinsic, similar to the existing getFunctionalOpcodeForVP and getConstrainedIntrinsicIDForVP methods. Not sure if it's notable or not, but I can't find any existing uses of VP_PROPERTY_FUNCTIONAL_INTRINSIC? It could potentially be used in llvm#65706 to scalarize VP intrinsics.
This adds a helper method to get the ID of the functionally equivalent intrinsic, similar to the existing getFunctionalOpcodeForVP and getConstrainedIntrinsicIDForVP methods.
Not sure if it's notable or not, but I can't find any existing uses of VP_PROPERTY_FUNCTIONAL_INTRINSIC?
It could potentially be used in #65706 to scalarize VP intrinsics.