[llvm] [TTI][RISCV] Implement cost of some intrinsics with LMUL (PR #117874)
Luke Lau via llvm-commits
llvm-commits at lists.llvm.org
Sat Nov 30 02:51:35 PST 2024
================
@@ -1013,20 +1013,65 @@ RISCVTTIImpl::getIntrinsicInstrCost(const IntrinsicCostAttributes &ICA,
case Intrinsic::sadd_sat:
case Intrinsic::ssub_sat:
case Intrinsic::uadd_sat:
- case Intrinsic::usub_sat:
+ case Intrinsic::usub_sat: {
+ auto LT = getTypeLegalizationCost(RetTy);
+ if (ST->hasVInstructions() && LT.second.isVector()) {
+ unsigned Op;
+ switch (ICA.getID()) {
+ case Intrinsic::sadd_sat:
+ Op = RISCV::VSADD_VV;
+ break;
+ case Intrinsic::ssub_sat:
+ Op = RISCV::VSSUBU_VV;
+ break;
+ case Intrinsic::uadd_sat:
+ Op = RISCV::VSADDU_VV;
+ break;
+ case Intrinsic::usub_sat:
+ Op = RISCV::VSSUBU_VV;
+ break;
+ }
+ return LT.first * getRISCVInstructionCost(Op, LT.second, CostKind);
+ }
+ break;
+ }
case Intrinsic::fabs:
case Intrinsic::sqrt: {
auto LT = getTypeLegalizationCost(RetTy);
- if (ST->hasVInstructions() && LT.second.isVector())
- return LT.first;
+ // TODO: add f16/bf16, bf16 with zvfhbmin && f16 with zvfhmin
----------------
lukel97 wrote:
```suggestion
// TODO: add f16/bf16, bf16 with zvfbfmin && f16 with zvfhmin
```
https://github.com/llvm/llvm-project/pull/117874
More information about the llvm-commits
mailing list