[llvm] Add intrinsics support in narrow interleave group (PR #206455)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 10 06:23:45 PDT 2026
================
@@ -5775,13 +5775,14 @@ static bool canNarrowLoad(VPSingleDefRecipe *WideMember0, unsigned OpIdx,
return false;
}
-static bool canNarrowOps(ArrayRef<VPValue *> Ops, bool IsScalable) {
+static bool canNarrowOps(ArrayRef<VPValue *> Ops, bool IsScalable,
+ const TargetTransformInfo &TTI) {
SmallVector<VPValue *> Ops0;
auto *WideMember0 = dyn_cast<VPRecipeWithIRFlags>(Ops[0]);
if (!WideMember0)
return false;
for (VPValue *V : Ops) {
- if (!isa<VPWidenRecipe, VPWidenCastRecipe>(V))
+ if (!isa<VPWidenRecipe, VPWidenCastRecipe, VPWidenIntrinsicRecipe>(V))
----------------
fhahn wrote:
I think we are missing some constraints on the type of intrinsic, for example the intrinsic may load from memory (e.g. strided load) and intrinsics that have struct argument or return values.
Would be good to cover with tests if possible
https://github.com/llvm/llvm-project/pull/206455
More information about the llvm-commits
mailing list