[llvm] 63e0ab7 - [RISCV] Explicitly list supported VP intrinsics. NFC (#189547)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 31 01:55:16 PDT 2026
Author: Luke Lau
Date: 2026-03-31T16:55:11+08:00
New Revision: 63e0ab7b4b51db7d93bf247b645c33b63f8ef747
URL: https://github.com/llvm/llvm-project/commit/63e0ab7b4b51db7d93bf247b645c33b63f8ef747
DIFF: https://github.com/llvm/llvm-project/commit/63e0ab7b4b51db7d93bf247b645c33b63f8ef747.diff
LOG: [RISCV] Explicitly list supported VP intrinsics. NFC (#189547)
In preparation for splitting off #179622, list all vp intrinsics in a
list. Future PRs will remove intrinsics from this list when the
corresponding codegen support is removed.
Added:
Modified:
llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h
Removed:
################################################################################
diff --git a/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h b/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h
index 99d213311ed69..97f4b9ae9a05d 100644
--- a/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h
+++ b/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h
@@ -364,11 +364,107 @@ class RISCVTTIImpl final : public BasicTTIImplBase<RISCVTTIImpl> {
TargetTransformInfo::VPLegalization
getVPLegalizationStrategy(const VPIntrinsic &PI) const override {
using VPLegalization = TargetTransformInfo::VPLegalization;
+ static const Intrinsic::ID Supported[] = {
+ Intrinsic::experimental_vp_strided_load,
+ Intrinsic::experimental_vp_strided_store,
+ Intrinsic::experimental_vp_reverse,
+ Intrinsic::experimental_vp_splice,
+ Intrinsic::vp_abs,
+ Intrinsic::vp_add,
+ Intrinsic::vp_and,
+ Intrinsic::vp_ashr,
+ Intrinsic::vp_bitreverse,
+ Intrinsic::vp_bswap,
+ Intrinsic::vp_ceil,
+ Intrinsic::vp_copysign,
+ Intrinsic::vp_ctlz,
+ Intrinsic::vp_ctpop,
+ Intrinsic::vp_cttz,
+ Intrinsic::vp_cttz_elts,
+ Intrinsic::vp_fabs,
+ Intrinsic::vp_fadd,
+ Intrinsic::vp_fcmp,
+ Intrinsic::vp_fdiv,
+ Intrinsic::vp_floor,
+ Intrinsic::vp_fma,
+ Intrinsic::vp_fmul,
+ Intrinsic::vp_fmuladd,
+ Intrinsic::vp_fneg,
+ Intrinsic::vp_fpext,
+ Intrinsic::vp_fptosi,
+ Intrinsic::vp_fptoui,
+ Intrinsic::vp_fptrunc,
+ Intrinsic::vp_frem,
+ Intrinsic::vp_fshl,
+ Intrinsic::vp_fshr,
+ Intrinsic::vp_fsub,
+ Intrinsic::vp_gather,
+ Intrinsic::vp_icmp,
+ Intrinsic::vp_inttoptr,
+ Intrinsic::vp_is_fpclass,
+ Intrinsic::vp_llrint,
+ Intrinsic::vp_load,
+ Intrinsic::vp_load_ff,
+ Intrinsic::vp_lrint,
+ Intrinsic::vp_lshr,
+ Intrinsic::vp_maximum,
+ Intrinsic::vp_maxnum,
+ Intrinsic::vp_merge,
+ Intrinsic::vp_minimum,
+ Intrinsic::vp_minnum,
+ Intrinsic::vp_mul,
+ Intrinsic::vp_nearbyint,
+ Intrinsic::vp_or,
+ Intrinsic::vp_ptrtoint,
+ Intrinsic::vp_reduce_add,
+ Intrinsic::vp_reduce_and,
+ Intrinsic::vp_reduce_fadd,
+ Intrinsic::vp_reduce_fmax,
+ Intrinsic::vp_reduce_fmaximum,
+ Intrinsic::vp_reduce_fmin,
+ Intrinsic::vp_reduce_fminimum,
+ Intrinsic::vp_reduce_fmul,
+ Intrinsic::vp_reduce_mul,
+ Intrinsic::vp_reduce_or,
+ Intrinsic::vp_reduce_smax,
+ Intrinsic::vp_reduce_smin,
+ Intrinsic::vp_reduce_umax,
+ Intrinsic::vp_reduce_umin,
+ Intrinsic::vp_reduce_xor,
+ Intrinsic::vp_rint,
+ Intrinsic::vp_round,
+ Intrinsic::vp_roundeven,
+ Intrinsic::vp_roundtozero,
+ Intrinsic::vp_sadd_sat,
+ Intrinsic::vp_scatter,
+ Intrinsic::vp_sdiv,
+ Intrinsic::vp_select,
+ Intrinsic::vp_sext,
+ Intrinsic::vp_shl,
+ Intrinsic::vp_sitofp,
+ Intrinsic::vp_smax,
+ Intrinsic::vp_smin,
+ Intrinsic::vp_sqrt,
+ Intrinsic::vp_srem,
+ Intrinsic::vp_ssub_sat,
+ Intrinsic::vp_store,
+ Intrinsic::vp_sub,
+ Intrinsic::vp_trunc,
+ Intrinsic::vp_uadd_sat,
+ Intrinsic::vp_udiv,
+ Intrinsic::vp_uitofp,
+ Intrinsic::vp_umax,
+ Intrinsic::vp_umin,
+ Intrinsic::vp_urem,
+ Intrinsic::vp_usub_sat,
+ Intrinsic::vp_xor,
+ Intrinsic::vp_zext};
if (!ST->hasVInstructions() ||
(PI.getIntrinsicID() == Intrinsic::vp_reduce_mul &&
cast<VectorType>(PI.getArgOperand(1)->getType())
->getElementType()
- ->getIntegerBitWidth() != 1))
+ ->getIntegerBitWidth() != 1) ||
+ !is_contained(Supported, PI.getIntrinsicID()))
return VPLegalization(VPLegalization::Discard, VPLegalization::Convert);
return VPLegalization(VPLegalization::Legal, VPLegalization::Legal);
}
More information about the llvm-commits
mailing list