Author: Benjamin Maxwell Date: 2026-02-13T09:49:40Z New Revision: d9e1f822fe4114d45018571c3c404da71048e3c3
URL: https://github.com/llvm/llvm-project/commit/d9e1f822fe4114d45018571c3c404da71048e3c3 DIFF: https://github.com/llvm/llvm-project/commit/d9e1f822fe4114d45018571c3c404da71048e3c3.diff LOG: Revert "Revert "[WebAssembly] Mark extract.last.active as having invalid cost…" This reverts commit 0f8325c9a9647e9c97bc81e368767fb21ee25ccf. Added: Modified: llvm/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.cpp llvm/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.h Removed: llvm/test/Analysis/CostModel/WebAssembly/extract-last-active.ll ################################################################################ diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.cpp index f058d734bcb87..33498805112c0 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.cpp @@ -453,6 +453,19 @@ InstructionCost WebAssemblyTTIImpl::getPartialReductionCost( return Invalid; } +InstructionCost +WebAssemblyTTIImpl::getIntrinsicInstrCost(const IntrinsicCostAttributes &ICA, + TTI::TargetCostKind CostKind) const { + switch (ICA.getID()) { + case Intrinsic::experimental_vector_extract_last_active: + // TODO: Remove once the intrinsic can be lowered without crashes. + return InstructionCost::getInvalid(); + default: + break; + } + return BaseT::getIntrinsicInstrCost(ICA, CostKind); +} + TTI::ReductionShuffle WebAssemblyTTIImpl::getPreferredExpandedReductionShuffle( const IntrinsicInst *II) const { diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.h b/llvm/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.h index 9b6de65f17c7f..924249e051321 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.h +++ b/llvm/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.h @@ -98,6 +98,10 @@ class WebAssemblyTTIImpl final : public BasicTTIImplBase<WebAssemblyTTIImpl> { TTI::TargetCostKind CostKind, std::optional<FastMathFlags> FMF) const override; + InstructionCost + getIntrinsicInstrCost(const IntrinsicCostAttributes &ICA, + TTI::TargetCostKind CostKind) const override; + TTI::ReductionShuffle getPreferredExpandedReductionShuffle(const IntrinsicInst *II) const override; diff --git a/llvm/test/Analysis/CostModel/WebAssembly/extract-last-active.ll b/llvm/test/Analysis/CostModel/WebAssembly/extract-last-active.ll deleted file mode 100644 index 1feb9bae2de7a..0000000000000 --- a/llvm/test/Analysis/CostModel/WebAssembly/extract-last-active.ll +++ /dev/null @@ -1,26 +0,0 @@ -; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 6 -; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -S -mtriple=wasm32-unknown-unknown | FileCheck %s - -define void @extractions() { -; CHECK-LABEL: 'extractions' -; CHECK-NEXT: Cost Model: Found an estimated cost of 48 for instruction: %v16i8 = call i8 @llvm.experimental.vector.extract.last.active.v16i8(<16 x i8> poison, <16 x i1> poison, i8 poison) -; CHECK-NEXT: Cost Model: Found an estimated cost of 24 for instruction: %v8i16 = call i16 @llvm.experimental.vector.extract.last.active.v8i16(<8 x i16> poison, <8 x i1> poison, i16 poison) -; CHECK-NEXT: Cost Model: Found an estimated cost of 12 for instruction: %v4i32 = call i32 @llvm.experimental.vector.extract.last.active.v4i32(<4 x i32> poison, <4 x i1> poison, i32 poison) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %v2i64 = call i64 @llvm.experimental.vector.extract.last.active.v2i64(<2 x i64> poison, <2 x i1> poison, i64 poison) -; CHECK-NEXT: Cost Model: Found an estimated cost of 24 for instruction: %v8f16 = call half @llvm.experimental.vector.extract.last.active.v8f16(<8 x half> poison, <8 x i1> poison, half poison) -; CHECK-NEXT: Cost Model: Found an estimated cost of 24 for instruction: %v8bf16 = call bfloat @llvm.experimental.vector.extract.last.active.v8bf16(<8 x bfloat> poison, <8 x i1> poison, bfloat poison) -; CHECK-NEXT: Cost Model: Found an estimated cost of 12 for instruction: %v4f32 = call float @llvm.experimental.vector.extract.last.active.v4f32(<4 x float> poison, <4 x i1> poison, float poison) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %v2f64 = call double @llvm.experimental.vector.extract.last.active.v2f64(<2 x double> poison, <2 x i1> poison, double poison) -; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void -; - %v16i8 = call i8 @llvm.experimental.vector.extract.last.active.v16i8(<16 x i8> poison, <16 x i1> poison, i8 poison) - %v8i16 = call i16 @llvm.experimental.vector.extract.last.active.v8i16(<8 x i16> poison, <8 x i1> poison, i16 poison) - %v4i32 = call i32 @llvm.experimental.vector.extract.last.active.v4i32(<4 x i32> poison, <4 x i1> poison, i32 poison) - %v2i64 = call i64 @llvm.experimental.vector.extract.last.active.v2i64(<2 x i64> poison, <2 x i1> poison, i64 poison) - %v8f16 = call half @llvm.experimental.vector.extract.last.active.v8f16(<8 x half> poison, <8 x i1> poison, half poison) - %v8bf16 = call bfloat @llvm.experimental.vector.extract.last.active.v8bf16(<8 x bfloat> poison, <8 x i1> poison, bfloat poison) - %v4f32 = call float @llvm.experimental.vector.extract.last.active.v4f32(<4 x float> poison, <4 x i1> poison, float poison) - %v2f64 = call double @llvm.experimental.vector.extract.last.active.v2f64(<2 x double> poison, <2 x i1> poison, double poison) - - ret void -} _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
