[llvm] [LV][NFC] Autogen a test with integer costs per lane (PR #201560)
David Sherwood via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 4 05:16:38 PDT 2026
https://github.com/david-arm created https://github.com/llvm/llvm-project/pull/201560
The test file
Transforms/LoopVectorize/WebAssembly/memory-interleave.ll
causes headache whenever the cost model gets changed. See PR #198252 as an example. I have tried to auto-generate the CHECK lines so that it's testing the same thing as before. It is more verbose and is testing more CHECK lines in some cases, but I believe this it's worth it in order to make the tests more manageable for users.
As part of this I have also added two new DEBUG only flags in LoopVectorize.cpp:
1. -print-int-costs-per-lane. This flag forces the estimated cost per lane to be printed out as an integer to aid the creation of more robust CHECK lines that are hopefully less prone to failing due to difference in target FP rounding behaviour.
2. -vplan-dont-print-metadata. This flag avoids the metadata being printed out at the end of a recipe, which can lead to non-deterministic behaviour when included in auto-generated CHECK lines.
>From a9fc77f9973e1b096d4ddbca4d4f0c4e362327ff Mon Sep 17 00:00:00 2001
From: David Sherwood <david.sherwood at arm.com>
Date: Thu, 4 Jun 2026 12:12:24 +0000
Subject: [PATCH] [LV][NFC] Autogen a test with integer costs per lane
The test file
Transforms/LoopVectorize/WebAssembly/memory-interleave.ll
causes headache whenever the cost model gets changed. See
PR #198252 as an example. I have tried to auto-generate the
CHECK lines so that it's testing the same thing as before.
It is more verbose and is testing more CHECK lines in some
cases, but I believe this it's worth it in order to make the
tests more manageable for users.
As part of this I have also added two new DEBUG only flags in
LoopVectorize.cpp:
1. -print-int-costs-per-lane.
This flag forces the estimated cost per lane to be printed
out as an integer to aid the creation of more robust CHECK
lines that are hopefully less prone to failing due to
difference in target FP rounding behaviour.
2. -vplan-dont-print-metadata.
This flag avoids the metadata being printed out at the end of
a recipe, which can lead to non-deterministic behaviour when
included in auto-generated CHECK lines.
---
.../Transforms/Vectorize/LoopVectorize.cpp | 12 +-
.../lib/Transforms/Vectorize/VPlanRecipes.cpp | 9 +-
.../WebAssembly/memory-interleave.ll | 3155 ++++++++++-------
3 files changed, 1844 insertions(+), 1332 deletions(-)
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
index fcfe11b6e9de6..cfabfce0ea2a2 100644
--- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -375,6 +375,13 @@ cl::opt<bool> llvm::VPlanPrintVectorRegionScope(
"`-vplan-print-after*` if the plan has one."));
#endif
+#if !defined(NDEBUG)
+static cl::opt<bool> PrintIntCostsPerLane(
+ "print-int-costs-per-lane", cl::init(false), cl::Hidden,
+ cl::desc("When printing out debug containing the costs per lane use "
+ "integer values instead."));
+#endif
+
// This flag enables the stress testing of the VPlan H-CFG construction in the
// VPlan-native vectorization path. It must be used in conjuction with
// -enable-vplan-native-path. -vplan-verify-hcfg can also be used to enable the
@@ -5769,7 +5776,10 @@ InstructionCost LoopVectorizationPlanner::cost(VPlan &Plan, ElementCount VF,
<< " (Estimated cost per lane: ");
if (Cost.isValid()) {
double CostPerLane = double(Cost.getValue()) / EstimatedWidth;
- LLVM_DEBUG(dbgs() << format("%.1f", CostPerLane));
+ if (PrintIntCostsPerLane)
+ LLVM_DEBUG(dbgs() << format("%.0f", CostPerLane));
+ else
+ LLVM_DEBUG(dbgs() << format("%.1f", CostPerLane));
} else /* No point dividing an invalid cost - it will still be invalid */
LLVM_DEBUG(dbgs() << "Invalid");
LLVM_DEBUG(dbgs() << ")\n");
diff --git a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
index badcd40daf46b..96d625faabc00 100644
--- a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+++ b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
@@ -47,6 +47,13 @@ using VectorParts = SmallVector<Value *, 2>;
#define LV_NAME "loop-vectorize"
#define DEBUG_TYPE LV_NAME
+#if !defined(NDEBUG)
+static cl::opt<bool> VPlanDontPrintMetadata(
+ "vplan-dont-print-metadata", cl::init(false), cl::Hidden,
+ cl::desc("When printing out recipes avoid printing out metadata to avoid "
+ "potentially non-deterministic behaviour."));
+#endif
+
bool VPRecipeBase::mayWriteToMemory() const {
switch (getVPRecipeID()) {
case VPExpressionSC:
@@ -1969,7 +1976,7 @@ void VPIRMetadata::intersect(const VPIRMetadata &Other) {
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
void VPIRMetadata::print(raw_ostream &O, VPSlotTracker &SlotTracker) const {
const Module *M = SlotTracker.getModule();
- if (Metadata.empty() || !M)
+ if (Metadata.empty() || !M || VPlanDontPrintMetadata)
return;
ArrayRef<StringRef> MDNames = SlotTracker.getMDNames();
diff --git a/llvm/test/Transforms/LoopVectorize/WebAssembly/memory-interleave.ll b/llvm/test/Transforms/LoopVectorize/WebAssembly/memory-interleave.ll
index 6a0a3410a9585..989b5510d2f18 100644
--- a/llvm/test/Transforms/LoopVectorize/WebAssembly/memory-interleave.ll
+++ b/llvm/test/Transforms/LoopVectorize/WebAssembly/memory-interleave.ll
@@ -1,5 +1,6 @@
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of.*INTERLEAVE-GROUP" --filter "LV: Selecting VF:" --filter "Cost for VF" --filter "LV: Scalar loop costs" --filter "Cost of.*REPLICATE.*(load|store)" --filter "^ ir.*load from" --filter "^ store.*to index" --filter-out-after "LV: Selecting VF" --version 6
; REQUIRES: asserts
-; RUN: opt -mattr=+simd128 -passes=loop-vectorize -debug-only=loop-vectorize,vectorutils -disable-output < %s 2>&1 | FileCheck %s
+; RUN: opt -mattr=+simd128 -passes=loop-vectorize -debug-only=loop-vectorize,vectorutils -disable-output -print-int-costs-per-lane -vplan-dont-print-metadata < %s 2>&1 | FileCheck %s
target datalayout = "e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-n32:64-S128-ni:1:10:20"
target triple = "wasm32-unknown-wasi"
@@ -18,24 +19,31 @@ target triple = "wasm32-unknown-wasi"
%struct.TwoFloats = type { float, float }
%struct.FourFloats = type { float, float, float, float }
-; CHECK-LABEL: two_ints_same_op
-; CHECK: LV: Scalar loop costs: 12.
-; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK: Cost for VF 2: 27 (Estimated cost per lane: 13.
-; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK: Cost for VF 4: 24 (Estimated cost per lane: 6.
-; CHECK: LV: Selecting VF: 4.
define hidden void @two_ints_same_op(ptr noalias nocapture noundef writeonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'two_ints_same_op'
+; CHECK: LV: Scalar loop costs: 12.
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: Cost for VF 2: 27 (Estimated cost per lane: 14)
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: Cost for VF 4: 24 (Estimated cost per lane: 6)
+; CHECK: LV: Selecting VF: 4.
+;
%5 = icmp eq i32 %3, 0
br i1 %5, label %6, label %7
@@ -63,24 +71,31 @@ define hidden void @two_ints_same_op(ptr noalias nocapture noundef writeonly %0,
br i1 %22, label %6, label %7
}
-; CHECK-LABEL: two_ints_vary_op
-; CHECK: LV: Scalar loop costs: 12.
-; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK: Cost for VF 2: 27 (Estimated cost per lane: 13.
-; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK: Cost for VF 4: 24 (Estimated cost per lane: 6.
-; CHECK: LV: Selecting VF: 4.
define hidden void @two_ints_vary_op(ptr noalias nocapture noundef writeonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'two_ints_vary_op'
+; CHECK: LV: Scalar loop costs: 12.
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: Cost for VF 2: 27 (Estimated cost per lane: 14)
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: Cost for VF 4: 24 (Estimated cost per lane: 6)
+; CHECK: LV: Selecting VF: 4.
+;
%5 = icmp eq i32 %3, 0
br i1 %5, label %6, label %7
@@ -108,18 +123,31 @@ define hidden void @two_ints_vary_op(ptr noalias nocapture noundef writeonly %0,
br i1 %22, label %6, label %7
}
-; CHECK-LABEL: three_ints
-; CHECK: LV: Scalar loop costs: 16.
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%12> = load ir<%11>
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%13>, ir<%14>
-; CHECK: Cost for VF 2: 61 (Estimated cost per lane: 30.
-; CHECK: Cost of 12 for VF 4: REPLICATE ir<%10> = load ir<%9>
-; CHECK: Cost of 12 for VF 4: REPLICATE ir<%12> = load ir<%11>
-; CHECK: Cost of 12 for VF 4: REPLICATE store ir<%13>, ir<%14>
-; CHECK: Cost for VF 4: 115 (Estimated cost per lane: 28.
-; CHECK: LV: Selecting VF: 1.
define hidden void @three_ints(ptr noalias nocapture noundef writeonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'three_ints'
+; CHECK: LV: Scalar loop costs: 16.
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%12> = load ir<%11>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%13>, ir<%14>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%16> = load ir<%15>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%18> = load ir<%17>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%19>, ir<%20>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%22> = load ir<%21>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%24> = load ir<%23>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%25>, ir<%26>
+; CHECK: Cost for VF 2: 61 (Estimated cost per lane: 30)
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%10> = load ir<%9>
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%12> = load ir<%11>
+; CHECK: Cost of 12 for VF 4: REPLICATE store ir<%13>, ir<%14>
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%16> = load ir<%15>
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%18> = load ir<%17>
+; CHECK: Cost of 12 for VF 4: REPLICATE store ir<%19>, ir<%20>
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%22> = load ir<%21>
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%24> = load ir<%23>
+; CHECK: Cost of 12 for VF 4: REPLICATE store ir<%25>, ir<%26>
+; CHECK: Cost for VF 4: 115 (Estimated cost per lane: 29)
+; CHECK: LV: Selecting VF: 1.
+;
%5 = icmp eq i32 %3, 0
br i1 %5, label %6, label %7
@@ -154,22 +182,41 @@ define hidden void @three_ints(ptr noalias nocapture noundef writeonly %0, ptr n
br i1 %28, label %6, label %7
}
-; CHECK-LABEL: three_shorts
-; CHECK: LV: Scalar loop costs: 16.
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%12> = load ir<%11>
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%13>, ir<%14>
-; CHECK: Cost for VF 2: 61 (Estimated cost per lane: 30.
-; CHECK: Cost of 12 for VF 4: REPLICATE ir<%10> = load ir<%9>
-; CHECK: Cost of 12 for VF 4: REPLICATE ir<%12> = load ir<%11>
-; CHECK: Cost of 12 for VF 4: REPLICATE store ir<%13>, ir<%14>
-; CHECK: Cost for VF 4: 115 (Estimated cost per lane: 28.
-; CHECK: Cost of 24 for VF 8: REPLICATE ir<%10> = load ir<%9>
-; CHECK: Cost of 24 for VF 8: REPLICATE ir<%12> = load ir<%11>
-; CHECK: Cost of 24 for VF 8: REPLICATE store ir<%13>, ir<%14>
-; CHECK: Cost for VF 8: 223 (Estimated cost per lane: 27.
-; CHECK: LV: Selecting VF: 1.
define hidden void @three_shorts(ptr noalias nocapture noundef writeonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'three_shorts'
+; CHECK: LV: Scalar loop costs: 16.
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%12> = load ir<%11>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%13>, ir<%14>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%16> = load ir<%15>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%18> = load ir<%17>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%19>, ir<%20>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%22> = load ir<%21>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%24> = load ir<%23>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%25>, ir<%26>
+; CHECK: Cost for VF 2: 61 (Estimated cost per lane: 30)
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%10> = load ir<%9>
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%12> = load ir<%11>
+; CHECK: Cost of 12 for VF 4: REPLICATE store ir<%13>, ir<%14>
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%16> = load ir<%15>
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%18> = load ir<%17>
+; CHECK: Cost of 12 for VF 4: REPLICATE store ir<%19>, ir<%20>
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%22> = load ir<%21>
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%24> = load ir<%23>
+; CHECK: Cost of 12 for VF 4: REPLICATE store ir<%25>, ir<%26>
+; CHECK: Cost for VF 4: 115 (Estimated cost per lane: 29)
+; CHECK: Cost of 24 for VF 8: REPLICATE ir<%10> = load ir<%9>
+; CHECK: Cost of 24 for VF 8: REPLICATE ir<%12> = load ir<%11>
+; CHECK: Cost of 24 for VF 8: REPLICATE store ir<%13>, ir<%14>
+; CHECK: Cost of 24 for VF 8: REPLICATE ir<%16> = load ir<%15>
+; CHECK: Cost of 24 for VF 8: REPLICATE ir<%18> = load ir<%17>
+; CHECK: Cost of 24 for VF 8: REPLICATE store ir<%19>, ir<%20>
+; CHECK: Cost of 24 for VF 8: REPLICATE ir<%22> = load ir<%21>
+; CHECK: Cost of 24 for VF 8: REPLICATE ir<%24> = load ir<%23>
+; CHECK: Cost of 24 for VF 8: REPLICATE store ir<%25>, ir<%26>
+; CHECK: Cost for VF 8: 223 (Estimated cost per lane: 28)
+; CHECK: LV: Selecting VF: 1.
+;
%5 = icmp eq i32 %3, 0
br i1 %5, label %6, label %7
@@ -204,43 +251,59 @@ define hidden void @three_shorts(ptr noalias nocapture noundef writeonly %0, ptr
br i1 %28, label %6, label %7
}
-; CHECK-LABEL: four_shorts_same_op
-; CHECK: LV: Scalar loop costs: 20.
-; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK: Cost for VF 2: 62 (Estimated cost per lane: 31.
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK: Cost for VF 4: 62 (Estimated cost per lane: 15.
-; CHECK: Cost of 68 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK: Cost of 68 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK: Cost for VF 8: 212 (Estimated cost per lane: 26.
-; CHECK: LV: Selecting VF: 4.
define hidden void @four_shorts_same_op(ptr noalias nocapture noundef writeonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'four_shorts_same_op'
+; CHECK: LV: Scalar loop costs: 20.
+; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: Cost for VF 2: 62 (Estimated cost per lane: 31)
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: Cost for VF 4: 62 (Estimated cost per lane: 16)
+; CHECK: Cost of 68 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: Cost of 68 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: Cost of 68 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: Cost for VF 8: 212 (Estimated cost per lane: 26)
+; CHECK: LV: Selecting VF: 4.
+;
%5 = icmp eq i32 %3, 0
br i1 %5, label %6, label %7
@@ -282,43 +345,59 @@ define hidden void @four_shorts_same_op(ptr noalias nocapture noundef writeonly
br i1 %34, label %6, label %7
}
-; CHECK-LABEL: four_shorts_split_op
-; CHECK: LV: Scalar loop costs: 20.
-; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK: Cost for VF 2: 62 (Estimated cost per lane: 31.
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK: Cost for VF 4: 62 (Estimated cost per lane: 15.
-; CHECK: Cost of 68 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK: Cost of 68 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK: Cost for VF 8: 212 (Estimated cost per lane: 26.
-; CHECK: LV: Selecting VF: 4.
define hidden void @four_shorts_split_op(ptr noalias nocapture noundef writeonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'four_shorts_split_op'
+; CHECK: LV: Scalar loop costs: 20.
+; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: Cost for VF 2: 62 (Estimated cost per lane: 31)
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: Cost for VF 4: 62 (Estimated cost per lane: 16)
+; CHECK: Cost of 68 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: Cost of 68 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: Cost of 68 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: Cost for VF 8: 212 (Estimated cost per lane: 26)
+; CHECK: LV: Selecting VF: 4.
+;
%5 = icmp eq i32 %3, 0
br i1 %5, label %6, label %7
@@ -360,43 +439,59 @@ define hidden void @four_shorts_split_op(ptr noalias nocapture noundef writeonly
br i1 %34, label %6, label %7
}
-; CHECK-LABEL: four_shorts_interleave_op
-; CHECK: LV: Scalar loop costs: 20.
-; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK: Cost for VF 2: 62 (Estimated cost per lane: 31.
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK: Cost for VF 4: 62 (Estimated cost per lane: 15.
-; CHECK: Cost of 68 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK: Cost of 68 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK: Cost for VF 8: 212 (Estimated cost per lane: 26.
-; CHECK: LV: Selecting VF: 4.
define hidden void @four_shorts_interleave_op(ptr noalias nocapture noundef writeonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'four_shorts_interleave_op'
+; CHECK: LV: Scalar loop costs: 20.
+; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: Cost for VF 2: 62 (Estimated cost per lane: 31)
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: Cost for VF 4: 62 (Estimated cost per lane: 16)
+; CHECK: Cost of 68 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: Cost of 68 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: Cost of 68 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: Cost for VF 8: 212 (Estimated cost per lane: 26)
+; CHECK: LV: Selecting VF: 4.
+;
%5 = icmp eq i32 %3, 0
br i1 %5, label %6, label %7
@@ -438,53 +533,84 @@ define hidden void @four_shorts_interleave_op(ptr noalias nocapture noundef writ
br i1 %34, label %6, label %7
}
-; CHECK-LABEL: five_shorts
-; CHECK: LV: Scalar loop costs: 24.
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%12> = load ir<%11>
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%13>, ir<%14>
-; CHECK: Cost for VF 2: 99 (Estimated cost per lane: 49.
-; CHECK: Cost of 42 for VF 4: INTERLEAVE-GROUP with factor 5, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK-NEXT: ir<%34> = load from index 4
-; CHECK: Cost of 42 for VF 4: INTERLEAVE-GROUP with factor 5, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK-NEXT: store ir<%37> to index 4
-; CHECK: Cost for VF 4: 135 (Estimated cost per lane: 33.
-; CHECK: Cost of 84 for VF 8: INTERLEAVE-GROUP with factor 5, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK-NEXT: ir<%34> = load from index 4
-; CHECK: Cost of 84 for VF 8: INTERLEAVE-GROUP with factor 5, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK-NEXT: store ir<%37> to index 4
-; CHECK: Cost for VF 8: 261 (Estimated cost per lane: 32.
-; CHECK: Cost of 168 for VF 16: INTERLEAVE-GROUP with factor 5, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK-NEXT: ir<%34> = load from index 4
-; CHECK: Cost of 168 for VF 16: INTERLEAVE-GROUP with factor 5, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK-NEXT: store ir<%37> to index 4
-; CHECK: Cost for VF 16: 513 (Estimated cost per lane: 32.
-; CHECK: LV: Selecting VF: 1.
define hidden void @five_shorts(ptr noalias nocapture noundef writeonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'five_shorts'
+; CHECK: LV: Scalar loop costs: 24.
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%12> = load ir<%11>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%13>, ir<%14>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%16> = load ir<%15>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%18> = load ir<%17>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%19>, ir<%20>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%22> = load ir<%21>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%24> = load ir<%23>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%25>, ir<%26>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%28> = load ir<%27>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%30> = load ir<%29>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%31>, ir<%32>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%34> = load ir<%33>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%36> = load ir<%35>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%37>, ir<%38>
+; CHECK: Cost for VF 2: 99 (Estimated cost per lane: 50)
+; CHECK: Cost of 42 for VF 4: INTERLEAVE-GROUP with factor 5, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: ir<%34> = load from index 4
+; CHECK: Cost of 42 for VF 4: INTERLEAVE-GROUP with factor 5, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: ir<%36> = load from index 4
+; CHECK: Cost of 42 for VF 4: INTERLEAVE-GROUP with factor 5, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: store ir<%37> to index 4
+; CHECK: Cost for VF 4: 135 (Estimated cost per lane: 34)
+; CHECK: Cost of 84 for VF 8: INTERLEAVE-GROUP with factor 5, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: ir<%34> = load from index 4
+; CHECK: Cost of 84 for VF 8: INTERLEAVE-GROUP with factor 5, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: ir<%36> = load from index 4
+; CHECK: Cost of 84 for VF 8: INTERLEAVE-GROUP with factor 5, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: store ir<%37> to index 4
+; CHECK: Cost for VF 8: 261 (Estimated cost per lane: 33)
+; CHECK: Cost of 168 for VF 16: INTERLEAVE-GROUP with factor 5, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: ir<%34> = load from index 4
+; CHECK: Cost of 168 for VF 16: INTERLEAVE-GROUP with factor 5, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: ir<%36> = load from index 4
+; CHECK: Cost of 168 for VF 16: INTERLEAVE-GROUP with factor 5, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: store ir<%37> to index 4
+; CHECK: Cost for VF 16: 513 (Estimated cost per lane: 32)
+; CHECK: LV: Selecting VF: 1.
+;
%5 = icmp eq i32 %3, 0
br i1 %5, label %6, label %7
@@ -533,35 +659,48 @@ define hidden void @five_shorts(ptr noalias nocapture noundef writeonly %0, ptr
br i1 %40, label %6, label %7
}
-; CHECK-LABEL: two_bytes_same_op
-; CHECK: LV: Scalar loop costs: 12.
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%12> = load ir<%11>
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%13>, ir<%14>
-; CHECK: Cost for VF 2: 52 (Estimated cost per lane: 26.
-; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK: Cost for VF 4: 61 (Estimated cost per lane: 15.
-; CHECK: Cost of 7 for VF 8: INTERLEAVE-GROUP with factor 2, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK: Cost of 7 for VF 8: INTERLEAVE-GROUP with factor 2, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK: Cost for VF 8: 33 (Estimated cost per lane: 4.
-; CHECK: Cost of 6 for VF 16: INTERLEAVE-GROUP with factor 2, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK: Cost of 6 for VF 16: INTERLEAVE-GROUP with factor 2, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK: Cost for VF 16: 30 (Estimated cost per lane: 1.
-; CHECK: LV: Selecting VF: 16.
define hidden void @two_bytes_same_op(ptr noalias nocapture noundef writeonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'two_bytes_same_op'
+; CHECK: LV: Scalar loop costs: 12.
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%12> = load ir<%11>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%13>, ir<%14>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%16> = load ir<%15>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%18> = load ir<%17>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%19>, ir<%20>
+; CHECK: Cost for VF 2: 52 (Estimated cost per lane: 26)
+; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: Cost for VF 4: 61 (Estimated cost per lane: 15)
+; CHECK: Cost of 7 for VF 8: INTERLEAVE-GROUP with factor 2, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: Cost of 7 for VF 8: INTERLEAVE-GROUP with factor 2, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: Cost of 7 for VF 8: INTERLEAVE-GROUP with factor 2, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: Cost for VF 8: 33 (Estimated cost per lane: 4)
+; CHECK: Cost of 6 for VF 16: INTERLEAVE-GROUP with factor 2, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: Cost of 6 for VF 16: INTERLEAVE-GROUP with factor 2, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: Cost of 6 for VF 16: INTERLEAVE-GROUP with factor 2, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: Cost for VF 16: 30 (Estimated cost per lane: 2)
+; CHECK: LV: Selecting VF: 16.
+;
%5 = icmp eq i32 %3, 0
br i1 %5, label %6, label %7
@@ -589,35 +728,48 @@ define hidden void @two_bytes_same_op(ptr noalias nocapture noundef writeonly %0
br i1 %22, label %6, label %7
}
-; CHECK-LABEL: two_bytes_vary_op
-; CHECK: LV: Scalar loop costs: 12.
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%12> = load ir<%11>
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%13>, ir<%14>
-; CHECK: Cost for VF 2: 47 (Estimated cost per lane: 23.
-; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK: Cost for VF 4: 50 (Estimated cost per lane: 12.
-; CHECK: Cost of 7 for VF 8: INTERLEAVE-GROUP with factor 2, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK: Cost of 7 for VF 8: INTERLEAVE-GROUP with factor 2, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK: Cost for VF 8: 30 (Estimated cost per lane: 3.
-; CHECK: Cost of 6 for VF 16: INTERLEAVE-GROUP with factor 2, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK: Cost of 6 for VF 16: INTERLEAVE-GROUP with factor 2, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK: Cost for VF 16: 27 (Estimated cost per lane: 1.
-; CHECK: LV: Selecting VF: 16.
define hidden void @two_bytes_vary_op(ptr noalias nocapture noundef writeonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'two_bytes_vary_op'
+; CHECK: LV: Scalar loop costs: 12.
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%12> = load ir<%11>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%13>, ir<%14>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%16> = load ir<%15>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%18> = load ir<%17>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%19>, ir<%20>
+; CHECK: Cost for VF 2: 47 (Estimated cost per lane: 24)
+; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: Cost for VF 4: 50 (Estimated cost per lane: 12)
+; CHECK: Cost of 7 for VF 8: INTERLEAVE-GROUP with factor 2, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: Cost of 7 for VF 8: INTERLEAVE-GROUP with factor 2, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: Cost of 7 for VF 8: INTERLEAVE-GROUP with factor 2, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: Cost for VF 8: 30 (Estimated cost per lane: 4)
+; CHECK: Cost of 6 for VF 16: INTERLEAVE-GROUP with factor 2, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: Cost of 6 for VF 16: INTERLEAVE-GROUP with factor 2, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: Cost of 6 for VF 16: INTERLEAVE-GROUP with factor 2, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: Cost for VF 16: 27 (Estimated cost per lane: 2)
+; CHECK: LV: Selecting VF: 16.
+;
%5 = icmp eq i32 %3, 0
br i1 %5, label %6, label %7
@@ -645,26 +797,51 @@ define hidden void @two_bytes_vary_op(ptr noalias nocapture noundef writeonly %0
br i1 %22, label %6, label %7
}
-; CHECK-LABEL: three_bytes_same_op
-; CHECK: LV: Scalar loop costs: 16.
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%12> = load ir<%11>
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%13>, ir<%14>
-; CHECK: Cost for VF 2: 61 (Estimated cost per lane: 30.
-; CHECK: Cost of 12 for VF 4: REPLICATE ir<%10> = load ir<%9>
-; CHECK: Cost of 12 for VF 4: REPLICATE ir<%12> = load ir<%11>
-; CHECK: Cost of 12 for VF 4: REPLICATE store ir<%13>, ir<%14>
-; CHECK: Cost for VF 4: 115 (Estimated cost per lane: 28.
-; CHECK: Cost of 24 for VF 8: REPLICATE ir<%10> = load ir<%9>
-; CHECK: Cost of 24 for VF 8: REPLICATE ir<%12> = load ir<%11>
-; CHECK: Cost of 24 for VF 8: REPLICATE store ir<%13>, ir<%14>
-; CHECK: Cost for VF 8: 223 (Estimated cost per lane: 27.
-; CHECK: Cost of 48 for VF 16: REPLICATE ir<%10> = load ir<%9>
-; CHECK: Cost of 48 for VF 16: REPLICATE ir<%12> = load ir<%11>
-; CHECK: Cost of 48 for VF 16: REPLICATE store ir<%13>, ir<%14>
-; CHECK: Cost for VF 16: 439 (Estimated cost per lane: 27.
-; CHECK: LV: Selecting VF: 1.
define hidden void @three_bytes_same_op(ptr noalias nocapture noundef writeonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'three_bytes_same_op'
+; CHECK: LV: Scalar loop costs: 16.
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%12> = load ir<%11>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%13>, ir<%14>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%16> = load ir<%15>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%18> = load ir<%17>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%19>, ir<%20>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%22> = load ir<%21>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%24> = load ir<%23>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%25>, ir<%26>
+; CHECK: Cost for VF 2: 61 (Estimated cost per lane: 30)
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%10> = load ir<%9>
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%12> = load ir<%11>
+; CHECK: Cost of 12 for VF 4: REPLICATE store ir<%13>, ir<%14>
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%16> = load ir<%15>
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%18> = load ir<%17>
+; CHECK: Cost of 12 for VF 4: REPLICATE store ir<%19>, ir<%20>
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%22> = load ir<%21>
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%24> = load ir<%23>
+; CHECK: Cost of 12 for VF 4: REPLICATE store ir<%25>, ir<%26>
+; CHECK: Cost for VF 4: 115 (Estimated cost per lane: 29)
+; CHECK: Cost of 24 for VF 8: REPLICATE ir<%10> = load ir<%9>
+; CHECK: Cost of 24 for VF 8: REPLICATE ir<%12> = load ir<%11>
+; CHECK: Cost of 24 for VF 8: REPLICATE store ir<%13>, ir<%14>
+; CHECK: Cost of 24 for VF 8: REPLICATE ir<%16> = load ir<%15>
+; CHECK: Cost of 24 for VF 8: REPLICATE ir<%18> = load ir<%17>
+; CHECK: Cost of 24 for VF 8: REPLICATE store ir<%19>, ir<%20>
+; CHECK: Cost of 24 for VF 8: REPLICATE ir<%22> = load ir<%21>
+; CHECK: Cost of 24 for VF 8: REPLICATE ir<%24> = load ir<%23>
+; CHECK: Cost of 24 for VF 8: REPLICATE store ir<%25>, ir<%26>
+; CHECK: Cost for VF 8: 223 (Estimated cost per lane: 28)
+; CHECK: Cost of 48 for VF 16: REPLICATE ir<%10> = load ir<%9>
+; CHECK: Cost of 48 for VF 16: REPLICATE ir<%12> = load ir<%11>
+; CHECK: Cost of 48 for VF 16: REPLICATE store ir<%13>, ir<%14>
+; CHECK: Cost of 48 for VF 16: REPLICATE ir<%16> = load ir<%15>
+; CHECK: Cost of 48 for VF 16: REPLICATE ir<%18> = load ir<%17>
+; CHECK: Cost of 48 for VF 16: REPLICATE store ir<%19>, ir<%20>
+; CHECK: Cost of 48 for VF 16: REPLICATE ir<%22> = load ir<%21>
+; CHECK: Cost of 48 for VF 16: REPLICATE ir<%24> = load ir<%23>
+; CHECK: Cost of 48 for VF 16: REPLICATE store ir<%25>, ir<%26>
+; CHECK: Cost for VF 16: 439 (Estimated cost per lane: 27)
+; CHECK: LV: Selecting VF: 1.
+;
%5 = icmp eq i32 %3, 0
br i1 %5, label %6, label %7
@@ -699,26 +876,51 @@ define hidden void @three_bytes_same_op(ptr noalias nocapture noundef writeonly
br i1 %28, label %6, label %7
}
-; CHECK-LABEL: three_bytes_interleave_op
-; CHECK: LV: Scalar loop costs: 16.
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%12> = load ir<%11>
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%13>, ir<%14>
-; CHECK: Cost for VF 2: 61 (Estimated cost per lane: 30.
-; CHECK: Cost of 12 for VF 4: REPLICATE ir<%10> = load ir<%9>
-; CHECK: Cost of 12 for VF 4: REPLICATE ir<%12> = load ir<%11>
-; CHECK: Cost of 12 for VF 4: REPLICATE store ir<%13>, ir<%14>
-; CHECK: Cost for VF 4: 115 (Estimated cost per lane: 28.
-; CHECK: Cost of 24 for VF 8: REPLICATE ir<%10> = load ir<%9>
-; CHECK: Cost of 24 for VF 8: REPLICATE ir<%12> = load ir<%11>
-; CHECK: Cost of 24 for VF 8: REPLICATE store ir<%13>, ir<%14>
-; CHECK: Cost for VF 8: 223 (Estimated cost per lane: 27.
-; CHECK: Cost of 48 for VF 16: REPLICATE ir<%10> = load ir<%9>
-; CHECK: Cost of 48 for VF 16: REPLICATE ir<%12> = load ir<%11>
-; CHECK: Cost of 48 for VF 16: REPLICATE store ir<%13>, ir<%14>
-; CHECK: Cost for VF 16: 439 (Estimated cost per lane: 27.
-; CHECK: LV: Selecting VF: 1.
define hidden void @three_bytes_interleave_op(ptr noalias nocapture noundef writeonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'three_bytes_interleave_op'
+; CHECK: LV: Scalar loop costs: 16.
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%12> = load ir<%11>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%13>, ir<%14>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%16> = load ir<%15>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%18> = load ir<%17>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%19>, ir<%20>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%22> = load ir<%21>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%24> = load ir<%23>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%25>, ir<%26>
+; CHECK: Cost for VF 2: 61 (Estimated cost per lane: 30)
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%10> = load ir<%9>
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%12> = load ir<%11>
+; CHECK: Cost of 12 for VF 4: REPLICATE store ir<%13>, ir<%14>
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%16> = load ir<%15>
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%18> = load ir<%17>
+; CHECK: Cost of 12 for VF 4: REPLICATE store ir<%19>, ir<%20>
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%22> = load ir<%21>
+; CHECK: Cost of 12 for VF 4: REPLICATE ir<%24> = load ir<%23>
+; CHECK: Cost of 12 for VF 4: REPLICATE store ir<%25>, ir<%26>
+; CHECK: Cost for VF 4: 115 (Estimated cost per lane: 29)
+; CHECK: Cost of 24 for VF 8: REPLICATE ir<%10> = load ir<%9>
+; CHECK: Cost of 24 for VF 8: REPLICATE ir<%12> = load ir<%11>
+; CHECK: Cost of 24 for VF 8: REPLICATE store ir<%13>, ir<%14>
+; CHECK: Cost of 24 for VF 8: REPLICATE ir<%16> = load ir<%15>
+; CHECK: Cost of 24 for VF 8: REPLICATE ir<%18> = load ir<%17>
+; CHECK: Cost of 24 for VF 8: REPLICATE store ir<%19>, ir<%20>
+; CHECK: Cost of 24 for VF 8: REPLICATE ir<%22> = load ir<%21>
+; CHECK: Cost of 24 for VF 8: REPLICATE ir<%24> = load ir<%23>
+; CHECK: Cost of 24 for VF 8: REPLICATE store ir<%25>, ir<%26>
+; CHECK: Cost for VF 8: 223 (Estimated cost per lane: 28)
+; CHECK: Cost of 48 for VF 16: REPLICATE ir<%10> = load ir<%9>
+; CHECK: Cost of 48 for VF 16: REPLICATE ir<%12> = load ir<%11>
+; CHECK: Cost of 48 for VF 16: REPLICATE store ir<%13>, ir<%14>
+; CHECK: Cost of 48 for VF 16: REPLICATE ir<%16> = load ir<%15>
+; CHECK: Cost of 48 for VF 16: REPLICATE ir<%18> = load ir<%17>
+; CHECK: Cost of 48 for VF 16: REPLICATE store ir<%19>, ir<%20>
+; CHECK: Cost of 48 for VF 16: REPLICATE ir<%22> = load ir<%21>
+; CHECK: Cost of 48 for VF 16: REPLICATE ir<%24> = load ir<%23>
+; CHECK: Cost of 48 for VF 16: REPLICATE store ir<%25>, ir<%26>
+; CHECK: Cost for VF 16: 439 (Estimated cost per lane: 27)
+; CHECK: LV: Selecting VF: 1.
+;
%5 = icmp eq i32 %3, 0
br i1 %5, label %6, label %7
@@ -753,47 +955,72 @@ define hidden void @three_bytes_interleave_op(ptr noalias nocapture noundef writ
br i1 %28, label %6, label %7
}
-; CHECK-LABEL: four_bytes_same_op
-; CHECK: LV: Scalar loop costs: 20.
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%12> = load ir<%11>
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%13>, ir<%14>
-; CHECK: Cost for VF 2: 80 (Estimated cost per lane: 40.
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK: Cost for VF 4: 62 (Estimated cost per lane: 15.
-; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK: Cost for VF 8: 86 (Estimated cost per lane: 10.
-; CHECK: Cost of 132 for VF 16: INTERLEAVE-GROUP with factor 4, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK: Cost of 132 for VF 16: INTERLEAVE-GROUP with factor 4, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK: Cost for VF 16: 404 (Estimated cost per lane: 25.
-; CHECK: LV: Selecting VF: 8.
define hidden void @four_bytes_same_op(ptr noalias nocapture noundef writeonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'four_bytes_same_op'
+; CHECK: LV: Scalar loop costs: 20.
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%12> = load ir<%11>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%13>, ir<%14>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%16> = load ir<%15>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%18> = load ir<%17>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%19>, ir<%20>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%22> = load ir<%21>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%24> = load ir<%23>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%25>, ir<%26>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%28> = load ir<%27>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%30> = load ir<%29>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%31>, ir<%32>
+; CHECK: Cost for VF 2: 80 (Estimated cost per lane: 40)
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: Cost for VF 4: 62 (Estimated cost per lane: 16)
+; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: Cost for VF 8: 86 (Estimated cost per lane: 11)
+; CHECK: Cost of 132 for VF 16: INTERLEAVE-GROUP with factor 4, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: Cost of 132 for VF 16: INTERLEAVE-GROUP with factor 4, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: Cost of 132 for VF 16: INTERLEAVE-GROUP with factor 4, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: Cost for VF 16: 404 (Estimated cost per lane: 25)
+; CHECK: LV: Selecting VF: 8.
+;
%5 = icmp eq i32 %3, 0
br i1 %5, label %6, label %7
@@ -835,47 +1062,72 @@ define hidden void @four_bytes_same_op(ptr noalias nocapture noundef writeonly %
br i1 %34, label %6, label %7
}
-; CHECK-LABEL: four_bytes_split_op
-; CHECK: LV: Scalar loop costs: 20.
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%12> = load ir<%11>
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%13>, ir<%14>
-; CHECK: Cost for VF 2: 90 (Estimated cost per lane: 45.
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK: Cost for VF 4: 84 (Estimated cost per lane: 21.
-; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK: Cost for VF 8: 92 (Estimated cost per lane: 11.
-; CHECK: Cost of 132 for VF 16: INTERLEAVE-GROUP with factor 4, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK: Cost of 132 for VF 16: INTERLEAVE-GROUP with factor 4, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK: Cost for VF 16: 410 (Estimated cost per lane: 25.
-; CHECK: LV: Selecting VF: 8.
define hidden void @four_bytes_split_op(ptr noalias nocapture noundef writeonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'four_bytes_split_op'
+; CHECK: LV: Scalar loop costs: 20.
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%12> = load ir<%11>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%13>, ir<%14>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%16> = load ir<%15>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%18> = load ir<%17>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%19>, ir<%20>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%22> = load ir<%21>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%24> = load ir<%23>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%25>, ir<%26>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%28> = load ir<%27>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%30> = load ir<%29>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%31>, ir<%32>
+; CHECK: Cost for VF 2: 90 (Estimated cost per lane: 45)
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: Cost for VF 4: 84 (Estimated cost per lane: 21)
+; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: Cost for VF 8: 92 (Estimated cost per lane: 12)
+; CHECK: Cost of 132 for VF 16: INTERLEAVE-GROUP with factor 4, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: Cost of 132 for VF 16: INTERLEAVE-GROUP with factor 4, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: Cost of 132 for VF 16: INTERLEAVE-GROUP with factor 4, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: Cost for VF 16: 410 (Estimated cost per lane: 26)
+; CHECK: LV: Selecting VF: 8.
+;
%5 = icmp eq i32 %3, 0
br i1 %5, label %6, label %7
@@ -917,48 +1169,72 @@ define hidden void @four_bytes_split_op(ptr noalias nocapture noundef writeonly
br i1 %34, label %6, label %7
}
-
-; CHECK-LABEL: four_bytes_interleave_op
-; CHECK: LV: Scalar loop costs: 20.
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%12> = load ir<%11>
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%13>, ir<%14>
-; CHECK: Cost for VF 2: 80 (Estimated cost per lane: 40.
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK: Cost for VF 4: 62 (Estimated cost per lane: 15.
-; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK: Cost for VF 8: 86 (Estimated cost per lane: 10.
-; CHECK: Cost of 132 for VF 16: INTERLEAVE-GROUP with factor 4, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK: Cost of 132 for VF 16: INTERLEAVE-GROUP with factor 4, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK: Cost for VF 16: 404 (Estimated cost per lane: 25.
-; CHECK: LV: Selecting VF: 8.
define hidden void @four_bytes_interleave_op(ptr noalias nocapture noundef writeonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'four_bytes_interleave_op'
+; CHECK: LV: Scalar loop costs: 20.
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%12> = load ir<%11>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%13>, ir<%14>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%16> = load ir<%15>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%18> = load ir<%17>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%19>, ir<%20>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%22> = load ir<%21>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%24> = load ir<%23>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%25>, ir<%26>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%28> = load ir<%27>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%30> = load ir<%29>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%31>, ir<%32>
+; CHECK: Cost for VF 2: 80 (Estimated cost per lane: 40)
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: Cost for VF 4: 62 (Estimated cost per lane: 16)
+; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: Cost for VF 8: 86 (Estimated cost per lane: 11)
+; CHECK: Cost of 132 for VF 16: INTERLEAVE-GROUP with factor 4, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: Cost of 132 for VF 16: INTERLEAVE-GROUP with factor 4, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: Cost of 132 for VF 16: INTERLEAVE-GROUP with factor 4, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: Cost for VF 16: 404 (Estimated cost per lane: 25)
+; CHECK: LV: Selecting VF: 8.
+;
%5 = icmp eq i32 %3, 0
br i1 %5, label %6, label %7
@@ -1000,87 +1276,123 @@ define hidden void @four_bytes_interleave_op(ptr noalias nocapture noundef write
br i1 %34, label %6, label %7
}
-
-; CHECK-LABEL: eight_bytes_same_op
-; CHECK: LV: Scalar loop costs: 36.
-; CHECK: Cost of 34 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK-NEXT: ir<%34> = load from index 4
-; CHECK-NEXT: ir<%40> = load from index 5
-; CHECK-NEXT: ir<%46> = load from index 6
-; CHECK-NEXT: ir<%52> = load from index 7
-; CHECK: Cost of 34 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK-NEXT: store ir<%37> to index 4
-; CHECK-NEXT: store ir<%43> to index 5
-; CHECK-NEXT: store ir<%49> to index 6
-; CHECK-NEXT: store ir<%55> to index 7
-; CHECK: Cost for VF 2: 154 (Estimated cost per lane: 77.
-; CHECK: Cost of 66 for VF 4: INTERLEAVE-GROUP with factor 8, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK-NEXT: ir<%34> = load from index 4
-; CHECK-NEXT: ir<%40> = load from index 5
-; CHECK-NEXT: ir<%46> = load from index 6
-; CHECK-NEXT: ir<%52> = load from index 7
-; CHECK: Cost of 66 for VF 4: INTERLEAVE-GROUP with factor 8, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK-NEXT: store ir<%37> to index 4
-; CHECK-NEXT: store ir<%43> to index 5
-; CHECK-NEXT: store ir<%49> to index 6
-; CHECK-NEXT: store ir<%55> to index 7
-; CHECK: Cost for VF 4: 298 (Estimated cost per lane: 74.
-; CHECK: Cost of 132 for VF 8: INTERLEAVE-GROUP with factor 8, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK-NEXT: ir<%34> = load from index 4
-; CHECK-NEXT: ir<%40> = load from index 5
-; CHECK-NEXT: ir<%46> = load from index 6
-; CHECK-NEXT: ir<%52> = load from index 7
-; CHECK: Cost of 132 for VF 8: INTERLEAVE-GROUP with factor 8, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK-NEXT: store ir<%37> to index 4
-; CHECK-NEXT: store ir<%43> to index 5
-; CHECK-NEXT: store ir<%49> to index 6
-; CHECK-NEXT: store ir<%55> to index 7
-; CHECK: Cost for VF 8: 432 (Estimated cost per lane: 54.
-; CHECK: Cost of 264 for VF 16: INTERLEAVE-GROUP with factor 8, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK-NEXT: ir<%34> = load from index 4
-; CHECK-NEXT: ir<%40> = load from index 5
-; CHECK-NEXT: ir<%46> = load from index 6
-; CHECK-NEXT: ir<%52> = load from index 7
-; CHECK: Cost of 264 for VF 16: INTERLEAVE-GROUP with factor 8, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK-NEXT: store ir<%37> to index 4
-; CHECK-NEXT: store ir<%43> to index 5
-; CHECK-NEXT: store ir<%49> to index 6
-; CHECK-NEXT: store ir<%55> to index 7
-; CHECK: Cost for VF 16: 828 (Estimated cost per lane: 51.
-; CHECK: LV: Selecting VF: 1.
define hidden void @eight_bytes_same_op(ptr noalias nocapture noundef writeonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'eight_bytes_same_op'
+; CHECK: LV: Scalar loop costs: 36.
+; CHECK: Cost of 34 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: ir<%34> = load from index 4
+; CHECK: ir<%40> = load from index 5
+; CHECK: ir<%46> = load from index 6
+; CHECK: ir<%52> = load from index 7
+; CHECK: Cost of 34 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: ir<%36> = load from index 4
+; CHECK: ir<%42> = load from index 5
+; CHECK: ir<%48> = load from index 6
+; CHECK: ir<%54> = load from index 7
+; CHECK: Cost of 34 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: store ir<%37> to index 4
+; CHECK: store ir<%43> to index 5
+; CHECK: store ir<%49> to index 6
+; CHECK: store ir<%55> to index 7
+; CHECK: Cost for VF 2: 154 (Estimated cost per lane: 77)
+; CHECK: Cost of 66 for VF 4: INTERLEAVE-GROUP with factor 8, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: ir<%34> = load from index 4
+; CHECK: ir<%40> = load from index 5
+; CHECK: ir<%46> = load from index 6
+; CHECK: ir<%52> = load from index 7
+; CHECK: Cost of 66 for VF 4: INTERLEAVE-GROUP with factor 8, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: ir<%36> = load from index 4
+; CHECK: ir<%42> = load from index 5
+; CHECK: ir<%48> = load from index 6
+; CHECK: ir<%54> = load from index 7
+; CHECK: Cost of 66 for VF 4: INTERLEAVE-GROUP with factor 8, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: store ir<%37> to index 4
+; CHECK: store ir<%43> to index 5
+; CHECK: store ir<%49> to index 6
+; CHECK: store ir<%55> to index 7
+; CHECK: Cost for VF 4: 298 (Estimated cost per lane: 74)
+; CHECK: Cost of 132 for VF 8: INTERLEAVE-GROUP with factor 8, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: ir<%34> = load from index 4
+; CHECK: ir<%40> = load from index 5
+; CHECK: ir<%46> = load from index 6
+; CHECK: ir<%52> = load from index 7
+; CHECK: Cost of 132 for VF 8: INTERLEAVE-GROUP with factor 8, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: ir<%36> = load from index 4
+; CHECK: ir<%42> = load from index 5
+; CHECK: ir<%48> = load from index 6
+; CHECK: ir<%54> = load from index 7
+; CHECK: Cost of 132 for VF 8: INTERLEAVE-GROUP with factor 8, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: store ir<%37> to index 4
+; CHECK: store ir<%43> to index 5
+; CHECK: store ir<%49> to index 6
+; CHECK: store ir<%55> to index 7
+; CHECK: Cost for VF 8: 432 (Estimated cost per lane: 54)
+; CHECK: Cost of 264 for VF 16: INTERLEAVE-GROUP with factor 8, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: ir<%34> = load from index 4
+; CHECK: ir<%40> = load from index 5
+; CHECK: ir<%46> = load from index 6
+; CHECK: ir<%52> = load from index 7
+; CHECK: Cost of 264 for VF 16: INTERLEAVE-GROUP with factor 8, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: ir<%36> = load from index 4
+; CHECK: ir<%42> = load from index 5
+; CHECK: ir<%48> = load from index 6
+; CHECK: ir<%54> = load from index 7
+; CHECK: Cost of 264 for VF 16: INTERLEAVE-GROUP with factor 8, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: store ir<%37> to index 4
+; CHECK: store ir<%43> to index 5
+; CHECK: store ir<%49> to index 6
+; CHECK: store ir<%55> to index 7
+; CHECK: Cost for VF 16: 828 (Estimated cost per lane: 52)
+; CHECK: LV: Selecting VF: 1.
+;
%5 = icmp eq i32 %3, 0
br i1 %5, label %6, label %7
@@ -1150,86 +1462,123 @@ define hidden void @eight_bytes_same_op(ptr noalias nocapture noundef writeonly
br i1 %58, label %6, label %7
}
-; CHECK-LABEL: eight_bytes_split_op
-; CHECK: LV: Scalar loop costs: 36.
-; CHECK: Cost of 34 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK-NEXT: ir<%34> = load from index 4
-; CHECK-NEXT: ir<%40> = load from index 5
-; CHECK-NEXT: ir<%46> = load from index 6
-; CHECK-NEXT: ir<%52> = load from index 7
-; CHECK: Cost of 34 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK-NEXT: store ir<%37> to index 4
-; CHECK-NEXT: store ir<%43> to index 5
-; CHECK-NEXT: store ir<%49> to index 6
-; CHECK-NEXT: store ir<%55> to index 7
-; CHECK: Cost for VF 2: 114 (Estimated cost per lane: 57.
-; CHECK: Cost of 66 for VF 4: INTERLEAVE-GROUP with factor 8, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK-NEXT: ir<%34> = load from index 4
-; CHECK-NEXT: ir<%40> = load from index 5
-; CHECK-NEXT: ir<%46> = load from index 6
-; CHECK-NEXT: ir<%52> = load from index 7
-; CHECK: Cost of 66 for VF 4: INTERLEAVE-GROUP with factor 8, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK-NEXT: store ir<%37> to index 4
-; CHECK-NEXT: store ir<%43> to index 5
-; CHECK-NEXT: store ir<%49> to index 6
-; CHECK-NEXT: store ir<%55> to index 7
-; CHECK: Cost for VF 4: 210 (Estimated cost per lane: 52.
-; CHECK: Cost of 132 for VF 8: INTERLEAVE-GROUP with factor 8, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK-NEXT: ir<%34> = load from index 4
-; CHECK-NEXT: ir<%40> = load from index 5
-; CHECK-NEXT: ir<%46> = load from index 6
-; CHECK-NEXT: ir<%52> = load from index 7
-; CHECK: Cost of 132 for VF 8: INTERLEAVE-GROUP with factor 8, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK-NEXT: store ir<%37> to index 4
-; CHECK-NEXT: store ir<%43> to index 5
-; CHECK-NEXT: store ir<%49> to index 6
-; CHECK-NEXT: store ir<%55> to index 7
-; CHECK: Cost for VF 8: 408 (Estimated cost per lane: 51.
-; CHECK: Cost of 264 for VF 16: INTERLEAVE-GROUP with factor 8, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK-NEXT: ir<%34> = load from index 4
-; CHECK-NEXT: ir<%40> = load from index 5
-; CHECK-NEXT: ir<%46> = load from index 6
-; CHECK-NEXT: ir<%52> = load from index 7
-; CHECK: Cost of 264 for VF 16: INTERLEAVE-GROUP with factor 8, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK-NEXT: store ir<%37> to index 4
-; CHECK-NEXT: store ir<%43> to index 5
-; CHECK-NEXT: store ir<%49> to index 6
-; CHECK-NEXT: store ir<%55> to index 7
-; CHECK: Cost for VF 16: 804 (Estimated cost per lane: 50.
-; CHECK: LV: Selecting VF: 1.
define hidden void @eight_bytes_split_op(ptr noalias nocapture noundef writeonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'eight_bytes_split_op'
+; CHECK: LV: Scalar loop costs: 36.
+; CHECK: Cost of 34 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: ir<%34> = load from index 4
+; CHECK: ir<%40> = load from index 5
+; CHECK: ir<%46> = load from index 6
+; CHECK: ir<%52> = load from index 7
+; CHECK: Cost of 34 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: ir<%36> = load from index 4
+; CHECK: ir<%42> = load from index 5
+; CHECK: ir<%48> = load from index 6
+; CHECK: ir<%54> = load from index 7
+; CHECK: Cost of 34 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: store ir<%37> to index 4
+; CHECK: store ir<%43> to index 5
+; CHECK: store ir<%49> to index 6
+; CHECK: store ir<%55> to index 7
+; CHECK: Cost for VF 2: 114 (Estimated cost per lane: 57)
+; CHECK: Cost of 66 for VF 4: INTERLEAVE-GROUP with factor 8, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: ir<%34> = load from index 4
+; CHECK: ir<%40> = load from index 5
+; CHECK: ir<%46> = load from index 6
+; CHECK: ir<%52> = load from index 7
+; CHECK: Cost of 66 for VF 4: INTERLEAVE-GROUP with factor 8, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: ir<%36> = load from index 4
+; CHECK: ir<%42> = load from index 5
+; CHECK: ir<%48> = load from index 6
+; CHECK: ir<%54> = load from index 7
+; CHECK: Cost of 66 for VF 4: INTERLEAVE-GROUP with factor 8, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: store ir<%37> to index 4
+; CHECK: store ir<%43> to index 5
+; CHECK: store ir<%49> to index 6
+; CHECK: store ir<%55> to index 7
+; CHECK: Cost for VF 4: 210 (Estimated cost per lane: 52)
+; CHECK: Cost of 132 for VF 8: INTERLEAVE-GROUP with factor 8, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: ir<%34> = load from index 4
+; CHECK: ir<%40> = load from index 5
+; CHECK: ir<%46> = load from index 6
+; CHECK: ir<%52> = load from index 7
+; CHECK: Cost of 132 for VF 8: INTERLEAVE-GROUP with factor 8, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: ir<%36> = load from index 4
+; CHECK: ir<%42> = load from index 5
+; CHECK: ir<%48> = load from index 6
+; CHECK: ir<%54> = load from index 7
+; CHECK: Cost of 132 for VF 8: INTERLEAVE-GROUP with factor 8, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: store ir<%37> to index 4
+; CHECK: store ir<%43> to index 5
+; CHECK: store ir<%49> to index 6
+; CHECK: store ir<%55> to index 7
+; CHECK: Cost for VF 8: 408 (Estimated cost per lane: 51)
+; CHECK: Cost of 264 for VF 16: INTERLEAVE-GROUP with factor 8, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: ir<%34> = load from index 4
+; CHECK: ir<%40> = load from index 5
+; CHECK: ir<%46> = load from index 6
+; CHECK: ir<%52> = load from index 7
+; CHECK: Cost of 264 for VF 16: INTERLEAVE-GROUP with factor 8, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: ir<%36> = load from index 4
+; CHECK: ir<%42> = load from index 5
+; CHECK: ir<%48> = load from index 6
+; CHECK: ir<%54> = load from index 7
+; CHECK: Cost of 264 for VF 16: INTERLEAVE-GROUP with factor 8, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: store ir<%37> to index 4
+; CHECK: store ir<%43> to index 5
+; CHECK: store ir<%49> to index 6
+; CHECK: store ir<%55> to index 7
+; CHECK: Cost for VF 16: 804 (Estimated cost per lane: 50)
+; CHECK: LV: Selecting VF: 1.
+;
%5 = icmp eq i32 %3, 0
br i1 %5, label %6, label %7
@@ -1299,86 +1648,123 @@ define hidden void @eight_bytes_split_op(ptr noalias nocapture noundef writeonly
br i1 %58, label %6, label %7
}
-; CHECK-LABEL: eight_bytes_interleave_op
-; CHECK: LV: Scalar loop costs: 36.
-; CHECK: Cost of 34 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK-NEXT: ir<%34> = load from index 4
-; CHECK-NEXT: ir<%40> = load from index 5
-; CHECK-NEXT: ir<%46> = load from index 6
-; CHECK-NEXT: ir<%52> = load from index 7
-; CHECK: Cost of 34 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK-NEXT: store ir<%37> to index 4
-; CHECK-NEXT: store ir<%43> to index 5
-; CHECK-NEXT: store ir<%49> to index 6
-; CHECK-NEXT: store ir<%55> to index 7
-; CHECK: Cost for VF 2: 114 (Estimated cost per lane: 57.
-; CHECK: Cost of 66 for VF 4: INTERLEAVE-GROUP with factor 8, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK-NEXT: ir<%34> = load from index 4
-; CHECK-NEXT: ir<%40> = load from index 5
-; CHECK-NEXT: ir<%46> = load from index 6
-; CHECK-NEXT: ir<%52> = load from index 7
-; CHECK: Cost of 66 for VF 4: INTERLEAVE-GROUP with factor 8, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK-NEXT: store ir<%37> to index 4
-; CHECK-NEXT: store ir<%43> to index 5
-; CHECK-NEXT: store ir<%49> to index 6
-; CHECK-NEXT: store ir<%55> to index 7
-; CHECK: Cost for VF 4: 210 (Estimated cost per lane: 52.
-; CHECK: Cost of 132 for VF 8: INTERLEAVE-GROUP with factor 8, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK-NEXT: ir<%34> = load from index 4
-; CHECK-NEXT: ir<%40> = load from index 5
-; CHECK-NEXT: ir<%46> = load from index 6
-; CHECK-NEXT: ir<%52> = load from index 7
-; CHECK: Cost of 132 for VF 8: INTERLEAVE-GROUP with factor 8, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK-NEXT: store ir<%37> to index 4
-; CHECK-NEXT: store ir<%43> to index 5
-; CHECK-NEXT: store ir<%49> to index 6
-; CHECK-NEXT: store ir<%55> to index 7
-; CHECK: Cost for VF 8: 408 (Estimated cost per lane: 51.
-; CHECK: Cost of 264 for VF 16: INTERLEAVE-GROUP with factor 8, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%16> = load from index 1
-; CHECK-NEXT: ir<%22> = load from index 2
-; CHECK-NEXT: ir<%28> = load from index 3
-; CHECK-NEXT: ir<%34> = load from index 4
-; CHECK-NEXT: ir<%40> = load from index 5
-; CHECK-NEXT: ir<%46> = load from index 6
-; CHECK-NEXT: ir<%52> = load from index 7
-; CHECK: Cost of 264 for VF 16: INTERLEAVE-GROUP with factor 8, ir<%14>
-; CHECK-NEXT: store ir<%13> to index 0
-; CHECK-NEXT: store ir<%19> to index 1
-; CHECK-NEXT: store ir<%25> to index 2
-; CHECK-NEXT: store ir<%31> to index 3
-; CHECK-NEXT: store ir<%37> to index 4
-; CHECK-NEXT: store ir<%43> to index 5
-; CHECK-NEXT: store ir<%49> to index 6
-; CHECK-NEXT: store ir<%55> to index 7
-; CHECK: Cost for VF 16: 804 (Estimated cost per lane: 50.
-; CHECK: LV: Selecting VF: 1.
define hidden void @eight_bytes_interleave_op(ptr noalias nocapture noundef writeonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'eight_bytes_interleave_op'
+; CHECK: LV: Scalar loop costs: 36.
+; CHECK: Cost of 34 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: ir<%34> = load from index 4
+; CHECK: ir<%40> = load from index 5
+; CHECK: ir<%46> = load from index 6
+; CHECK: ir<%52> = load from index 7
+; CHECK: Cost of 34 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: ir<%36> = load from index 4
+; CHECK: ir<%42> = load from index 5
+; CHECK: ir<%48> = load from index 6
+; CHECK: ir<%54> = load from index 7
+; CHECK: Cost of 34 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: store ir<%37> to index 4
+; CHECK: store ir<%43> to index 5
+; CHECK: store ir<%49> to index 6
+; CHECK: store ir<%55> to index 7
+; CHECK: Cost for VF 2: 114 (Estimated cost per lane: 57)
+; CHECK: Cost of 66 for VF 4: INTERLEAVE-GROUP with factor 8, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: ir<%34> = load from index 4
+; CHECK: ir<%40> = load from index 5
+; CHECK: ir<%46> = load from index 6
+; CHECK: ir<%52> = load from index 7
+; CHECK: Cost of 66 for VF 4: INTERLEAVE-GROUP with factor 8, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: ir<%36> = load from index 4
+; CHECK: ir<%42> = load from index 5
+; CHECK: ir<%48> = load from index 6
+; CHECK: ir<%54> = load from index 7
+; CHECK: Cost of 66 for VF 4: INTERLEAVE-GROUP with factor 8, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: store ir<%37> to index 4
+; CHECK: store ir<%43> to index 5
+; CHECK: store ir<%49> to index 6
+; CHECK: store ir<%55> to index 7
+; CHECK: Cost for VF 4: 210 (Estimated cost per lane: 52)
+; CHECK: Cost of 132 for VF 8: INTERLEAVE-GROUP with factor 8, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: ir<%34> = load from index 4
+; CHECK: ir<%40> = load from index 5
+; CHECK: ir<%46> = load from index 6
+; CHECK: ir<%52> = load from index 7
+; CHECK: Cost of 132 for VF 8: INTERLEAVE-GROUP with factor 8, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: ir<%36> = load from index 4
+; CHECK: ir<%42> = load from index 5
+; CHECK: ir<%48> = load from index 6
+; CHECK: ir<%54> = load from index 7
+; CHECK: Cost of 132 for VF 8: INTERLEAVE-GROUP with factor 8, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: store ir<%37> to index 4
+; CHECK: store ir<%43> to index 5
+; CHECK: store ir<%49> to index 6
+; CHECK: store ir<%55> to index 7
+; CHECK: Cost for VF 8: 408 (Estimated cost per lane: 51)
+; CHECK: Cost of 264 for VF 16: INTERLEAVE-GROUP with factor 8, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%16> = load from index 1
+; CHECK: ir<%22> = load from index 2
+; CHECK: ir<%28> = load from index 3
+; CHECK: ir<%34> = load from index 4
+; CHECK: ir<%40> = load from index 5
+; CHECK: ir<%46> = load from index 6
+; CHECK: ir<%52> = load from index 7
+; CHECK: Cost of 264 for VF 16: INTERLEAVE-GROUP with factor 8, ir<%11>
+; CHECK: ir<%12> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%24> = load from index 2
+; CHECK: ir<%30> = load from index 3
+; CHECK: ir<%36> = load from index 4
+; CHECK: ir<%42> = load from index 5
+; CHECK: ir<%48> = load from index 6
+; CHECK: ir<%54> = load from index 7
+; CHECK: Cost of 264 for VF 16: INTERLEAVE-GROUP with factor 8, ir<%14>
+; CHECK: store ir<%13> to index 0
+; CHECK: store ir<%19> to index 1
+; CHECK: store ir<%25> to index 2
+; CHECK: store ir<%31> to index 3
+; CHECK: store ir<%37> to index 4
+; CHECK: store ir<%43> to index 5
+; CHECK: store ir<%49> to index 6
+; CHECK: store ir<%55> to index 7
+; CHECK: Cost for VF 16: 804 (Estimated cost per lane: 50)
+; CHECK: LV: Selecting VF: 1.
+;
%5 = icmp eq i32 %3, 0
br i1 %5, label %6, label %7
@@ -1448,41 +1834,51 @@ define hidden void @eight_bytes_interleave_op(ptr noalias nocapture noundef writ
br i1 %58, label %6, label %7
}
-; CHECK-LABEL: four_bytes_into_four_ints_same_op
-; CHECK: LV: Scalar loop costs: 28.
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%13> = load ir<%12>
-; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%16>
-; CHECK-NEXT: ir<%17> = load from index 0
-; CHECK-NEXT: ir<%27> = load from index 1
-; CHECK-NEXT: ir<%37> = load from index 2
-; CHECK-NEXT: ir<%47> = load from index 3
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%20> = load ir<%19>
-; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%16>
-; CHECK-NEXT: store ir<%18> to index 0
-; CHECK-NEXT: store ir<%28> to index 1
-; CHECK-NEXT: store ir<%38> to index 2
-; CHECK-NEXT: store ir<%48> to index 3
-; CHECK: Cost for VF 2: 88 (Estimated cost per lane: 44.
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%20> = load from index 1
-; CHECK-NEXT: ir<%30> = load from index 2
-; CHECK-NEXT: ir<%40> = load from index 3
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%12>
-; CHECK: Cost of 24 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%16>
-; CHECK-NEXT: ir<%17> = load from index 0
-; CHECK-NEXT: ir<%27> = load from index 1
-; CHECK-NEXT: ir<%37> = load from index 2
-; CHECK-NEXT: ir<%47> = load from index 3
-; CHECK: Cost of 24 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%16>
-; CHECK-NEXT: store ir<%18> to index 0
-; CHECK-NEXT: store ir<%28> to index 1
-; CHECK-NEXT: store ir<%38> to index 2
-; CHECK-NEXT: store ir<%48> to index 3
-; CHECK: Cost for VF 4: 104 (Estimated cost per lane: 26.
-; CHECK: LV: Selecting VF: 4.
define hidden void @four_bytes_into_four_ints_same_op(ptr noalias nocapture noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'four_bytes_into_four_ints_same_op'
+; CHECK: LV: Scalar loop costs: 28.
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%13> = load ir<%12>
+; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%16>
+; CHECK: ir<%17> = load from index 0
+; CHECK: ir<%27> = load from index 1
+; CHECK: ir<%37> = load from index 2
+; CHECK: ir<%47> = load from index 3
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%20> = load ir<%19>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%23> = load ir<%22>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%30> = load ir<%29>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%33> = load ir<%32>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%40> = load ir<%39>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%43> = load ir<%42>
+; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%16>
+; CHECK: store ir<%18> to index 0
+; CHECK: store ir<%28> to index 1
+; CHECK: store ir<%38> to index 2
+; CHECK: store ir<%48> to index 3
+; CHECK: Cost for VF 2: 88 (Estimated cost per lane: 44)
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%20> = load from index 1
+; CHECK: ir<%30> = load from index 2
+; CHECK: ir<%40> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%12>
+; CHECK: ir<%13> = load from index 0
+; CHECK: ir<%23> = load from index 1
+; CHECK: ir<%33> = load from index 2
+; CHECK: ir<%43> = load from index 3
+; CHECK: Cost of 24 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%16>
+; CHECK: ir<%17> = load from index 0
+; CHECK: ir<%27> = load from index 1
+; CHECK: ir<%37> = load from index 2
+; CHECK: ir<%47> = load from index 3
+; CHECK: Cost of 24 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%16>
+; CHECK: store ir<%18> to index 0
+; CHECK: store ir<%28> to index 1
+; CHECK: store ir<%38> to index 2
+; CHECK: store ir<%48> to index 3
+; CHECK: Cost for VF 4: 104 (Estimated cost per lane: 26)
+; CHECK: LV: Selecting VF: 4.
+;
%5 = icmp eq i32 %3, 0
br i1 %5, label %6, label %7
@@ -1540,31 +1936,41 @@ define hidden void @four_bytes_into_four_ints_same_op(ptr noalias nocapture noun
br i1 %50, label %6, label %7
}
-; CHECK-LABEL: four_bytes_into_four_ints_vary_op
-; CHECK: LV: Scalar loop costs: 21.
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%13> = load ir<%12>
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%18> = load ir<%17>
-; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%16>
-; CHECK-NEXT: store ir<%15> to index 0
-; CHECK-NEXT: store ir<%23> to index 1
-; CHECK-NEXT: store ir<%31> to index 2
-; CHECK-NEXT: store ir<%38> to index 3
-; CHECK: Cost for VF 2: 71 (Estimated cost per lane: 35.
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%9>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%18> = load from index 1
-; CHECK-NEXT: ir<%26> = load from index 2
-; CHECK-NEXT: ir<%34> = load from index 3
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%12>
-; CHECK: Cost of 24 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%16>
-; CHECK-NEXT: store ir<%15> to index 0
-; CHECK-NEXT: store ir<%23> to index 1
-; CHECK-NEXT: store ir<%31> to index 2
-; CHECK-NEXT: store ir<%38> to index 3
-; CHECK: Cost for VF 4: 80 (Estimated cost per lane: 20.
-; CHECK: LV: Selecting VF: 4.
define hidden void @four_bytes_into_four_ints_vary_op(ptr noalias nocapture noundef writeonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'four_bytes_into_four_ints_vary_op'
+; CHECK: LV: Scalar loop costs: 21.
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load ir<%9>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%13> = load ir<%12>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%18> = load ir<%17>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%21> = load ir<%20>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%26> = load ir<%25>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%29> = load ir<%28>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%34> = load ir<%33>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%36> = load ir<%35>
+; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%16>
+; CHECK: store ir<%15> to index 0
+; CHECK: store ir<%23> to index 1
+; CHECK: store ir<%31> to index 2
+; CHECK: store ir<%38> to index 3
+; CHECK: Cost for VF 2: 71 (Estimated cost per lane: 36)
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%9>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%18> = load from index 1
+; CHECK: ir<%26> = load from index 2
+; CHECK: ir<%34> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%12>
+; CHECK: ir<%13> = load from index 0
+; CHECK: ir<%21> = load from index 1
+; CHECK: ir<%29> = load from index 2
+; CHECK: ir<%36> = load from index 3
+; CHECK: Cost of 24 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%16>
+; CHECK: store ir<%15> to index 0
+; CHECK: store ir<%23> to index 1
+; CHECK: store ir<%31> to index 2
+; CHECK: store ir<%38> to index 3
+; CHECK: Cost for VF 4: 80 (Estimated cost per lane: 20)
+; CHECK: LV: Selecting VF: 4.
+;
%5 = icmp eq i32 %3, 0
br i1 %5, label %6, label %7
@@ -1613,31 +2019,32 @@ define hidden void @four_bytes_into_four_ints_vary_op(ptr noalias nocapture noun
br i1 %41, label %6, label %7
}
-; CHECK-LABEL: scale_uv_row_down2
-; CHECK: LV: Scalar loop costs: 10.
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%10>
-; CHECK-NEXT: ir<%11> = load from index 0
-; CHECK-NEXT: ir<%13> = load from index 1
-; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2, vp<%next.gep>.1
-; CHECK-NEXT: store ir<%11> to index 0
-; CHECK-NEXT: store ir<%13> to index 1
-; CHECK: Cost for VF 4: 37 (Estimated cost per lane: 9.
-; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%10>
-; CHECK-NEXT: ir<%11> = load from index 0
-; CHECK-NEXT: ir<%13> = load from index 1
-; CHECK: Cost of 7 for VF 8: INTERLEAVE-GROUP with factor 2, vp<%next.gep>.1
-; CHECK-NEXT: store ir<%11> to index 0
-; CHECK-NEXT: store ir<%13> to index 1
-; CHECK: Cost for VF 8: 41 (Estimated cost per lane: 5.
-; CHECK: Cost of 68 for VF 16: INTERLEAVE-GROUP with factor 4, ir<%10>
-; CHECK-NEXT: ir<%11> = load from index 0
-; CHECK-NEXT: ir<%13> = load from index 1
-; CHECK: Cost of 6 for VF 16: INTERLEAVE-GROUP with factor 2, vp<%next.gep>.1
-; CHECK-NEXT: store ir<%11> to index 0
-; CHECK-NEXT: store ir<%13> to index 1
-; CHECK: Cost for VF 16: 82 (Estimated cost per lane: 5.
-; CHECK: LV: Selecting VF: 8.
define hidden void @scale_uv_row_down2(ptr nocapture noundef readonly %0, i32 noundef %1, ptr nocapture noundef writeonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'scale_uv_row_down2'
+; CHECK: LV: Scalar loop costs: 10.
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%10>
+; CHECK: ir<%11> = load from index 0
+; CHECK: ir<%13> = load from index 1
+; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2, vp<%next.gep>.1
+; CHECK: store ir<%11> to index 0
+; CHECK: store ir<%13> to index 1
+; CHECK: Cost for VF 4: 37 (Estimated cost per lane: 9)
+; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%10>
+; CHECK: ir<%11> = load from index 0
+; CHECK: ir<%13> = load from index 1
+; CHECK: Cost of 7 for VF 8: INTERLEAVE-GROUP with factor 2, vp<%next.gep>.1
+; CHECK: store ir<%11> to index 0
+; CHECK: store ir<%13> to index 1
+; CHECK: Cost for VF 8: 41 (Estimated cost per lane: 5)
+; CHECK: Cost of 68 for VF 16: INTERLEAVE-GROUP with factor 4, ir<%10>
+; CHECK: ir<%11> = load from index 0
+; CHECK: ir<%13> = load from index 1
+; CHECK: Cost of 6 for VF 16: INTERLEAVE-GROUP with factor 2, vp<%next.gep>.1
+; CHECK: store ir<%11> to index 0
+; CHECK: store ir<%13> to index 1
+; CHECK: Cost for VF 16: 82 (Estimated cost per lane: 5)
+; CHECK: LV: Selecting VF: 8.
+;
%5 = icmp sgt i32 %3, 0
br i1 %5, label %6, label %19
@@ -1662,45 +2069,64 @@ define hidden void @scale_uv_row_down2(ptr nocapture noundef readonly %0, i32 no
ret void
}
-; CHECK-LABEL: scale_uv_row_down2_box
-; CHECK: LV: Scalar loop costs: 26.
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%14> = load vp<%next.gep> (!alias.scope {{.*}})
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%17> = load ir<%16> (!alias.scope {{.*}})
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%20> = load ir<%19> (!alias.scope {{.*}})
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%48>, ir<%49>
-; CHECK: Cost for VF 2: 80 (Estimated cost per lane: 40.
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, vp<%next.gep>
-; CHECK-NEXT: ir<%14> = load from index 0
-; CHECK-NEXT: ir<%32> = load from index 1
-; CHECK-NEXT: ir<%17> = load from index 2
-; CHECK-NEXT: ir<%35> = load from index 3
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%19>
-; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2, vp<%next.gep>.1
-; CHECK-NEXT: store ir<%30> to index 0
-; CHECK-NEXT: store ir<%48> to index 1
-; CHECK: Cost for VF 4: 75 (Estimated cost per lane: 18.
-; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, vp<%next.gep>
-; CHECK-NEXT: ir<%14> = load from index 0
-; CHECK-NEXT: ir<%32> = load from index 1
-; CHECK-NEXT: ir<%17> = load from index 2
-; CHECK-NEXT: ir<%35> = load from index 3
-; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%19>
-; CHECK: Cost of 7 for VF 8: INTERLEAVE-GROUP with factor 2, vp<%next.gep>.1
-; CHECK-NEXT: store ir<%30> to index 0
-; CHECK-NEXT: store ir<%48> to index 1
-; CHECK: Cost for VF 8: 91 (Estimated cost per lane: 11.
-; CHECK: Cost of 132 for VF 16: INTERLEAVE-GROUP with factor 4, vp<%next.gep>
-; CHECK-NEXT: ir<%14> = load from index 0
-; CHECK-NEXT: ir<%32> = load from index 1
-; CHECK-NEXT: ir<%17> = load from index 2
-; CHECK-NEXT: ir<%35> = load from index 3
-; CHECK: Cost of 132 for VF 16: INTERLEAVE-GROUP with factor 4, ir<%19>
-; CHECK: Cost of 6 for VF 16: INTERLEAVE-GROUP with factor 2, vp<%next.gep>.1
-; CHECK-NEXT: store ir<%30> to index 0
-; CHECK-NEXT: store ir<%48> to index 1
-; CHECK: Cost for VF 16: 324 (Estimated cost per lane: 20.
-; CHECK: LV: Selecting VF: 8.
define hidden void @scale_uv_row_down2_box(ptr nocapture noundef readonly %0, i32 noundef %1, ptr nocapture noundef writeonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'scale_uv_row_down2_box'
+; CHECK: LV: Scalar loop costs: 26.
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%14> = load vp<%next.gep>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%17> = load ir<%16>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%20> = load ir<%19>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%23> = load ir<%22>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%30>, vp<%next.gep>.1
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%32> = load ir<%31>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%35> = load ir<%34>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%38> = load ir<%37>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%41> = load ir<%40>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%48>, ir<%49>
+; CHECK: Cost for VF 2: 80 (Estimated cost per lane: 40)
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, vp<%next.gep>
+; CHECK: ir<%14> = load from index 0
+; CHECK: ir<%32> = load from index 1
+; CHECK: ir<%17> = load from index 2
+; CHECK: ir<%35> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%19>
+; CHECK: ir<%20> = load from index 0
+; CHECK: ir<%38> = load from index 1
+; CHECK: ir<%23> = load from index 2
+; CHECK: ir<%41> = load from index 3
+; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2, vp<%next.gep>.1
+; CHECK: store ir<%30> to index 0
+; CHECK: store ir<%48> to index 1
+; CHECK: Cost for VF 4: 75 (Estimated cost per lane: 19)
+; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, vp<%next.gep>
+; CHECK: ir<%14> = load from index 0
+; CHECK: ir<%32> = load from index 1
+; CHECK: ir<%17> = load from index 2
+; CHECK: ir<%35> = load from index 3
+; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%19>
+; CHECK: ir<%20> = load from index 0
+; CHECK: ir<%38> = load from index 1
+; CHECK: ir<%23> = load from index 2
+; CHECK: ir<%41> = load from index 3
+; CHECK: Cost of 7 for VF 8: INTERLEAVE-GROUP with factor 2, vp<%next.gep>.1
+; CHECK: store ir<%30> to index 0
+; CHECK: store ir<%48> to index 1
+; CHECK: Cost for VF 8: 91 (Estimated cost per lane: 11)
+; CHECK: Cost of 132 for VF 16: INTERLEAVE-GROUP with factor 4, vp<%next.gep>
+; CHECK: ir<%14> = load from index 0
+; CHECK: ir<%32> = load from index 1
+; CHECK: ir<%17> = load from index 2
+; CHECK: ir<%35> = load from index 3
+; CHECK: Cost of 132 for VF 16: INTERLEAVE-GROUP with factor 4, ir<%19>
+; CHECK: ir<%20> = load from index 0
+; CHECK: ir<%38> = load from index 1
+; CHECK: ir<%23> = load from index 2
+; CHECK: ir<%41> = load from index 3
+; CHECK: Cost of 6 for VF 16: INTERLEAVE-GROUP with factor 2, vp<%next.gep>.1
+; CHECK: store ir<%30> to index 0
+; CHECK: store ir<%48> to index 1
+; CHECK: Cost for VF 16: 324 (Estimated cost per lane: 20)
+; CHECK: LV: Selecting VF: 8.
+;
%5 = icmp sgt i32 %3, 0
br i1 %5, label %6, label %54
@@ -1762,42 +2188,45 @@ define hidden void @scale_uv_row_down2_box(ptr nocapture noundef readonly %0, i3
ret void
}
-; CHECK-LABEL: scale_uv_row_down2_linear
-; CHECK: LV: Scalar loop costs: 18.
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load vp<%next.gep> (!alias.scope {{.*}})
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%13> = load ir<%12> (!alias.scope {{.*}})
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%18>, vp<%next.gep>.1 (!alias.scope {{.*}}, !noalias {{.*}})
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%28>, ir<%29>
-; CHECK: Cost for VF 2: 52 (Estimated cost per lane: 26.
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, vp<%next.gep>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%20> = load from index 1
-; CHECK-NEXT: ir<%13> = load from index 2
-; CHECK-NEXT: ir<%23> = load from index 3
-; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2, vp<%next.gep>.1
-; CHECK-NEXT: store ir<%18> to index 0
-; CHECK-NEXT: store ir<%28> to index 1
-; CHECK: Cost for VF 4: 49 (Estimated cost per lane: 12.
-; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, vp<%next.gep>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%20> = load from index 1
-; CHECK-NEXT: ir<%13> = load from index 2
-; CHECK-NEXT: ir<%23> = load from index 3
-; CHECK: Cost of 7 for VF 8: INTERLEAVE-GROUP with factor 2, vp<%next.gep>.1
-; CHECK-NEXT: store ir<%18> to index 0
-; CHECK-NEXT: store ir<%28> to index 1
-; CHECK: Cost for VF 8: 57 (Estimated cost per lane: 7.
-; CHECK: Cost of 132 for VF 16: INTERLEAVE-GROUP with factor 4, vp<%next.gep>
-; CHECK-NEXT: ir<%10> = load from index 0
-; CHECK-NEXT: ir<%20> = load from index 1
-; CHECK-NEXT: ir<%13> = load from index 2
-; CHECK-NEXT: ir<%23> = load from index 3
-; CHECK: Cost of 6 for VF 16: INTERLEAVE-GROUP with factor 2, vp<%next.gep>.1
-; CHECK-NEXT: store ir<%18> to index 0
-; CHECK-NEXT: store ir<%28> to index 1
-; CHECK: Cost for VF 16: 176 (Estimated cost per lane: 11.
-; CHECK: LV: Selecting VF: 8.
define hidden void @scale_uv_row_down2_linear(ptr nocapture noundef readonly %0, i32 noundef %1, ptr nocapture noundef writeonly %2, i32 noundef %3) {
+; CHECK-LABEL: 'scale_uv_row_down2_linear'
+; CHECK: LV: Scalar loop costs: 18.
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%10> = load vp<%next.gep>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%13> = load ir<%12>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%18>, vp<%next.gep>.1
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%20> = load ir<%19>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%23> = load ir<%22>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%28>, ir<%29>
+; CHECK: Cost for VF 2: 52 (Estimated cost per lane: 26)
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, vp<%next.gep>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%20> = load from index 1
+; CHECK: ir<%13> = load from index 2
+; CHECK: ir<%23> = load from index 3
+; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2, vp<%next.gep>.1
+; CHECK: store ir<%18> to index 0
+; CHECK: store ir<%28> to index 1
+; CHECK: Cost for VF 4: 49 (Estimated cost per lane: 12)
+; CHECK: Cost of 26 for VF 8: INTERLEAVE-GROUP with factor 4, vp<%next.gep>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%20> = load from index 1
+; CHECK: ir<%13> = load from index 2
+; CHECK: ir<%23> = load from index 3
+; CHECK: Cost of 7 for VF 8: INTERLEAVE-GROUP with factor 2, vp<%next.gep>.1
+; CHECK: store ir<%18> to index 0
+; CHECK: store ir<%28> to index 1
+; CHECK: Cost for VF 8: 57 (Estimated cost per lane: 7)
+; CHECK: Cost of 132 for VF 16: INTERLEAVE-GROUP with factor 4, vp<%next.gep>
+; CHECK: ir<%10> = load from index 0
+; CHECK: ir<%20> = load from index 1
+; CHECK: ir<%13> = load from index 2
+; CHECK: ir<%23> = load from index 3
+; CHECK: Cost of 6 for VF 16: INTERLEAVE-GROUP with factor 2, vp<%next.gep>.1
+; CHECK: store ir<%18> to index 0
+; CHECK: store ir<%28> to index 1
+; CHECK: Cost for VF 16: 176 (Estimated cost per lane: 11)
+; CHECK: LV: Selecting VF: 8.
+;
%5 = icmp sgt i32 %3, 0
br i1 %5, label %6, label %34
@@ -1837,30 +2266,31 @@ define hidden void @scale_uv_row_down2_linear(ptr nocapture noundef readonly %0,
ret void
}
-; CHECK-LABEL: two_floats_same_op
-; CHECK: LV: Scalar loop costs: 14.
-; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: store ir<%mul> to index 0
-; CHECK-NEXT: store ir<%mul8> to index 1
-; CHECK: Cost for VF 2: 29 (Estimated cost per lane: 14.
-; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: store ir<%mul> to index 0
-; CHECK-NEXT: store ir<%mul8> to index 1
-; CHECK: Cost for VF 4: 26 (Estimated cost per lane: 6.
-; CHECK: LV: Selecting VF: 4.
define hidden void @two_floats_same_op(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, ptr noundef writeonly captures(none) %res, i32 noundef %N) {
+; CHECK-LABEL: 'two_floats_same_op'
+; CHECK: LV: Scalar loop costs: 14.
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx3>
+; CHECK: store ir<%mul> to index 0
+; CHECK: store ir<%mul8> to index 1
+; CHECK: Cost for VF 2: 29 (Estimated cost per lane: 14)
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx3>
+; CHECK: store ir<%mul> to index 0
+; CHECK: store ir<%mul8> to index 1
+; CHECK: Cost for VF 4: 26 (Estimated cost per lane: 6)
+; CHECK: LV: Selecting VF: 4.
+;
entry:
%cmp21.not = icmp eq i32 %N, 0
br i1 %cmp21.not, label %for.cond.cleanup, label %for.body
@@ -1889,30 +2319,31 @@ for.body:
br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
}
-; CHECK-LABEL: two_floats_vary_op
-; CHECK: LV: Scalar loop costs: 14.
-; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: store ir<%add> to index 0
-; CHECK-NEXT: store ir<%sub> to index 1
-; CHECK: Cost for VF 2: 29 (Estimated cost per lane: 14.
-; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: store ir<%add> to index 0
-; CHECK-NEXT: store ir<%sub> to index 1
-; CHECK: Cost for VF 4: 26 (Estimated cost per lane: 6.
-; CHECK: LV: Selecting VF: 4.
define hidden void @two_floats_vary_op(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, ptr noundef writeonly captures(none) %res, i32 noundef %N) {
+; CHECK-LABEL: 'two_floats_vary_op'
+; CHECK: LV: Scalar loop costs: 14.
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx3>
+; CHECK: store ir<%add> to index 0
+; CHECK: store ir<%sub> to index 1
+; CHECK: Cost for VF 2: 29 (Estimated cost per lane: 14)
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx3>
+; CHECK: store ir<%add> to index 0
+; CHECK: store ir<%sub> to index 1
+; CHECK: Cost for VF 4: 26 (Estimated cost per lane: 6)
+; CHECK: LV: Selecting VF: 4.
+;
entry:
%cmp20.not = icmp eq i32 %N, 0
br i1 %cmp20.not, label %for.cond.cleanup, label %for.body
@@ -1941,27 +2372,29 @@ for.body:
br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
}
-; CHECK-LABEL: two_bytes_two_floats_same_op
-; CHECK: LV: Scalar loop costs: 18.
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%0> = load ir<%arrayidx>
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%1> = load ir<%arrayidx1>
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%2> = load ir<%y>
-; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: store ir<%mul> to index 0
-; CHECK-NEXT: store ir<%mul11> to index 1
-; CHECK: Cost for VF 2: 51 (Estimated cost per lane: 25.
-; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: store ir<%mul> to index 0
-; CHECK-NEXT: store ir<%mul11> to index 1
-; CHECK: Cost for VF 4: 48 (Estimated cost per lane: 12.
-; CHECK: LV: Selecting VF: 4.
define hidden void @two_bytes_two_floats_same_op(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, ptr noundef writeonly captures(none) %res, i32 noundef %N) {
+; CHECK-LABEL: 'two_bytes_two_floats_same_op'
+; CHECK: LV: Scalar loop costs: 18.
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%0> = load ir<%arrayidx>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%1> = load ir<%arrayidx1>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%2> = load ir<%y>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%3> = load ir<%y9>
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx4>
+; CHECK: store ir<%mul> to index 0
+; CHECK: store ir<%mul11> to index 1
+; CHECK: Cost for VF 2: 51 (Estimated cost per lane: 26)
+; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx4>
+; CHECK: store ir<%mul> to index 0
+; CHECK: store ir<%mul11> to index 1
+; CHECK: Cost for VF 4: 48 (Estimated cost per lane: 12)
+; CHECK: LV: Selecting VF: 4.
+;
entry:
%cmp24.not = icmp eq i32 %N, 0
br i1 %cmp24.not, label %for.cond.cleanup, label %for.body
@@ -1994,27 +2427,29 @@ for.body:
br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
}
-; CHECK-LABEL: two_bytes_two_floats_vary_op
-; CHECK: LV: Scalar loop costs: 18.
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%0> = load ir<%arrayidx>
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%1> = load ir<%arrayidx1>
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%2> = load ir<%y>
-; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: store ir<%add> to index 0
-; CHECK-NEXT: store ir<%sub> to index 1
-; CHECK: Cost for VF 2: 51 (Estimated cost per lane: 25.
-; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: store ir<%add> to index 0
-; CHECK-NEXT: store ir<%sub> to index 1
-; CHECK: Cost for VF 4: 48 (Estimated cost per lane: 12.
-; CHECK: LV: Selecting VF: 4.
define hidden void @two_bytes_two_floats_vary_op(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, ptr noundef writeonly captures(none) %res, i32 noundef %N) {
+; CHECK-LABEL: 'two_bytes_two_floats_vary_op'
+; CHECK: LV: Scalar loop costs: 18.
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%0> = load ir<%arrayidx>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%1> = load ir<%arrayidx1>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%2> = load ir<%y>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%3> = load ir<%y9>
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx4>
+; CHECK: store ir<%add> to index 0
+; CHECK: store ir<%sub> to index 1
+; CHECK: Cost for VF 2: 51 (Estimated cost per lane: 26)
+; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx4>
+; CHECK: store ir<%add> to index 0
+; CHECK: store ir<%sub> to index 1
+; CHECK: Cost for VF 4: 48 (Estimated cost per lane: 12)
+; CHECK: LV: Selecting VF: 4.
+;
entry:
%cmp23.not = icmp eq i32 %N, 0
br i1 %cmp23.not, label %for.cond.cleanup, label %for.body
@@ -2047,29 +2482,30 @@ for.body:
br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
}
-; CHECK-LABEL: two_floats_two_bytes_same_op
-; CHECK: LV: Scalar loop costs: 16.
-; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%conv>, ir<%arrayidx3>
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%conv9>, ir<%y11>
-; CHECK: Cost for VF 2: 46 (Estimated cost per lane: 23.
-; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: store ir<%conv> to index 0
-; CHECK-NEXT: store ir<%conv9> to index 1
-; CHECK: Cost for VF 4: 43 (Estimated cost per lane: 10.
-; CHECK: LV: Selecting VF: 4.
define hidden void @two_floats_two_bytes_same_op(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, ptr noundef writeonly captures(none) %res, i32 noundef %N) {
+; CHECK-LABEL: 'two_floats_two_bytes_same_op'
+; CHECK: LV: Scalar loop costs: 16.
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%conv>, ir<%arrayidx3>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%conv9>, ir<%y11>
+; CHECK: Cost for VF 2: 46 (Estimated cost per lane: 23)
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx3>
+; CHECK: store ir<%conv> to index 0
+; CHECK: store ir<%conv9> to index 1
+; CHECK: Cost for VF 4: 43 (Estimated cost per lane: 11)
+; CHECK: LV: Selecting VF: 4.
+;
entry:
%cmp22.not = icmp eq i32 %N, 0
br i1 %cmp22.not, label %for.cond.cleanup, label %for.body
@@ -2100,29 +2536,30 @@ for.body:
br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
}
-; CHECK-LABEL: two_floats_two_bytes_vary_op
-; CHECK: LV: Scalar loop costs: 16.
-; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%conv>
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%conv8>
-; CHECK: Cost for VF 2: 46 (Estimated cost per lane: 23.
-; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: store ir<%conv> to index 0
-; CHECK-NEXT: store ir<%conv8> to index 1
-; CHECK: Cost for VF 4: 43 (Estimated cost per lane: 10.
-; CHECK: LV: Selecting VF: 4.
define hidden void @two_floats_two_bytes_vary_op(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, ptr noundef writeonly captures(none) %res, i32 noundef %N) {
+; CHECK-LABEL: 'two_floats_two_bytes_vary_op'
+; CHECK: LV: Scalar loop costs: 16.
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%conv>, ir<%arrayidx3>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%conv8>, ir<%y10>
+; CHECK: Cost for VF 2: 46 (Estimated cost per lane: 23)
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: Cost of 11 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx3>
+; CHECK: store ir<%conv> to index 0
+; CHECK: store ir<%conv8> to index 1
+; CHECK: Cost for VF 4: 43 (Estimated cost per lane: 11)
+; CHECK: LV: Selecting VF: 4.
+;
entry:
%cmp21.not = icmp eq i32 %N, 0
br i1 %cmp21.not, label %for.cond.cleanup, label %for.body
@@ -2153,30 +2590,31 @@ for.body:
br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
}
-; CHECK-LABEL: two_shorts_two_floats_same_op
-; CHECK: LV: Scalar loop costs: 18.
-; CHECK: Cost of 11 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK: Cost of 11 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: store ir<%mul> to index 0
-; CHECK-NEXT: store ir<%mul11> to index 1
-; CHECK: Cost for VF 2: 45 (Estimated cost per lane: 22.
-; CHECK: Cost of 7 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK: Cost of 7 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: store ir<%mul> to index 0
-; CHECK-NEXT: store ir<%mul11> to index 1
-; CHECK: Cost for VF 4: 36 (Estimated cost per lane: 9.
-; CHECK: LV: Selecting VF: 4.
define hidden void @two_shorts_two_floats_same_op(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, ptr noundef writeonly captures(none) %res, i32 noundef %N) {
+; CHECK-LABEL: 'two_shorts_two_floats_same_op'
+; CHECK: LV: Scalar loop costs: 18.
+; CHECK: Cost of 11 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: Cost of 11 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx4>
+; CHECK: store ir<%mul> to index 0
+; CHECK: store ir<%mul11> to index 1
+; CHECK: Cost for VF 2: 45 (Estimated cost per lane: 22)
+; CHECK: Cost of 7 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: Cost of 7 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx4>
+; CHECK: store ir<%mul> to index 0
+; CHECK: store ir<%mul11> to index 1
+; CHECK: Cost for VF 4: 36 (Estimated cost per lane: 9)
+; CHECK: LV: Selecting VF: 4.
+;
entry:
%cmp24.not = icmp eq i32 %N, 0
br i1 %cmp24.not, label %for.cond.cleanup, label %for.body
@@ -2209,30 +2647,31 @@ for.body:
br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
}
-; CHECK-LABEL: two_shorts_two_floats_vary_op
-; CHECK: LV: Scalar loop costs: 18.
-; CHECK: Cost of 11 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK: Cost of 11 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: store ir<%add> to index 0
-; CHECK-NEXT: store ir<%sub> to index 1
-; CHECK: Cost for VF 2: 45 (Estimated cost per lane: 22.
-; CHECK: Cost of 7 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK: Cost of 7 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: store ir<%add> to index 0
-; CHECK-NEXT: store ir<%sub> to index 1
-; CHECK: Cost for VF 4: 36 (Estimated cost per lane: 9.
-; CHECK: LV: Selecting VF: 4.
define hidden void @two_shorts_two_floats_vary_op(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, ptr noundef writeonly captures(none) %res, i32 noundef %N) {
+; CHECK-LABEL: 'two_shorts_two_floats_vary_op'
+; CHECK: LV: Scalar loop costs: 18.
+; CHECK: Cost of 11 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: Cost of 11 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx4>
+; CHECK: store ir<%add> to index 0
+; CHECK: store ir<%sub> to index 1
+; CHECK: Cost for VF 2: 45 (Estimated cost per lane: 22)
+; CHECK: Cost of 7 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: Cost of 7 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx4>
+; CHECK: store ir<%add> to index 0
+; CHECK: store ir<%sub> to index 1
+; CHECK: Cost for VF 4: 36 (Estimated cost per lane: 9)
+; CHECK: LV: Selecting VF: 4.
+;
entry:
%cmp23.not = icmp eq i32 %N, 0
br i1 %cmp23.not, label %for.cond.cleanup, label %for.body
@@ -2265,30 +2704,31 @@ for.body:
br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
}
-; CHECK-LABEL: two_floats_two_shorts_same_op
-; CHECK: LV: Scalar loop costs: 16.
-; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK: Cost of 11 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: store ir<%conv> to index 0
-; CHECK-NEXT: store ir<%conv9> to index 1
-; CHECK: Cost for VF 2: 41 (Estimated cost per lane: 20.
-; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK: Cost of 7 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: store ir<%conv> to index 0
-; CHECK-NEXT: store ir<%conv9> to index 1
-; CHECK: Cost for VF 4: 35 (Estimated cost per lane: 8.
-; CHECK: LV: Selecting VF: 4.
define hidden void @two_floats_two_shorts_same_op(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, ptr noundef writeonly captures(none) %res, i32 noundef %N) {
+; CHECK-LABEL: 'two_floats_two_shorts_same_op'
+; CHECK: LV: Scalar loop costs: 16.
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: Cost of 11 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx3>
+; CHECK: store ir<%conv> to index 0
+; CHECK: store ir<%conv9> to index 1
+; CHECK: Cost for VF 2: 41 (Estimated cost per lane: 20)
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: Cost of 7 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx3>
+; CHECK: store ir<%conv> to index 0
+; CHECK: store ir<%conv9> to index 1
+; CHECK: Cost for VF 4: 35 (Estimated cost per lane: 9)
+; CHECK: LV: Selecting VF: 4.
+;
entry:
%cmp22.not = icmp eq i32 %N, 0
br i1 %cmp22.not, label %for.cond.cleanup, label %for.body
@@ -2319,30 +2759,31 @@ for.body:
br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
}
-; CHECK-LABEL: two_floats_two_shorts_vary_op
-; CHECK: LV: Scalar loop costs: 16.
-; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK: Cost of 11 for VF 2: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: store ir<%conv> to index 0
-; CHECK-NEXT: store ir<%conv8> to index 1
-; CHECK: Cost for VF 2: 41 (Estimated cost per lane: 20.
-; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK: Cost of 7 for VF 4: INTERLEAVE-GROUP with factor 2
-; CHECK-NEXT: store ir<%conv> to index 0
-; CHECK-NEXT: store ir<%conv8> to index 1
-; CHECK: Cost for VF 4: 35 (Estimated cost per lane: 8.
-; CHECK: LV: Selecting VF: 4.
define hidden void @two_floats_two_shorts_vary_op(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, ptr noundef writeonly captures(none) %res, i32 noundef %N) {
+; CHECK-LABEL: 'two_floats_two_shorts_vary_op'
+; CHECK: LV: Scalar loop costs: 16.
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: Cost of 11 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%arrayidx3>
+; CHECK: store ir<%conv> to index 0
+; CHECK: store ir<%conv8> to index 1
+; CHECK: Cost for VF 2: 41 (Estimated cost per lane: 20)
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: Cost of 6 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: Cost of 7 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%arrayidx3>
+; CHECK: store ir<%conv> to index 0
+; CHECK: store ir<%conv8> to index 1
+; CHECK: Cost for VF 4: 35 (Estimated cost per lane: 9)
+; CHECK: LV: Selecting VF: 4.
+;
entry:
%cmp21.not = icmp eq i32 %N, 0
br i1 %cmp21.not, label %for.cond.cleanup, label %for.body
@@ -2373,27 +2814,28 @@ for.body:
br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
}
-; CHECK-LABEL: four_floats_same_op
-; CHECK: LV: Scalar loop costs: 24.
-; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK-NEXT: ir<%4> = load from index 2
-; CHECK-NEXT: ir<%6> = load from index 3
-; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK-NEXT: ir<%5> = load from index 2
-; CHECK-NEXT: ir<%7> = load from index 3
-; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: store ir<%mul> to index 0
-; CHECK-NEXT: store ir<%mul8> to index 1
-; CHECK-NEXT: store ir<%mul14> to index 2
-; CHECK-NEXT: store ir<%mul20> to index 3
-; CHECK: Cost for VF 2: 54 (Estimated cost per lane: 27.
-; CHECK: Cost for VF 4: 12 (Estimated cost per lane: 3.
-; CHECK: LV: Selecting VF: 4.
define hidden void @four_floats_same_op(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, ptr noundef writeonly captures(none) %res, i32 noundef %N) {
+; CHECK-LABEL: 'four_floats_same_op'
+; CHECK: LV: Scalar loop costs: 24.
+; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: ir<%4> = load from index 2
+; CHECK: ir<%6> = load from index 3
+; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: ir<%5> = load from index 2
+; CHECK: ir<%7> = load from index 3
+; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx3>
+; CHECK: store ir<%mul> to index 0
+; CHECK: store ir<%mul8> to index 1
+; CHECK: store ir<%mul14> to index 2
+; CHECK: store ir<%mul20> to index 3
+; CHECK: Cost for VF 2: 54 (Estimated cost per lane: 27)
+; CHECK: Cost for VF 4: 12 (Estimated cost per lane: 3)
+; CHECK: LV: Selecting VF: 4.
+;
entry:
%cmp45.not = icmp eq i32 %N, 0
br i1 %cmp45.not, label %for.cond.cleanup, label %for.body
@@ -2436,42 +2878,43 @@ for.body:
br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
}
-; CHECK-LABEL: four_floats_vary_op
-; CHECK: LV: Scalar loop costs: 24.
-; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK-NEXT: ir<%4> = load from index 2
-; CHECK-NEXT: ir<%6> = load from index 3
-; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK-NEXT: ir<%5> = load from index 2
-; CHECK-NEXT: ir<%7> = load from index 3
-; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: store ir<%add> to index 0
-; CHECK-NEXT: store ir<%sub> to index 1
-; CHECK-NEXT: store ir<%mul> to index 2
-; CHECK-NEXT: store ir<%div> to index 3
-; CHECK: Cost for VF 2: 54 (Estimated cost per lane: 27.
-; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK-NEXT: ir<%4> = load from index 2
-; CHECK-NEXT: ir<%6> = load from index 3
-; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK-NEXT: ir<%5> = load from index 2
-; CHECK-NEXT: ir<%7> = load from index 3
-; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: store ir<%add> to index 0
-; CHECK-NEXT: store ir<%sub> to index 1
-; CHECK-NEXT: store ir<%mul> to index 2
-; CHECK-NEXT: store ir<%div> to index 3
-; CHECK: Cost for VF 4: 120 (Estimated cost per lane: 30.
-; CHECK: LV: Selecting VF: 1.
define hidden void @four_floats_vary_op(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, ptr noundef writeonly captures(none) %res, i32 noundef %N) {
+; CHECK-LABEL: 'four_floats_vary_op'
+; CHECK: LV: Scalar loop costs: 24.
+; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: ir<%4> = load from index 2
+; CHECK: ir<%6> = load from index 3
+; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: ir<%5> = load from index 2
+; CHECK: ir<%7> = load from index 3
+; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx3>
+; CHECK: store ir<%add> to index 0
+; CHECK: store ir<%sub> to index 1
+; CHECK: store ir<%mul> to index 2
+; CHECK: store ir<%div> to index 3
+; CHECK: Cost for VF 2: 54 (Estimated cost per lane: 27)
+; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: ir<%4> = load from index 2
+; CHECK: ir<%6> = load from index 3
+; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: ir<%5> = load from index 2
+; CHECK: ir<%7> = load from index 3
+; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx3>
+; CHECK: store ir<%add> to index 0
+; CHECK: store ir<%sub> to index 1
+; CHECK: store ir<%mul> to index 2
+; CHECK: store ir<%div> to index 3
+; CHECK: Cost for VF 4: 120 (Estimated cost per lane: 30)
+; CHECK: LV: Selecting VF: 1.
+;
entry:
%cmp42.not = icmp eq i32 %N, 0
br i1 %cmp42.not, label %for.cond.cleanup, label %for.body
@@ -2514,35 +2957,41 @@ for.body:
br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
}
-; CHECK-LABEL: four_bytes_four_floats_same_op
-; CHECK: LV: Scalar loop costs: 32.
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%0> = load ir<%arrayidx>
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%1> = load ir<%arrayidx1>
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%2> = load ir<%y>
-; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: store ir<%mul> to index 0
-; CHECK-NEXT: store ir<%mul11> to index 1
-; CHECK-NEXT: store ir<%mul19> to index 2
-; CHECK-NEXT: store ir<%mul27> to index 3
-; CHECK: Cost for VF 2: 98 (Estimated cost per lane: 49.
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK-NEXT: ir<%4> = load from index 2
-; CHECK-NEXT: ir<%6> = load from index 3
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK-NEXT: ir<%5> = load from index 2
-; CHECK-NEXT: ir<%7> = load from index 3
-; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: store ir<%mul> to index 0
-; CHECK-NEXT: store ir<%mul11> to index 1
-; CHECK-NEXT: store ir<%mul19> to index 2
-; CHECK-NEXT: store ir<%mul27> to index 3
-; CHECK: Cost for VF 4: 108 (Estimated cost per lane: 27.
-; CHECK: LV: Selecting VF: 4.
define hidden void @four_bytes_four_floats_same_op(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, ptr noundef writeonly captures(none) %res, i32 noundef %N) {
+; CHECK-LABEL: 'four_bytes_four_floats_same_op'
+; CHECK: LV: Scalar loop costs: 32.
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%0> = load ir<%arrayidx>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%1> = load ir<%arrayidx1>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%2> = load ir<%y>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%3> = load ir<%y9>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%4> = load ir<%z>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%5> = load ir<%z17>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%6> = load ir<%w>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%7> = load ir<%w25>
+; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx4>
+; CHECK: store ir<%mul> to index 0
+; CHECK: store ir<%mul11> to index 1
+; CHECK: store ir<%mul19> to index 2
+; CHECK: store ir<%mul27> to index 3
+; CHECK: Cost for VF 2: 98 (Estimated cost per lane: 49)
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: ir<%4> = load from index 2
+; CHECK: ir<%6> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: ir<%5> = load from index 2
+; CHECK: ir<%7> = load from index 3
+; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx4>
+; CHECK: store ir<%mul> to index 0
+; CHECK: store ir<%mul11> to index 1
+; CHECK: store ir<%mul19> to index 2
+; CHECK: store ir<%mul27> to index 3
+; CHECK: Cost for VF 4: 108 (Estimated cost per lane: 27)
+; CHECK: LV: Selecting VF: 4.
+;
entry:
%cmp52.not = icmp eq i32 %N, 0
br i1 %cmp52.not, label %for.cond.cleanup, label %for.body
@@ -2593,35 +3042,41 @@ for.body:
br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
}
-; CHECK-LABEL: four_bytes_four_floats_vary_op
-; CHECK: LV: Scalar loop costs: 32.
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%0> = load ir<%arrayidx> (!alias.scope {{.*}})
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%1> = load ir<%arrayidx1> (!alias.scope {{.*}})
-; CHECK: Cost of 6 for VF 2: REPLICATE ir<%2> = load ir<%y> (!alias.scope {{.*}})
-; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: store ir<%mul> to index 0
-; CHECK-NEXT: store ir<%add> to index 1
-; CHECK-NEXT: store ir<%div> to index 2
-; CHECK-NEXT: store ir<%sub> to index 3
-; CHECK: Cost for VF 2: 98 (Estimated cost per lane: 49.
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK-NEXT: ir<%4> = load from index 2
-; CHECK-NEXT: ir<%6> = load from index 3
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK-NEXT: ir<%5> = load from index 2
-; CHECK-NEXT: ir<%7> = load from index 3
-; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: store ir<%mul> to index 0
-; CHECK-NEXT: store ir<%add> to index 1
-; CHECK-NEXT: store ir<%div> to index 2
-; CHECK-NEXT: store ir<%sub> to index 3
-; CHECK: Cost for VF 4: 108 (Estimated cost per lane: 27.
-; CHECK: LV: Selecting VF: 4.
define hidden void @four_bytes_four_floats_vary_op(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, ptr noundef writeonly captures(none) %res, i32 noundef %N) {
+; CHECK-LABEL: 'four_bytes_four_floats_vary_op'
+; CHECK: LV: Scalar loop costs: 32.
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%0> = load ir<%arrayidx>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%1> = load ir<%arrayidx1>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%2> = load ir<%y>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%3> = load ir<%y9>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%4> = load ir<%z>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%5> = load ir<%z16>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%6> = load ir<%w>
+; CHECK: Cost of 6 for VF 2: REPLICATE ir<%7> = load ir<%w23>
+; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx4>
+; CHECK: store ir<%mul> to index 0
+; CHECK: store ir<%add> to index 1
+; CHECK: store ir<%div> to index 2
+; CHECK: store ir<%sub> to index 3
+; CHECK: Cost for VF 2: 98 (Estimated cost per lane: 49)
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: ir<%4> = load from index 2
+; CHECK: ir<%6> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: ir<%5> = load from index 2
+; CHECK: ir<%7> = load from index 3
+; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx4>
+; CHECK: store ir<%mul> to index 0
+; CHECK: store ir<%add> to index 1
+; CHECK: store ir<%div> to index 2
+; CHECK: store ir<%sub> to index 3
+; CHECK: Cost for VF 4: 108 (Estimated cost per lane: 27)
+; CHECK: LV: Selecting VF: 4.
+;
entry:
%cmp49.not = icmp eq i32 %N, 0
br i1 %cmp49.not, label %for.cond.cleanup, label %for.body
@@ -2672,36 +3127,42 @@ for.body:
br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
}
-; CHECK-LABEL: four_floats_four_bytes_same_op
-; CHECK: LV: Scalar loop costs: 28.
-; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK-NEXT: ir<%4> = load from index 2
-; CHECK-NEXT: ir<%6> = load from index 3
-; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK-NEXT: ir<%5> = load from index 2
-; CHECK-NEXT: ir<%7> = load from index 3
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%conv>, ir<%arrayidx3>
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%conv9>, ir<%y11>
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%conv16>, ir<%z18>
-; CHECK: Cost for VF 2: 88 (Estimated cost per lane: 44.
-; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK-NEXT: ir<%4> = load from index 2
-; CHECK-NEXT: ir<%6> = load from index 3
-; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx3>
-; CHECK-NEXT: store ir<%conv> to index 0
-; CHECK-NEXT: store ir<%conv9> to index 1
-; CHECK-NEXT: store ir<%conv16> to index 2
-; CHECK-NEXT: store ir<%conv23> to index 3
-; CHECK: Cost for VF 4: 126 (Estimated cost per lane: 31.
-; CHECK: LV: Selecting VF: 1.
define hidden void @four_floats_four_bytes_same_op(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, ptr noundef writeonly captures(none) %res, i32 noundef %N) {
+; CHECK-LABEL: 'four_floats_four_bytes_same_op'
+; CHECK: LV: Scalar loop costs: 28.
+; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: ir<%4> = load from index 2
+; CHECK: ir<%6> = load from index 3
+; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: ir<%5> = load from index 2
+; CHECK: ir<%7> = load from index 3
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%conv>, ir<%arrayidx3>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%conv9>, ir<%y11>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%conv16>, ir<%z18>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%conv23>, ir<%w25>
+; CHECK: Cost for VF 2: 88 (Estimated cost per lane: 44)
+; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: ir<%4> = load from index 2
+; CHECK: ir<%6> = load from index 3
+; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: ir<%5> = load from index 2
+; CHECK: ir<%7> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx3>
+; CHECK: store ir<%conv> to index 0
+; CHECK: store ir<%conv9> to index 1
+; CHECK: store ir<%conv16> to index 2
+; CHECK: store ir<%conv23> to index 3
+; CHECK: Cost for VF 4: 126 (Estimated cost per lane: 32)
+; CHECK: LV: Selecting VF: 1.
+;
entry:
%cmp48.not = icmp eq i32 %N, 0
br i1 %cmp48.not, label %for.cond.cleanup, label %for.body
@@ -2748,36 +3209,42 @@ for.body:
br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
}
-; CHECK-LABEL: four_floats_four_bytes_vary_op
-; CHECK: LV: Scalar loop costs: 28.
-; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK-NEXT: ir<%4> = load from index 2
-; CHECK-NEXT: ir<%6> = load from index 3
-; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK-NEXT: ir<%5> = load from index 2
-; CHECK-NEXT: ir<%7> = load from index 3
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%conv>, ir<%arrayidx3>
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%conv8>, ir<%y10>
-; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%conv14>, ir<%z16>
-; CHECK: Cost for VF 2: 88 (Estimated cost per lane: 44.
-; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK-NEXT: ir<%4> = load from index 2
-; CHECK-NEXT: ir<%6> = load from index 3
-; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: store ir<%conv> to index 0
-; CHECK-NEXT: store ir<%conv8> to index 1
-; CHECK-NEXT: store ir<%conv14> to index 2
-; CHECK-NEXT: store ir<%conv20> to index 3
-; CHECK: Cost for VF 4: 126 (Estimated cost per lane: 31.
-; CHECK: LV: Selecting VF: 1.
define hidden void @four_floats_four_bytes_vary_op(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, ptr noundef writeonly captures(none) %res, i32 noundef %N) {
+; CHECK-LABEL: 'four_floats_four_bytes_vary_op'
+; CHECK: LV: Scalar loop costs: 28.
+; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: ir<%4> = load from index 2
+; CHECK: ir<%6> = load from index 3
+; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: ir<%5> = load from index 2
+; CHECK: ir<%7> = load from index 3
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%conv>, ir<%arrayidx3>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%conv8>, ir<%y10>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%conv14>, ir<%z16>
+; CHECK: Cost of 6 for VF 2: REPLICATE store ir<%conv20>, ir<%w22>
+; CHECK: Cost for VF 2: 88 (Estimated cost per lane: 44)
+; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: ir<%4> = load from index 2
+; CHECK: ir<%6> = load from index 3
+; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: ir<%5> = load from index 2
+; CHECK: ir<%7> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx3>
+; CHECK: store ir<%conv> to index 0
+; CHECK: store ir<%conv8> to index 1
+; CHECK: store ir<%conv14> to index 2
+; CHECK: store ir<%conv20> to index 3
+; CHECK: Cost for VF 4: 126 (Estimated cost per lane: 32)
+; CHECK: LV: Selecting VF: 1.
+;
entry:
%cmp45.not = icmp eq i32 %N, 0
br i1 %cmp45.not, label %for.cond.cleanup, label %for.body
@@ -2824,34 +3291,43 @@ for.body:
br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
}
-; CHECK-LABEL: four_shorts_four_floats_same_op
-; CHECK: LV: Scalar loop costs: 32.
-; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK-NEXT: ir<%4> = load from index 2
-; CHECK-NEXT: ir<%6> = load from index 3
-; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
-; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx4>
-; CHECK-NEXT: store ir<%mul> to index 0
-; CHECK-NEXT: store ir<%mul11> to index 1
-; CHECK-NEXT: store ir<%mul19> to index 2
-; CHECK-NEXT: store ir<%mul27> to index 3
-; CHECK: Cost for VF 2: 78 (Estimated cost per lane: 39.
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK-NEXT: ir<%4> = load from index 2
-; CHECK-NEXT: ir<%6> = load from index 3
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
-; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx4>
-; CHECK-NEXT: store ir<%mul> to index 0
-; CHECK-NEXT: store ir<%mul11> to index 1
-; CHECK-NEXT: store ir<%mul19> to index 2
-; CHECK-NEXT: store ir<%mul27> to index 3
-; CHECK: Cost for VF 4: 100 (Estimated cost per lane: 25.
-; CHECK: LV: Selecting VF: 4.
define hidden void @four_shorts_four_floats_same_op(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, ptr noundef writeonly captures(none) %res, i32 noundef %N) {
+; CHECK-LABEL: 'four_shorts_four_floats_same_op'
+; CHECK: LV: Scalar loop costs: 32.
+; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: ir<%4> = load from index 2
+; CHECK: ir<%6> = load from index 3
+; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: ir<%5> = load from index 2
+; CHECK: ir<%7> = load from index 3
+; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx4>
+; CHECK: store ir<%mul> to index 0
+; CHECK: store ir<%mul11> to index 1
+; CHECK: store ir<%mul19> to index 2
+; CHECK: store ir<%mul27> to index 3
+; CHECK: Cost for VF 2: 78 (Estimated cost per lane: 39)
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: ir<%4> = load from index 2
+; CHECK: ir<%6> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: ir<%5> = load from index 2
+; CHECK: ir<%7> = load from index 3
+; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx4>
+; CHECK: store ir<%mul> to index 0
+; CHECK: store ir<%mul11> to index 1
+; CHECK: store ir<%mul19> to index 2
+; CHECK: store ir<%mul27> to index 3
+; CHECK: Cost for VF 4: 100 (Estimated cost per lane: 25)
+; CHECK: LV: Selecting VF: 4.
+;
entry:
%cmp52.not = icmp eq i32 %N, 0
br i1 %cmp52.not, label %for.cond.cleanup, label %for.body
@@ -2902,34 +3378,43 @@ for.body:
br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
}
-; CHECK-LABEL: four_shorts_four_floats_vary_op
-; CHECK: LV: Scalar loop costs: 32.
-; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK-NEXT: ir<%4> = load from index 2
-; CHECK-NEXT: ir<%6> = load from index 3
-; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
-; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx4>
-; CHECK-NEXT: store ir<%mul> to index 0
-; CHECK-NEXT: store ir<%add> to index 1
-; CHECK-NEXT: store ir<%div> to index 2
-; CHECK-NEXT: store ir<%sub> to index 3
-; CHECK: Cost for VF 2: 78 (Estimated cost per lane: 39.
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK-NEXT: ir<%4> = load from index 2
-; CHECK-NEXT: ir<%6> = load from index 3
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
-; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx4>
-; CHECK-NEXT: store ir<%mul> to index 0
-; CHECK-NEXT: store ir<%add> to index 1
-; CHECK-NEXT: store ir<%div> to index 2
-; CHECK-NEXT: store ir<%sub> to index 3
-; CHECK: Cost for VF 4: 100 (Estimated cost per lane: 25.
-; CHECK: LV: Selecting VF: 4.
define hidden void @four_shorts_four_floats_vary_op(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, ptr noundef writeonly captures(none) %res, i32 noundef %N) {
+; CHECK-LABEL: 'four_shorts_four_floats_vary_op'
+; CHECK: LV: Scalar loop costs: 32.
+; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: ir<%4> = load from index 2
+; CHECK: ir<%6> = load from index 3
+; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: ir<%5> = load from index 2
+; CHECK: ir<%7> = load from index 3
+; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx4>
+; CHECK: store ir<%mul> to index 0
+; CHECK: store ir<%add> to index 1
+; CHECK: store ir<%div> to index 2
+; CHECK: store ir<%sub> to index 3
+; CHECK: Cost for VF 2: 78 (Estimated cost per lane: 39)
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: ir<%4> = load from index 2
+; CHECK: ir<%6> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: ir<%5> = load from index 2
+; CHECK: ir<%7> = load from index 3
+; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx4>
+; CHECK: store ir<%mul> to index 0
+; CHECK: store ir<%add> to index 1
+; CHECK: store ir<%div> to index 2
+; CHECK: store ir<%sub> to index 3
+; CHECK: Cost for VF 4: 100 (Estimated cost per lane: 25)
+; CHECK: LV: Selecting VF: 4.
+;
entry:
%cmp49.not = icmp eq i32 %N, 0
br i1 %cmp49.not, label %for.cond.cleanup, label %for.body
@@ -2980,38 +3465,43 @@ for.body:
br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
}
-; CHECK-LABEL: four_floats_four_shorts_same_op
-; CHECK: LV: Scalar loop costs: 28.
-; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK-NEXT: ir<%4> = load from index 2
-; CHECK-NEXT: ir<%6> = load from index 3
-; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK-NEXT: ir<%5> = load from index 2
-; CHECK-NEXT: ir<%7> = load from index 3
-; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx3>
-; CHECK-NEXT: store ir<%conv> to index 0
-; CHECK-NEXT: store ir<%conv9> to index 1
-; CHECK-NEXT: store ir<%conv16> to index 2
-; CHECK-NEXT: store ir<%conv23> to index 3
-; CHECK: Cost for VF 2: 74 (Estimated cost per lane: 37.
-; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK-NEXT: ir<%4> = load from index 2
-; CHECK-NEXT: ir<%6> = load from index 3
-; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx3>
-; CHECK-NEXT: store ir<%conv> to index 0
-; CHECK-NEXT: store ir<%conv9> to index 1
-; CHECK-NEXT: store ir<%conv16> to index 2
-; CHECK-NEXT: store ir<%conv23> to index 3
-; CHECK: Cost for VF 4: 118 (Estimated cost per lane: 29.
-; CHECK: LV: Selecting VF: 1.
define hidden void @four_floats_four_shorts_same_op(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, ptr noundef writeonly captures(none) %res, i32 noundef %N) {
+; CHECK-LABEL: 'four_floats_four_shorts_same_op'
+; CHECK: LV: Scalar loop costs: 28.
+; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: ir<%4> = load from index 2
+; CHECK: ir<%6> = load from index 3
+; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: ir<%5> = load from index 2
+; CHECK: ir<%7> = load from index 3
+; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx3>
+; CHECK: store ir<%conv> to index 0
+; CHECK: store ir<%conv9> to index 1
+; CHECK: store ir<%conv16> to index 2
+; CHECK: store ir<%conv23> to index 3
+; CHECK: Cost for VF 2: 74 (Estimated cost per lane: 37)
+; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: ir<%4> = load from index 2
+; CHECK: ir<%6> = load from index 3
+; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: ir<%5> = load from index 2
+; CHECK: ir<%7> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx3>
+; CHECK: store ir<%conv> to index 0
+; CHECK: store ir<%conv9> to index 1
+; CHECK: store ir<%conv16> to index 2
+; CHECK: store ir<%conv23> to index 3
+; CHECK: Cost for VF 4: 118 (Estimated cost per lane: 30)
+; CHECK: LV: Selecting VF: 1.
+;
entry:
%cmp48.not = icmp eq i32 %N, 0
br i1 %cmp48.not, label %for.cond.cleanup, label %for.body
@@ -3058,38 +3548,43 @@ for.body:
br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
}
-; CHECK-LABEL: four_floats_four_shorts_vary_op
-; CHECK: LV: Scalar loop costs: 28.
-; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK-NEXT: ir<%4> = load from index 2
-; CHECK-NEXT: ir<%6> = load from index 3
-; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4
-; CHECK-NEXT: ir<%1> = load from index 0
-; CHECK-NEXT: ir<%3> = load from index 1
-; CHECK-NEXT: ir<%5> = load from index 2
-; CHECK-NEXT: ir<%7> = load from index 3
-; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx3>
-; CHECK-NEXT: store ir<%conv> to index 0
-; CHECK-NEXT: store ir<%conv8> to index 1
-; CHECK-NEXT: store ir<%conv14> to index 2
-; CHECK-NEXT: store ir<%conv20> to index 3
-; CHECK: Cost for VF 2: 74 (Estimated cost per lane: 37.
-; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
-; CHECK-NEXT: ir<%0> = load from index 0
-; CHECK-NEXT: ir<%2> = load from index 1
-; CHECK-NEXT: ir<%4> = load from index 2
-; CHECK-NEXT: ir<%6> = load from index 3
-; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
-; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx3>
-; CHECK-NEXT: store ir<%conv> to index 0
-; CHECK-NEXT: store ir<%conv8> to index 1
-; CHECK-NEXT: store ir<%conv14> to index 2
-; CHECK-NEXT: store ir<%conv20> to index 3
-; CHECK: Cost for VF 4: 118 (Estimated cost per lane: 29.
-; CHECK: LV: Selecting VF: 1.
define hidden void @four_floats_four_shorts_vary_op(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, ptr noundef writeonly captures(none) %res, i32 noundef %N) {
+; CHECK-LABEL: 'four_floats_four_shorts_vary_op'
+; CHECK: LV: Scalar loop costs: 28.
+; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: ir<%4> = load from index 2
+; CHECK: ir<%6> = load from index 3
+; CHECK: Cost of 14 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: ir<%5> = load from index 2
+; CHECK: ir<%7> = load from index 3
+; CHECK: Cost of 18 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx3>
+; CHECK: store ir<%conv> to index 0
+; CHECK: store ir<%conv8> to index 1
+; CHECK: store ir<%conv14> to index 2
+; CHECK: store ir<%conv20> to index 3
+; CHECK: Cost for VF 2: 74 (Estimated cost per lane: 37)
+; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx>
+; CHECK: ir<%0> = load from index 0
+; CHECK: ir<%2> = load from index 1
+; CHECK: ir<%4> = load from index 2
+; CHECK: ir<%6> = load from index 3
+; CHECK: Cost of 36 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx1>
+; CHECK: ir<%1> = load from index 0
+; CHECK: ir<%3> = load from index 1
+; CHECK: ir<%5> = load from index 2
+; CHECK: ir<%7> = load from index 3
+; CHECK: Cost of 18 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx3>
+; CHECK: store ir<%conv> to index 0
+; CHECK: store ir<%conv8> to index 1
+; CHECK: store ir<%conv14> to index 2
+; CHECK: store ir<%conv20> to index 3
+; CHECK: Cost for VF 4: 118 (Estimated cost per lane: 30)
+; CHECK: LV: Selecting VF: 1.
+;
entry:
%cmp45.not = icmp eq i32 %N, 0
br i1 %cmp45.not, label %for.cond.cleanup, label %for.body
More information about the llvm-commits
mailing list