diff options
author | Philip Reames <preames@rivosinc.com> | 2024-08-29 09:57:58 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-29 09:57:58 -0700 |
commit | 74b4ec17e24a256b4aae5e53b855ba429af685bf (patch) | |
tree | 504a6e08310452314b38688bf27fd02965bc3ab4 /llvm/lib/IR/IntrinsicInst.cpp | |
parent | 3d08ade7bd32f0296e0ca3a13640cc95fa89229a (diff) | |
download | llvm-74b4ec17e24a256b4aae5e53b855ba429af685bf.zip llvm-74b4ec17e24a256b4aae5e53b855ba429af685bf.tar.gz llvm-74b4ec17e24a256b4aae5e53b855ba429af685bf.tar.bz2 |
[VP] Remove VP_PROPERTY_REDUCTION and VP_PROPERTY_CMP [nfc] (#105551)
These lists are quite static and several of the parameters are actually
constant across all users. Heavy use of macros is undesirable, and not
idiomatic in LLVM, so let's just use the naive switch cases.
I'll probably continue with removing the other property macros. These
two just happened to be the two I actually had to figure out for an
unrelated change.
Diffstat (limited to 'llvm/lib/IR/IntrinsicInst.cpp')
-rw-r--r-- | llvm/lib/IR/IntrinsicInst.cpp | 73 |
1 files changed, 29 insertions, 44 deletions
diff --git a/llvm/lib/IR/IntrinsicInst.cpp b/llvm/lib/IR/IntrinsicInst.cpp index 7680fd02..966fa62 100644 --- a/llvm/lib/IR/IntrinsicInst.cpp +++ b/llvm/lib/IR/IntrinsicInst.cpp @@ -738,14 +738,25 @@ Function *VPIntrinsic::getDeclarationForParams(Module *M, Intrinsic::ID VPID, bool VPReductionIntrinsic::isVPReduction(Intrinsic::ID ID) { switch (ID) { + case Intrinsic::vp_reduce_add: + case Intrinsic::vp_reduce_mul: + case Intrinsic::vp_reduce_and: + case Intrinsic::vp_reduce_or: + case Intrinsic::vp_reduce_xor: + case Intrinsic::vp_reduce_smax: + case Intrinsic::vp_reduce_smin: + case Intrinsic::vp_reduce_umax: + case Intrinsic::vp_reduce_umin: + case Intrinsic::vp_reduce_fmax: + case Intrinsic::vp_reduce_fmin: + case Intrinsic::vp_reduce_fmaximum: + case Intrinsic::vp_reduce_fminimum: + case Intrinsic::vp_reduce_fadd: + case Intrinsic::vp_reduce_fmul: + return true; default: - break; -#define BEGIN_REGISTER_VP_INTRINSIC(VPID, ...) case Intrinsic::VPID: -#define VP_PROPERTY_REDUCTION(STARTPOS, ...) return true; -#define END_REGISTER_VP_INTRINSIC(VPID) break; -#include "llvm/IR/VPIntrinsics.def" + return false; } - return false; } bool VPCastIntrinsic::isVPCast(Intrinsic::ID ID) { @@ -763,13 +774,11 @@ bool VPCastIntrinsic::isVPCast(Intrinsic::ID ID) { bool VPCmpIntrinsic::isVPCmp(Intrinsic::ID ID) { switch (ID) { default: - break; -#define BEGIN_REGISTER_VP_INTRINSIC(VPID, ...) case Intrinsic::VPID: -#define VP_PROPERTY_CMP(CCPOS, ...) return true; -#define END_REGISTER_VP_INTRINSIC(VPID) break; -#include "llvm/IR/VPIntrinsics.def" + return false; + case Intrinsic::vp_fcmp: + case Intrinsic::vp_icmp: + return true; } - return false; } bool VPBinOpIntrinsic::isVPBinOp(Intrinsic::ID ID) { @@ -803,22 +812,10 @@ static ICmpInst::Predicate getIntPredicateFromMD(const Value *Op) { } CmpInst::Predicate VPCmpIntrinsic::getPredicate() const { - bool IsFP = true; - std::optional<unsigned> CCArgIdx; - switch (getIntrinsicID()) { - default: - break; -#define BEGIN_REGISTER_VP_INTRINSIC(VPID, ...) case Intrinsic::VPID: -#define VP_PROPERTY_CMP(CCPOS, ISFP) \ - CCArgIdx = CCPOS; \ - IsFP = ISFP; \ - break; -#define END_REGISTER_VP_INTRINSIC(VPID) break; -#include "llvm/IR/VPIntrinsics.def" - } - assert(CCArgIdx && "Unexpected vector-predicated comparison"); - return IsFP ? getFPPredicateFromMD(getArgOperand(*CCArgIdx)) - : getIntPredicateFromMD(getArgOperand(*CCArgIdx)); + assert(isVPCmp(getIntrinsicID())); + return getIntrinsicID() == Intrinsic::vp_fcmp + ? getFPPredicateFromMD(getArgOperand(2)) + : getIntPredicateFromMD(getArgOperand(2)); } unsigned VPReductionIntrinsic::getVectorParamPos() const { @@ -831,27 +828,15 @@ unsigned VPReductionIntrinsic::getStartParamPos() const { std::optional<unsigned> VPReductionIntrinsic::getVectorParamPos(Intrinsic::ID ID) { - switch (ID) { -#define BEGIN_REGISTER_VP_INTRINSIC(VPID, ...) case Intrinsic::VPID: -#define VP_PROPERTY_REDUCTION(STARTPOS, VECTORPOS) return VECTORPOS; -#define END_REGISTER_VP_INTRINSIC(VPID) break; -#include "llvm/IR/VPIntrinsics.def" - default: - break; - } + if (isVPReduction(ID)) + return 1; return std::nullopt; } std::optional<unsigned> VPReductionIntrinsic::getStartParamPos(Intrinsic::ID ID) { - switch (ID) { -#define BEGIN_REGISTER_VP_INTRINSIC(VPID, ...) case Intrinsic::VPID: -#define VP_PROPERTY_REDUCTION(STARTPOS, VECTORPOS) return STARTPOS; -#define END_REGISTER_VP_INTRINSIC(VPID) break; -#include "llvm/IR/VPIntrinsics.def" - default: - break; - } + if (isVPReduction(ID)) + return 0; return std::nullopt; } |