aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/IR/IntrinsicInst.cpp
diff options
context:
space:
mode:
authorPhilip Reames <preames@rivosinc.com>2024-08-29 09:57:58 -0700
committerGitHub <noreply@github.com>2024-08-29 09:57:58 -0700
commit74b4ec17e24a256b4aae5e53b855ba429af685bf (patch)
tree504a6e08310452314b38688bf27fd02965bc3ab4 /llvm/lib/IR/IntrinsicInst.cpp
parent3d08ade7bd32f0296e0ca3a13640cc95fa89229a (diff)
downloadllvm-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.cpp73
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;
}