[llvm] [VPlan] Compute scalar cost based on VPlan0 instead of legacy CM. (PR #196845)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 11 12:52:48 PDT 2026
https://github.com/fhahn updated https://github.com/llvm/llvm-project/pull/196845
>From ad692462befb7cdc10b1806ba06efb08d848ded1 Mon Sep 17 00:00:00 2001
From: Florian Hahn <flo at fhahn.com>
Date: Fri, 29 May 2026 11:53:44 +0100
Subject: [PATCH] [VPlan] Compute scalar cost based on VPlan0 instead of legacy
CM.
Replace legacy cost computation for the scalar loop with a VPlan-based
computation on VPlan0. This requires keeping around a copy of the
initial VPlan0, before introducing vectorization specific concepts (like
predication etc), to accurately reflect the cost of the scalar loop.
---
.../Vectorize/LoopVectorizationPlanner.h | 6 ++
.../Transforms/Vectorize/LoopVectorize.cpp | 74 +++++++---------
llvm/lib/Transforms/Vectorize/VPlan.h | 2 +-
.../lib/Transforms/Vectorize/VPlanRecipes.cpp | 74 +++++++++++++---
.../LoopVectorize/AArch64/arith-costs.ll | 6 +-
.../AArch64/arith-fp-frem-costs.ll | 32 +++----
.../LoopVectorize/AArch64/early_exit_costs.ll | 1 -
.../LoopVectorize/AArch64/intrinsiccost.ll | 4 +-
.../AArch64/multiple-result-intrinsics.ll | 32 +++----
.../AArch64/struct-return-cost.ll | 18 ++--
.../AArch64/type-shrinkage-zext-costs.ll | 2 +-
.../LoopVectorize/ARM/mve-icmpcost.ll | 67 +++++++-------
.../LoopVectorize/ARM/mve-selectandorcost.ll | 2 +-
.../LoopVectorize/ARM/mve-shiftcost.ll | 4 +-
.../LoopVectorize/ARM/scalar-block-cost.ll | 61 ++++++-------
.../LoopVectorize/SystemZ/pr47665.ll | 50 +++--------
.../WebAssembly/int-mac-reduction-costs.ll | 76 ++++++++--------
.../X86/CostModel/gather-i16-with-i8-index.ll | 12 +--
.../X86/CostModel/gather-i32-with-i8-index.ll | 14 +--
.../X86/CostModel/gather-i64-with-i8-index.ll | 14 +--
.../X86/CostModel/gather-i8-with-i8-index.ll | 14 +--
...dle-iptr-with-data-layout-to-not-assert.ll | 4 +-
.../interleaved-load-f32-stride-2.ll | 10 +--
.../interleaved-load-f32-stride-3.ll | 10 +--
.../interleaved-load-f32-stride-4.ll | 10 +--
.../interleaved-load-f32-stride-5.ll | 10 +--
.../interleaved-load-f32-stride-6.ll | 10 +--
.../interleaved-load-f32-stride-7.ll | 10 +--
.../interleaved-load-f32-stride-8.ll | 10 +--
.../interleaved-load-f64-stride-2.ll | 10 +--
.../interleaved-load-f64-stride-3.ll | 10 +--
.../interleaved-load-f64-stride-4.ll | 10 +--
.../interleaved-load-f64-stride-5.ll | 10 +--
.../interleaved-load-f64-stride-6.ll | 10 +--
.../interleaved-load-f64-stride-7.ll | 10 +--
.../interleaved-load-f64-stride-8.ll | 10 +--
.../interleaved-load-i16-stride-2.ll | 12 +--
.../interleaved-load-i16-stride-3.ll | 12 +--
.../interleaved-load-i16-stride-4.ll | 12 +--
.../interleaved-load-i16-stride-5.ll | 12 +--
.../interleaved-load-i16-stride-6.ll | 12 +--
.../interleaved-load-i16-stride-7.ll | 12 +--
.../interleaved-load-i16-stride-8.ll | 12 +--
...nterleaved-load-i32-stride-2-indices-0u.ll | 10 +--
.../interleaved-load-i32-stride-2.ll | 10 +--
...terleaved-load-i32-stride-3-indices-01u.ll | 10 +--
...terleaved-load-i32-stride-3-indices-0uu.ll | 10 +--
.../interleaved-load-i32-stride-3.ll | 10 +--
...erleaved-load-i32-stride-4-indices-012u.ll | 10 +--
...erleaved-load-i32-stride-4-indices-01uu.ll | 10 +--
...erleaved-load-i32-stride-4-indices-0uuu.ll | 10 +--
.../interleaved-load-i32-stride-4.ll | 10 +--
.../interleaved-load-i32-stride-5.ll | 10 +--
.../interleaved-load-i32-stride-6.ll | 10 +--
.../interleaved-load-i32-stride-7.ll | 10 +--
.../interleaved-load-i32-stride-8.ll | 10 +--
.../interleaved-load-i64-stride-2.ll | 10 +--
.../interleaved-load-i64-stride-3.ll | 10 +--
.../interleaved-load-i64-stride-4.ll | 10 +--
.../interleaved-load-i64-stride-5.ll | 10 +--
.../interleaved-load-i64-stride-6.ll | 10 +--
.../interleaved-load-i64-stride-7.ll | 10 +--
.../interleaved-load-i64-stride-8.ll | 10 +--
.../CostModel/interleaved-load-i8-stride-2.ll | 12 +--
.../CostModel/interleaved-load-i8-stride-3.ll | 12 +--
.../CostModel/interleaved-load-i8-stride-4.ll | 12 +--
.../CostModel/interleaved-load-i8-stride-5.ll | 12 +--
.../CostModel/interleaved-load-i8-stride-6.ll | 12 +--
.../CostModel/interleaved-load-i8-stride-7.ll | 12 +--
.../CostModel/interleaved-load-i8-stride-8.ll | 12 +--
.../masked-gather-i32-with-i8-index.ll | 12 +--
.../masked-gather-i64-with-i8-index.ll | 12 +--
.../CostModel/masked-interleaved-load-i16.ll | 26 +++---
.../CostModel/masked-interleaved-store-i16.ll | 22 ++---
.../X86/CostModel/masked-load-i16.ll | 10 +--
.../X86/CostModel/masked-load-i32.ll | 10 +--
.../X86/CostModel/masked-load-i64.ll | 10 +--
.../X86/CostModel/masked-load-i8.ll | 10 +--
.../masked-scatter-i32-with-i8-index.ll | 12 +--
.../masked-scatter-i64-with-i8-index.ll | 12 +--
.../X86/CostModel/masked-store-i16.ll | 10 +--
.../X86/CostModel/masked-store-i32.ll | 12 +--
.../X86/CostModel/masked-store-i64.ll | 12 +--
.../X86/CostModel/masked-store-i8.ll | 12 +--
.../CostModel/scatter-i16-with-i8-index.ll | 12 +--
.../CostModel/scatter-i32-with-i8-index.ll | 12 +--
.../CostModel/scatter-i64-with-i8-index.ll | 12 +--
.../X86/CostModel/scatter-i8-with-i8-index.ll | 12 +--
.../X86/CostModel/strided-load-i16.ll | 8 +-
.../X86/CostModel/strided-load-i32.ll | 8 +-
.../X86/CostModel/strided-load-i64.ll | 6 +-
.../X86/CostModel/strided-load-i8.ll | 8 +-
.../X86/CostModel/vpinstruction-cost.ll | 87 +++++++++----------
.../Transforms/LoopVectorize/X86/fneg-cost.ll | 2 +-
.../X86/fp_to_sint8-cost-model.ll | 2 +-
.../LoopVectorize/X86/reduction-small-size.ll | 29 +++----
.../X86/uint64_to_fp64-cost-model.ll | 2 +-
.../LoopVectorize/X86/uniformshift.ll | 2 +-
.../X86/vector-scalar-select-cost.ll | 4 +-
99 files changed, 739 insertions(+), 726 deletions(-)
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h b/llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h
index 3eda4f66d7a4b..bf85545289733 100644
--- a/llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h
+++ b/llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h
@@ -837,6 +837,9 @@ class LoopVectorizationPlanner {
SmallVector<VPlanPtr, 4> VPlans;
+ /// Copy of scalar VPlan0; used for scalar cost computation.
+ VPlanPtr InitialVPlan0;
+
/// Profitable vector factors.
SmallVector<VectorizationFactor, 8> ProfitableVFs;
@@ -853,6 +856,9 @@ class LoopVectorizationPlanner {
/// been retired.
InstructionCost cost(VPlan &Plan, ElementCount VF, VPRegisterUsage *RU) const;
+ /// Compute the scalar loop cost of InitialVPlan0.
+ InstructionCost computeScalarCost() const;
+
/// Precompute costs for certain instructions using the legacy cost model. The
/// function is used to bring up the VPlan-based cost model to initially avoid
/// taking different decisions due to inaccuracies in the legacy cost model.
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
index c8a56c61ce8b6..b8584b71cecbf 100644
--- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -1279,12 +1279,6 @@ class LoopVectorizationCostModel {
Scalars.clear();
}
- /// Returns the expected execution cost. The unit of the cost does
- /// not matter because we use the 'cost' units to compare different
- /// vector widths. The cost that is returned is *not* normalized by
- /// the factor width.
- InstructionCost expectedCost(ElementCount VF);
-
/// Returns true if epilogue vectorization is considered profitable, and
/// false otherwise.
/// \p VF is the vectorization factor chosen for the original loop.
@@ -3685,7 +3679,7 @@ LoopVectorizationPlanner::selectInterleaveCount(VPlan &Plan, ElementCount VF,
// then we calculate the cost of VF here.
if (LoopCost == 0) {
if (VF.isScalar())
- LoopCost = CM.expectedCost(VF);
+ LoopCost = computeScalarCost();
else
LoopCost = cost(Plan, VF, &R);
assert(LoopCost.isValid() && "Expected to have chosen a VF with valid cost");
@@ -4160,42 +4154,6 @@ InstructionCost LoopVectorizationCostModel::computePredInstDiscount(
return Discount;
}
-InstructionCost LoopVectorizationCostModel::expectedCost(ElementCount VF) {
- InstructionCost Cost;
- assert(VF.isScalar() && "must only be called for scalar VFs");
-
- // For each block.
- for (BasicBlock *BB : TheLoop->blocks()) {
- InstructionCost BlockCost;
-
- // For each instruction in the old loop.
- for (Instruction &I : *BB) {
- // Skip ignored values.
- if (ValuesToIgnore.count(&I) ||
- (VF.isVector() && VecValuesToIgnore.count(&I)))
- continue;
-
- InstructionCost C = getInstructionCost(&I, VF);
-
- // Check if we should override the cost.
- if (C.isValid() && ForceTargetInstructionCost.getNumOccurrences() > 0)
- C = InstructionCost(ForceTargetInstructionCost);
-
- BlockCost += C;
- LLVM_DEBUG(dbgs() << "LV: Found an estimated cost of " << C << " for VF "
- << VF << " For instruction: " << I << '\n');
- }
-
- // In the scalar loop, we may not always execute the predicated block, if it
- // is an if-else block. Thus, scale the block's cost by the probability of
- // executing it. getPredBlockCostDivisor will return 1 for blocks that are
- // only predicated by the header mask when folding the tail.
- Cost += BlockCost / getPredBlockCostDivisor(Config.CostKind, BB);
- }
-
- return Cost;
-}
-
/// Gets the address access SCEV for Ptr, if it should be used for cost modeling
/// according to isAddressSCEVForCost.
///
@@ -5745,6 +5703,30 @@ LoopVectorizationPlanner::precomputeCosts(VPlan &Plan, ElementCount VF,
return Cost;
}
+InstructionCost LoopVectorizationPlanner::computeScalarCost() const {
+ ElementCount ScalarVF = ElementCount::getFixed(1);
+ VPCostContext CostCtx(CM.TTI, *CM.TLI, *InitialVPlan0, CM, Config.CostKind,
+ PSE, OrigLoop);
+ VPBasicBlock *Header =
+ VPBlockUtils::getPlainCFGHeaderAndLatch(*InitialVPlan0).first;
+ InstructionCost Cost = 0;
+
+ for (VPBasicBlock *VPBB : vp_rpo_plain_cfg_loop_body(Header)) {
+ // Look up the divisor via the first underlying IR instruction in the loop.
+ uint64_t Divisor = 1;
+ for (const VPRecipeBase &R : *VPBB) {
+ auto *UI = dyn_cast_if_present<Instruction>(
+ cast<VPSingleDefRecipe>(&R)->getUnderlyingValue());
+ if (!UI)
+ continue;
+ Divisor = CostCtx.getPredBlockCostDivisor(UI->getParent());
+ break;
+ }
+ Cost += VPBB->cost(ScalarVF, CostCtx) / Divisor;
+ }
+ return Cost;
+}
+
InstructionCost LoopVectorizationPlanner::cost(VPlan &Plan, ElementCount VF,
VPRegisterUsage *RU) const {
VPCostContext CostCtx(CM.TTI, *CM.TLI, Plan, CM, Config.CostKind, PSE,
@@ -5814,8 +5796,8 @@ LoopVectorizationPlanner::computeBestVF() {
assert(FirstPlan.hasVF(ScalarVF) &&
"More than a single plan/VF w/o any plan having scalar VF");
- // TODO: Compute scalar cost using VPlan-based cost model.
- InstructionCost ScalarCost = CM.expectedCost(ScalarVF);
+ // Compute the scalar cost from VPlan0.
+ InstructionCost ScalarCost = computeScalarCost();
LLVM_DEBUG(dbgs() << "LV: Scalar loop costs: " << ScalarCost << ".\n");
VectorizationFactor ScalarFactor(ScalarVF, ScalarCost, ScalarCost);
VectorizationFactor BestFactor = ScalarFactor;
@@ -6515,6 +6497,8 @@ VPlanPtr LoopVectorizationPlanner::tryToBuildVPlan1() {
LAI->getSymbolicStrides(), VPDT);
RUN_VPLAN_PASS(VPlanTransforms::simplifyRecipes, *VPlan0);
RUN_VPLAN_PASS(VPlanTransforms::removeDeadRecipes, *VPlan0);
+ // Save copy of VPlan0 for scalar cost computation.
+ InitialVPlan0 = VPlanPtr(VPlan0->duplicate());
// Create recipes for header phis. For outer loops, reductions, recurrences
// and in-loop reductions are empty since legality doesn't detect them.
diff --git a/llvm/lib/Transforms/Vectorize/VPlan.h b/llvm/lib/Transforms/Vectorize/VPlan.h
index 16f3c049e6702..0722bed30ee27 100644
--- a/llvm/lib/Transforms/Vectorize/VPlan.h
+++ b/llvm/lib/Transforms/Vectorize/VPlan.h
@@ -1581,7 +1581,7 @@ class VPInstructionWithType : public VPInstruction {
void execute(VPTransformState &State) override;
- /// Return the cost of this VPInstruction.
+ /// Return the cost of this VPInstructionWithType.
InstructionCost computeCost(ElementCount VF,
VPCostContext &Ctx) const override;
diff --git a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
index 9aeacd28e00cf..eb9f5c436d06e 100644
--- a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+++ b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
@@ -1056,7 +1056,6 @@ InstructionCost VPRecipeWithIRFlags::getCostForRecipeWithOpcode(
Type *ResultTy = VF.isVector() ? toVectorTy(ScalarTy, VF) : ScalarTy;
switch (Opcode) {
case Instruction::FNeg:
- return Ctx.TTI.getArithmeticInstrCost(Opcode, ResultTy, Ctx.CostKind);
case Instruction::UDiv:
case Instruction::SDiv:
case Instruction::SRem:
@@ -1077,12 +1076,14 @@ InstructionCost VPRecipeWithIRFlags::getCostForRecipeWithOpcode(
case Instruction::Xor: {
// Certain instructions can be cheaper if they have a constant second
// operand. One example of this are shifts on x86.
- VPValue *RHS = getOperand(1);
- TargetTransformInfo::OperandValueInfo RHSInfo = Ctx.getOperandInfo(RHS);
-
- if (RHSInfo.Kind == TargetTransformInfo::OK_AnyValue &&
- getOperand(1)->isDefinedOutsideLoopRegions())
- RHSInfo.Kind = TargetTransformInfo::OK_UniformValue;
+ TargetTransformInfo::OperandValueInfo RHSInfo = {
+ TargetTransformInfo::OK_AnyValue, TargetTransformInfo::OP_None};
+ if (Opcode != Instruction::FNeg) {
+ RHSInfo = Ctx.getOperandInfo(getOperand(1));
+ if (RHSInfo.Kind == TargetTransformInfo::OK_AnyValue &&
+ getOperand(1)->isDefinedOutsideLoopRegions())
+ RHSInfo.Kind = TargetTransformInfo::OK_UniformValue;
+ }
Instruction *CtxI = dyn_cast_or_null<Instruction>(getUnderlyingValue());
SmallVector<const Value *, 4> Operands;
@@ -1103,6 +1104,19 @@ InstructionCost VPRecipeWithIRFlags::getCostForRecipeWithOpcode(
case Instruction::ExtractValue:
return Ctx.TTI.getInsertExtractValueCost(Instruction::ExtractValue,
Ctx.CostKind);
+ case Instruction::Load:
+ case Instruction::Store: {
+ bool IsLoad = Opcode == Instruction::Load;
+ const Instruction *UI = getUnderlyingInstr();
+ Type *ValTy = (IsLoad ? this : getOperand(0))->getScalarType();
+ Type *PtrTy = getOperand(!IsLoad)->getScalarType();
+ return Ctx.TTI.getAddressComputationCost(PtrTy, nullptr, nullptr,
+ Ctx.CostKind) +
+ Ctx.TTI.getMemoryOpCost(Opcode, ValTy, getLoadStoreAlignment(UI),
+ cast<PointerType>(PtrTy)->getAddressSpace(),
+ Ctx.CostKind,
+ TTI::getOperandInfo(UI->getOperand(0)), UI);
+ }
case Instruction::ICmp:
case Instruction::FCmp: {
Type *ScalarOpTy = getOperand(0)->getScalarType();
@@ -1145,6 +1159,12 @@ InstructionCost VPRecipeWithIRFlags::getCostForRecipeWithOpcode(
return ReplicateRecipe->isPredicated() ? TTI::CastContextHint::Masked
: TTI::CastContextHint::Normal;
}
+ // Loads/stores in pre-predication VPlan0 are represented as
+ // VPInstructions; treat them like an unmasked memory access.
+ if (const auto *VPI = dyn_cast<VPInstruction>(R))
+ if (VPI->getOpcode() == Instruction::Load ||
+ VPI->getOpcode() == Instruction::Store)
+ return TTI::CastContextHint::Normal;
const auto *WidenMemoryRecipe = dyn_cast<VPWidenMemoryRecipe>(R);
if (WidenMemoryRecipe == nullptr)
return TTI::CastContextHint::None;
@@ -1259,6 +1279,12 @@ InstructionCost VPRecipeWithIRFlags::getCostForRecipeWithOpcode(
InstructionCost VPInstruction::computeCost(ElementCount VF,
VPCostContext &Ctx) const {
+ // Vector-only opcodes have zero cost at scalar VF.
+ if (VF.isScalar() &&
+ (isVectorToScalar() ||
+ getOpcode() == VPInstruction::FirstOrderRecurrenceSplice))
+ return 0;
+
if (Instruction::isBinaryOp(getOpcode())) {
if (!getUnderlyingValue() && getOpcode() != Instruction::FMul) {
// TODO: Compute cost for VPInstructions without underlying values once
@@ -1426,6 +1452,32 @@ InstructionCost VPInstruction::computeCost(ElementCount VF,
return getCostForRecipeWithOpcode(
getOpcode(),
vputils::onlyFirstLaneUsed(this) ? ElementCount::getFixed(1) : VF, Ctx);
+ case Instruction::ExtractValue:
+ case Instruction::FNeg:
+ case Instruction::Freeze:
+ if (!VF.isScalar() || !getUnderlyingValue())
+ return 0;
+ return getCostForRecipeWithOpcode(getOpcode(), VF, Ctx);
+
+ case Instruction::Store:
+ assert(VF.isScalar() && "only scalar VF expected");
+ return getCostForRecipeWithOpcode(getOpcode(), VF, Ctx);
+ case Instruction::Call: {
+ assert(VF.isScalar() && "only scalar VF expected");
+ auto *CalledFn =
+ cast<Function>(getOperand(getNumOperands() - 1)->getLiveInIRValue());
+ SmallVector<const VPValue *> ArgOps(drop_end(operands()));
+ return VPReplicateRecipe::computeCallCost(CalledFn, getScalarType(), ArgOps,
+ /*IsSingleScalar=*/true, VF, Ctx);
+ }
+ case VPInstruction::BranchOnCond:
+ case Instruction::PHI:
+ if (!getUnderlyingValue())
+ return 0;
+ return Ctx.TTI.getCFInstrCost(getOpcode() == Instruction::PHI
+ ? Instruction::PHI
+ : Instruction::CondBr,
+ Ctx.CostKind);
case VPInstruction::ExtractPenultimateElement:
if (VF == ElementCount::getScalable(1))
return InstructionCost::getInvalid();
@@ -1433,8 +1485,6 @@ InstructionCost VPInstruction::computeCost(ElementCount VF,
default:
// TODO: Compute cost other VPInstructions once the legacy cost model has
// been retired.
- assert(!getUnderlyingValue() &&
- "unexpected VPInstruction witht underlying value");
return 0;
}
}
@@ -1826,8 +1876,10 @@ InstructionCost VPInstructionWithType::computeCost(ElementCount VF,
// TODO: Compute cost for VPInstructions without underlying values.
if (!getUnderlyingValue())
return 0;
- assert(Instruction::isCast(getOpcode()) &&
- "only casts have underlying values currently");
+ assert((Instruction::isCast(getOpcode()) || VF.isScalar()) &&
+ "only expected scalar VF or casts");
+ // The recipes handled here are always single-scalar, so compute their cost at
+ // a scalar VF.
return getCostForRecipeWithOpcode(getOpcode(), ElementCount::getFixed(1),
Ctx);
}
diff --git a/llvm/test/Transforms/LoopVectorize/AArch64/arith-costs.ll b/llvm/test/Transforms/LoopVectorize/AArch64/arith-costs.ll
index 9b02fd24c828d..e8b055a97804c 100644
--- a/llvm/test/Transforms/LoopVectorize/AArch64/arith-costs.ll
+++ b/llvm/test/Transforms/LoopVectorize/AArch64/arith-costs.ll
@@ -7,7 +7,7 @@ target triple = "arm64-apple-macosx"
define void @udiv_rhs_opt_cost(ptr %dst) #0 {
; CHECK-LABEL: 'udiv_rhs_opt_cost'
-; CHECK: LV: Found an estimated cost of 5 for VF 1 For instruction: %div = udiv i8 %iv.trunc, 3
+; CHECK: Cost of 5 for VF 1: EMIT ir<%div> = udiv ir<%iv.trunc>, ir<3>
; CHECK: Cost of 5 for VF 2: CLONE ir<%div> = udiv ir<%iv.trunc>, ir<3>
; CHECK: Cost of 0 for VF 2: IR %div = udiv i8 %iv.trunc, 3
; CHECK: Cost of 5 for VF 4: CLONE ir<%div> = udiv ir<%iv.trunc>, ir<3>
@@ -38,8 +38,8 @@ exit:
define void @fneg_used_by_fmul_scalar_cost_is_zero(ptr %dst) #0 {
; CHECK-LABEL: 'fneg_used_by_fmul_scalar_cost_is_zero'
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %neg = fneg double %conv
-; CHECK: LV: Found an estimated cost of 2 for VF 1 For instruction: %mul = fmul double %neg, 2.500000e-04
+; CHECK: Cost of 0 for VF 1: EMIT ir<%neg> = fneg ir<%conv>
+; CHECK: Cost of 2 for VF 1: EMIT ir<%mul> = fmul ir<%neg>, ir<2.500000e-04>
; CHECK: Cost of 1 for VF 2: WIDEN ir<%neg> = fneg ir<%conv>
; CHECK: Cost of 2 for VF 2: WIDEN ir<%mul> = fmul ir<%neg>, ir<2.500000e-04>
; CHECK: Cost of 0 for VF 2: IR %neg = fneg double %conv
diff --git a/llvm/test/Transforms/LoopVectorize/AArch64/arith-fp-frem-costs.ll b/llvm/test/Transforms/LoopVectorize/AArch64/arith-fp-frem-costs.ll
index 511244b46af14..06adbe718b997 100644
--- a/llvm/test/Transforms/LoopVectorize/AArch64/arith-fp-frem-costs.ll
+++ b/llvm/test/Transforms/LoopVectorize/AArch64/arith-fp-frem-costs.ll
@@ -12,43 +12,43 @@ target triple = "aarch64-unknown-linux-gnu"
define void @frem_f64(ptr noalias %in.ptr, ptr noalias %out.ptr) {
; NEON-NO-VECLIB-LABEL: 'frem_f64'
-; NEON-NO-VECLIB: LV: Found an estimated cost of 10 for VF 1 For instruction: %res = frem double %in, %in
+; NEON-NO-VECLIB: Cost of 10 for VF 1: EMIT ir<%res> = frem ir<%in>, ir<%in>
; NEON-NO-VECLIB: Cost of 24 for VF 2: WIDEN ir<%res> = frem ir<%in>, ir<%in>
;
; SVE-NO-VECLIB-LABEL: 'frem_f64'
-; SVE-NO-VECLIB: LV: Found an estimated cost of 10 for VF 1 For instruction: %res = frem double %in, %in
+; SVE-NO-VECLIB: Cost of 10 for VF 1: EMIT ir<%res> = frem ir<%in>, ir<%in>
; SVE-NO-VECLIB: Cost of 24 for VF 2: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; SVE-NO-VECLIB: Cost of Invalid for VF vscale x 1: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; SVE-NO-VECLIB: Cost of Invalid for VF vscale x 2: WIDEN ir<%res> = frem ir<%in>, ir<%in>
;
; NEON-ARMPL-LABEL: 'frem_f64'
-; NEON-ARMPL: LV: Found an estimated cost of 10 for VF 1 For instruction: %res = frem double %in, %in
+; NEON-ARMPL: Cost of 10 for VF 1: EMIT ir<%res> = frem ir<%in>, ir<%in>
; NEON-ARMPL: Cost of 10 for VF 2: WIDEN ir<%res> = frem ir<%in>, ir<%in>
;
; NEON-SLEEF-LABEL: 'frem_f64'
-; NEON-SLEEF: LV: Found an estimated cost of 10 for VF 1 For instruction: %res = frem double %in, %in
+; NEON-SLEEF: Cost of 10 for VF 1: EMIT ir<%res> = frem ir<%in>, ir<%in>
; NEON-SLEEF: Cost of 10 for VF 2: WIDEN ir<%res> = frem ir<%in>, ir<%in>
;
; SVE-ARMPL-LABEL: 'frem_f64'
-; SVE-ARMPL: LV: Found an estimated cost of 10 for VF 1 For instruction: %res = frem double %in, %in
+; SVE-ARMPL: Cost of 10 for VF 1: EMIT ir<%res> = frem ir<%in>, ir<%in>
; SVE-ARMPL: Cost of 10 for VF 2: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; SVE-ARMPL: Cost of Invalid for VF vscale x 1: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; SVE-ARMPL: Cost of 10 for VF vscale x 2: WIDEN ir<%res> = frem ir<%in>, ir<%in>
;
; SVE-SLEEF-LABEL: 'frem_f64'
-; SVE-SLEEF: LV: Found an estimated cost of 10 for VF 1 For instruction: %res = frem double %in, %in
+; SVE-SLEEF: Cost of 10 for VF 1: EMIT ir<%res> = frem ir<%in>, ir<%in>
; SVE-SLEEF: Cost of 10 for VF 2: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; SVE-SLEEF: Cost of Invalid for VF vscale x 1: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; SVE-SLEEF: Cost of 10 for VF vscale x 2: WIDEN ir<%res> = frem ir<%in>, ir<%in>
;
; SVE-ARMPL-TAILFOLD-LABEL: 'frem_f64'
-; SVE-ARMPL-TAILFOLD: LV: Found an estimated cost of 10 for VF 1 For instruction: %res = frem double %in, %in
+; SVE-ARMPL-TAILFOLD: Cost of 10 for VF 1: EMIT ir<%res> = frem ir<%in>, ir<%in>
; SVE-ARMPL-TAILFOLD: Cost of 10 for VF 2: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; SVE-ARMPL-TAILFOLD: Cost of Invalid for VF vscale x 1: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; SVE-ARMPL-TAILFOLD: Cost of 10 for VF vscale x 2: WIDEN ir<%res> = frem ir<%in>, ir<%in>
;
; SVE-SLEEF-TAILFOLD-LABEL: 'frem_f64'
-; SVE-SLEEF-TAILFOLD: LV: Found an estimated cost of 10 for VF 1 For instruction: %res = frem double %in, %in
+; SVE-SLEEF-TAILFOLD: Cost of 10 for VF 1: EMIT ir<%res> = frem ir<%in>, ir<%in>
; SVE-SLEEF-TAILFOLD: Cost of 10 for VF 2: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; SVE-SLEEF-TAILFOLD: Cost of Invalid for VF vscale x 1: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; SVE-SLEEF-TAILFOLD: Cost of 10 for VF vscale x 2: WIDEN ir<%res> = frem ir<%in>, ir<%in>
@@ -73,12 +73,12 @@ define void @frem_f64(ptr noalias %in.ptr, ptr noalias %out.ptr) {
define void @frem_f32(ptr noalias %in.ptr, ptr noalias %out.ptr) {
; NEON-NO-VECLIB-LABEL: 'frem_f32'
-; NEON-NO-VECLIB: LV: Found an estimated cost of 10 for VF 1 For instruction: %res = frem float %in, %in
+; NEON-NO-VECLIB: Cost of 10 for VF 1: EMIT ir<%res> = frem ir<%in>, ir<%in>
; NEON-NO-VECLIB: Cost of 24 for VF 2: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; NEON-NO-VECLIB: Cost of 52 for VF 4: WIDEN ir<%res> = frem ir<%in>, ir<%in>
;
; SVE-NO-VECLIB-LABEL: 'frem_f32'
-; SVE-NO-VECLIB: LV: Found an estimated cost of 10 for VF 1 For instruction: %res = frem float %in, %in
+; SVE-NO-VECLIB: Cost of 10 for VF 1: EMIT ir<%res> = frem ir<%in>, ir<%in>
; SVE-NO-VECLIB: Cost of 24 for VF 2: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; SVE-NO-VECLIB: Cost of 52 for VF 4: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; SVE-NO-VECLIB: Cost of Invalid for VF vscale x 1: WIDEN ir<%res> = frem ir<%in>, ir<%in>
@@ -86,17 +86,17 @@ define void @frem_f32(ptr noalias %in.ptr, ptr noalias %out.ptr) {
; SVE-NO-VECLIB: Cost of Invalid for VF vscale x 4: WIDEN ir<%res> = frem ir<%in>, ir<%in>
;
; NEON-ARMPL-LABEL: 'frem_f32'
-; NEON-ARMPL: LV: Found an estimated cost of 10 for VF 1 For instruction: %res = frem float %in, %in
+; NEON-ARMPL: Cost of 10 for VF 1: EMIT ir<%res> = frem ir<%in>, ir<%in>
; NEON-ARMPL: Cost of 24 for VF 2: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; NEON-ARMPL: Cost of 10 for VF 4: WIDEN ir<%res> = frem ir<%in>, ir<%in>
;
; NEON-SLEEF-LABEL: 'frem_f32'
-; NEON-SLEEF: LV: Found an estimated cost of 10 for VF 1 For instruction: %res = frem float %in, %in
+; NEON-SLEEF: Cost of 10 for VF 1: EMIT ir<%res> = frem ir<%in>, ir<%in>
; NEON-SLEEF: Cost of 24 for VF 2: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; NEON-SLEEF: Cost of 10 for VF 4: WIDEN ir<%res> = frem ir<%in>, ir<%in>
;
; SVE-ARMPL-LABEL: 'frem_f32'
-; SVE-ARMPL: LV: Found an estimated cost of 10 for VF 1 For instruction: %res = frem float %in, %in
+; SVE-ARMPL: Cost of 10 for VF 1: EMIT ir<%res> = frem ir<%in>, ir<%in>
; SVE-ARMPL: Cost of 24 for VF 2: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; SVE-ARMPL: Cost of 10 for VF 4: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; SVE-ARMPL: Cost of Invalid for VF vscale x 1: WIDEN ir<%res> = frem ir<%in>, ir<%in>
@@ -104,7 +104,7 @@ define void @frem_f32(ptr noalias %in.ptr, ptr noalias %out.ptr) {
; SVE-ARMPL: Cost of 10 for VF vscale x 4: WIDEN ir<%res> = frem ir<%in>, ir<%in>
;
; SVE-SLEEF-LABEL: 'frem_f32'
-; SVE-SLEEF: LV: Found an estimated cost of 10 for VF 1 For instruction: %res = frem float %in, %in
+; SVE-SLEEF: Cost of 10 for VF 1: EMIT ir<%res> = frem ir<%in>, ir<%in>
; SVE-SLEEF: Cost of 24 for VF 2: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; SVE-SLEEF: Cost of 10 for VF 4: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; SVE-SLEEF: Cost of Invalid for VF vscale x 1: WIDEN ir<%res> = frem ir<%in>, ir<%in>
@@ -112,7 +112,7 @@ define void @frem_f32(ptr noalias %in.ptr, ptr noalias %out.ptr) {
; SVE-SLEEF: Cost of 10 for VF vscale x 4: WIDEN ir<%res> = frem ir<%in>, ir<%in>
;
; SVE-ARMPL-TAILFOLD-LABEL: 'frem_f32'
-; SVE-ARMPL-TAILFOLD: LV: Found an estimated cost of 10 for VF 1 For instruction: %res = frem float %in, %in
+; SVE-ARMPL-TAILFOLD: Cost of 10 for VF 1: EMIT ir<%res> = frem ir<%in>, ir<%in>
; SVE-ARMPL-TAILFOLD: Cost of 24 for VF 2: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; SVE-ARMPL-TAILFOLD: Cost of 10 for VF 4: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; SVE-ARMPL-TAILFOLD: Cost of Invalid for VF vscale x 1: WIDEN ir<%res> = frem ir<%in>, ir<%in>
@@ -120,7 +120,7 @@ define void @frem_f32(ptr noalias %in.ptr, ptr noalias %out.ptr) {
; SVE-ARMPL-TAILFOLD: Cost of 10 for VF vscale x 4: WIDEN ir<%res> = frem ir<%in>, ir<%in>
;
; SVE-SLEEF-TAILFOLD-LABEL: 'frem_f32'
-; SVE-SLEEF-TAILFOLD: LV: Found an estimated cost of 10 for VF 1 For instruction: %res = frem float %in, %in
+; SVE-SLEEF-TAILFOLD: Cost of 10 for VF 1: EMIT ir<%res> = frem ir<%in>, ir<%in>
; SVE-SLEEF-TAILFOLD: Cost of 24 for VF 2: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; SVE-SLEEF-TAILFOLD: Cost of 10 for VF 4: WIDEN ir<%res> = frem ir<%in>, ir<%in>
; SVE-SLEEF-TAILFOLD: Cost of Invalid for VF vscale x 1: WIDEN ir<%res> = frem ir<%in>, ir<%in>
diff --git a/llvm/test/Transforms/LoopVectorize/AArch64/early_exit_costs.ll b/llvm/test/Transforms/LoopVectorize/AArch64/early_exit_costs.ll
index 3fd329ede68ef..76a09b7a0dfe1 100644
--- a/llvm/test/Transforms/LoopVectorize/AArch64/early_exit_costs.ll
+++ b/llvm/test/Transforms/LoopVectorize/AArch64/early_exit_costs.ll
@@ -91,7 +91,6 @@ loop.end:
define i64 @vectorization_not_profitable_due_to_trunc(ptr dereferenceable(800) %src) {
; CHECK-LABEL: LV: Checking a loop in 'vectorization_not_profitable_due_to_trunc'
; CHECK: LV: Selecting VF: 1.
-; CHECK: LV: Vectorization is possible but not beneficial.
entry:
br label %loop.header
diff --git a/llvm/test/Transforms/LoopVectorize/AArch64/intrinsiccost.ll b/llvm/test/Transforms/LoopVectorize/AArch64/intrinsiccost.ll
index c8555a8629ec5..9a5754a85ffb5 100644
--- a/llvm/test/Transforms/LoopVectorize/AArch64/intrinsiccost.ll
+++ b/llvm/test/Transforms/LoopVectorize/AArch64/intrinsiccost.ll
@@ -7,7 +7,7 @@ target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
target triple = "aarch64--linux-gnu"
; CHECK-COST-LABEL: sadd
-; CHECK-COST: Found an estimated cost of 6 for VF 1 For instruction: %1 = tail call i16 @llvm.sadd.sat.i16(i16 %0, i16 %offset)
+; CHECK-COST: Cost of 6 for VF 1: EMIT ir<%1> = call ir<%0>, ir<%offset>, ir<@llvm.sadd.sat.i16>
; CHECK-COST: Cost of 4 for VF 2: WIDEN-INTRINSIC ir<%1> = call llvm.sadd.sat(ir<%0>, ir<%offset>)
; CHECK-COST: Cost of 1 for VF 4: WIDEN-INTRINSIC ir<%1> = call llvm.sadd.sat(ir<%0>, ir<%offset>)
; CHECK-COST: Cost of 1 for VF 8: WIDEN-INTRINSIC ir<%1> = call llvm.sadd.sat(ir<%0>, ir<%offset>)
@@ -127,7 +127,7 @@ while.end:
}
; CHECK-COST-LABEL: umin
-; CHECK-COST: Found an estimated cost of 2 for VF 1 For instruction: %1 = tail call i8 @llvm.umin.i8(i8 %0, i8 %offset)
+; CHECK-COST: Cost of 2 for VF 1: EMIT ir<%1> = call ir<%0>, ir<%offset>, ir<@llvm.umin.i8>
; CHECK-COST: Cost of 1 for VF 2: WIDEN-INTRINSIC ir<%1> = call llvm.umin(ir<%0>, ir<%offset>)
; CHECK-COST: Cost of 1 for VF 4: WIDEN-INTRINSIC ir<%1> = call llvm.umin(ir<%0>, ir<%offset>)
; CHECK-COST: Cost of 1 for VF 8: WIDEN-INTRINSIC ir<%1> = call llvm.umin(ir<%0>, ir<%offset>)
diff --git a/llvm/test/Transforms/LoopVectorize/AArch64/multiple-result-intrinsics.ll b/llvm/test/Transforms/LoopVectorize/AArch64/multiple-result-intrinsics.ll
index 55994ad9a98f8..2a7c73bfa8ed3 100644
--- a/llvm/test/Transforms/LoopVectorize/AArch64/multiple-result-intrinsics.ll
+++ b/llvm/test/Transforms/LoopVectorize/AArch64/multiple-result-intrinsics.ll
@@ -6,7 +6,7 @@
; REQUIRES: asserts
; CHECK-COST-LABEL: sincos_f32
-; CHECK-COST: LV: Found an estimated cost of 10 for VF 1 For instruction: %call = tail call { float, float } @llvm.sincos.f32(float %in_val)
+; CHECK-COST: Cost of 10 for VF 1: EMIT ir<%call> = call ir<%in_val>, ir<@llvm.sincos.f32>
; CHECK-COST: Cost of 26 for VF 2: WIDEN-INTRINSIC ir<%call> = call llvm.sincos(ir<%in_val>)
; CHECK-COST: Cost of 58 for VF 4: WIDEN-INTRINSIC ir<%call> = call llvm.sincos(ir<%in_val>)
; CHECK-COST: Cost of Invalid for VF vscale x 1: REPLICATE ir<%call> = call @llvm.sincos.f32(ir<%in_val>)
@@ -14,7 +14,7 @@
; CHECK-COST: Cost of Invalid for VF vscale x 4: REPLICATE ir<%call> = call @llvm.sincos.f32(ir<%in_val>)
; CHECK-COST-ARMPL-LABEL: sincos_f32
-; CHECK-COST-ARMPL: LV: Found an estimated cost of 10 for VF 1 For instruction: %call = tail call { float, float } @llvm.sincos.f32(float %in_val)
+; CHECK-COST-ARMPL: Cost of 10 for VF 1: EMIT ir<%call> = call ir<%in_val>, ir<@llvm.sincos.f32>
; CHECK-COST-ARMPL: Cost of 26 for VF 2: WIDEN-INTRINSIC ir<%call> = call llvm.sincos(ir<%in_val>)
; CHECK-COST-ARMPL: Cost of 12 for VF 4: WIDEN-INTRINSIC ir<%call> = call llvm.sincos(ir<%in_val>)
; CHECK-COST-ARMPL: Cost of Invalid for VF vscale x 1: REPLICATE ir<%call> = call @llvm.sincos.f32(ir<%in_val>)
@@ -83,13 +83,13 @@ exit:
}
; CHECK-COST-LABEL: sincos_f64
-; CHECK-COST: LV: Found an estimated cost of 10 for VF 1 For instruction: %call = tail call { double, double } @llvm.sincos.f64(double %in_val)
+; CHECK-COST: Cost of 10 for VF 1: EMIT ir<%call> = call ir<%in_val>, ir<@llvm.sincos.f64>
; CHECK-COST: Cost of 26 for VF 2: WIDEN-INTRINSIC ir<%call> = call llvm.sincos(ir<%in_val>)
; CHECK-COST: Cost of Invalid for VF vscale x 1: REPLICATE ir<%call> = call @llvm.sincos.f64(ir<%in_val>)
; CHECK-COST: Cost of Invalid for VF vscale x 2: REPLICATE ir<%call> = call @llvm.sincos.f64(ir<%in_val>)
; CHECK-COST-ARMPL-LABEL: sincos_f64
-; CHECK-COST-ARMPL: LV: Found an estimated cost of 10 for VF 1 For instruction: %call = tail call { double, double } @llvm.sincos.f64(double %in_val)
+; CHECK-COST-ARMPL: Cost of 10 for VF 1: EMIT ir<%call> = call ir<%in_val>, ir<@llvm.sincos.f64>
; CHECK-COST-ARMPL: Cost of 12 for VF 2: WIDEN-INTRINSIC ir<%call> = call llvm.sincos(ir<%in_val>)
; CHECK-COST-ARMPL: Cost of Invalid for VF vscale x 1: REPLICATE ir<%call> = call @llvm.sincos.f64(ir<%in_val>)
; CHECK-COST-ARMPL: Cost of 13 for VF vscale x 2: WIDEN-INTRINSIC ir<%call> = call llvm.sincos(ir<%in_val>)
@@ -156,7 +156,7 @@ exit:
}
; CHECK-COST-LABEL: predicated_sincos
-; CHECK-COST: LV: Found an estimated cost of 10 for VF 1 For instruction: %call = tail call { float, float } @llvm.sincos.f32(float %in_val)
+; CHECK-COST: Cost of 10 for VF 1: EMIT ir<%call> = call ir<%in_val>, ir<@llvm.sincos.f32>
; CHECK-COST: Cost of 26 for VF 2: WIDEN-INTRINSIC ir<%call> = call llvm.sincos(ir<%in_val>)
; CHECK-COST: Cost of 58 for VF 4: WIDEN-INTRINSIC ir<%call> = call llvm.sincos(ir<%in_val>)
; CHECK-COST: Cost of Invalid for VF vscale x 1: REPLICATE ir<%call> = call @llvm.sincos.f32(ir<%in_val>)
@@ -164,7 +164,7 @@ exit:
; CHECK-COST: Cost of Invalid for VF vscale x 4: REPLICATE ir<%call> = call @llvm.sincos.f32(ir<%in_val>)
; CHECK-COST-ARMPL-LABEL: predicated_sincos
-; CHECK-COST-ARMPL: LV: Found an estimated cost of 10 for VF 1 For instruction: %call = tail call { float, float } @llvm.sincos.f32(float %in_val)
+; CHECK-COST-ARMPL: Cost of 10 for VF 1: EMIT ir<%call> = call ir<%in_val>, ir<@llvm.sincos.f32>
; CHECK-COST-ARMPL: Cost of 26 for VF 2: WIDEN-INTRINSIC ir<%call> = call llvm.sincos(ir<%in_val>)
; CHECK-COST-ARMPL: Cost of 12 for VF 4: WIDEN-INTRINSIC ir<%call> = call llvm.sincos(ir<%in_val>)
; CHECK-COST-ARMPL: Cost of Invalid for VF vscale x 1: REPLICATE ir<%call> = call @llvm.sincos.f32(ir<%in_val>)
@@ -228,7 +228,7 @@ for.end:
}
; CHECK-COST-LABEL: modf_f32
-; CHECK-COST: LV: Found an estimated cost of 10 for VF 1 For instruction: %call = tail call { float, float } @llvm.modf.f32(float %in_val)
+; CHECK-COST: Cost of 10 for VF 1: EMIT ir<%call> = call ir<%in_val>, ir<@llvm.modf.f32>
; CHECK-COST: Cost of 26 for VF 2: WIDEN-INTRINSIC ir<%call> = call llvm.modf(ir<%in_val>)
; CHECK-COST: Cost of 58 for VF 4: WIDEN-INTRINSIC ir<%call> = call llvm.modf(ir<%in_val>)
; CHECK-COST: Cost of Invalid for VF vscale x 1: REPLICATE ir<%call> = call @llvm.modf.f32(ir<%in_val>)
@@ -236,7 +236,7 @@ for.end:
; CHECK-COST: Cost of Invalid for VF vscale x 4: REPLICATE ir<%call> = call @llvm.modf.f32(ir<%in_val>)
; CHECK-COST-ARMPL-LABEL: modf_f32
-; CHECK-COST-ARMPL: LV: Found an estimated cost of 10 for VF 1 For instruction: %call = tail call { float, float } @llvm.modf.f32(float %in_val)
+; CHECK-COST-ARMPL: Cost of 10 for VF 1: EMIT ir<%call> = call ir<%in_val>, ir<@llvm.modf.f32>
; CHECK-COST-ARMPL: Cost of 26 for VF 2: WIDEN-INTRINSIC ir<%call> = call llvm.modf(ir<%in_val>)
; CHECK-COST-ARMPL: Cost of 11 for VF 4: WIDEN-INTRINSIC ir<%call> = call llvm.modf(ir<%in_val>)
; CHECK-COST-ARMPL: Cost of Invalid for VF vscale x 1: REPLICATE ir<%call> = call @llvm.modf.f32(ir<%in_val>)
@@ -305,13 +305,13 @@ exit:
}
; CHECK-COST-LABEL: modf_f64
-; CHECK-COST: LV: Found an estimated cost of 10 for VF 1 For instruction: %call = tail call { double, double } @llvm.modf.f64(double %in_val)
+; CHECK-COST: Cost of 10 for VF 1: EMIT ir<%call> = call ir<%in_val>, ir<@llvm.modf.f64>
; CHECK-COST: Cost of 26 for VF 2: WIDEN-INTRINSIC ir<%call> = call llvm.modf(ir<%in_val>)
; CHECK-COST: Cost of Invalid for VF vscale x 1: REPLICATE ir<%call> = call @llvm.modf.f64(ir<%in_val>)
; CHECK-COST: Cost of Invalid for VF vscale x 2: REPLICATE ir<%call> = call @llvm.modf.f64(ir<%in_val>)
; CHECK-COST-ARMPL-LABEL: modf_f64
-; CHECK-COST-ARMPL: LV: Found an estimated cost of 10 for VF 1 For instruction: %call = tail call { double, double } @llvm.modf.f64(double %in_val)
+; CHECK-COST-ARMPL: Cost of 10 for VF 1: EMIT ir<%call> = call ir<%in_val>, ir<@llvm.modf.f64>
; CHECK-COST-ARMPL: Cost of 11 for VF 2: WIDEN-INTRINSIC ir<%call> = call llvm.modf(ir<%in_val>)
; CHECK-COST-ARMPL: Cost of Invalid for VF vscale x 1: REPLICATE ir<%call> = call @llvm.modf.f64(ir<%in_val>)
; CHECK-COST-ARMPL: Cost of 12 for VF vscale x 2: WIDEN-INTRINSIC ir<%call> = call llvm.modf(ir<%in_val>)
@@ -378,7 +378,7 @@ exit:
}
; CHECK-COST-LABEL: sincospi_f32
-; CHECK-COST: LV: Found an estimated cost of 10 for VF 1 For instruction: %call = tail call { float, float } @llvm.sincospi.f32(float %in_val)
+; CHECK-COST: Cost of 10 for VF 1: EMIT ir<%call> = call ir<%in_val>, ir<@llvm.sincospi.f32>
; CHECK-COST: Cost of 26 for VF 2: WIDEN-INTRINSIC ir<%call> = call llvm.sincospi(ir<%in_val>)
; CHECK-COST: Cost of 58 for VF 4: WIDEN-INTRINSIC ir<%call> = call llvm.sincospi(ir<%in_val>)
; CHECK-COST: Cost of Invalid for VF vscale x 1: REPLICATE ir<%call> = call @llvm.sincospi.f32(ir<%in_val>)
@@ -386,7 +386,7 @@ exit:
; CHECK-COST: Cost of Invalid for VF vscale x 4: REPLICATE ir<%call> = call @llvm.sincospi.f32(ir<%in_val>)
; CHECK-COST-ARMPL-LABEL: sincospi_f32
-; CHECK-COST-ARMPL: LV: Found an estimated cost of 10 for VF 1 For instruction: %call = tail call { float, float } @llvm.sincospi.f32(float %in_val)
+; CHECK-COST-ARMPL: Cost of 10 for VF 1: EMIT ir<%call> = call ir<%in_val>, ir<@llvm.sincospi.f32>
; CHECK-COST-ARMPL: Cost of 26 for VF 2: WIDEN-INTRINSIC ir<%call> = call llvm.sincospi(ir<%in_val>)
; CHECK-COST-ARMPL: Cost of 12 for VF 4: WIDEN-INTRINSIC ir<%call> = call llvm.sincospi(ir<%in_val>)
; CHECK-COST-ARMPL: Cost of Invalid for VF vscale x 1: REPLICATE ir<%call> = call @llvm.sincospi.f32(ir<%in_val>)
@@ -455,13 +455,13 @@ exit:
}
; CHECK-COST-LABEL: sincospi_f64
-; CHECK-COST: LV: Found an estimated cost of 10 for VF 1 For instruction: %call = tail call { double, double } @llvm.sincospi.f64(double %in_val)
+; CHECK-COST: Cost of 10 for VF 1: EMIT ir<%call> = call ir<%in_val>, ir<@llvm.sincospi.f64>
; CHECK-COST: Cost of 26 for VF 2: WIDEN-INTRINSIC ir<%call> = call llvm.sincospi(ir<%in_val>)
; CHECK-COST: Cost of Invalid for VF vscale x 1: REPLICATE ir<%call> = call @llvm.sincospi.f64(ir<%in_val>)
; CHECK-COST: Cost of Invalid for VF vscale x 2: REPLICATE ir<%call> = call @llvm.sincospi.f64(ir<%in_val>)
; CHECK-COST-ARMPL-LABEL: sincospi_f64
-; CHECK-COST-ARMPL: LV: Found an estimated cost of 10 for VF 1 For instruction: %call = tail call { double, double } @llvm.sincospi.f64(double %in_val)
+; CHECK-COST-ARMPL: Cost of 10 for VF 1: EMIT ir<%call> = call ir<%in_val>, ir<@llvm.sincospi.f64>
; CHECK-COST-ARMPL: Cost of 12 for VF 2: WIDEN-INTRINSIC ir<%call> = call llvm.sincospi(ir<%in_val>)
; CHECK-COST-ARMPL: Cost of Invalid for VF vscale x 1: REPLICATE ir<%call> = call @llvm.sincospi.f64(ir<%in_val>)
; CHECK-COST-ARMPL: Cost of 13 for VF vscale x 2: WIDEN-INTRINSIC ir<%call> = call llvm.sincospi(ir<%in_val>)
@@ -528,7 +528,7 @@ exit:
}
; CHECK-COST-LABEL: sadd_with_overflow_i32
-; CHECK-COST: LV: Found an estimated cost of 1 for VF 1 For instruction: %call = tail call { i32, i1 } @llvm.sadd.with.overflow.i32(i32 %val_a, i32 %val_b)
+; CHECK-COST: Cost of 1 for VF 1: EMIT ir<%call> = call ir<%val_a>, ir<%val_b>, ir<@llvm.sadd.with.overflow.i32>
; CHECK-COST: Cost of 4 for VF 2: WIDEN-INTRINSIC ir<%call> = call llvm.sadd.with.overflow(ir<%val_a>, ir<%val_b>)
; CHECK-COST: Cost of 4 for VF 4: WIDEN-INTRINSIC ir<%call> = call llvm.sadd.with.overflow(ir<%val_a>, ir<%val_b>)
; CHECK-COST: Cost of 7 for VF 8: WIDEN-INTRINSIC ir<%call> = call llvm.sadd.with.overflow(ir<%val_a>, ir<%val_b>)
@@ -538,7 +538,7 @@ exit:
; CHECK-COST: Cost of 4 for VF vscale x 4: WIDEN-INTRINSIC ir<%call> = call llvm.sadd.with.overflow(ir<%val_a>, ir<%val_b>)
; CHECK-COST-ARMPL-LABEL: sadd_with_overflow_i32
-; CHECK-COST-ARMPL: LV: Found an estimated cost of 1 for VF 1 For instruction: %call = tail call { i32, i1 } @llvm.sadd.with.overflow.i32(i32 %val_a, i32 %val_b)
+; CHECK-COST-ARMPL: Cost of 1 for VF 1: EMIT ir<%call> = call ir<%val_a>, ir<%val_b>, ir<@llvm.sadd.with.overflow.i32>
; CHECK-COST-ARMPL: Cost of 4 for VF 2: WIDEN-INTRINSIC ir<%call> = call llvm.sadd.with.overflow(ir<%val_a>, ir<%val_b>)
; CHECK-COST-ARMPL: Cost of 4 for VF 4: WIDEN-INTRINSIC ir<%call> = call llvm.sadd.with.overflow(ir<%val_a>, ir<%val_b>)
; CHECK-COST-ARMPL: Cost of 7 for VF 8: WIDEN-INTRINSIC ir<%call> = call llvm.sadd.with.overflow(ir<%val_a>, ir<%val_b>)
diff --git a/llvm/test/Transforms/LoopVectorize/AArch64/struct-return-cost.ll b/llvm/test/Transforms/LoopVectorize/AArch64/struct-return-cost.ll
index 80d4036fd1bc0..aaaa22b2947aa 100644
--- a/llvm/test/Transforms/LoopVectorize/AArch64/struct-return-cost.ll
+++ b/llvm/test/Transforms/LoopVectorize/AArch64/struct-return-cost.ll
@@ -7,9 +7,9 @@ target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
target triple = "aarch64--linux-gnu"
; CHECK-COST-LABEL: struct_return_widen
-; CHECK-COST: LV: Found an estimated cost of 10 for VF 1 For instruction: %call = tail call { half, half } @foo(half %in_val)
-; CHECK-COST: LV: Found an estimated cost of 0 for VF 1 For instruction: %extract_a = extractvalue { half, half } %call, 0
-; CHECK-COST: LV: Found an estimated cost of 0 for VF 1 For instruction: %extract_b = extractvalue { half, half } %call, 1
+; CHECK-COST: Cost of 10 for VF 1: EMIT ir<%call> = call ir<%in_val>, ir<@foo>
+; CHECK-COST: Cost of 0 for VF 1: EMIT ir<%extract_a> = extractvalue ir<%call>
+; CHECK-COST: Cost of 0 for VF 1: EMIT ir<%extract_b> = extractvalue ir<%call>
;
; CHECK-COST: Cost of 10 for VF 2: WIDEN-CALL ir<%call> = call @foo(ir<%in_val>) (using library function: fixed_vec_foo)
; CHECK-COST: Cost of 0 for VF 2: WIDEN ir<%extract_a> = extractvalue ir<%call>, ir<0>
@@ -57,9 +57,9 @@ exit:
}
; CHECK-COST-LABEL: struct_return_replicate
-; CHECK-COST: LV: Found an estimated cost of 10 for VF 1 For instruction: %call = tail call { half, half } @foo(half %in_val)
-; CHECK-COST: LV: Found an estimated cost of 0 for VF 1 For instruction: %extract_a = extractvalue { half, half } %call, 0
-; CHECK-COST: LV: Found an estimated cost of 0 for VF 1 For instruction: %extract_b = extractvalue { half, half } %call, 1
+; CHECK-COST: Cost of 10 for VF 1: EMIT ir<%call> = call ir<%in_val>, ir<@foo>
+; CHECK-COST: Cost of 0 for VF 1: EMIT ir<%extract_a> = extractvalue ir<%call>
+; CHECK-COST: Cost of 0 for VF 1: EMIT ir<%extract_b> = extractvalue ir<%call>
;
; CHECK-COST: Cost of 26 for VF 2: REPLICATE ir<%call> = call @foo(ir<%in_val>)
; CHECK-COST: Cost of 0 for VF 2: WIDEN ir<%extract_a> = extractvalue ir<%call>, ir<0>
@@ -108,9 +108,9 @@ exit:
}
; CHECK-COST-LABEL: struct_return_scalable
-; CHECK-COST: LV: Found an estimated cost of 10 for VF 1 For instruction: %call = tail call { half, half } @foo(half %in_val)
-; CHECK-COST: LV: Found an estimated cost of 0 for VF 1 For instruction: %extract_a = extractvalue { half, half } %call, 0
-; CHECK-COST: LV: Found an estimated cost of 0 for VF 1 For instruction: %extract_b = extractvalue { half, half } %call, 1
+; CHECK-COST: Cost of 10 for VF 1: EMIT ir<%call> = call ir<%in_val>, ir<@foo>
+; CHECK-COST: Cost of 0 for VF 1: EMIT ir<%extract_a> = extractvalue ir<%call>
+; CHECK-COST: Cost of 0 for VF 1: EMIT ir<%extract_b> = extractvalue ir<%call>
;
; CHECK-COST: Cost of 26 for VF 2: REPLICATE ir<%call> = call @foo(ir<%in_val>)
; CHECK-COST: Cost of 0 for VF 2: WIDEN ir<%extract_a> = extractvalue ir<%call>, ir<0>
diff --git a/llvm/test/Transforms/LoopVectorize/AArch64/type-shrinkage-zext-costs.ll b/llvm/test/Transforms/LoopVectorize/AArch64/type-shrinkage-zext-costs.ll
index b5c8c922a24d3..7b3026d980f6b 100644
--- a/llvm/test/Transforms/LoopVectorize/AArch64/type-shrinkage-zext-costs.ll
+++ b/llvm/test/Transforms/LoopVectorize/AArch64/type-shrinkage-zext-costs.ll
@@ -8,7 +8,7 @@ target triple = "aarch64-unknown-linux-gnu"
define void @zext_i8_i16(ptr noalias nocapture readonly %p, ptr noalias nocapture %q, i32 %len) #0 {
; CHECK-COST-LABEL: LV: Checking a loop in 'zext_i8_i16'
-; CHECK-COST: LV: Found an estimated cost of 0 for VF 1 For instruction: %conv = zext i8 %0 to i32
+; CHECK-COST: Cost of 0 for VF 1: EMIT-SCALAR ir<%conv> = zext ir<%0> to i32
; CHECK-COST: Cost of 1 for VF 2: WIDEN-CAST ir<%conv> = zext ir<%0> to i16
; CHECK-COST: Cost of 1 for VF 4: WIDEN-CAST ir<%conv> = zext ir<%0> to i16
; CHECK-COST: Cost of 1 for VF 8: WIDEN-CAST ir<%conv> = zext ir<%0> to i16
diff --git a/llvm/test/Transforms/LoopVectorize/ARM/mve-icmpcost.ll b/llvm/test/Transforms/LoopVectorize/ARM/mve-icmpcost.ll
index 563d78812fcd9..41737159d2b37 100644
--- a/llvm/test/Transforms/LoopVectorize/ARM/mve-icmpcost.ll
+++ b/llvm/test/Transforms/LoopVectorize/ARM/mve-icmpcost.ll
@@ -5,19 +5,18 @@ target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv8.1m.main-arm-none-eabi"
; CHECK-LABEL: LV: Checking a loop in 'expensive_icmp'
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %i.016 = phi i32 [ 0, %for.body.lr.ph ], [ %inc, %for.inc ]
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %arrayidx = getelementptr inbounds i16, ptr %s, i32 %i.016
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %1 = load i16, ptr %arrayidx, align 2
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %conv = sext i16 %1 to i32
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %cmp2 = icmp sgt i32 %conv, %conv1
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: br i1 %cmp2, label %if.then, label %for.inc
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %conv6 = add i16 %1, %0
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %arrayidx7 = getelementptr inbounds i16, ptr %d, i32 %i.016
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: store i16 %conv6, ptr %arrayidx7, align 2
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: br label %for.inc
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %inc = add nuw nsw i32 %i.016, 1
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %exitcond.not = icmp eq i32 %inc, %n
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: br i1 %exitcond.not, label %for.cond.cleanup.loopexit, label %for.body
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%i.016> = phi [ ir<0>, vector.ph ], [ ir<%inc>, for.inc ]
+; CHECK: Cost of 0 for VF 1: EMIT ir<%arrayidx> = getelementptr inbounds ir<%s>, ir<%i.016>
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load ir<%arrayidx>
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%conv> = sext ir<%1> to i32
+; CHECK: Cost of 1 for VF 1: EMIT ir<%cmp2> = icmp sgt ir<%conv>, ir<%conv1>
+; CHECK: Cost of 0 for VF 1: EMIT branch-on-cond ir<%cmp2>
+; CHECK: Cost of 1 for VF 1: EMIT ir<%conv6> = add ir<%1>, ir<%0>
+; CHECK: Cost of 0 for VF 1: EMIT ir<%arrayidx7> = getelementptr inbounds ir<%d>, ir<%i.016>
+; CHECK: Cost of 1 for VF 1: EMIT store ir<%conv6>, ir<%arrayidx7>
+; CHECK: Cost of 1 for VF 1: EMIT ir<%inc> = add nuw nsw ir<%i.016>, ir<1>
+; CHECK: Cost of 1 for VF 1: EMIT ir<%exitcond.not> = icmp eq ir<%inc>, ir<%n>
+; CHECK: Cost of 0 for VF 1: EMIT branch-on-cond ir<%exitcond.not>
; CHECK: LV: Scalar loop costs: 5.
; CHECK: Cost of 1 for VF 2: induction instruction %inc = add nuw nsw i32 %i.016, 1
; CHECK: Cost of 0 for VF 2: induction instruction %i.016 = phi i32 [ 0, %for.body.lr.ph ], [ %inc, %for.inc ]
@@ -99,26 +98,26 @@ for.inc:
}
; CHECK-LABEL: LV: Checking a loop in 'cheap_icmp'
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %blkCnt.012 = phi i32 [ %dec, %while.body ], [ %blockSize, %while.body.preheader ]
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %pSrcA.addr.011 = phi ptr [ %incdec.ptr, %while.body ], [ %pSrcA, %while.body.preheader ]
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %pDst.addr.010 = phi ptr [ %incdec.ptr5, %while.body ], [ %pDst, %while.body.preheader ]
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %pSrcB.addr.09 = phi ptr [ %incdec.ptr2, %while.body ], [ %pSrcB, %while.body.preheader ]
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %incdec.ptr = getelementptr inbounds i8, ptr %pSrcA.addr.011, i32 1
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %0 = load i8, ptr %pSrcA.addr.011, align 1
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %conv1 = sext i8 %0 to i32
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %incdec.ptr2 = getelementptr inbounds i8, ptr %pSrcB.addr.09, i32 1
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %1 = load i8, ptr %pSrcB.addr.09, align 1
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %conv3 = sext i8 %1 to i32
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %mul = mul nsw i32 %conv3, %conv1
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %shr = ashr i32 %mul, 7
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %2 = icmp slt i32 %shr, 127
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %spec.select.i = select i1 %2, i32 %shr, i32 127
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %conv4 = trunc i32 %spec.select.i to i8
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %incdec.ptr5 = getelementptr inbounds i8, ptr %pDst.addr.010, i32 1
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: store i8 %conv4, ptr %pDst.addr.010, align 1
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %dec = add i32 %blkCnt.012, -1
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %cmp.not = icmp eq i32 %dec, 0
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: br i1 %cmp.not, label %while.end.loopexit, label %while.body
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%blkCnt.012> = phi [ ir<%blockSize>, vector.ph ], [ ir<%dec>, while.body ]
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%pSrcA.addr.011> = phi [ ir<%pSrcA>, vector.ph ], [ ir<%incdec.ptr>, while.body ]
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%pDst.addr.010> = phi [ ir<%pDst>, vector.ph ], [ ir<%incdec.ptr5>, while.body ]
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%pSrcB.addr.09> = phi [ ir<%pSrcB>, vector.ph ], [ ir<%incdec.ptr2>, while.body ]
+; CHECK: Cost of 0 for VF 1: EMIT ir<%incdec.ptr> = getelementptr inbounds ir<%pSrcA.addr.011>, ir<1>
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%0> = load ir<%pSrcA.addr.011>
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%conv1> = sext ir<%0> to i32
+; CHECK: Cost of 0 for VF 1: EMIT ir<%incdec.ptr2> = getelementptr inbounds ir<%pSrcB.addr.09>, ir<1>
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load ir<%pSrcB.addr.09>
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%conv3> = sext ir<%1> to i32
+; CHECK: Cost of 1 for VF 1: EMIT ir<%mul> = mul nsw ir<%conv3>, ir<%conv1>
+; CHECK: Cost of 1 for VF 1: EMIT ir<%shr> = ashr ir<%mul>, ir<7>
+; CHECK: Cost of 1 for VF 1: EMIT ir<%2> = icmp slt ir<%shr>, ir<127>
+; CHECK: Cost of 1 for VF 1: EMIT ir<%spec.select.i> = select ir<%2>, ir<%shr>, ir<127>
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%conv4> = trunc ir<%spec.select.i> to i8
+; CHECK: Cost of 0 for VF 1: EMIT ir<%incdec.ptr5> = getelementptr inbounds ir<%pDst.addr.010>, ir<1>
+; CHECK: Cost of 1 for VF 1: EMIT store ir<%conv4>, ir<%pDst.addr.010>
+; CHECK: Cost of 1 for VF 1: EMIT ir<%dec> = add ir<%blkCnt.012>, ir<-1>
+; CHECK: Cost of 1 for VF 1: EMIT ir<%cmp.not> = icmp eq ir<%dec>, ir<0>
+; CHECK: Cost of 0 for VF 1: EMIT branch-on-cond ir<%cmp.not>
; CHECK: LV: Scalar loop costs: 9.
; CHECK: Cost of 1 for VF 2: induction instruction %dec = add i32 %blkCnt.012, -1
; CHECK: Cost of 0 for VF 2: induction instruction %blkCnt.012 = phi i32 [ %dec, %while.body ], [ %blockSize, %while.body.preheader ]
@@ -278,7 +277,7 @@ while.end:
ret void
}
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %cmp1 = fcmp
+; CHECK: Cost of 1 for VF 1: EMIT ir<%cmp1> = fcmp olt nnan ninf nsz ir<%0>, ir<0.000000e+00>
; CHECK: Cost of 12 for VF 2: WIDEN ir<%cmp1> = fcmp olt nnan ninf nsz ir<%0>, ir<0.000000e+00>
; CHECK: Cost of 24 for VF 4: WIDEN ir<%cmp1> = fcmp olt nnan ninf nsz ir<%0>, ir<0.000000e+00>
define void @floatcmp(ptr nocapture readonly %pSrc, ptr nocapture %pDst, i32 %blockSize) #0 {
diff --git a/llvm/test/Transforms/LoopVectorize/ARM/mve-selectandorcost.ll b/llvm/test/Transforms/LoopVectorize/ARM/mve-selectandorcost.ll
index 81df356c607df..8e0bb4d65f434 100644
--- a/llvm/test/Transforms/LoopVectorize/ARM/mve-selectandorcost.ll
+++ b/llvm/test/Transforms/LoopVectorize/ARM/mve-selectandorcost.ll
@@ -7,7 +7,7 @@ target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv8.1m.main-arm-none-eabi"
; CHECK-COST-LABEL: test
-; CHECK-COST: LV: Found an estimated cost of 1 for VF 1 For instruction: %or.cond = select i1 %cmp2, i1 true, i1 %cmp3
+; CHECK-COST: Cost of 1 for VF 1: EMIT ir<%or.cond> = select ir<%cmp2>, ir<true>, ir<%cmp3>
; CHECK-COST: Cost of 26 for VF 2: WIDEN ir<%or.cond> = select ir<%cmp2>, ir<true>, ir<%cmp3>
; CHECK-COST: Cost of 2 for VF 4: WIDEN ir<%or.cond> = select ir<%cmp2>, ir<true>, ir<%cmp3>
diff --git a/llvm/test/Transforms/LoopVectorize/ARM/mve-shiftcost.ll b/llvm/test/Transforms/LoopVectorize/ARM/mve-shiftcost.ll
index 22913b4dae0db..663f54600d3f4 100644
--- a/llvm/test/Transforms/LoopVectorize/ARM/mve-shiftcost.ll
+++ b/llvm/test/Transforms/LoopVectorize/ARM/mve-shiftcost.ll
@@ -6,8 +6,8 @@ target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv8.1m.main-none-none-eabi"
; CHECK-LABEL: test
-; CHECK-COST: LV: Found an estimated cost of 0 for VF 1 For instruction: %and515 = shl i32 %l41, 3
-; CHECK-COST: LV: Found an estimated cost of 1 for VF 1 For instruction: %l45 = and i32 %and515, 131072
+; CHECK-COST: Cost of 0 for VF 1: EMIT ir<%and515> = shl ir<%l41>, ir<3>
+; CHECK-COST: Cost of 1 for VF 1: EMIT ir<%l45> = and ir<%and515>, ir<131072>
; CHECK-COST: Cost of 2 for VF 4: WIDEN ir<%and515> = shl ir<%l41>, ir<3>
; CHECK-COST: Cost of 2 for VF 4: WIDEN ir<%l45> = and ir<%and515>, ir<131072>
; CHECK-NOT: vector.body
diff --git a/llvm/test/Transforms/LoopVectorize/ARM/scalar-block-cost.ll b/llvm/test/Transforms/LoopVectorize/ARM/scalar-block-cost.ll
index 8ebb04dd671dc..929503d556059 100644
--- a/llvm/test/Transforms/LoopVectorize/ARM/scalar-block-cost.ll
+++ b/llvm/test/Transforms/LoopVectorize/ARM/scalar-block-cost.ll
@@ -6,16 +6,17 @@ target triple = "thumbv8.1m.main-none-none-eabi"
define void @pred_loop(ptr %off, ptr %data, ptr %dst, i32 %n) #0 {
-; CHECK-COST: LV: Found an estimated cost of 0 for VF 1 For instruction: %i.09 = phi i32 [ %add, %for.body ], [ 0, %for.body.preheader ]
-; CHECK-COST-NEXT: LV: Found an estimated cost of 1 for VF 1 For instruction: %add = add nuw nsw i32 %i.09, 1
-; CHECK-COST-NEXT: LV: Found an estimated cost of 0 for VF 1 For instruction: %arrayidx = getelementptr inbounds i32, ptr %data, i32 %add
-; CHECK-COST-NEXT: LV: Found an estimated cost of 1 for VF 1 For instruction: %0 = load i32, ptr %arrayidx, align 4
-; CHECK-COST-NEXT: LV: Found an estimated cost of 1 for VF 1 For instruction: %add1 = add nsw i32 %0, 5
-; CHECK-COST-NEXT: LV: Found an estimated cost of 0 for VF 1 For instruction: %arrayidx2 = getelementptr inbounds i32, ptr %dst, i32 %i.09
-; CHECK-COST-NEXT: LV: Found an estimated cost of 1 for VF 1 For instruction: store i32 %add1, ptr %arrayidx2, align 4
-; CHECK-COST-NEXT: LV: Found an estimated cost of 1 for VF 1 For instruction: %exitcond.not = icmp eq i32 %add, %n
-; CHECK-COST-NEXT: LV: Found an estimated cost of 0 for VF 1 For instruction: br i1 %exitcond.not, label %exit.loopexit, label %for.body
-; CHECK-COST-NEXT: LV: Scalar loop costs: 5.
+; CHECK-COST-LABEL: LV: Checking a loop in 'pred_loop'
+; CHECK-COST: Cost of 0 for VF 1: EMIT-SCALAR ir<%i.09> = phi [ ir<0>, vector.ph ], [ ir<%add>, for.body ]
+; CHECK-COST-NEXT: Cost of 1 for VF 1: EMIT ir<%add> = add nuw nsw ir<%i.09>, ir<1>
+; CHECK-COST-NEXT: Cost of 0 for VF 1: EMIT ir<%arrayidx> = getelementptr inbounds ir<%data>, ir<%add>
+; CHECK-COST-NEXT: Cost of 1 for VF 1: EMIT-SCALAR ir<%0> = load ir<%arrayidx>
+; CHECK-COST-NEXT: Cost of 1 for VF 1: EMIT ir<%add1> = add nsw ir<%0>, ir<5>
+; CHECK-COST-NEXT: Cost of 0 for VF 1: EMIT ir<%arrayidx2> = getelementptr inbounds ir<%dst>, ir<%i.09>
+; CHECK-COST-NEXT: Cost of 1 for VF 1: EMIT store ir<%add1>, ir<%arrayidx2>
+; CHECK-COST-NEXT: Cost of 1 for VF 1: EMIT ir<%exitcond.not> = icmp eq ir<%add>, ir<%n>
+; CHECK-COST-NEXT: Cost of 0 for VF 1: EMIT branch-on-cond ir<%exitcond.not>
+; CHECK-COST: LV: Scalar loop costs: 5.
entry:
%cmp8 = icmp sgt i32 %n, 0
@@ -38,26 +39,26 @@ for.body:
define void @if_convert(ptr %a, ptr %b, i32 %start, i32 %end) #0 {
-; CHECK-COST-2: LV: Found an estimated cost of 0 for VF 1 For instruction: %i.032 = phi i32 [ %inc, %if.end ], [ %start, %for.body.preheader ]
-; CHECK-COST-2-NEXT: LV: Found an estimated cost of 0 for VF 1 For instruction: %arrayidx = getelementptr inbounds i32, ptr %a, i32 %i.032
-; CHECK-COST-2-NEXT: LV: Found an estimated cost of 1 for VF 1 For instruction: %0 = load i32, ptr %arrayidx, align 4
-; CHECK-COST-2-NEXT: LV: Found an estimated cost of 0 for VF 1 For instruction: %arrayidx2 = getelementptr inbounds i32, ptr %b, i32 %i.032
-; CHECK-COST-2-NEXT: LV: Found an estimated cost of 1 for VF 1 For instruction: %1 = load i32, ptr %arrayidx2, align 4
-; CHECK-COST-2-NEXT: LV: Found an estimated cost of 1 for VF 1 For instruction: %cmp3 = icmp sgt i32 %0, %1
-; CHECK-COST-2-NEXT: LV: Found an estimated cost of 0 for VF 1 For instruction: br i1 %cmp3, label %if.then, label %if.end
-; CHECK-COST-2-NEXT: LV: Found an estimated cost of 1 for VF 1 For instruction: %mul = mul nsw i32 %0, 5
-; CHECK-COST-2-NEXT: LV: Found an estimated cost of 1 for VF 1 For instruction: %add = add nsw i32 %mul, 3
-; CHECK-COST-2-NEXT: LV: Found an estimated cost of 0 for VF 1 For instruction: %factor = shl i32 %add, 1
-; CHECK-COST-2-NEXT: LV: Found an estimated cost of 1 for VF 1 For instruction: %sub = sub i32 %0, %1
-; CHECK-COST-2-NEXT: LV: Found an estimated cost of 1 for VF 1 For instruction: %add7 = add i32 %sub, %factor
-; CHECK-COST-2-NEXT: LV: Found an estimated cost of 1 for VF 1 For instruction: store i32 %add7, ptr %arrayidx2, align 4
-; CHECK-COST-2-NEXT: LV: Found an estimated cost of 0 for VF 1 For instruction: br label %if.end
-; CHECK-COST-2-NEXT: LV: Found an estimated cost of 0 for VF 1 For instruction: %k.0 = phi i32 [ %add, %if.then ], [ %0, %for.body ]
-; CHECK-COST-2-NEXT: LV: Found an estimated cost of 1 for VF 1 For instruction: store i32 %k.0, ptr %arrayidx, align 4
-; CHECK-COST-2-NEXT: LV: Found an estimated cost of 1 for VF 1 For instruction: %inc = add nsw i32 %i.032, 1
-; CHECK-COST-2-NEXT: LV: Found an estimated cost of 1 for VF 1 For instruction: %exitcond.not = icmp eq i32 %inc, %end
-; CHECK-COST-2-NEXT: LV: Found an estimated cost of 0 for VF 1 For instruction: br i1 %exitcond.not, label %for.cond.cleanup.loopexit, label %for.body
-; CHECK-COST-2-NEXT: LV: Scalar loop costs: 8.5.
+; CHECK-COST-2-LABEL: LV: Checking a loop in 'if_convert'
+; CHECK-COST-2: Cost of 0 for VF 1: EMIT-SCALAR ir<%i.032> = phi [ ir<%start>, vector.ph ], [ ir<%inc>, if.end ]
+; CHECK-COST-2-NEXT: Cost of 0 for VF 1: EMIT ir<%arrayidx> = getelementptr inbounds ir<%a>, ir<%i.032>
+; CHECK-COST-2-NEXT: Cost of 1 for VF 1: EMIT-SCALAR ir<%0> = load ir<%arrayidx>
+; CHECK-COST-2-NEXT: Cost of 0 for VF 1: EMIT ir<%arrayidx2> = getelementptr inbounds ir<%b>, ir<%i.032>
+; CHECK-COST-2-NEXT: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load ir<%arrayidx2>
+; CHECK-COST-2-NEXT: Cost of 1 for VF 1: EMIT ir<%cmp3> = icmp sgt ir<%0>, ir<%1>
+; CHECK-COST-2-NEXT: Cost of 0 for VF 1: EMIT branch-on-cond ir<%cmp3>
+; CHECK-COST-2-NEXT: Cost of 1 for VF 1: EMIT ir<%mul> = mul nsw ir<%0>, ir<5>
+; CHECK-COST-2-NEXT: Cost of 1 for VF 1: EMIT ir<%add> = add nsw ir<%mul>, ir<3>
+; CHECK-COST-2-NEXT: Cost of 0 for VF 1: EMIT ir<%factor> = shl ir<%add>, ir<1>
+; CHECK-COST-2-NEXT: Cost of 1 for VF 1: EMIT ir<%sub> = sub ir<%0>, ir<%1>
+; CHECK-COST-2-NEXT: Cost of 1 for VF 1: EMIT ir<%add7> = add ir<%sub>, ir<%factor>
+; CHECK-COST-2-NEXT: Cost of 1 for VF 1: EMIT store ir<%add7>, ir<%arrayidx2>
+; CHECK-COST-2-NEXT: Cost of 0 for VF 1: EMIT-SCALAR ir<%k.0> = phi [ ir<%add>, if.then ], [ ir<%0>, for.body ]
+; CHECK-COST-2-NEXT: Cost of 1 for VF 1: EMIT store ir<%k.0>, ir<%arrayidx>
+; CHECK-COST-2-NEXT: Cost of 1 for VF 1: EMIT ir<%inc> = add nsw ir<%i.032>, ir<1>
+; CHECK-COST-2-NEXT: Cost of 1 for VF 1: EMIT ir<%exitcond.not> = icmp eq ir<%inc>, ir<%end>
+; CHECK-COST-2-NEXT: Cost of 0 for VF 1: EMIT branch-on-cond ir<%exitcond.not>
+; CHECK-COST-2: LV: Scalar loop costs: 8.5.
entry:
%cmp31 = icmp slt i32 %start, %end
diff --git a/llvm/test/Transforms/LoopVectorize/SystemZ/pr47665.ll b/llvm/test/Transforms/LoopVectorize/SystemZ/pr47665.ll
index 6858a776be49e..910232c27fe15 100644
--- a/llvm/test/Transforms/LoopVectorize/SystemZ/pr47665.ll
+++ b/llvm/test/Transforms/LoopVectorize/SystemZ/pr47665.ll
@@ -5,43 +5,21 @@ define void @test(ptr %p, i40 %a) {
; CHECK-LABEL: define void @test(
; CHECK-SAME: ptr [[P:%.*]], i40 [[A:%.*]]) #[[ATTR0:[0-9]+]] {
; CHECK-NEXT: entry:
-; CHECK-NEXT: br label [[VECTOR_PH:%.*]]
-; CHECK: vector.ph:
; CHECK-NEXT: br label [[VECTOR_BODY:%.*]]
-; CHECK: vector.body:
-; CHECK-NEXT: [[INDEX:%.*]] = phi i32 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[PRED_STORE_CONTINUE6:%.*]] ]
-; CHECK-NEXT: [[VEC_IND:%.*]] = phi <4 x i8> [ <i8 0, i8 1, i8 2, i8 3>, [[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], [[PRED_STORE_CONTINUE6]] ]
-; CHECK-NEXT: [[TMP0:%.*]] = icmp ule <4 x i8> [[VEC_IND]], splat (i8 9)
-; CHECK-NEXT: [[TMP1:%.*]] = extractelement <4 x i1> [[TMP0]], i64 0
-; CHECK-NEXT: br i1 [[TMP1]], label [[PRED_STORE_IF:%.*]], label [[PRED_STORE_CONTINUE:%.*]]
-; CHECK: pred.store.if:
-; CHECK-NEXT: store i1 false, ptr [[P]], align 1
-; CHECK-NEXT: br label [[PRED_STORE_CONTINUE]]
-; CHECK: pred.store.continue:
-; CHECK-NEXT: [[TMP2:%.*]] = extractelement <4 x i1> [[TMP0]], i64 1
-; CHECK-NEXT: br i1 [[TMP2]], label [[PRED_STORE_IF1:%.*]], label [[PRED_STORE_CONTINUE2:%.*]]
-; CHECK: pred.store.if1:
-; CHECK-NEXT: store i1 false, ptr [[P]], align 1
-; CHECK-NEXT: br label [[PRED_STORE_CONTINUE2]]
-; CHECK: pred.store.continue2:
-; CHECK-NEXT: [[TMP3:%.*]] = extractelement <4 x i1> [[TMP0]], i64 2
-; CHECK-NEXT: br i1 [[TMP3]], label [[PRED_STORE_IF3:%.*]], label [[PRED_STORE_CONTINUE4:%.*]]
-; CHECK: pred.store.if3:
-; CHECK-NEXT: store i1 false, ptr [[P]], align 1
-; CHECK-NEXT: br label [[PRED_STORE_CONTINUE4]]
-; CHECK: pred.store.continue4:
-; CHECK-NEXT: [[TMP4:%.*]] = extractelement <4 x i1> [[TMP0]], i64 3
-; CHECK-NEXT: br i1 [[TMP4]], label [[PRED_STORE_IF5:%.*]], label [[PRED_STORE_CONTINUE6]]
-; CHECK: pred.store.if5:
-; CHECK-NEXT: store i1 false, ptr [[P]], align 1
-; CHECK-NEXT: br label [[PRED_STORE_CONTINUE6]]
-; CHECK: pred.store.continue6:
-; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i32 [[INDEX]], 4
-; CHECK-NEXT: [[VEC_IND_NEXT]] = add nuw <4 x i8> [[VEC_IND]], splat (i8 4)
-; CHECK-NEXT: [[TMP5:%.*]] = icmp eq i32 [[INDEX_NEXT]], 12
-; CHECK-NEXT: br i1 [[TMP5]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
-; CHECK: middle.block:
-; CHECK-NEXT: br label [[FOR_BODY:%.*]]
+; CHECK: for.body:
+; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[VECTOR_BODY]] ]
+; CHECK-NEXT: [[SHL:%.*]] = shl i40 [[A]], 24
+; CHECK-NEXT: [[ASHR:%.*]] = ashr i40 [[SHL]], 28
+; CHECK-NEXT: [[TRUNC:%.*]] = trunc i40 [[ASHR]] to i32
+; CHECK-NEXT: [[ICMP_EQ:%.*]] = icmp eq i32 [[TRUNC]], 0
+; CHECK-NEXT: [[ZEXT:%.*]] = zext i1 [[ICMP_EQ]] to i32
+; CHECK-NEXT: [[ICMP_ULT:%.*]] = icmp ult i32 0, [[ZEXT]]
+; CHECK-NEXT: [[OR:%.*]] = or i1 [[ICMP_ULT]], true
+; CHECK-NEXT: [[ICMP_SGT:%.*]] = icmp sgt i1 [[OR]], false
+; CHECK-NEXT: store i1 [[ICMP_SGT]], ptr [[P]], align 1
+; CHECK-NEXT: [[IV_NEXT]] = add i32 [[IV]], 1
+; CHECK-NEXT: [[COND:%.*]] = icmp ult i32 [[IV_NEXT]], 10
+; CHECK-NEXT: br i1 [[COND]], label [[VECTOR_BODY]], label [[EXIT:%.*]]
; CHECK: exit:
; CHECK-NEXT: ret void
;
diff --git a/llvm/test/Transforms/LoopVectorize/WebAssembly/int-mac-reduction-costs.ll b/llvm/test/Transforms/LoopVectorize/WebAssembly/int-mac-reduction-costs.ll
index 6580a3dacc21c..8e12d55c92887 100644
--- a/llvm/test/Transforms/LoopVectorize/WebAssembly/int-mac-reduction-costs.ll
+++ b/llvm/test/Transforms/LoopVectorize/WebAssembly/int-mac-reduction-costs.ll
@@ -5,11 +5,11 @@ target triple = "wasm32"
define hidden i32 @i32_mac_s8(ptr nocapture noundef readonly %a, ptr nocapture noundef readonly %b, i32 noundef %N) {
; CHECK-LABEL: 'i32_mac_s8'
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %0 = load i8, ptr %arrayidx, align 1
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %conv = sext i8 %0 to i32
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %1 = load i8, ptr %arrayidx1, align 1
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %conv2 = sext i8 %1 to i32
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %mul = mul nsw i32 %conv2, %conv
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%0> = load
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%conv> = sext ir<%0> to i32
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%conv2> = sext ir<%1> to i32
+; CHECK: Cost of 1 for VF 1: EMIT ir<%mul> = mul nsw ir<%conv2>, ir<%conv>
; CHECK: Cost of 3 for VF 2: WIDEN ir<%0> = load
; CHECK: Cost of 0 for VF 2: WIDEN-CAST ir<%conv> = sext ir<%0> to i32
@@ -49,11 +49,11 @@ for.body:
define hidden i32 @i32_mac_s16(ptr nocapture noundef readonly %a, ptr nocapture noundef readonly %b, i32 noundef %N) {
; CHECK-LABEL: 'i32_mac_s16'
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %0 = load i16, ptr %arrayidx, align 2
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %conv = sext i16 %0 to i32
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %1 = load i16, ptr %arrayidx1, align 2
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %conv2 = sext i16 %1 to i32
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %mul = mul nsw i32 %conv2, %conv
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%0> = load
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%conv> = sext ir<%0> to i32
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%conv2> = sext ir<%1> to i32
+; CHECK: Cost of 1 for VF 1: EMIT ir<%mul> = mul nsw ir<%conv2>, ir<%conv>
; CHECK: Cost of 2 for VF 2: WIDEN ir<%0> = load
; CHECK: Cost of 0 for VF 2: WIDEN-CAST ir<%conv> = sext ir<%0> to i32
@@ -93,11 +93,11 @@ for.body:
define hidden i64 @i64_mac_s16(ptr nocapture noundef readonly %a, ptr nocapture noundef readonly %b, i32 noundef %N) {
; CHECK-LABEL: 'i64_mac_s16'
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %0 = load i16, ptr %arrayidx, align 2
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %conv = sext i16 %0 to i64
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %1 = load i16, ptr %arrayidx1, align 2
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %conv2 = sext i16 %1 to i64
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %mul = mul nsw i64 %conv2, %conv
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%0> = load
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%conv> = sext ir<%0> to i64
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%conv2> = sext ir<%1> to i64
+; CHECK: Cost of 1 for VF 1: EMIT ir<%mul> = mul nsw ir<%conv2>, ir<%conv>
; CHECK: Cost of 2 for VF 2: WIDEN ir<%0> = load
; CHECK: Cost of 1 for VF 2: WIDEN-CAST ir<%conv> = sext ir<%0> to i64
@@ -131,10 +131,10 @@ for.body:
define hidden i64 @i64_mac_s32(ptr nocapture noundef readonly %a, ptr nocapture noundef readonly %b, i32 noundef %N) {
; CHECK-LABEL: 'i64_mac_s32'
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %0 = load i32, ptr %arrayidx, align 4
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %1 = load i32, ptr %arrayidx1, align 4
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %mul = mul i32 %1, %0
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %conv = sext i32 %mul to i64
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%0> = load
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
+; CHECK: Cost of 1 for VF 1: EMIT ir<%mul> = mul ir<%1>, ir<%0>
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%conv> = sext ir<%mul> to i64
; CHECK: Cost of 2 for VF 2: WIDEN ir<%0> = load
; CHECK: Cost of 2 for VF 2: WIDEN ir<%1> = load
@@ -166,11 +166,11 @@ for.body:
define hidden i32 @i32_mac_u8(ptr nocapture noundef readonly %a, ptr nocapture noundef readonly %b, i32 noundef %N) {
; CHECK-LABEL: 'i32_mac_u8'
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %0 = load i8, ptr %arrayidx, align 1
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %conv = zext i8 %0 to i32
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %1 = load i8, ptr %arrayidx1, align 1
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %conv2 = zext i8 %1 to i32
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %mul = mul nuw nsw i32 %conv2, %conv
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%0> = load
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%conv> = zext ir<%0> to i32
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%conv2> = zext ir<%1> to i32
+; CHECK: Cost of 1 for VF 1: EMIT ir<%mul> = mul nuw nsw ir<%conv2>, ir<%conv>
; CHECK: Cost of 3 for VF 2: WIDEN ir<%0> = load
; CHECK: Cost of 0 for VF 2: WIDEN-CAST ir<%conv> = zext ir<%0> to i32
@@ -210,11 +210,11 @@ for.body:
define hidden i32 @i32_mac_u16(ptr nocapture noundef readonly %a, ptr nocapture noundef readonly %b, i32 noundef %N) {
; CHECK-LABEL: 'i32_mac_u16'
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %0 = load i16, ptr %arrayidx, align 2
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %conv = zext i16 %0 to i32
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %1 = load i16, ptr %arrayidx1, align 2
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %conv2 = zext i16 %1 to i32
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %mul = mul nuw nsw i32 %conv2, %conv
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%0> = load
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%conv> = zext ir<%0> to i32
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%conv2> = zext ir<%1> to i32
+; CHECK: Cost of 1 for VF 1: EMIT ir<%mul> = mul nuw nsw ir<%conv2>, ir<%conv>
; CHECK: Cost of 2 for VF 2: WIDEN ir<%0> = load
; CHECK: Cost of 0 for VF 2: WIDEN-CAST ir<%conv> = zext ir<%0> to i32
@@ -254,11 +254,11 @@ for.body:
define hidden i64 @i64_mac_u16(ptr nocapture noundef readonly %a, ptr nocapture noundef readonly %b, i32 noundef %N) {
; CHECK-LABEL: 'i64_mac_u16'
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %0 = load i16, ptr %arrayidx, align 2
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %conv = zext i16 %0 to i64
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %1 = load i16, ptr %arrayidx1, align 2
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %conv2 = zext i16 %1 to i64
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %mul = mul nuw nsw i64 %conv2, %conv
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%0> = load
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%conv> = zext ir<%0> to i64
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%conv2> = zext ir<%1> to i64
+; CHECK: Cost of 1 for VF 1: EMIT ir<%mul> = mul nuw nsw ir<%conv2>, ir<%conv>
; CHECK: Cost of 2 for VF 2: WIDEN ir<%0> = load
; CHECK: Cost of 1 for VF 2: WIDEN-CAST ir<%conv> = zext ir<%0> to i64
@@ -292,10 +292,10 @@ for.body:
define hidden i64 @i64_mac_u32(ptr nocapture noundef readonly %a, ptr nocapture noundef readonly %b, i32 noundef %N) {
; CHECK-LABEL: 'i64_mac_u32'
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %0 = load i32, ptr %arrayidx, align 4
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %1 = load i32, ptr %arrayidx1, align 4
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %mul = mul i32 %1, %0
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %conv = zext i32 %mul to i64
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%0> = load
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
+; CHECK: Cost of 1 for VF 1: EMIT ir<%mul> = mul ir<%1>, ir<%0>
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%conv> = zext ir<%mul> to i64
; CHECK: Cost of 2 for VF 2: WIDEN ir<%0> = load
; CHECK: Cost of 2 for VF 2: WIDEN ir<%1> = load
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/gather-i16-with-i8-index.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/gather-i16-with-i8-index.ll
index 8cf210ad4f2c8..a5bfcb7131813 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/gather-i16-with-i8-index.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/gather-i16-with-i8-index.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF [0-9]+ For instruction:\s*%valB = load i16, ptr %inB, align 2"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: (EMIT(-SCALAR)? ir<%valB>|WIDEN ir<%valB>|REPLICATE ir<%valB>|WIDEN-GATHER ir<%valB>) = load"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse4.2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=AVX1
@@ -17,14 +17,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE-LABEL: 'test'
-; SSE: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i16, ptr %inB, align 2
+; SSE: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; SSE: Cost of 24 for VF 2: {{.*}}ir<%valB> = load
; SSE: Cost of 48 for VF 4: {{.*}}ir<%valB> = load
; SSE: Cost of 96 for VF 8: {{.*}}ir<%valB> = load
; SSE: Cost of 192 for VF 16: {{.*}}ir<%valB> = load
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i16, ptr %inB, align 2
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; AVX1: Cost of 24 for VF 2: {{.*}}ir<%valB> = load
; AVX1: Cost of 48 for VF 4: {{.*}}ir<%valB> = load
; AVX1: Cost of 96 for VF 8: {{.*}}ir<%valB> = load
@@ -32,7 +32,7 @@ define void @test() {
; AVX1: Cost of 386 for VF 32: {{.*}}ir<%valB> = load
;
; AVX2-SLOWGATHER-LABEL: 'test'
-; AVX2-SLOWGATHER: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i16, ptr %inB, align 2
+; AVX2-SLOWGATHER: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; AVX2-SLOWGATHER: Cost of 4 for VF 2: {{.*}}ir<%valB> = load
; AVX2-SLOWGATHER: Cost of 8 for VF 4: {{.*}}ir<%valB> = load
; AVX2-SLOWGATHER: Cost of 16 for VF 8: {{.*}}ir<%valB> = load
@@ -40,7 +40,7 @@ define void @test() {
; AVX2-SLOWGATHER: Cost of 66 for VF 32: {{.*}}ir<%valB> = load
;
; AVX2-FASTGATHER-LABEL: 'test'
-; AVX2-FASTGATHER: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i16, ptr %inB, align 2
+; AVX2-FASTGATHER: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; AVX2-FASTGATHER: Cost of 6 for VF 2: {{.*}}ir<%valB> = load
; AVX2-FASTGATHER: Cost of 13 for VF 4: {{.*}}ir<%valB> = load
; AVX2-FASTGATHER: Cost of 26 for VF 8: {{.*}}ir<%valB> = load
@@ -48,7 +48,7 @@ define void @test() {
; AVX2-FASTGATHER: Cost of 106 for VF 32: {{.*}}ir<%valB> = load
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i16, ptr %inB, align 2
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; AVX512: Cost of 6 for VF 2: {{.*}}ir<%valB> = load
; AVX512: Cost of 13 for VF 4: {{.*}}ir<%valB> = load
; AVX512: Cost of 27 for VF 8: {{.*}}ir<%valB> = load
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/gather-i32-with-i8-index.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/gather-i32-with-i8-index.ll
index a44654e157a49..de5529ee46517 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/gather-i32-with-i8-index.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/gather-i32-with-i8-index.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF [0-9]+ For instruction:\s*%valB = load i32, ptr %inB, align 4"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: (EMIT(-SCALAR)? ir<%valB>|WIDEN ir<%valB>|REPLICATE ir<%valB>|WIDEN-GATHER ir<%valB>) = load"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse4.2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE42
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=AVX1
@@ -17,21 +17,21 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i32, ptr %inB, align 4
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; SSE2: Cost of 25 for VF 2: {{.*}}ir<%valB> = load
; SSE2: Cost of 51 for VF 4: {{.*}}ir<%valB> = load
; SSE2: Cost of 102 for VF 8: {{.*}}ir<%valB> = load
; SSE2: Cost of 204 for VF 16: {{.*}}ir<%valB> = load
;
; SSE42-LABEL: 'test'
-; SSE42: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i32, ptr %inB, align 4
+; SSE42: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; SSE42: Cost of 24 for VF 2: {{.*}}ir<%valB> = load
; SSE42: Cost of 48 for VF 4: {{.*}}ir<%valB> = load
; SSE42: Cost of 96 for VF 8: {{.*}}ir<%valB> = load
; SSE42: Cost of 192 for VF 16: {{.*}}ir<%valB> = load
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i32, ptr %inB, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; AVX1: Cost of 24 for VF 2: {{.*}}ir<%valB> = load
; AVX1: Cost of 48 for VF 4: {{.*}}ir<%valB> = load
; AVX1: Cost of 97 for VF 8: {{.*}}ir<%valB> = load
@@ -39,7 +39,7 @@ define void @test() {
; AVX1: Cost of 388 for VF 32: {{.*}}ir<%valB> = load
;
; AVX2-SLOWGATHER-LABEL: 'test'
-; AVX2-SLOWGATHER: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i32, ptr %inB, align 4
+; AVX2-SLOWGATHER: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; AVX2-SLOWGATHER: Cost of 4 for VF 2: {{.*}}ir<%valB> = load
; AVX2-SLOWGATHER: Cost of 8 for VF 4: {{.*}}ir<%valB> = load
; AVX2-SLOWGATHER: Cost of 17 for VF 8: {{.*}}ir<%valB> = load
@@ -47,7 +47,7 @@ define void @test() {
; AVX2-SLOWGATHER: Cost of 68 for VF 32: {{.*}}ir<%valB> = load
;
; AVX2-FASTGATHER-LABEL: 'test'
-; AVX2-FASTGATHER: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i32, ptr %inB, align 4
+; AVX2-FASTGATHER: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; AVX2-FASTGATHER: Cost of 4 for VF 2: {{.*}}ir<%valB> = load
; AVX2-FASTGATHER: Cost of 6 for VF 4: {{.*}}ir<%valB> = load
; AVX2-FASTGATHER: Cost of 12 for VF 8: {{.*}}ir<%valB> = load
@@ -55,7 +55,7 @@ define void @test() {
; AVX2-FASTGATHER: Cost of 48 for VF 32: {{.*}}ir<%valB> = load
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i32, ptr %inB, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; AVX512: Cost of 6 for VF 2: {{.*}}ir<%valB> = load
; AVX512: Cost of 13 for VF 4: {{.*}}ir<%valB> = load
; AVX512: Cost of 10 for VF 8: {{.*}}ir<%valB> = load
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/gather-i64-with-i8-index.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/gather-i64-with-i8-index.ll
index 7040087e4b400..b041045e6432a 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/gather-i64-with-i8-index.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/gather-i64-with-i8-index.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF [0-9]+ For instruction:\s*%valB = load i64, ptr %inB, align 8"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: (EMIT(-SCALAR)? ir<%valB>|WIDEN ir<%valB>|REPLICATE ir<%valB>|WIDEN-GATHER ir<%valB>) = load"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse4.2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE42
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=AVX1
@@ -17,21 +17,21 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i64, ptr %inB, align 8
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; SSE2: Cost of 25 for VF 2: {{.*}}ir<%valB> = load
; SSE2: Cost of 50 for VF 4: {{.*}}ir<%valB> = load
; SSE2: Cost of 100 for VF 8: {{.*}}ir<%valB> = load
; SSE2: Cost of 200 for VF 16: {{.*}}ir<%valB> = load
;
; SSE42-LABEL: 'test'
-; SSE42: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i64, ptr %inB, align 8
+; SSE42: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; SSE42: Cost of 24 for VF 2: {{.*}}ir<%valB> = load
; SSE42: Cost of 48 for VF 4: {{.*}}ir<%valB> = load
; SSE42: Cost of 96 for VF 8: {{.*}}ir<%valB> = load
; SSE42: Cost of 192 for VF 16: {{.*}}ir<%valB> = load
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i64, ptr %inB, align 8
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; AVX1: Cost of 24 for VF 2: {{.*}}ir<%valB> = load
; AVX1: Cost of 49 for VF 4: {{.*}}ir<%valB> = load
; AVX1: Cost of 98 for VF 8: {{.*}}ir<%valB> = load
@@ -39,7 +39,7 @@ define void @test() {
; AVX1: Cost of 392 for VF 32: {{.*}}ir<%valB> = load
;
; AVX2-SLOWGATHER-LABEL: 'test'
-; AVX2-SLOWGATHER: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i64, ptr %inB, align 8
+; AVX2-SLOWGATHER: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; AVX2-SLOWGATHER: Cost of 4 for VF 2: {{.*}}ir<%valB> = load
; AVX2-SLOWGATHER: Cost of 9 for VF 4: {{.*}}ir<%valB> = load
; AVX2-SLOWGATHER: Cost of 18 for VF 8: {{.*}}ir<%valB> = load
@@ -47,7 +47,7 @@ define void @test() {
; AVX2-SLOWGATHER: Cost of 72 for VF 32: {{.*}}ir<%valB> = load
;
; AVX2-FASTGATHER-LABEL: 'test'
-; AVX2-FASTGATHER: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i64, ptr %inB, align 8
+; AVX2-FASTGATHER: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; AVX2-FASTGATHER: Cost of 4 for VF 2: {{.*}}ir<%valB> = load
; AVX2-FASTGATHER: Cost of 6 for VF 4: {{.*}}ir<%valB> = load
; AVX2-FASTGATHER: Cost of 12 for VF 8: {{.*}}ir<%valB> = load
@@ -55,7 +55,7 @@ define void @test() {
; AVX2-FASTGATHER: Cost of 48 for VF 32: {{.*}}ir<%valB> = load
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i64, ptr %inB, align 8
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; AVX512: Cost of 6 for VF 2: {{.*}}ir<%valB> = load
; AVX512: Cost of 14 for VF 4: {{.*}}ir<%valB> = load
; AVX512: Cost of 10 for VF 8: {{.*}}ir<%valB> = load
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/gather-i8-with-i8-index.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/gather-i8-with-i8-index.ll
index d51a6b341b8cf..dca32b5722406 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/gather-i8-with-i8-index.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/gather-i8-with-i8-index.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF [0-9]+ For instruction:\s*%valB = load i8, ptr %inB, align 1"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: (EMIT(-SCALAR)? ir<%valB>|WIDEN ir<%valB>|REPLICATE ir<%valB>|WIDEN-GATHER ir<%valB>) = load"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse4.2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE42
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=AVX1
@@ -17,21 +17,21 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i8, ptr %inB, align 1
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; SSE2: Cost of 25 for VF 2: {{.*}}ir<%valB> = load
; SSE2: Cost of 51 for VF 4: {{.*}}ir<%valB> = load
; SSE2: Cost of 103 for VF 8: {{.*}}ir<%valB> = load
; SSE2: Cost of 207 for VF 16: {{.*}}ir<%valB> = load
;
; SSE42-LABEL: 'test'
-; SSE42: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i8, ptr %inB, align 1
+; SSE42: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; SSE42: Cost of 24 for VF 2: {{.*}}ir<%valB> = load
; SSE42: Cost of 48 for VF 4: {{.*}}ir<%valB> = load
; SSE42: Cost of 96 for VF 8: {{.*}}ir<%valB> = load
; SSE42: Cost of 192 for VF 16: {{.*}}ir<%valB> = load
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i8, ptr %inB, align 1
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; AVX1: Cost of 24 for VF 2: {{.*}}ir<%valB> = load
; AVX1: Cost of 48 for VF 4: {{.*}}ir<%valB> = load
; AVX1: Cost of 96 for VF 8: {{.*}}ir<%valB> = load
@@ -39,7 +39,7 @@ define void @test() {
; AVX1: Cost of 385 for VF 32: {{.*}}ir<%valB> = load
;
; AVX2-SLOWGATHER-LABEL: 'test'
-; AVX2-SLOWGATHER: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i8, ptr %inB, align 1
+; AVX2-SLOWGATHER: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; AVX2-SLOWGATHER: Cost of 4 for VF 2: {{.*}}ir<%valB> = load
; AVX2-SLOWGATHER: Cost of 8 for VF 4: {{.*}}ir<%valB> = load
; AVX2-SLOWGATHER: Cost of 16 for VF 8: {{.*}}ir<%valB> = load
@@ -47,7 +47,7 @@ define void @test() {
; AVX2-SLOWGATHER: Cost of 65 for VF 32: {{.*}}ir<%valB> = load
;
; AVX2-FASTGATHER-LABEL: 'test'
-; AVX2-FASTGATHER: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i8, ptr %inB, align 1
+; AVX2-FASTGATHER: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; AVX2-FASTGATHER: Cost of 6 for VF 2: {{.*}}ir<%valB> = load
; AVX2-FASTGATHER: Cost of 13 for VF 4: {{.*}}ir<%valB> = load
; AVX2-FASTGATHER: Cost of 26 for VF 8: {{.*}}ir<%valB> = load
@@ -55,7 +55,7 @@ define void @test() {
; AVX2-FASTGATHER: Cost of 105 for VF 32: {{.*}}ir<%valB> = load
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB = load i8, ptr %inB, align 1
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB> = load ir<%inB>
; AVX512: Cost of 6 for VF 2: {{.*}}ir<%valB> = load
; AVX512: Cost of 13 for VF 4: {{.*}}ir<%valB> = load
; AVX512: Cost of 27 for VF 8: {{.*}}ir<%valB> = load
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/handle-iptr-with-data-layout-to-not-assert.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/handle-iptr-with-data-layout-to-not-assert.ll
index f6d2ff372d6bf..59c48b367a4c0 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/handle-iptr-with-data-layout-to-not-assert.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/handle-iptr-with-data-layout-to-not-assert.ll
@@ -1,11 +1,11 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*store ptr" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: INTERLEAVE-GROUP with factor [0-9]+ at" --version 5
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT store ir<%0>, ir<%__last>" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: INTERLEAVE-GROUP with factor [0-9]+ at" --version 5
; REQUIRES: asserts
; RUN: opt -passes=loop-vectorize -debug-only=loop-vectorize -S < %s 2>&1 | FileCheck %s
target triple = "x86_64-unknown-linux-gnu"
define ptr @foo(ptr %__first, ptr %__last) #0 {
; CHECK-LABEL: 'foo'
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: store ptr %0, ptr %__last, align 8
+; CHECK: Cost of 1 for VF 1: EMIT store ir<%0>, ir<%__last>
; CHECK: Cost of 1 for VF 2: INTERLEAVE-GROUP with factor 2, vp<%next.gep>
; CHECK: Cost of 1 for VF 4: INTERLEAVE-GROUP with factor 2, vp<%next.gep>
; CHECK: Cost of 3 for VF 8: INTERLEAVE-GROUP with factor 2, vp<%next.gep>
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-2.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-2.ll
index a6f7e96bdd67f..65c7cffa23a1e 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-2.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-2.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,7 +13,7 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; SSE2: ir<%v0> = load from index 0
; SSE2: ir<%v1> = load from index 1
@@ -24,7 +24,7 @@ define void @test() {
; SSE2: Cost of 28 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; AVX1: ir<%v0> = load from index 0
; AVX1: ir<%v1> = load from index 1
@@ -36,7 +36,7 @@ define void @test() {
; AVX1: Cost of 60 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -54,7 +54,7 @@ define void @test() {
; AVX2: ir<%v1> = load from index 1
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-3.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-3.ll
index 6ae2d29de2793..983e629e8738f 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-3.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-3.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 14 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 28 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 15 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 60 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 6 for VF 2: INTERLEAVE-GROUP with factor 3, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -51,7 +51,7 @@ define void @test() {
; AVX2: ir<%v2> = load from index 2
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 4 for VF 2: INTERLEAVE-GROUP with factor 3, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-4.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-4.ll
index 26455e027af64..7baff0ed2d609 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-4.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-4.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 14 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 28 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 15 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 60 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 5 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -56,7 +56,7 @@ define void @test() {
; AVX2: ir<%v3> = load from index 3
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 5 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-5.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-5.ll
index cd9a59dbec852..f0271449170a5 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-5.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-5.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 14 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 28 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 15 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 60 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 15 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -36,7 +36,7 @@ define void @test() {
; AVX2: Cost of 60 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 6 for VF 2: INTERLEAVE-GROUP with factor 5, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-6.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-6.ll
index ad8a602c02613..d083792e09dd5 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-6.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-6.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 14 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 28 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 15 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 60 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 8 for VF 2: INTERLEAVE-GROUP with factor 6, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -60,7 +60,7 @@ define void @test() {
; AVX2: Cost of 60 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 6, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-7.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-7.ll
index 5ae2ff2dd178e..c60676a4fa906 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-7.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-7.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 14 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 28 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 15 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 60 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 15 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -36,7 +36,7 @@ define void @test() {
; AVX2: Cost of 60 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 8 for VF 2: INTERLEAVE-GROUP with factor 7, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-8.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-8.ll
index 3f2d0acb07982..e992f2190998d 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-8.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f32-stride-8.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 14 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 28 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 15 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 60 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 48 for VF 8: INTERLEAVE-GROUP with factor 8, ir<%in0>
@@ -44,7 +44,7 @@ define void @test() {
; AVX2: Cost of 60 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load float, ptr %in0, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 9 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-2.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-2.ll
index 434789dc2157e..ccc205c2d7608 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-2.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-2.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,7 +13,7 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 4 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; SSE2: ir<%v0> = load from index 0
; SSE2: ir<%v1> = load from index 1
@@ -22,7 +22,7 @@ define void @test() {
; SSE2: Cost of 24 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; AVX1: ir<%v0> = load from index 0
; AVX1: ir<%v1> = load from index 1
@@ -32,7 +32,7 @@ define void @test() {
; AVX1: Cost of 56 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -50,7 +50,7 @@ define void @test() {
; AVX2: ir<%v1> = load from index 1
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-3.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-3.ll
index da5095193ba22..f2c48a2ecd421 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-3.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-3.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 6 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 12 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 24 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 14 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 56 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 3, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -48,7 +48,7 @@ define void @test() {
; AVX2: Cost of 56 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 4 for VF 2: INTERLEAVE-GROUP with factor 3, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-4.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-4.ll
index 2e7ae075f46f8..b54f47a7ad4cf 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-4.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-4.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 6 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 12 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 24 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 14 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 56 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 8 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -52,7 +52,7 @@ define void @test() {
; AVX2: Cost of 56 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 5 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-5.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-5.ll
index 07f860571331b..f953b01a4aaa3 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-5.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-5.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|WIDEN ir<%v[0-9]> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|WIDEN ir<%v[0-9]> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 6 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 12 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 24 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 14 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 56 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 14 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -36,7 +36,7 @@ define void @test() {
; AVX2: Cost of 56 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 14.5 for VF 2: INTERLEAVE-GROUP with factor 5, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-6.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-6.ll
index 33892de8fd798..1b6cd2dee2026 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-6.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-6.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|WIDEN ir<%v[0-9]> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|WIDEN ir<%v[0-9]> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 6 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 12 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 24 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 14 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 56 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 9 for VF 2: INTERLEAVE-GROUP with factor 6, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -54,7 +54,7 @@ define void @test() {
; AVX2: Cost of 56 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 17 for VF 2: INTERLEAVE-GROUP with factor 6, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-7.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-7.ll
index 0529174acd377..8e458473747d2 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-7.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-7.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|WIDEN ir<%v[0-9]> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|WIDEN ir<%v[0-9]> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 6 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 12 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 24 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 14 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 56 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 14 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -36,7 +36,7 @@ define void @test() {
; AVX2: Cost of 56 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 19.5 for VF 2: INTERLEAVE-GROUP with factor 7, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-8.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-8.ll
index 10239f5264792..f34229217eaf5 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-8.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-f64-stride-8.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|WIDEN ir<%v[0-9]> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|WIDEN ir<%v[0-9]> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 6 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 12 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 24 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 14 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 56 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 3 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 7 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 14 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -36,7 +36,7 @@ define void @test() {
; AVX2: Cost of 56 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load double, ptr %in0, align 8
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 22 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-2.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-2.ll
index 4043e7f3294e4..dbdbdb18eb9e0 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-2.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-2.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -14,7 +14,7 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; SSE2: ir<%v0> = load from index 0
; SSE2: ir<%v1> = load from index 1
@@ -25,7 +25,7 @@ define void @test() {
; SSE2: Cost of 32 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; AVX1: ir<%v0> = load from index 0
; AVX1: ir<%v1> = load from index 1
@@ -37,7 +37,7 @@ define void @test() {
; AVX1: Cost of 66 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -55,7 +55,7 @@ define void @test() {
; AVX2: ir<%v1> = load from index 1
;
; AVX512DQ-LABEL: 'test'
-; AVX512DQ: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX512DQ: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512DQ: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; AVX512DQ: ir<%v0> = load from index 0
; AVX512DQ: ir<%v1> = load from index 1
@@ -76,7 +76,7 @@ define void @test() {
; AVX512DQ: ir<%v1> = load from index 1
;
; AVX512BW-LABEL: 'test'
-; AVX512BW: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX512BW: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512BW: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; AVX512BW: ir<%v0> = load from index 0
; AVX512BW: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-3.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-3.ll
index 3c123b0dd8624..238592c6e7e8b 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-3.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-3.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -14,14 +14,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 32 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -29,7 +29,7 @@ define void @test() {
; AVX1: Cost of 66 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 8 for VF 2: INTERLEAVE-GROUP with factor 3, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -52,7 +52,7 @@ define void @test() {
; AVX2: ir<%v2> = load from index 2
;
; AVX512DQ-LABEL: 'test'
-; AVX512DQ: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX512DQ: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512DQ: Cost of 8 for VF 2: INTERLEAVE-GROUP with factor 3, ir<%in0>
; AVX512DQ: ir<%v0> = load from index 0
; AVX512DQ: ir<%v1> = load from index 1
@@ -79,7 +79,7 @@ define void @test() {
; AVX512DQ: ir<%v2> = load from index 2
;
; AVX512BW-LABEL: 'test'
-; AVX512BW: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX512BW: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512BW: Cost of 4 for VF 2: INTERLEAVE-GROUP with factor 3, ir<%in0>
; AVX512BW: ir<%v0> = load from index 0
; AVX512BW: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-4.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-4.ll
index 57e43282e972a..a6ecfa79eb62b 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-4.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-4.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -14,14 +14,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 32 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -29,7 +29,7 @@ define void @test() {
; AVX1: Cost of 66 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -57,7 +57,7 @@ define void @test() {
; AVX2: ir<%v3> = load from index 3
;
; AVX512DQ-LABEL: 'test'
-; AVX512DQ: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX512DQ: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512DQ: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%in0>
; AVX512DQ: ir<%v0> = load from index 0
; AVX512DQ: ir<%v1> = load from index 1
@@ -90,7 +90,7 @@ define void @test() {
; AVX512DQ: ir<%v3> = load from index 3
;
; AVX512BW-LABEL: 'test'
-; AVX512BW: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX512BW: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512BW: Cost of 5 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%in0>
; AVX512BW: ir<%v0> = load from index 0
; AVX512BW: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-5.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-5.ll
index 084081357959a..bee64af6add2e 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-5.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-5.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -14,14 +14,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 32 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -29,7 +29,7 @@ define void @test() {
; AVX1: Cost of 66 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -37,7 +37,7 @@ define void @test() {
; AVX2: Cost of 66 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512DQ-LABEL: 'test'
-; AVX512DQ: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX512DQ: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512DQ: Cost of 25 for VF 2: INTERLEAVE-GROUP with factor 5, ir<%in0>
; AVX512DQ: ir<%v0> = load from index 0
; AVX512DQ: ir<%v1> = load from index 1
@@ -76,7 +76,7 @@ define void @test() {
; AVX512DQ: ir<%v4> = load from index 4
;
; AVX512BW-LABEL: 'test'
-; AVX512BW: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX512BW: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512BW: Cost of 11 for VF 2: INTERLEAVE-GROUP with factor 5, ir<%in0>
; AVX512BW: ir<%v0> = load from index 0
; AVX512BW: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-6.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-6.ll
index 2c745a7477351..dbdf594274db7 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-6.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-6.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -14,14 +14,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 32 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -29,7 +29,7 @@ define void @test() {
; AVX1: Cost of 66 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 16 for VF 2: INTERLEAVE-GROUP with factor 6, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -67,7 +67,7 @@ define void @test() {
; AVX2: ir<%v5> = load from index 5
;
; AVX512DQ-LABEL: 'test'
-; AVX512DQ: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX512DQ: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512DQ: Cost of 16 for VF 2: INTERLEAVE-GROUP with factor 6, ir<%in0>
; AVX512DQ: ir<%v0> = load from index 0
; AVX512DQ: ir<%v1> = load from index 1
@@ -112,7 +112,7 @@ define void @test() {
; AVX512DQ: ir<%v5> = load from index 5
;
; AVX512BW-LABEL: 'test'
-; AVX512BW: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX512BW: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512BW: Cost of 13 for VF 2: INTERLEAVE-GROUP with factor 6, ir<%in0>
; AVX512BW: ir<%v0> = load from index 0
; AVX512BW: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-7.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-7.ll
index 1ae42766a6add..20703addd2768 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-7.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-7.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -14,14 +14,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 32 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -29,7 +29,7 @@ define void @test() {
; AVX1: Cost of 66 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -37,7 +37,7 @@ define void @test() {
; AVX2: Cost of 66 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512DQ-LABEL: 'test'
-; AVX512DQ: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX512DQ: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512DQ: Cost of 34 for VF 2: INTERLEAVE-GROUP with factor 7, ir<%in0>
; AVX512DQ: ir<%v0> = load from index 0
; AVX512DQ: ir<%v1> = load from index 1
@@ -88,7 +88,7 @@ define void @test() {
; AVX512DQ: ir<%v6> = load from index 6
;
; AVX512BW-LABEL: 'test'
-; AVX512BW: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX512BW: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512BW: Cost of 15 for VF 2: INTERLEAVE-GROUP with factor 7, ir<%in0>
; AVX512BW: ir<%v0> = load from index 0
; AVX512BW: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-8.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-8.ll
index 2181667cf5626..58a00d5d0f4ad 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-8.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i16-stride-8.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -14,14 +14,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 32 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -29,7 +29,7 @@ define void @test() {
; AVX1: Cost of 66 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -37,7 +37,7 @@ define void @test() {
; AVX2: Cost of 66 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512DQ-LABEL: 'test'
-; AVX512DQ: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX512DQ: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512DQ: Cost of 34 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%in0>
; AVX512DQ: ir<%v0> = load from index 0
; AVX512DQ: ir<%v1> = load from index 1
@@ -94,7 +94,7 @@ define void @test() {
; AVX512DQ: ir<%v7> = load from index 7
;
; AVX512BW-LABEL: 'test'
-; AVX512BW: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i16, ptr %in0, align 2
+; AVX512BW: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512BW: Cost of 17 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%in0>
; AVX512BW: ir<%v0> = load from index 0
; AVX512BW: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-2-indices-0u.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-2-indices-0u.ll
index 7ac23631ad343..074607096d3a0 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-2-indices-0u.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-2-indices-0u.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,7 +13,7 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 2 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; SSE2: ir<%v0> = load from index 0
; SSE2: Cost of 3 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%in0>
@@ -22,7 +22,7 @@ define void @test() {
; SSE2: Cost of 44 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 2 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; AVX1: ir<%v0> = load from index 0
; AVX1: Cost of 2 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%in0>
@@ -32,7 +32,7 @@ define void @test() {
; AVX1: Cost of 68 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 2 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: Cost of 2 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%in0>
@@ -45,7 +45,7 @@ define void @test() {
; AVX2: ir<%v0> = load from index 0
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 1 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: Cost of 1 for VF 4: INTERLEAVE-GROUP with factor 2, ir<%in0>
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-2.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-2.ll
index 5bbd77d88479e..950c7567a9e5a 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-2.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-2.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,7 +13,7 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; SSE2: ir<%v0> = load from index 0
; SSE2: ir<%v1> = load from index 1
@@ -24,7 +24,7 @@ define void @test() {
; SSE2: Cost of 44 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; AVX1: ir<%v0> = load from index 0
; AVX1: ir<%v1> = load from index 1
@@ -36,7 +36,7 @@ define void @test() {
; AVX1: Cost of 68 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -54,7 +54,7 @@ define void @test() {
; AVX2: ir<%v1> = load from index 1
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-3-indices-01u.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-3-indices-01u.ll
index cae29abd23947..d647edcf7d7b3 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-3-indices-01u.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-3-indices-01u.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 11 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 22 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 44 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 17 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 68 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 5 for VF 2: INTERLEAVE-GROUP with factor 3, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -46,7 +46,7 @@ define void @test() {
; AVX2: ir<%v1> = load from index 1
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 3, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-3-indices-0uu.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-3-indices-0uu.ll
index cc1adf1698803..98112f4d5654e 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-3-indices-0uu.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-3-indices-0uu.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 11 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 22 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 44 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 17 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 68 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 3 for VF 4: INTERLEAVE-GROUP with factor 3, ir<%in0>
; AVX2: ir<%v0> = load from index 0
@@ -40,7 +40,7 @@ define void @test() {
; AVX2: ir<%v0> = load from index 0
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 1 for VF 2: INTERLEAVE-GROUP with factor 3, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: Cost of 1 for VF 4: INTERLEAVE-GROUP with factor 3, ir<%in0>
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-3.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-3.ll
index bb0ce149aed3f..db9ae87b10dd6 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-3.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-3.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 11 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 22 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 44 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 17 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 68 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 6 for VF 2: INTERLEAVE-GROUP with factor 3, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -51,7 +51,7 @@ define void @test() {
; AVX2: ir<%v2> = load from index 2
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 4 for VF 2: INTERLEAVE-GROUP with factor 3, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-4-indices-012u.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-4-indices-012u.ll
index e89f6ae781e69..9f5af2b1a7858 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-4-indices-012u.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-4-indices-012u.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 11 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 22 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 44 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 17 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 68 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 4 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -51,7 +51,7 @@ define void @test() {
; AVX2: ir<%v2> = load from index 2
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 4 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-4-indices-01uu.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-4-indices-01uu.ll
index bdc6334a6e84a..19cb9763e2d93 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-4-indices-01uu.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-4-indices-01uu.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 11 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 22 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 44 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 17 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 68 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -46,7 +46,7 @@ define void @test() {
; AVX2: ir<%v1> = load from index 1
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-4-indices-0uuu.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-4-indices-0uuu.ll
index b8f2baeb7ccd1..b93a9b0ce3983 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-4-indices-0uuu.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-4-indices-0uuu.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|WIDEN ir<%v[0-9]> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|WIDEN ir<%v[0-9]> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 11 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 22 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 44 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 17 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 68 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 2 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: Cost of 4 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%in0>
@@ -41,7 +41,7 @@ define void @test() {
; AVX2: ir<%v0> = load from index 0
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 1 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: Cost of 1 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%in0>
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-4.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-4.ll
index f4ed289cc5c41..ac2875d10bfca 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-4.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-4.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 11 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 22 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 44 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 17 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 68 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 5 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -56,7 +56,7 @@ define void @test() {
; AVX2: ir<%v3> = load from index 3
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 5 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-5.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-5.ll
index 9668f9b51417c..3393372128003 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-5.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-5.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 11 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 22 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 44 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 17 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 68 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 17 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -36,7 +36,7 @@ define void @test() {
; AVX2: Cost of 68 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 6 for VF 2: INTERLEAVE-GROUP with factor 5, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-6.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-6.ll
index 7a1cb1913417e..0f3db82c4212a 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-6.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-6.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 11 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 22 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 44 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 17 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 68 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 8 for VF 2: INTERLEAVE-GROUP with factor 6, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -60,7 +60,7 @@ define void @test() {
; AVX2: Cost of 68 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 6, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-7.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-7.ll
index 0bbdd39f2ad66..169bf444c15b1 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-7.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-7.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 11 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 22 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 44 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 17 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 68 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 17 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -36,7 +36,7 @@ define void @test() {
; AVX2: Cost of 68 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 8 for VF 2: INTERLEAVE-GROUP with factor 7, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-8.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-8.ll
index 2b134fb879faa..7f2169c29a574 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-8.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i32-stride-8.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 11 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 22 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 44 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 17 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 68 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 48 for VF 8: INTERLEAVE-GROUP with factor 8, ir<%in0>
@@ -44,7 +44,7 @@ define void @test() {
; AVX2: Cost of 68 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i32, ptr %in0, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 9 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-2.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-2.ll
index 100ab85ddbb1e..d61f97e7d2340 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-2.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-2.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|WIDEN ir<%v[0-9]> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|WIDEN ir<%v[0-9]> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,7 +13,7 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 4 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; SSE2: ir<%v0> = load from index 0
; SSE2: ir<%v1> = load from index 1
@@ -22,7 +22,7 @@ define void @test() {
; SSE2: Cost of 40 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; AVX1: ir<%v0> = load from index 0
; AVX1: ir<%v1> = load from index 1
@@ -32,7 +32,7 @@ define void @test() {
; AVX1: Cost of 72 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -50,7 +50,7 @@ define void @test() {
; AVX2: ir<%v1> = load from index 1
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-3.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-3.ll
index ffaca321e9d49..a3762718fb94c 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-3.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-3.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 10 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 20 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 40 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 9 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 18 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 72 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 3, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -48,7 +48,7 @@ define void @test() {
; AVX2: Cost of 72 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 4 for VF 2: INTERLEAVE-GROUP with factor 3, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-4.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-4.ll
index a8d8edf1c8755..6385e2efbb4fe 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-4.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-4.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|WIDEN ir<%v[0-9]> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|WIDEN ir<%v[0-9]> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 10 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 20 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 40 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 9 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 18 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 72 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 8 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -52,7 +52,7 @@ define void @test() {
; AVX2: Cost of 72 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 5 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-5.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-5.ll
index 6877858a4a95c..4b9f10d87a50d 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-5.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-5.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|WIDEN ir<%v[0-9]> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|WIDEN ir<%v[0-9]> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 10 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 20 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 40 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 9 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 18 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 72 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 9 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 18 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -36,7 +36,7 @@ define void @test() {
; AVX2: Cost of 72 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 14.5 for VF 2: INTERLEAVE-GROUP with factor 5, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-6.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-6.ll
index 4146b8906fb21..3e71f7c454561 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-6.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-6.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|WIDEN ir<%v[0-9]> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|WIDEN ir<%v[0-9]> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 10 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 20 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 40 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 9 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 18 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 72 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 9 for VF 2: INTERLEAVE-GROUP with factor 6, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -54,7 +54,7 @@ define void @test() {
; AVX2: Cost of 72 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 17 for VF 2: INTERLEAVE-GROUP with factor 6, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-7.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-7.ll
index aa454516641ab..6099d03bf0e0e 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-7.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-7.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|WIDEN ir<%v[0-9]> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|WIDEN ir<%v[0-9]> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 10 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 20 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 40 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 9 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 18 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 72 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 9 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 18 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -36,7 +36,7 @@ define void @test() {
; AVX2: Cost of 72 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 19.5 for VF 2: INTERLEAVE-GROUP with factor 7, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-8.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-8.ll
index edef781eae4a2..c1d23da29f28a 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-8.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i64-stride-8.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|WIDEN ir<%v[0-9]> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|WIDEN ir<%v[0-9]> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -13,14 +13,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 10 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 20 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 40 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 9 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 18 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -28,7 +28,7 @@ define void @test() {
; AVX1: Cost of 72 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 9 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 18 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -36,7 +36,7 @@ define void @test() {
; AVX2: Cost of 72 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i64, ptr %in0, align 8
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512: Cost of 22 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%in0>
; AVX512: ir<%v0> = load from index 0
; AVX512: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-2.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-2.ll
index 03f9fb7c8f1bf..167c4ba737fb2 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-2.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-2.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -14,14 +14,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 11 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 23 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 47 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -29,7 +29,7 @@ define void @test() {
; AVX1: Cost of 65 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -47,7 +47,7 @@ define void @test() {
; AVX2: ir<%v1> = load from index 1
;
; AVX512DQ-LABEL: 'test'
-; AVX512DQ: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX512DQ: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512DQ: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; AVX512DQ: ir<%v0> = load from index 0
; AVX512DQ: ir<%v1> = load from index 1
@@ -68,7 +68,7 @@ define void @test() {
; AVX512DQ: ir<%v1> = load from index 1
;
; AVX512BW-LABEL: 'test'
-; AVX512BW: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX512BW: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512BW: Cost of 3 for VF 2: INTERLEAVE-GROUP with factor 2, ir<%in0>
; AVX512BW: ir<%v0> = load from index 0
; AVX512BW: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-3.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-3.ll
index e1f737a2b9879..3b2e587616758 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-3.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-3.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -14,14 +14,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 11 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 23 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 47 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -29,7 +29,7 @@ define void @test() {
; AVX1: Cost of 65 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 3, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -52,7 +52,7 @@ define void @test() {
; AVX2: ir<%v2> = load from index 2
;
; AVX512DQ-LABEL: 'test'
-; AVX512DQ: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX512DQ: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512DQ: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 3, ir<%in0>
; AVX512DQ: ir<%v0> = load from index 0
; AVX512DQ: ir<%v1> = load from index 1
@@ -79,7 +79,7 @@ define void @test() {
; AVX512DQ: ir<%v2> = load from index 2
;
; AVX512BW-LABEL: 'test'
-; AVX512BW: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX512BW: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512BW: Cost of 4 for VF 2: INTERLEAVE-GROUP with factor 3, ir<%in0>
; AVX512BW: ir<%v0> = load from index 0
; AVX512BW: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-4.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-4.ll
index b92e9fe280a4d..a1a2d77413e41 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-4.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-4.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -14,14 +14,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 11 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 23 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 47 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -29,7 +29,7 @@ define void @test() {
; AVX1: Cost of 65 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 5 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -57,7 +57,7 @@ define void @test() {
; AVX2: ir<%v3> = load from index 3
;
; AVX512DQ-LABEL: 'test'
-; AVX512DQ: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX512DQ: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512DQ: Cost of 5 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%in0>
; AVX512DQ: ir<%v0> = load from index 0
; AVX512DQ: ir<%v1> = load from index 1
@@ -90,7 +90,7 @@ define void @test() {
; AVX512DQ: ir<%v3> = load from index 3
;
; AVX512BW-LABEL: 'test'
-; AVX512BW: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX512BW: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512BW: Cost of 5 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%in0>
; AVX512BW: ir<%v0> = load from index 0
; AVX512BW: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-5.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-5.ll
index 1ecfd6ba6e574..8d43dcc2e923c 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-5.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-5.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -14,14 +14,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 11 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 23 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 47 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -29,7 +29,7 @@ define void @test() {
; AVX1: Cost of 65 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -37,7 +37,7 @@ define void @test() {
; AVX2: Cost of 65 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512DQ-LABEL: 'test'
-; AVX512DQ: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX512DQ: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512DQ: Cost of 24 for VF 2: INTERLEAVE-GROUP with factor 5, ir<%in0>
; AVX512DQ: ir<%v0> = load from index 0
; AVX512DQ: ir<%v1> = load from index 1
@@ -76,7 +76,7 @@ define void @test() {
; AVX512DQ: ir<%v4> = load from index 4
;
; AVX512BW-LABEL: 'test'
-; AVX512BW: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX512BW: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512BW: Cost of 6 for VF 2: INTERLEAVE-GROUP with factor 5, ir<%in0>
; AVX512BW: ir<%v0> = load from index 0
; AVX512BW: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-6.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-6.ll
index 74af7dd09d76d..35012a409bcf3 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-6.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-6.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -14,14 +14,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 11 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 23 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 47 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -29,7 +29,7 @@ define void @test() {
; AVX1: Cost of 65 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 9 for VF 2: INTERLEAVE-GROUP with factor 6, ir<%in0>
; AVX2: ir<%v0> = load from index 0
; AVX2: ir<%v1> = load from index 1
@@ -67,7 +67,7 @@ define void @test() {
; AVX2: ir<%v5> = load from index 5
;
; AVX512DQ-LABEL: 'test'
-; AVX512DQ: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX512DQ: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512DQ: Cost of 9 for VF 2: INTERLEAVE-GROUP with factor 6, ir<%in0>
; AVX512DQ: ir<%v0> = load from index 0
; AVX512DQ: ir<%v1> = load from index 1
@@ -112,7 +112,7 @@ define void @test() {
; AVX512DQ: ir<%v5> = load from index 5
;
; AVX512BW-LABEL: 'test'
-; AVX512BW: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX512BW: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512BW: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 6, ir<%in0>
; AVX512BW: ir<%v0> = load from index 0
; AVX512BW: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-7.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-7.ll
index 71ffdb2e47534..e675bfa6243aa 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-7.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-7.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%v0> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -14,14 +14,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 11 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 23 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 47 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -29,7 +29,7 @@ define void @test() {
; AVX1: Cost of 65 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -37,7 +37,7 @@ define void @test() {
; AVX2: Cost of 65 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512DQ-LABEL: 'test'
-; AVX512DQ: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX512DQ: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512DQ: Cost of 34 for VF 2: INTERLEAVE-GROUP with factor 7, ir<%in0>
; AVX512DQ: ir<%v0> = load from index 0
; AVX512DQ: ir<%v1> = load from index 1
@@ -88,7 +88,7 @@ define void @test() {
; AVX512DQ: ir<%v6> = load from index 6
;
; AVX512BW-LABEL: 'test'
-; AVX512BW: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX512BW: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512BW: Cost of 8 for VF 2: INTERLEAVE-GROUP with factor 7, ir<%in0>
; AVX512BW: ir<%v0> = load from index 0
; AVX512BW: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-8.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-8.ll
index 36ad28d25ec31..67c06ae762795 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-8.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/interleaved-load-i8-stride-8.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%v0 = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load)" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (INTERLEAVE-GROUP with factor [0-9]+ at %v0,|REPLICATE ir<%v0> = load|EMIT(-SCALAR)? ir<%v0> = load)" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX1
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=AVX2
@@ -14,14 +14,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; SSE2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; SSE2: Cost of 5 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 11 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 23 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
; SSE2: Cost of 47 for VF 16: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX1: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX1: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -29,7 +29,7 @@ define void @test() {
; AVX1: Cost of 65 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX2: Cost of 4 for VF 2: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 8 for VF 4: REPLICATE ir<%v0> = load ir<%in0>
; AVX2: Cost of 16 for VF 8: REPLICATE ir<%v0> = load ir<%in0>
@@ -37,7 +37,7 @@ define void @test() {
; AVX2: Cost of 65 for VF 32: REPLICATE ir<%v0> = load ir<%in0>
;
; AVX512DQ-LABEL: 'test'
-; AVX512DQ: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX512DQ: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512DQ: Cost of 33 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%in0>
; AVX512DQ: ir<%v0> = load from index 0
; AVX512DQ: ir<%v1> = load from index 1
@@ -94,7 +94,7 @@ define void @test() {
; AVX512DQ: ir<%v7> = load from index 7
;
; AVX512BW-LABEL: 'test'
-; AVX512BW: LV: Found an estimated cost of 1 for VF 1 For instruction: %v0 = load i8, ptr %in0, align 1
+; AVX512BW: Cost of 1 for VF 1: EMIT-SCALAR ir<%v0> = load ir<%in0>
; AVX512BW: Cost of 9 for VF 2: INTERLEAVE-GROUP with factor 8, ir<%in0>
; AVX512BW: ir<%v0> = load from index 0
; AVX512BW: ir<%v1> = load from index 1
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-gather-i32-with-i8-index.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-gather-i32-with-i8-index.ll
index 1433c2ad35dcc..a80c938762f66 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-gather-i32-with-i8-index.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-gather-i32-with-i8-index.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF [0-9]+ For instruction:\s*%valB.loaded = load i32, ptr %inB, align 4"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: (EMIT(-SCALAR)? ir<%valB.loaded>|WIDEN ir<%valB.loaded>|REPLICATE ir<%valB.loaded>|WIDEN-GATHER ir<%valB.loaded>) = load"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse4.2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=AVX1
@@ -17,14 +17,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE-LABEL: 'test'
-; SSE: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i32, ptr %inB, align 4
+; SSE: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; SSE: Cost of 3000000 for VF 2: {{.*}}ir<%valB.loaded> = load
; SSE: Cost of 3000000 for VF 4: {{.*}}ir<%valB.loaded> = load
; SSE: Cost of 3000000 for VF 8: {{.*}}ir<%valB.loaded> = load
; SSE: Cost of 3000000 for VF 16: {{.*}}ir<%valB.loaded> = load
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i32, ptr %inB, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; AVX1: Cost of 3000000 for VF 2: {{.*}}ir<%valB.loaded> = load
; AVX1: Cost of 3000000 for VF 4: {{.*}}ir<%valB.loaded> = load
; AVX1: Cost of 3000000 for VF 8: {{.*}}ir<%valB.loaded> = load
@@ -32,7 +32,7 @@ define void @test() {
; AVX1: Cost of 3000000 for VF 32: {{.*}}ir<%valB.loaded> = load
;
; AVX2-SLOWGATHER-LABEL: 'test'
-; AVX2-SLOWGATHER: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i32, ptr %inB, align 4
+; AVX2-SLOWGATHER: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; AVX2-SLOWGATHER: Cost of 3000000 for VF 2: {{.*}}ir<%valB.loaded> = load
; AVX2-SLOWGATHER: Cost of 3000000 for VF 4: {{.*}}ir<%valB.loaded> = load
; AVX2-SLOWGATHER: Cost of 3000000 for VF 8: {{.*}}ir<%valB.loaded> = load
@@ -40,7 +40,7 @@ define void @test() {
; AVX2-SLOWGATHER: Cost of 3000000 for VF 32: {{.*}}ir<%valB.loaded> = load
;
; AVX2-FASTGATHER-LABEL: 'test'
-; AVX2-FASTGATHER: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i32, ptr %inB, align 4
+; AVX2-FASTGATHER: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; AVX2-FASTGATHER: Cost of 4 for VF 2: {{.*}}ir<%valB.loaded> = load
; AVX2-FASTGATHER: Cost of 6 for VF 4: {{.*}}ir<%valB.loaded> = load
; AVX2-FASTGATHER: Cost of 12 for VF 8: {{.*}}ir<%valB.loaded> = load
@@ -48,7 +48,7 @@ define void @test() {
; AVX2-FASTGATHER: Cost of 48 for VF 32: {{.*}}ir<%valB.loaded> = load
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i32, ptr %inB, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; AVX512: Cost of 8 for VF 2: {{.*}}ir<%valB.loaded> = load
; AVX512: Cost of 17 for VF 4: {{.*}}ir<%valB.loaded> = load
; AVX512: Cost of 10 for VF 8: {{.*}}ir<%valB.loaded> = load
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-gather-i64-with-i8-index.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-gather-i64-with-i8-index.ll
index be49e2198052e..718f6daac65f3 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-gather-i64-with-i8-index.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-gather-i64-with-i8-index.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF [0-9]+ For instruction:\s*%valB.loaded = load i64, ptr %inB, align 8"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: (EMIT(-SCALAR)? ir<%valB.loaded>|WIDEN ir<%valB.loaded>|REPLICATE ir<%valB.loaded>|WIDEN-GATHER ir<%valB.loaded>) = load"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse4.2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=AVX1
@@ -17,14 +17,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE-LABEL: 'test'
-; SSE: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i64, ptr %inB, align 8
+; SSE: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; SSE: Cost of 3000000 for VF 2: {{.*}}ir<%valB.loaded> = load
; SSE: Cost of 3000000 for VF 4: {{.*}}ir<%valB.loaded> = load
; SSE: Cost of 3000000 for VF 8: {{.*}}ir<%valB.loaded> = load
; SSE: Cost of 3000000 for VF 16: {{.*}}ir<%valB.loaded> = load
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i64, ptr %inB, align 8
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; AVX1: Cost of 3000000 for VF 2: {{.*}}ir<%valB.loaded> = load
; AVX1: Cost of 3000000 for VF 4: {{.*}}ir<%valB.loaded> = load
; AVX1: Cost of 3000000 for VF 8: {{.*}}ir<%valB.loaded> = load
@@ -32,7 +32,7 @@ define void @test() {
; AVX1: Cost of 3000000 for VF 32: {{.*}}ir<%valB.loaded> = load
;
; AVX2-SLOWGATHER-LABEL: 'test'
-; AVX2-SLOWGATHER: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i64, ptr %inB, align 8
+; AVX2-SLOWGATHER: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; AVX2-SLOWGATHER: Cost of 3000000 for VF 2: {{.*}}ir<%valB.loaded> = load
; AVX2-SLOWGATHER: Cost of 3000000 for VF 4: {{.*}}ir<%valB.loaded> = load
; AVX2-SLOWGATHER: Cost of 3000000 for VF 8: {{.*}}ir<%valB.loaded> = load
@@ -40,7 +40,7 @@ define void @test() {
; AVX2-SLOWGATHER: Cost of 3000000 for VF 32: {{.*}}ir<%valB.loaded> = load
;
; AVX2-FASTGATHER-LABEL: 'test'
-; AVX2-FASTGATHER: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i64, ptr %inB, align 8
+; AVX2-FASTGATHER: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; AVX2-FASTGATHER: Cost of 4 for VF 2: {{.*}}ir<%valB.loaded> = load
; AVX2-FASTGATHER: Cost of 6 for VF 4: {{.*}}ir<%valB.loaded> = load
; AVX2-FASTGATHER: Cost of 12 for VF 8: {{.*}}ir<%valB.loaded> = load
@@ -48,7 +48,7 @@ define void @test() {
; AVX2-FASTGATHER: Cost of 48 for VF 32: {{.*}}ir<%valB.loaded> = load
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i64, ptr %inB, align 8
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; AVX512: Cost of 8 for VF 2: {{.*}}ir<%valB.loaded> = load
; AVX512: Cost of 18 for VF 4: {{.*}}ir<%valB.loaded> = load
; AVX512: Cost of 10 for VF 8: {{.*}}ir<%valB.loaded> = load
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-interleaved-load-i16.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-interleaved-load-i16.ll
index af9bd7c7f4e5b..9d6f3d37a2391 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-interleaved-load-i16.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-interleaved-load-i16.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*%i[2,4] = load i16, ptr %[a-zA-Z0-7]+, align 2" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (REPLICATE ir<%i[24]> = load|INTERLEAVE-GROUP with factor [0-9]+ at %i[24])" --filter "^ ir<.* = load from index"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT(-SCALAR)? ir<%i[2,4]> = load" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (REPLICATE ir<%i[24]> = load|INTERLEAVE-GROUP with factor [0-9]+ at %i[24])" --filter "^ ir<.* = load from index"
; RUN: opt -passes=loop-vectorize -enable-interleaved-mem-accesses -tail-folding-policy=must-fold-tail -S -mcpu=skx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=DISABLED_MASKED_STRIDED
; RUN: opt -passes=loop-vectorize -enable-interleaved-mem-accesses -enable-masked-interleaved-mem-accesses -tail-folding-policy=must-fold-tail -S -mcpu=skx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=ENABLED_MASKED_STRIDED
; REQUIRES: asserts
@@ -20,8 +20,8 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test1(ptr noalias nocapture %points, ptr noalias nocapture readonly %x, ptr noalias nocapture readonly %y) {
; DISABLED_MASKED_STRIDED-LABEL: 'test1'
-; DISABLED_MASKED_STRIDED: LV: Found an estimated cost of 1 for VF 1 For instruction: %i2 = load i16, ptr %arrayidx2, align 2
-; DISABLED_MASKED_STRIDED: LV: Found an estimated cost of 1 for VF 1 For instruction: %i4 = load i16, ptr %arrayidx7, align 2
+; DISABLED_MASKED_STRIDED: Cost of 1 for VF 1: EMIT-SCALAR ir<%i2> = load ir<%arrayidx2>
+; DISABLED_MASKED_STRIDED: Cost of 1 for VF 1: EMIT-SCALAR ir<%i4> = load ir<%arrayidx7>
; DISABLED_MASKED_STRIDED: Cost of 6 for VF 2: REPLICATE ir<%i2> = load ir<%arrayidx2>
; DISABLED_MASKED_STRIDED: Cost of 6 for VF 2: REPLICATE ir<%i4> = load ir<%arrayidx7>
; DISABLED_MASKED_STRIDED: Cost of 13 for VF 4: REPLICATE ir<%i2> = load ir<%arrayidx2>
@@ -32,8 +32,8 @@ define void @test1(ptr noalias nocapture %points, ptr noalias nocapture readonly
; DISABLED_MASKED_STRIDED: Cost of 55 for VF 16: REPLICATE ir<%i4> = load ir<%arrayidx7>
;
; ENABLED_MASKED_STRIDED-LABEL: 'test1'
-; ENABLED_MASKED_STRIDED: LV: Found an estimated cost of 1 for VF 1 For instruction: %i2 = load i16, ptr %arrayidx2, align 2
-; ENABLED_MASKED_STRIDED: LV: Found an estimated cost of 1 for VF 1 For instruction: %i4 = load i16, ptr %arrayidx7, align 2
+; ENABLED_MASKED_STRIDED: Cost of 1 for VF 1: EMIT-SCALAR ir<%i2> = load ir<%arrayidx2>
+; ENABLED_MASKED_STRIDED: Cost of 1 for VF 1: EMIT-SCALAR ir<%i4> = load ir<%arrayidx7>
; ENABLED_MASKED_STRIDED: Cost of 8 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx2>
; ENABLED_MASKED_STRIDED: ir<%i2> = load from index 0
; ENABLED_MASKED_STRIDED: ir<%i4> = load from index 1
@@ -81,8 +81,8 @@ for.end:
define void @test2(ptr noalias nocapture %points, i32 %numPoints, ptr noalias nocapture readonly %x, ptr noalias nocapture readonly %y) {
; DISABLED_MASKED_STRIDED-LABEL: 'test2'
-; DISABLED_MASKED_STRIDED: LV: Found an estimated cost of 1 for VF 1 For instruction: %i2 = load i16, ptr %arrayidx2, align 2
-; DISABLED_MASKED_STRIDED: LV: Found an estimated cost of 1 for VF 1 For instruction: %i4 = load i16, ptr %arrayidx7, align 2
+; DISABLED_MASKED_STRIDED: Cost of 1 for VF 1: EMIT-SCALAR ir<%i2> = load ir<%arrayidx2>
+; DISABLED_MASKED_STRIDED: Cost of 1 for VF 1: EMIT-SCALAR ir<%i4> = load ir<%arrayidx7>
; DISABLED_MASKED_STRIDED: Cost of 3000000 for VF 2: REPLICATE ir<%i2> = load ir<%arrayidx2> (S->V)
; DISABLED_MASKED_STRIDED: Cost of 3000000 for VF 2: REPLICATE ir<%i4> = load ir<%arrayidx7> (S->V)
; DISABLED_MASKED_STRIDED: Cost of 3000000 for VF 4: REPLICATE ir<%i2> = load ir<%arrayidx2> (S->V)
@@ -93,8 +93,8 @@ define void @test2(ptr noalias nocapture %points, i32 %numPoints, ptr noalias no
; DISABLED_MASKED_STRIDED: Cost of 3000000 for VF 16: REPLICATE ir<%i4> = load ir<%arrayidx7> (S->V)
;
; ENABLED_MASKED_STRIDED-LABEL: 'test2'
-; ENABLED_MASKED_STRIDED: LV: Found an estimated cost of 1 for VF 1 For instruction: %i2 = load i16, ptr %arrayidx2, align 2
-; ENABLED_MASKED_STRIDED: LV: Found an estimated cost of 1 for VF 1 For instruction: %i4 = load i16, ptr %arrayidx7, align 2
+; ENABLED_MASKED_STRIDED: Cost of 1 for VF 1: EMIT-SCALAR ir<%i2> = load ir<%arrayidx2>
+; ENABLED_MASKED_STRIDED: Cost of 1 for VF 1: EMIT-SCALAR ir<%i4> = load ir<%arrayidx7>
; ENABLED_MASKED_STRIDED: Cost of 8 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx2>, vp<[[VP8:%[0-9]+]]>
; ENABLED_MASKED_STRIDED: ir<%i2> = load from index 0
; ENABLED_MASKED_STRIDED: ir<%i4> = load from index 1
@@ -152,16 +152,16 @@ for.end:
define void @test(ptr noalias nocapture %points, ptr noalias nocapture readonly %x, ptr noalias nocapture readnone %y) {
; DISABLED_MASKED_STRIDED-LABEL: 'test'
-; DISABLED_MASKED_STRIDED: LV: Found an estimated cost of 1 for VF 1 For instruction: %i2 = load i16, ptr %arrayidx, align 2
-; DISABLED_MASKED_STRIDED: LV: Found an estimated cost of 1 for VF 1 For instruction: %i4 = load i16, ptr %arrayidx6, align 2
+; DISABLED_MASKED_STRIDED: Cost of 1 for VF 1: EMIT-SCALAR ir<%i2> = load ir<%arrayidx>
+; DISABLED_MASKED_STRIDED: Cost of 1 for VF 1: EMIT-SCALAR ir<%i4> = load ir<%arrayidx6>
; DISABLED_MASKED_STRIDED: Cost of 3000000 for VF 2: REPLICATE ir<%i4> = load ir<%arrayidx6> (S->V)
; DISABLED_MASKED_STRIDED: Cost of 3000000 for VF 4: REPLICATE ir<%i4> = load ir<%arrayidx6> (S->V)
; DISABLED_MASKED_STRIDED: Cost of 3000000 for VF 8: REPLICATE ir<%i4> = load ir<%arrayidx6> (S->V)
; DISABLED_MASKED_STRIDED: Cost of 3000000 for VF 16: REPLICATE ir<%i4> = load ir<%arrayidx6> (S->V)
;
; ENABLED_MASKED_STRIDED-LABEL: 'test'
-; ENABLED_MASKED_STRIDED: LV: Found an estimated cost of 1 for VF 1 For instruction: %i2 = load i16, ptr %arrayidx, align 2
-; ENABLED_MASKED_STRIDED: LV: Found an estimated cost of 1 for VF 1 For instruction: %i4 = load i16, ptr %arrayidx6, align 2
+; ENABLED_MASKED_STRIDED: Cost of 1 for VF 1: EMIT-SCALAR ir<%i2> = load ir<%arrayidx>
+; ENABLED_MASKED_STRIDED: Cost of 1 for VF 1: EMIT-SCALAR ir<%i4> = load ir<%arrayidx6>
; ENABLED_MASKED_STRIDED: Cost of 7 for VF 2: INTERLEAVE-GROUP with factor 3, ir<%arrayidx6>, ir<%cmp1>
; ENABLED_MASKED_STRIDED: ir<%i4> = load from index 0
; ENABLED_MASKED_STRIDED: Cost of 9 for VF 4: INTERLEAVE-GROUP with factor 3, ir<%arrayidx6>, ir<%cmp1>
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-interleaved-store-i16.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-interleaved-store-i16.ll
index 5f561b4403fba..e8b05271480fc 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-interleaved-store-i16.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-interleaved-store-i16.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*store i16 %[0,2], ptr %[a-zA-Z0-7]+, align 2" --filter "Cost of [1-9][0-9]*(.[0-9]+)? for VF [0-9]+: (profitable to scalarize\s+store i16 %[02]|REPLICATE store ir<%[02]>|INTERLEAVE-GROUP with factor [0-9]+ at <badref>)"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT store ir<%[0,2]>" --filter "Cost of [1-9][0-9]*(.[0-9]+)? for VF [0-9]+: (profitable to scalarize\s+store i16 %[02]|REPLICATE store ir<%[02]>|INTERLEAVE-GROUP with factor [0-9]+ at <badref>)"
; RUN: opt -passes=loop-vectorize -enable-interleaved-mem-accesses -tail-folding-policy=must-fold-tail -S -mcpu=skx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=DISABLED_MASKED_STRIDED
; RUN: opt -passes=loop-vectorize -enable-interleaved-mem-accesses -enable-masked-interleaved-mem-accesses -tail-folding-policy=must-fold-tail -S -mcpu=skx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefix=ENABLED_MASKED_STRIDED
; REQUIRES: asserts
@@ -20,8 +20,8 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test1(ptr noalias nocapture %points, ptr noalias nocapture readonly %x, ptr noalias nocapture readonly %y) {
; DISABLED_MASKED_STRIDED-LABEL: 'test1'
-; DISABLED_MASKED_STRIDED: LV: Found an estimated cost of 1 for VF 1 For instruction: store i16 %0, ptr %arrayidx2, align 2
-; DISABLED_MASKED_STRIDED: LV: Found an estimated cost of 1 for VF 1 For instruction: store i16 %2, ptr %arrayidx7, align 2
+; DISABLED_MASKED_STRIDED: Cost of 1 for VF 1: EMIT store ir<%0>, ir<%arrayidx2>
+; DISABLED_MASKED_STRIDED: Cost of 1 for VF 1: EMIT store ir<%2>, ir<%arrayidx7>
; DISABLED_MASKED_STRIDED: Cost of 6 for VF 2: REPLICATE store ir<%0>, ir<%arrayidx2>
; DISABLED_MASKED_STRIDED: Cost of 6 for VF 2: REPLICATE store ir<%2>, ir<%arrayidx7>
; DISABLED_MASKED_STRIDED: Cost of 13 for VF 4: REPLICATE store ir<%0>, ir<%arrayidx2>
@@ -32,8 +32,8 @@ define void @test1(ptr noalias nocapture %points, ptr noalias nocapture readonly
; DISABLED_MASKED_STRIDED: Cost of 55 for VF 16: REPLICATE store ir<%2>, ir<%arrayidx7>
;
; ENABLED_MASKED_STRIDED-LABEL: 'test1'
-; ENABLED_MASKED_STRIDED: LV: Found an estimated cost of 1 for VF 1 For instruction: store i16 %0, ptr %arrayidx2, align 2
-; ENABLED_MASKED_STRIDED: LV: Found an estimated cost of 1 for VF 1 For instruction: store i16 %2, ptr %arrayidx7, align 2
+; ENABLED_MASKED_STRIDED: Cost of 1 for VF 1: EMIT store ir<%0>, ir<%arrayidx2>
+; ENABLED_MASKED_STRIDED: Cost of 1 for VF 1: EMIT store ir<%2>, ir<%arrayidx7>
; ENABLED_MASKED_STRIDED: Cost of 6 for VF 2: REPLICATE store ir<%0>, ir<%arrayidx2>
; ENABLED_MASKED_STRIDED: Cost of 6 for VF 2: REPLICATE store ir<%2>, ir<%arrayidx7>
; ENABLED_MASKED_STRIDED: Cost of 14 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx2>
@@ -74,8 +74,8 @@ for.end:
define void @test2(ptr noalias nocapture %points, i32 %numPoints, ptr noalias nocapture readonly %x, ptr noalias nocapture readonly %y) {
; DISABLED_MASKED_STRIDED-LABEL: 'test2'
-; DISABLED_MASKED_STRIDED: LV: Found an estimated cost of 1 for VF 1 For instruction: store i16 %0, ptr %arrayidx2, align 2
-; DISABLED_MASKED_STRIDED: LV: Found an estimated cost of 1 for VF 1 For instruction: store i16 %2, ptr %arrayidx7, align 2
+; DISABLED_MASKED_STRIDED: Cost of 1 for VF 1: EMIT store ir<%0>, ir<%arrayidx2>
+; DISABLED_MASKED_STRIDED: Cost of 1 for VF 1: EMIT store ir<%2>, ir<%arrayidx7>
; DISABLED_MASKED_STRIDED: Cost of 3000000 for VF 2: REPLICATE store ir<%0>, ir<%arrayidx2>
; DISABLED_MASKED_STRIDED: Cost of 3000000 for VF 2: REPLICATE store ir<%2>, ir<%arrayidx7>
; DISABLED_MASKED_STRIDED: Cost of 3000000 for VF 4: REPLICATE store ir<%0>, ir<%arrayidx2>
@@ -86,8 +86,8 @@ define void @test2(ptr noalias nocapture %points, i32 %numPoints, ptr noalias no
; DISABLED_MASKED_STRIDED: Cost of 3000000 for VF 16: REPLICATE store ir<%2>, ir<%arrayidx7>
;
; ENABLED_MASKED_STRIDED-LABEL: 'test2'
-; ENABLED_MASKED_STRIDED: LV: Found an estimated cost of 1 for VF 1 For instruction: store i16 %0, ptr %arrayidx2, align 2
-; ENABLED_MASKED_STRIDED: LV: Found an estimated cost of 1 for VF 1 For instruction: store i16 %2, ptr %arrayidx7, align 2
+; ENABLED_MASKED_STRIDED: Cost of 1 for VF 1: EMIT store ir<%0>, ir<%arrayidx2>
+; ENABLED_MASKED_STRIDED: Cost of 1 for VF 1: EMIT store ir<%2>, ir<%arrayidx7>
; ENABLED_MASKED_STRIDED: Cost of 13 for VF 2: INTERLEAVE-GROUP with factor 4, ir<%arrayidx2>, vp<[[VP8:%[0-9]+]]>
; ENABLED_MASKED_STRIDED: Cost of 14 for VF 4: INTERLEAVE-GROUP with factor 4, ir<%arrayidx2>, vp<[[VP8]]>
; ENABLED_MASKED_STRIDED: Cost of 14 for VF 8: INTERLEAVE-GROUP with factor 4, ir<%arrayidx2>, vp<[[VP8]]>
@@ -137,14 +137,14 @@ for.end:
define void @test(ptr noalias nocapture %points, ptr noalias nocapture readonly %x, ptr noalias nocapture readnone %y) {
; DISABLED_MASKED_STRIDED-LABEL: 'test'
-; DISABLED_MASKED_STRIDED: LV: Found an estimated cost of 1 for VF 1 For instruction: store i16 %0, ptr %arrayidx6, align 2
+; DISABLED_MASKED_STRIDED: Cost of 1 for VF 1: EMIT store ir<%0>, ir<%arrayidx6>
; DISABLED_MASKED_STRIDED: Cost of 2 for VF 2: profitable to scalarize store i16 %0, ptr %arrayidx6, align 2
; DISABLED_MASKED_STRIDED: Cost of 4 for VF 4: profitable to scalarize store i16 %0, ptr %arrayidx6, align 2
; DISABLED_MASKED_STRIDED: Cost of 8 for VF 8: profitable to scalarize store i16 %0, ptr %arrayidx6, align 2
; DISABLED_MASKED_STRIDED: Cost of 16.5 for VF 16: profitable to scalarize store i16 %0, ptr %arrayidx6, align 2
;
; ENABLED_MASKED_STRIDED-LABEL: 'test'
-; ENABLED_MASKED_STRIDED: LV: Found an estimated cost of 1 for VF 1 For instruction: store i16 %0, ptr %arrayidx6, align 2
+; ENABLED_MASKED_STRIDED: Cost of 1 for VF 1: EMIT store ir<%0>, ir<%arrayidx6>
; ENABLED_MASKED_STRIDED: Cost of 2 for VF 2: profitable to scalarize store i16 %0, ptr %arrayidx6, align 2
; ENABLED_MASKED_STRIDED: Cost of 4 for VF 4: profitable to scalarize store i16 %0, ptr %arrayidx6, align 2
; ENABLED_MASKED_STRIDED: Cost of 8 for VF 8: profitable to scalarize store i16 %0, ptr %arrayidx6, align 2
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-load-i16.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-load-i16.ll
index f6f11624ad7e9..03421b1c87305 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-load-i16.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-load-i16.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF [0-9]+ For instruction:\s*%valB.loaded = load i16, ptr %inB, align 2"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: (EMIT-SCALAR|REPLICATE|WIDEN)( .*)? ir<%valB.loaded> = load"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse4.2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=AVX1
@@ -16,14 +16,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test(ptr %B) {
; SSE-LABEL: 'test'
-; SSE: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i16, ptr %inB, align 2
+; SSE: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; SSE: Cost of 3000000 for VF 2: {{.*}}ir<%valB.loaded> = load
; SSE: Cost of 3000000 for VF 4: {{.*}}ir<%valB.loaded> = load
; SSE: Cost of 3000000 for VF 8: {{.*}}ir<%valB.loaded> = load
; SSE: Cost of 3000000 for VF 16: {{.*}}ir<%valB.loaded> = load
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i16, ptr %inB, align 2
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; AVX1: Cost of 3000000 for VF 2: {{.*}}ir<%valB.loaded> = load
; AVX1: Cost of 3000000 for VF 4: {{.*}}ir<%valB.loaded> = load
; AVX1: Cost of 3000000 for VF 8: {{.*}}ir<%valB.loaded> = load
@@ -31,7 +31,7 @@ define void @test(ptr %B) {
; AVX1: Cost of 3000000 for VF 32: {{.*}}ir<%valB.loaded> = load
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i16, ptr %inB, align 2
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; AVX2: Cost of 3000000 for VF 2: {{.*}}ir<%valB.loaded> = load
; AVX2: Cost of 3000000 for VF 4: {{.*}}ir<%valB.loaded> = load
; AVX2: Cost of 3000000 for VF 8: {{.*}}ir<%valB.loaded> = load
@@ -39,7 +39,7 @@ define void @test(ptr %B) {
; AVX2: Cost of 3000000 for VF 32: {{.*}}ir<%valB.loaded> = load
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i16, ptr %inB, align 2
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; AVX512: Cost of 2 for VF 2: {{.*}}ir<%valB.loaded> = load
; AVX512: Cost of 2 for VF 4: {{.*}}ir<%valB.loaded> = load
; AVX512: Cost of 1 for VF 8: {{.*}}ir<%valB.loaded> = load
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-load-i32.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-load-i32.ll
index 6295588ebb07f..70d037c8dfb7b 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-load-i32.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-load-i32.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF [0-9]+ For instruction:\s*%valB.loaded = load i32, ptr %inB, align 4"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: (EMIT-SCALAR|REPLICATE|WIDEN)( .*)? ir<%valB.loaded> = load"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse4.2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=AVX1
@@ -16,14 +16,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test(ptr %B) {
; SSE-LABEL: 'test'
-; SSE: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i32, ptr %inB, align 4
+; SSE: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; SSE: Cost of 3000000 for VF 2: {{.*}}ir<%valB.loaded> = load
; SSE: Cost of 3000000 for VF 4: {{.*}}ir<%valB.loaded> = load
; SSE: Cost of 3000000 for VF 8: {{.*}}ir<%valB.loaded> = load
; SSE: Cost of 3000000 for VF 16: {{.*}}ir<%valB.loaded> = load
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i32, ptr %inB, align 4
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; AVX1: Cost of 3 for VF 2: {{.*}}ir<%valB.loaded> = load
; AVX1: Cost of 2 for VF 4: {{.*}}ir<%valB.loaded> = load
; AVX1: Cost of 2 for VF 8: {{.*}}ir<%valB.loaded> = load
@@ -31,7 +31,7 @@ define void @test(ptr %B) {
; AVX1: Cost of 8 for VF 32: {{.*}}ir<%valB.loaded> = load
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i32, ptr %inB, align 4
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; AVX2: Cost of 3 for VF 2: {{.*}}ir<%valB.loaded> = load
; AVX2: Cost of 2 for VF 4: {{.*}}ir<%valB.loaded> = load
; AVX2: Cost of 2 for VF 8: {{.*}}ir<%valB.loaded> = load
@@ -39,7 +39,7 @@ define void @test(ptr %B) {
; AVX2: Cost of 8 for VF 32: {{.*}}ir<%valB.loaded> = load
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i32, ptr %inB, align 4
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; AVX512: Cost of 2 for VF 2: {{.*}}ir<%valB.loaded> = load
; AVX512: Cost of 1 for VF 4: {{.*}}ir<%valB.loaded> = load
; AVX512: Cost of 1 for VF 8: {{.*}}ir<%valB.loaded> = load
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-load-i64.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-load-i64.ll
index 85953f2b3733e..8bd907cf3fabb 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-load-i64.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-load-i64.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF [0-9]+ For instruction:\s*%valB.loaded = load i64, ptr %inB, align 8"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: (EMIT-SCALAR|REPLICATE|WIDEN)( .*)? ir<%valB.loaded> = load"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse4.2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=AVX1
@@ -16,14 +16,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test(ptr %B) {
; SSE-LABEL: 'test'
-; SSE: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i64, ptr %inB, align 8
+; SSE: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; SSE: Cost of 3000000 for VF 2: {{.*}}ir<%valB.loaded> = load
; SSE: Cost of 3000000 for VF 4: {{.*}}ir<%valB.loaded> = load
; SSE: Cost of 3000000 for VF 8: {{.*}}ir<%valB.loaded> = load
; SSE: Cost of 3000000 for VF 16: {{.*}}ir<%valB.loaded> = load
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i64, ptr %inB, align 8
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; AVX1: Cost of 2 for VF 2: {{.*}}ir<%valB.loaded> = load
; AVX1: Cost of 2 for VF 4: {{.*}}ir<%valB.loaded> = load
; AVX1: Cost of 4 for VF 8: {{.*}}ir<%valB.loaded> = load
@@ -31,7 +31,7 @@ define void @test(ptr %B) {
; AVX1: Cost of 16 for VF 32: {{.*}}ir<%valB.loaded> = load
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i64, ptr %inB, align 8
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; AVX2: Cost of 2 for VF 2: {{.*}}ir<%valB.loaded> = load
; AVX2: Cost of 2 for VF 4: {{.*}}ir<%valB.loaded> = load
; AVX2: Cost of 4 for VF 8: {{.*}}ir<%valB.loaded> = load
@@ -39,7 +39,7 @@ define void @test(ptr %B) {
; AVX2: Cost of 16 for VF 32: {{.*}}ir<%valB.loaded> = load
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i64, ptr %inB, align 8
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; AVX512: Cost of 1 for VF 2: {{.*}}ir<%valB.loaded> = load
; AVX512: Cost of 1 for VF 4: {{.*}}ir<%valB.loaded> = load
; AVX512: Cost of 1 for VF 8: {{.*}}ir<%valB.loaded> = load
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-load-i8.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-load-i8.ll
index 333be63f50c06..2ef4273fe562e 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-load-i8.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-load-i8.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF [0-9]+ For instruction:\s*%valB.loaded = load i8, ptr %inB, align 1"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: (EMIT-SCALAR|REPLICATE|WIDEN)( .*)? ir<%valB.loaded> = load"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse4.2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=AVX1
@@ -16,14 +16,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test(ptr %B) {
; SSE-LABEL: 'test'
-; SSE: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i8, ptr %inB, align 1
+; SSE: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; SSE: Cost of 3000000 for VF 2: {{.*}}ir<%valB.loaded> = load
; SSE: Cost of 3000000 for VF 4: {{.*}}ir<%valB.loaded> = load
; SSE: Cost of 3000000 for VF 8: {{.*}}ir<%valB.loaded> = load
; SSE: Cost of 3000000 for VF 16: {{.*}}ir<%valB.loaded> = load
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i8, ptr %inB, align 1
+; AVX1: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; AVX1: Cost of 3000000 for VF 2: {{.*}}ir<%valB.loaded> = load
; AVX1: Cost of 3000000 for VF 4: {{.*}}ir<%valB.loaded> = load
; AVX1: Cost of 3000000 for VF 8: {{.*}}ir<%valB.loaded> = load
@@ -31,7 +31,7 @@ define void @test(ptr %B) {
; AVX1: Cost of 3000000 for VF 32: {{.*}}ir<%valB.loaded> = load
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i8, ptr %inB, align 1
+; AVX2: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; AVX2: Cost of 3000000 for VF 2: {{.*}}ir<%valB.loaded> = load
; AVX2: Cost of 3000000 for VF 4: {{.*}}ir<%valB.loaded> = load
; AVX2: Cost of 3000000 for VF 8: {{.*}}ir<%valB.loaded> = load
@@ -39,7 +39,7 @@ define void @test(ptr %B) {
; AVX2: Cost of 3000000 for VF 32: {{.*}}ir<%valB.loaded> = load
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: %valB.loaded = load i8, ptr %inB, align 1
+; AVX512: Cost of 1 for VF 1: EMIT-SCALAR ir<%valB.loaded> = load ir<%inB>
; AVX512: Cost of 2 for VF 2: {{.*}}ir<%valB.loaded> = load
; AVX512: Cost of 2 for VF 4: {{.*}}ir<%valB.loaded> = load
; AVX512: Cost of 2 for VF 8: {{.*}}ir<%valB.loaded> = load
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-scatter-i32-with-i8-index.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-scatter-i32-with-i8-index.ll
index 6959fea2d512b..86d317982d1ea 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-scatter-i32-with-i8-index.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-scatter-i32-with-i8-index.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*store i32 %valB, ptr %out" --filter "Cost of [1-9][0-9]*(.[0-9]+)? for VF [0-9]+: (profitable to scalarize\s+store i32 %valB|WIDEN store .*, ir<%valB>|REPLICATE store ir<%valB>)"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT store ir<%valB>" --filter "Cost of [1-9][0-9]*(.[0-9]+)? for VF [0-9]+: (profitable to scalarize\s+store i32 %valB|WIDEN store .*, ir<%valB>|REPLICATE store ir<%valB>)"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse4.2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE42
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=AVX1
@@ -17,21 +17,21 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: store i32 %valB, ptr %out, align 4
+; SSE2: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; SSE2: Cost of 2.5 for VF 2: profitable to scalarize store i32 %valB, ptr %out, align 4
; SSE2: Cost of 5.5 for VF 4: profitable to scalarize store i32 %valB, ptr %out, align 4
; SSE2: Cost of 11 for VF 8: profitable to scalarize store i32 %valB, ptr %out, align 4
; SSE2: Cost of 22 for VF 16: profitable to scalarize store i32 %valB, ptr %out, align 4
;
; SSE42-LABEL: 'test'
-; SSE42: LV: Found an estimated cost of 1 for VF 1 For instruction: store i32 %valB, ptr %out, align 4
+; SSE42: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; SSE42: Cost of 2 for VF 2: profitable to scalarize store i32 %valB, ptr %out, align 4
; SSE42: Cost of 4 for VF 4: profitable to scalarize store i32 %valB, ptr %out, align 4
; SSE42: Cost of 8 for VF 8: profitable to scalarize store i32 %valB, ptr %out, align 4
; SSE42: Cost of 16 for VF 16: profitable to scalarize store i32 %valB, ptr %out, align 4
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: store i32 %valB, ptr %out, align 4
+; AVX1: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX1: Cost of 2 for VF 2: profitable to scalarize store i32 %valB, ptr %out, align 4
; AVX1: Cost of 4 for VF 4: profitable to scalarize store i32 %valB, ptr %out, align 4
; AVX1: Cost of 8.5 for VF 8: profitable to scalarize store i32 %valB, ptr %out, align 4
@@ -39,7 +39,7 @@ define void @test() {
; AVX1: Cost of 34 for VF 32: profitable to scalarize store i32 %valB, ptr %out, align 4
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: store i32 %valB, ptr %out, align 4
+; AVX2: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX2: Cost of 2 for VF 2: profitable to scalarize store i32 %valB, ptr %out, align 4
; AVX2: Cost of 4 for VF 4: profitable to scalarize store i32 %valB, ptr %out, align 4
; AVX2: Cost of 8.5 for VF 8: profitable to scalarize store i32 %valB, ptr %out, align 4
@@ -47,7 +47,7 @@ define void @test() {
; AVX2: Cost of 34 for VF 32: profitable to scalarize store i32 %valB, ptr %out, align 4
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: store i32 %valB, ptr %out, align 4
+; AVX512: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX512: Cost of 5 for VF 2: REPLICATE store ir<%valB>, ir<%out>
; AVX512: Cost of 10.5 for VF 4: REPLICATE store ir<%valB>, ir<%out>
; AVX512: Cost of 10 for VF 8: WIDEN store ir<%out>, ir<%valB>, ir<%canStore>
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-scatter-i64-with-i8-index.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-scatter-i64-with-i8-index.ll
index 41ae89933204e..216a24086891b 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-scatter-i64-with-i8-index.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-scatter-i64-with-i8-index.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*store i64 %valB, ptr %out" --filter "Cost of [1-9][0-9]*(.[0-9]+)? for VF [0-9]+: (profitable to scalarize\s+store i64 %valB|WIDEN store .*, ir<%valB>|REPLICATE store ir<%valB>)"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT store ir<%valB>" --filter "Cost of [1-9][0-9]*(.[0-9]+)? for VF [0-9]+: (profitable to scalarize\s+store i64 %valB|WIDEN store .*, ir<%valB>|REPLICATE store ir<%valB>)"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse4.2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE42
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=AVX1
@@ -17,21 +17,21 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: store i64 %valB, ptr %out, align 8
+; SSE2: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; SSE2: Cost of 2.5 for VF 2: profitable to scalarize store i64 %valB, ptr %out, align 8
; SSE2: Cost of 5 for VF 4: profitable to scalarize store i64 %valB, ptr %out, align 8
; SSE2: Cost of 10 for VF 8: profitable to scalarize store i64 %valB, ptr %out, align 8
; SSE2: Cost of 20 for VF 16: profitable to scalarize store i64 %valB, ptr %out, align 8
;
; SSE42-LABEL: 'test'
-; SSE42: LV: Found an estimated cost of 1 for VF 1 For instruction: store i64 %valB, ptr %out, align 8
+; SSE42: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; SSE42: Cost of 2 for VF 2: profitable to scalarize store i64 %valB, ptr %out, align 8
; SSE42: Cost of 4 for VF 4: profitable to scalarize store i64 %valB, ptr %out, align 8
; SSE42: Cost of 8 for VF 8: profitable to scalarize store i64 %valB, ptr %out, align 8
; SSE42: Cost of 16 for VF 16: profitable to scalarize store i64 %valB, ptr %out, align 8
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: store i64 %valB, ptr %out, align 8
+; AVX1: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX1: Cost of 2 for VF 2: profitable to scalarize store i64 %valB, ptr %out, align 8
; AVX1: Cost of 4.5 for VF 4: profitable to scalarize store i64 %valB, ptr %out, align 8
; AVX1: Cost of 9 for VF 8: profitable to scalarize store i64 %valB, ptr %out, align 8
@@ -39,7 +39,7 @@ define void @test() {
; AVX1: Cost of 36 for VF 32: profitable to scalarize store i64 %valB, ptr %out, align 8
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: store i64 %valB, ptr %out, align 8
+; AVX2: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX2: Cost of 2 for VF 2: profitable to scalarize store i64 %valB, ptr %out, align 8
; AVX2: Cost of 4.5 for VF 4: profitable to scalarize store i64 %valB, ptr %out, align 8
; AVX2: Cost of 9 for VF 8: profitable to scalarize store i64 %valB, ptr %out, align 8
@@ -47,7 +47,7 @@ define void @test() {
; AVX2: Cost of 36 for VF 32: profitable to scalarize store i64 %valB, ptr %out, align 8
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: store i64 %valB, ptr %out, align 8
+; AVX512: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX512: Cost of 5 for VF 2: REPLICATE store ir<%valB>, ir<%out>
; AVX512: Cost of 11 for VF 4: REPLICATE store ir<%valB>, ir<%out>
; AVX512: Cost of 10 for VF 8: WIDEN store ir<%out>, ir<%valB>, ir<%canStore>
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-store-i16.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-store-i16.ll
index 5b3d83a13e919..b415c989da117 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-store-i16.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-store-i16.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*store i16 %valB, ptr %out" --filter "Cost of [1-9][0-9]*(.[0-9]+)? for VF [0-9]+: (profitable to scalarize\s+store i16 %valB|WIDEN store .*, ir<%valB>|REPLICATE store ir<%valB>)"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT store ir<%valB>" --filter "Cost of [1-9][0-9]*(.[0-9]+)? for VF [0-9]+: (profitable to scalarize\s+store i16 %valB|WIDEN store .*, ir<%valB>|REPLICATE store ir<%valB>)"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse4.2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=AVX1
@@ -16,14 +16,14 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test(ptr %C) {
; SSE-LABEL: 'test'
-; SSE: LV: Found an estimated cost of 1 for VF 1 For instruction: store i16 %valB, ptr %out, align 2
+; SSE: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; SSE: Cost of 2 for VF 2: profitable to scalarize store i16 %valB, ptr %out, align 2
; SSE: Cost of 4 for VF 4: profitable to scalarize store i16 %valB, ptr %out, align 2
; SSE: Cost of 8 for VF 8: profitable to scalarize store i16 %valB, ptr %out, align 2
; SSE: Cost of 16 for VF 16: profitable to scalarize store i16 %valB, ptr %out, align 2
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: store i16 %valB, ptr %out, align 2
+; AVX1: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX1: Cost of 2 for VF 2: profitable to scalarize store i16 %valB, ptr %out, align 2
; AVX1: Cost of 4 for VF 4: profitable to scalarize store i16 %valB, ptr %out, align 2
; AVX1: Cost of 8 for VF 8: profitable to scalarize store i16 %valB, ptr %out, align 2
@@ -31,7 +31,7 @@ define void @test(ptr %C) {
; AVX1: Cost of 33 for VF 32: profitable to scalarize store i16 %valB, ptr %out, align 2
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: store i16 %valB, ptr %out, align 2
+; AVX2: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX2: Cost of 2 for VF 2: profitable to scalarize store i16 %valB, ptr %out, align 2
; AVX2: Cost of 4 for VF 4: profitable to scalarize store i16 %valB, ptr %out, align 2
; AVX2: Cost of 8 for VF 8: profitable to scalarize store i16 %valB, ptr %out, align 2
@@ -39,7 +39,7 @@ define void @test(ptr %C) {
; AVX2: Cost of 33 for VF 32: profitable to scalarize store i16 %valB, ptr %out, align 2
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: store i16 %valB, ptr %out, align 2
+; AVX512: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX512: Cost of 2 for VF 2: WIDEN store vp<[[VP7:%[0-9]+]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
; AVX512: Cost of 2 for VF 4: WIDEN store vp<[[VP7]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
; AVX512: Cost of 1 for VF 8: WIDEN store vp<[[VP7]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-store-i32.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-store-i32.ll
index c659b0a53364c..4636882c2500a 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-store-i32.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-store-i32.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*store i32 %valB, ptr %out" --filter "Cost of [1-9][0-9]*(.[0-9]+)? for VF [0-9]+: (profitable to scalarize\s+store i32 %valB|WIDEN store .*, ir<%valB>|REPLICATE store ir<%valB>)"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT store ir<%valB>" --filter "Cost of [1-9][0-9]*(.[0-9]+)? for VF [0-9]+: (profitable to scalarize\s+store i32 %valB|WIDEN store .*, ir<%valB>|REPLICATE store ir<%valB>)"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse4.2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE42
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=AVX1
@@ -16,21 +16,21 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test(ptr %C) {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: store i32 %valB, ptr %out, align 4
+; SSE2: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; SSE2: Cost of 2.5 for VF 2: profitable to scalarize store i32 %valB, ptr %out, align 4
; SSE2: Cost of 5.5 for VF 4: profitable to scalarize store i32 %valB, ptr %out, align 4
; SSE2: Cost of 11 for VF 8: profitable to scalarize store i32 %valB, ptr %out, align 4
; SSE2: Cost of 22 for VF 16: profitable to scalarize store i32 %valB, ptr %out, align 4
;
; SSE42-LABEL: 'test'
-; SSE42: LV: Found an estimated cost of 1 for VF 1 For instruction: store i32 %valB, ptr %out, align 4
+; SSE42: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; SSE42: Cost of 2 for VF 2: profitable to scalarize store i32 %valB, ptr %out, align 4
; SSE42: Cost of 4 for VF 4: profitable to scalarize store i32 %valB, ptr %out, align 4
; SSE42: Cost of 8 for VF 8: profitable to scalarize store i32 %valB, ptr %out, align 4
; SSE42: Cost of 16 for VF 16: profitable to scalarize store i32 %valB, ptr %out, align 4
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: store i32 %valB, ptr %out, align 4
+; AVX1: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX1: Cost of 9 for VF 2: WIDEN store vp<[[VP7:%[0-9]+]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
; AVX1: Cost of 8 for VF 4: WIDEN store vp<[[VP7]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
; AVX1: Cost of 8 for VF 8: WIDEN store vp<[[VP7]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
@@ -38,7 +38,7 @@ define void @test(ptr %C) {
; AVX1: Cost of 32 for VF 32: WIDEN store vp<[[VP7]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: store i32 %valB, ptr %out, align 4
+; AVX2: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX2: Cost of 9 for VF 2: WIDEN store vp<[[VP7:%[0-9]+]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
; AVX2: Cost of 8 for VF 4: WIDEN store vp<[[VP7]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
; AVX2: Cost of 8 for VF 8: WIDEN store vp<[[VP7]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
@@ -46,7 +46,7 @@ define void @test(ptr %C) {
; AVX2: Cost of 32 for VF 32: WIDEN store vp<[[VP7]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: store i32 %valB, ptr %out, align 4
+; AVX512: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX512: Cost of 2 for VF 2: WIDEN store vp<[[VP7:%[0-9]+]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
; AVX512: Cost of 1 for VF 4: WIDEN store vp<[[VP7]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
; AVX512: Cost of 1 for VF 8: WIDEN store vp<[[VP7]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-store-i64.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-store-i64.ll
index 1c05a4c25d973..150bd66f331d7 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-store-i64.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-store-i64.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*store i64 %valB, ptr %out" --filter "Cost of [1-9][0-9]*(.[0-9]+)? for VF [0-9]+: (profitable to scalarize\s+store i64 %valB|WIDEN store .*, ir<%valB>|REPLICATE store ir<%valB>)"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT store ir<%valB>" --filter "Cost of [1-9][0-9]*(.[0-9]+)? for VF [0-9]+: (profitable to scalarize\s+store i64 %valB|WIDEN store .*, ir<%valB>|REPLICATE store ir<%valB>)"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse4.2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE42
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=AVX1
@@ -16,21 +16,21 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test(ptr %C) {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: store i64 %valB, ptr %out, align 8
+; SSE2: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; SSE2: Cost of 2.5 for VF 2: profitable to scalarize store i64 %valB, ptr %out, align 8
; SSE2: Cost of 5 for VF 4: profitable to scalarize store i64 %valB, ptr %out, align 8
; SSE2: Cost of 10 for VF 8: profitable to scalarize store i64 %valB, ptr %out, align 8
; SSE2: Cost of 20 for VF 16: profitable to scalarize store i64 %valB, ptr %out, align 8
;
; SSE42-LABEL: 'test'
-; SSE42: LV: Found an estimated cost of 1 for VF 1 For instruction: store i64 %valB, ptr %out, align 8
+; SSE42: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; SSE42: Cost of 2 for VF 2: profitable to scalarize store i64 %valB, ptr %out, align 8
; SSE42: Cost of 4 for VF 4: profitable to scalarize store i64 %valB, ptr %out, align 8
; SSE42: Cost of 8 for VF 8: profitable to scalarize store i64 %valB, ptr %out, align 8
; SSE42: Cost of 16 for VF 16: profitable to scalarize store i64 %valB, ptr %out, align 8
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: store i64 %valB, ptr %out, align 8
+; AVX1: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX1: Cost of 8 for VF 2: WIDEN store vp<[[VP7:%[0-9]+]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
; AVX1: Cost of 8 for VF 4: WIDEN store vp<[[VP7]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
; AVX1: Cost of 16 for VF 8: WIDEN store vp<[[VP7]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
@@ -38,7 +38,7 @@ define void @test(ptr %C) {
; AVX1: Cost of 64 for VF 32: WIDEN store vp<[[VP7]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: store i64 %valB, ptr %out, align 8
+; AVX2: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX2: Cost of 8 for VF 2: WIDEN store vp<[[VP7:%[0-9]+]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
; AVX2: Cost of 8 for VF 4: WIDEN store vp<[[VP7]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
; AVX2: Cost of 16 for VF 8: WIDEN store vp<[[VP7]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
@@ -46,7 +46,7 @@ define void @test(ptr %C) {
; AVX2: Cost of 64 for VF 32: WIDEN store vp<[[VP7]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: store i64 %valB, ptr %out, align 8
+; AVX512: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX512: Cost of 1 for VF 2: WIDEN store vp<[[VP7:%[0-9]+]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
; AVX512: Cost of 1 for VF 4: WIDEN store vp<[[VP7]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
; AVX512: Cost of 1 for VF 8: WIDEN store vp<[[VP7]]>, ir<%valB>, ir<%canStore> (!alias.scope {{.*}}, !noalias {{.*}})
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-store-i8.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-store-i8.ll
index 16a7768bbc302..b8b9580b2ea80 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-store-i8.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-store-i8.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*store i8 %valB, ptr %out" --filter "Cost of [1-9][0-9]*(.[0-9]+)? for VF [0-9]+: (profitable to scalarize\s+store i8 %valB|WIDEN store .*, ir<%valB>|REPLICATE store ir<%valB>)"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT store ir<%valB>" --filter "Cost of [1-9][0-9]*(.[0-9]+)? for VF [0-9]+: (profitable to scalarize\s+store i8 %valB|WIDEN store .*, ir<%valB>|REPLICATE store ir<%valB>)"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse4.2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE42
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=AVX1
@@ -16,21 +16,21 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test(ptr %C) {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: store i8 %valB, ptr %out, align 1
+; SSE2: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; SSE2: Cost of 2.5 for VF 2: profitable to scalarize store i8 %valB, ptr %out, align 1
; SSE2: Cost of 5.5 for VF 4: profitable to scalarize store i8 %valB, ptr %out, align 1
; SSE2: Cost of 11.5 for VF 8: profitable to scalarize store i8 %valB, ptr %out, align 1
; SSE2: Cost of 23.5 for VF 16: profitable to scalarize store i8 %valB, ptr %out, align 1
;
; SSE42-LABEL: 'test'
-; SSE42: LV: Found an estimated cost of 1 for VF 1 For instruction: store i8 %valB, ptr %out, align 1
+; SSE42: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; SSE42: Cost of 2 for VF 2: profitable to scalarize store i8 %valB, ptr %out, align 1
; SSE42: Cost of 4 for VF 4: profitable to scalarize store i8 %valB, ptr %out, align 1
; SSE42: Cost of 8 for VF 8: profitable to scalarize store i8 %valB, ptr %out, align 1
; SSE42: Cost of 16 for VF 16: profitable to scalarize store i8 %valB, ptr %out, align 1
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: store i8 %valB, ptr %out, align 1
+; AVX1: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX1: Cost of 2 for VF 2: profitable to scalarize store i8 %valB, ptr %out, align 1
; AVX1: Cost of 4 for VF 4: profitable to scalarize store i8 %valB, ptr %out, align 1
; AVX1: Cost of 8 for VF 8: profitable to scalarize store i8 %valB, ptr %out, align 1
@@ -38,7 +38,7 @@ define void @test(ptr %C) {
; AVX1: Cost of 32.5 for VF 32: profitable to scalarize store i8 %valB, ptr %out, align 1
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: store i8 %valB, ptr %out, align 1
+; AVX2: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX2: Cost of 2 for VF 2: profitable to scalarize store i8 %valB, ptr %out, align 1
; AVX2: Cost of 4 for VF 4: profitable to scalarize store i8 %valB, ptr %out, align 1
; AVX2: Cost of 8 for VF 8: profitable to scalarize store i8 %valB, ptr %out, align 1
@@ -46,7 +46,7 @@ define void @test(ptr %C) {
; AVX2: Cost of 32.5 for VF 32: profitable to scalarize store i8 %valB, ptr %out, align 1
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: store i8 %valB, ptr %out, align 1
+; AVX512: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX512: Cost of 2 for VF 2: WIDEN store vp<[[VP7:%[0-9]+]]>, ir<%valB>, ir<%canStore>
; AVX512: Cost of 2 for VF 4: WIDEN store vp<[[VP7]]>, ir<%valB>, ir<%canStore>
; AVX512: Cost of 2 for VF 8: WIDEN store vp<[[VP7]]>, ir<%valB>, ir<%canStore>
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/scatter-i16-with-i8-index.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/scatter-i16-with-i8-index.ll
index 6782bbfeb53b3..b40147e8ac355 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/scatter-i16-with-i8-index.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/scatter-i16-with-i8-index.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*store i16 %valB, ptr %out" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (WIDEN store|REPLICATE store ir<%valB>)"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT store ir<%valB>" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (WIDEN store|REPLICATE store ir<%valB>)"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse4.2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE42
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=AVX1
@@ -17,21 +17,21 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: store i16 %valB, ptr %out, align 2
+; SSE2: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; SSE2: Cost of 28 for VF 2: REPLICATE store ir<%valB>, ir<%out>
; SSE2: Cost of 56 for VF 4: REPLICATE store ir<%valB>, ir<%out>
; SSE2: Cost of 112 for VF 8: REPLICATE store ir<%valB>, ir<%out>
; SSE2: Cost of 224 for VF 16: REPLICATE store ir<%valB>, ir<%out>
;
; SSE42-LABEL: 'test'
-; SSE42: LV: Found an estimated cost of 1 for VF 1 For instruction: store i16 %valB, ptr %out, align 2
+; SSE42: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; SSE42: Cost of 26 for VF 2: REPLICATE store ir<%valB>, ir<%out>
; SSE42: Cost of 52 for VF 4: REPLICATE store ir<%valB>, ir<%out>
; SSE42: Cost of 104 for VF 8: REPLICATE store ir<%valB>, ir<%out>
; SSE42: Cost of 208 for VF 16: REPLICATE store ir<%valB>, ir<%out>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: store i16 %valB, ptr %out, align 2
+; AVX1: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX1: Cost of 26 for VF 2: REPLICATE store ir<%valB>, ir<%out>
; AVX1: Cost of 53 for VF 4: REPLICATE store ir<%valB>, ir<%out>
; AVX1: Cost of 106 for VF 8: REPLICATE store ir<%valB>, ir<%out>
@@ -39,7 +39,7 @@ define void @test() {
; AVX1: Cost of 426 for VF 32: REPLICATE store ir<%valB>, ir<%out>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: store i16 %valB, ptr %out, align 2
+; AVX2: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX2: Cost of 6 for VF 2: REPLICATE store ir<%valB>, ir<%out>
; AVX2: Cost of 13 for VF 4: REPLICATE store ir<%valB>, ir<%out>
; AVX2: Cost of 26 for VF 8: REPLICATE store ir<%valB>, ir<%out>
@@ -47,7 +47,7 @@ define void @test() {
; AVX2: Cost of 106 for VF 32: REPLICATE store ir<%valB>, ir<%out>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: store i16 %valB, ptr %out, align 2
+; AVX512: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX512: Cost of 6 for VF 2: REPLICATE store ir<%valB>, ir<%out>
; AVX512: Cost of 13 for VF 4: REPLICATE store ir<%valB>, ir<%out>
; AVX512: Cost of 27 for VF 8: REPLICATE store ir<%valB>, ir<%out>
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/scatter-i32-with-i8-index.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/scatter-i32-with-i8-index.ll
index 5e0b3277dd5e9..a8cf9c1ffa594 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/scatter-i32-with-i8-index.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/scatter-i32-with-i8-index.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*store i32 %valB, ptr %out" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (WIDEN store|REPLICATE store ir<%valB>)"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT store ir<%valB>" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (WIDEN store|REPLICATE store ir<%valB>)"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse4.2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE42
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=AVX1
@@ -17,21 +17,21 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: store i32 %valB, ptr %out, align 4
+; SSE2: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; SSE2: Cost of 29 for VF 2: REPLICATE store ir<%valB>, ir<%out>
; SSE2: Cost of 59 for VF 4: REPLICATE store ir<%valB>, ir<%out>
; SSE2: Cost of 118 for VF 8: REPLICATE store ir<%valB>, ir<%out>
; SSE2: Cost of 236 for VF 16: REPLICATE store ir<%valB>, ir<%out>
;
; SSE42-LABEL: 'test'
-; SSE42: LV: Found an estimated cost of 1 for VF 1 For instruction: store i32 %valB, ptr %out, align 4
+; SSE42: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; SSE42: Cost of 26 for VF 2: REPLICATE store ir<%valB>, ir<%out>
; SSE42: Cost of 52 for VF 4: REPLICATE store ir<%valB>, ir<%out>
; SSE42: Cost of 104 for VF 8: REPLICATE store ir<%valB>, ir<%out>
; SSE42: Cost of 208 for VF 16: REPLICATE store ir<%valB>, ir<%out>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: store i32 %valB, ptr %out, align 4
+; AVX1: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX1: Cost of 26 for VF 2: REPLICATE store ir<%valB>, ir<%out>
; AVX1: Cost of 53 for VF 4: REPLICATE store ir<%valB>, ir<%out>
; AVX1: Cost of 107 for VF 8: REPLICATE store ir<%valB>, ir<%out>
@@ -39,7 +39,7 @@ define void @test() {
; AVX1: Cost of 428 for VF 32: REPLICATE store ir<%valB>, ir<%out>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: store i32 %valB, ptr %out, align 4
+; AVX2: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX2: Cost of 6 for VF 2: REPLICATE store ir<%valB>, ir<%out>
; AVX2: Cost of 13 for VF 4: REPLICATE store ir<%valB>, ir<%out>
; AVX2: Cost of 27 for VF 8: REPLICATE store ir<%valB>, ir<%out>
@@ -47,7 +47,7 @@ define void @test() {
; AVX2: Cost of 108 for VF 32: REPLICATE store ir<%valB>, ir<%out>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: store i32 %valB, ptr %out, align 4
+; AVX512: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX512: Cost of 6 for VF 2: REPLICATE store ir<%valB>, ir<%out>
; AVX512: Cost of 13 for VF 4: REPLICATE store ir<%valB>, ir<%out>
; AVX512: Cost of 10 for VF 8: WIDEN store ir<%out>, ir<%valB>
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/scatter-i64-with-i8-index.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/scatter-i64-with-i8-index.ll
index fcbf6042dec14..960bd5e8ae202 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/scatter-i64-with-i8-index.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/scatter-i64-with-i8-index.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*store i64 %valB, ptr %out" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (WIDEN store|REPLICATE store ir<%valB>)"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT store ir<%valB>" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (WIDEN store|REPLICATE store ir<%valB>)"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse4.2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE42
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=AVX1
@@ -17,21 +17,21 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: store i64 %valB, ptr %out, align 8
+; SSE2: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; SSE2: Cost of 29 for VF 2: REPLICATE store ir<%valB>, ir<%out>
; SSE2: Cost of 58 for VF 4: REPLICATE store ir<%valB>, ir<%out>
; SSE2: Cost of 116 for VF 8: REPLICATE store ir<%valB>, ir<%out>
; SSE2: Cost of 232 for VF 16: REPLICATE store ir<%valB>, ir<%out>
;
; SSE42-LABEL: 'test'
-; SSE42: LV: Found an estimated cost of 1 for VF 1 For instruction: store i64 %valB, ptr %out, align 8
+; SSE42: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; SSE42: Cost of 26 for VF 2: REPLICATE store ir<%valB>, ir<%out>
; SSE42: Cost of 52 for VF 4: REPLICATE store ir<%valB>, ir<%out>
; SSE42: Cost of 104 for VF 8: REPLICATE store ir<%valB>, ir<%out>
; SSE42: Cost of 208 for VF 16: REPLICATE store ir<%valB>, ir<%out>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: store i64 %valB, ptr %out, align 8
+; AVX1: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX1: Cost of 26 for VF 2: REPLICATE store ir<%valB>, ir<%out>
; AVX1: Cost of 54 for VF 4: REPLICATE store ir<%valB>, ir<%out>
; AVX1: Cost of 108 for VF 8: REPLICATE store ir<%valB>, ir<%out>
@@ -39,7 +39,7 @@ define void @test() {
; AVX1: Cost of 432 for VF 32: REPLICATE store ir<%valB>, ir<%out>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: store i64 %valB, ptr %out, align 8
+; AVX2: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX2: Cost of 6 for VF 2: REPLICATE store ir<%valB>, ir<%out>
; AVX2: Cost of 14 for VF 4: REPLICATE store ir<%valB>, ir<%out>
; AVX2: Cost of 28 for VF 8: REPLICATE store ir<%valB>, ir<%out>
@@ -47,7 +47,7 @@ define void @test() {
; AVX2: Cost of 112 for VF 32: REPLICATE store ir<%valB>, ir<%out>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: store i64 %valB, ptr %out, align 8
+; AVX512: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX512: Cost of 6 for VF 2: REPLICATE store ir<%valB>, ir<%out>
; AVX512: Cost of 14 for VF 4: REPLICATE store ir<%valB>, ir<%out>
; AVX512: Cost of 10 for VF 8: WIDEN store ir<%out>, ir<%valB>
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/scatter-i8-with-i8-index.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/scatter-i8-with-i8-index.ll
index 2946cd291d7fa..840c699af0be5 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/scatter-i8-with-i8-index.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/scatter-i8-with-i8-index.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+(.[0-9]+)? for VF 1 For instruction:\s*store i8 %valB, ptr %out" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (WIDEN store|REPLICATE store ir<%valB>)"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of [0-9]+(.[0-9]+)? for VF 1: EMIT store ir<%valB>" --filter "Cost of [0-9]+(.[0-9]+)? for VF [0-9]+: (WIDEN store|REPLICATE store ir<%valB>)"
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE2
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+sse4.2 --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSE42
; RUN: opt -passes=loop-vectorize -vectorizer-maximize-bandwidth -S -mattr=+avx --debug-only=loop-vectorize --disable-output < %s 2>&1 | FileCheck %s --check-prefixes=AVX1
@@ -17,21 +17,21 @@ target triple = "x86_64-unknown-linux-gnu"
define void @test() {
; SSE2-LABEL: 'test'
-; SSE2: LV: Found an estimated cost of 1 for VF 1 For instruction: store i8 %valB, ptr %out, align 1
+; SSE2: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; SSE2: Cost of 29 for VF 2: REPLICATE store ir<%valB>, ir<%out>
; SSE2: Cost of 59 for VF 4: REPLICATE store ir<%valB>, ir<%out>
; SSE2: Cost of 119 for VF 8: REPLICATE store ir<%valB>, ir<%out>
; SSE2: Cost of 239 for VF 16: REPLICATE store ir<%valB>, ir<%out>
;
; SSE42-LABEL: 'test'
-; SSE42: LV: Found an estimated cost of 1 for VF 1 For instruction: store i8 %valB, ptr %out, align 1
+; SSE42: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; SSE42: Cost of 26 for VF 2: REPLICATE store ir<%valB>, ir<%out>
; SSE42: Cost of 52 for VF 4: REPLICATE store ir<%valB>, ir<%out>
; SSE42: Cost of 104 for VF 8: REPLICATE store ir<%valB>, ir<%out>
; SSE42: Cost of 208 for VF 16: REPLICATE store ir<%valB>, ir<%out>
;
; AVX1-LABEL: 'test'
-; AVX1: LV: Found an estimated cost of 1 for VF 1 For instruction: store i8 %valB, ptr %out, align 1
+; AVX1: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX1: Cost of 26 for VF 2: REPLICATE store ir<%valB>, ir<%out>
; AVX1: Cost of 53 for VF 4: REPLICATE store ir<%valB>, ir<%out>
; AVX1: Cost of 106 for VF 8: REPLICATE store ir<%valB>, ir<%out>
@@ -39,7 +39,7 @@ define void @test() {
; AVX1: Cost of 425 for VF 32: REPLICATE store ir<%valB>, ir<%out>
;
; AVX2-LABEL: 'test'
-; AVX2: LV: Found an estimated cost of 1 for VF 1 For instruction: store i8 %valB, ptr %out, align 1
+; AVX2: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX2: Cost of 6 for VF 2: REPLICATE store ir<%valB>, ir<%out>
; AVX2: Cost of 13 for VF 4: REPLICATE store ir<%valB>, ir<%out>
; AVX2: Cost of 26 for VF 8: REPLICATE store ir<%valB>, ir<%out>
@@ -47,7 +47,7 @@ define void @test() {
; AVX2: Cost of 105 for VF 32: REPLICATE store ir<%valB>, ir<%out>
;
; AVX512-LABEL: 'test'
-; AVX512: LV: Found an estimated cost of 1 for VF 1 For instruction: store i8 %valB, ptr %out, align 1
+; AVX512: Cost of 1 for VF 1: EMIT store ir<%valB>, ir<%out>
; AVX512: Cost of 6 for VF 2: REPLICATE store ir<%valB>, ir<%out>
; AVX512: Cost of 13 for VF 4: REPLICATE store ir<%valB>, ir<%out>
; AVX512: Cost of 27 for VF 8: REPLICATE store ir<%valB>, ir<%out>
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/strided-load-i16.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/strided-load-i16.ll
index 2e479adbe03d6..31218105308e3 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/strided-load-i16.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/strided-load-i16.ll
@@ -9,7 +9,7 @@ target triple = "x86_64-unknown-linux-gnu"
define void @load_i16_stride2() {
;CHECK-LABEL: load_i16_stride2
-;CHECK: Found an estimated cost of 1 for VF 1 For instruction: %1 = load
+;CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
;CHECK: Cost of 1 for VF 2: INTERLEAVE-GROUP with factor 2,
;CHECK: Cost of 1 for VF 4: INTERLEAVE-GROUP with factor 2,
;CHECK: Cost of 2 for VF 8: INTERLEAVE-GROUP with factor 2,
@@ -35,7 +35,7 @@ for.end:
define void @load_i16_stride3() {
;CHECK-LABEL: load_i16_stride3
-;CHECK: Found an estimated cost of 1 for VF 1 For instruction: %1 = load
+;CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
;CHECK: Cost of 1 for VF 2: INTERLEAVE-GROUP with factor 3,
;CHECK: Cost of 2 for VF 4: INTERLEAVE-GROUP with factor 3,
;CHECK: Cost of 2 for VF 8: INTERLEAVE-GROUP with factor 3,
@@ -61,7 +61,7 @@ for.end:
define void @load_i16_stride4() {
;CHECK-LABEL: load_i16_stride4
-;CHECK: Found an estimated cost of 1 for VF 1 For instruction: %1 = load
+;CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
;CHECK: Cost of 1 for VF 2: INTERLEAVE-GROUP with factor 4,
;CHECK: Cost of 2 for VF 4: INTERLEAVE-GROUP with factor 4,
;CHECK: Cost of 2 for VF 8: INTERLEAVE-GROUP with factor 4,
@@ -87,7 +87,7 @@ for.end:
define void @load_i16_stride5() {
;CHECK-LABEL: load_i16_stride5
-;CHECK: Found an estimated cost of 1 for VF 1 For instruction: %1 = load
+;CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
;CHECK: Cost of 2 for VF 2: INTERLEAVE-GROUP with factor 5,
;CHECK: Cost of 2 for VF 4: INTERLEAVE-GROUP with factor 5,
;CHECK: Cost of 3 for VF 8: INTERLEAVE-GROUP with factor 5,
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/strided-load-i32.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/strided-load-i32.ll
index 36a11e6baf8ac..7d3f219ffd905 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/strided-load-i32.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/strided-load-i32.ll
@@ -9,7 +9,7 @@ target triple = "x86_64-unknown-linux-gnu"
define void @load_int_stride2() {
;CHECK-LABEL: load_int_stride2
-;CHECK: Found an estimated cost of 1 for VF 1 For instruction: %1 = load
+;CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
;CHECK: Cost of 1 for VF 2: INTERLEAVE-GROUP with factor 2,
;CHECK: Cost of 1 for VF 4: INTERLEAVE-GROUP with factor 2,
;CHECK: Cost of 1 for VF 8: INTERLEAVE-GROUP with factor 2,
@@ -34,7 +34,7 @@ for.end:
define void @load_int_stride3() {
;CHECK-LABEL: load_int_stride3
-;CHECK: Found an estimated cost of 1 for VF 1 For instruction: %1 = load
+;CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
;CHECK: Cost of 1 for VF 2: INTERLEAVE-GROUP with factor 3,
;CHECK: Cost of 1 for VF 4: INTERLEAVE-GROUP with factor 3,
;CHECK: Cost of 3 for VF 8: INTERLEAVE-GROUP with factor 3,
@@ -59,7 +59,7 @@ for.end:
define void @load_int_stride4() {
;CHECK-LABEL: load_int_stride4
-;CHECK: Found an estimated cost of 1 for VF 1 For instruction: %1 = load
+;CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
;CHECK: Cost of 1 for VF 2: INTERLEAVE-GROUP with factor 4,
;CHECK: Cost of 1 for VF 4: INTERLEAVE-GROUP with factor 4,
;CHECK: Cost of 3 for VF 8: INTERLEAVE-GROUP with factor 4,
@@ -84,7 +84,7 @@ for.end:
define void @load_int_stride5() {
;CHECK-LABEL: load_int_stride5
-;CHECK: Found an estimated cost of 1 for VF 1 For instruction: %1 = load
+;CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
;CHECK: Cost of 1 for VF 2: INTERLEAVE-GROUP with factor 5,
;CHECK: Cost of 3 for VF 4: INTERLEAVE-GROUP with factor 5,
;CHECK: Cost of 5 for VF 8: INTERLEAVE-GROUP with factor 5,
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/strided-load-i64.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/strided-load-i64.ll
index c9a3de926250f..7432642e93ecc 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/strided-load-i64.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/strided-load-i64.ll
@@ -9,7 +9,7 @@ target triple = "x86_64-unknown-linux-gnu"
define void @load_i64_stride2() {
;CHECK-LABEL: load_i64_stride2
-;CHECK: Found an estimated cost of 1 for VF 1 For instruction: %1 = load
+;CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
;CHECK: Cost of 1 for VF 2: INTERLEAVE-GROUP with factor 2,
;CHECK: Cost of 1 for VF 4: INTERLEAVE-GROUP with factor 2,
;CHECK: Cost of 3 for VF 8: INTERLEAVE-GROUP with factor 2,
@@ -33,7 +33,7 @@ for.end:
define void @load_i64_stride3() {
;CHECK-LABEL: load_i64_stride3
-;CHECK: Found an estimated cost of 1 for VF 1 For instruction: %1 = load
+;CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
;CHECK: Cost of 1 for VF 2: INTERLEAVE-GROUP with factor 3,
;CHECK: Cost of 3 for VF 4: INTERLEAVE-GROUP with factor 3,
;CHECK: Cost of 5 for VF 8: INTERLEAVE-GROUP with factor 3,
@@ -57,7 +57,7 @@ for.end:
define void @load_i64_stride4() {
;CHECK-LABEL: load_i64_stride4
-;CHECK: Found an estimated cost of 1 for VF 1 For instruction: %1 = load
+;CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
;CHECK: Cost of 1 for VF 2: INTERLEAVE-GROUP with factor 4,
;CHECK: Cost of 3 for VF 4: INTERLEAVE-GROUP with factor 4,
;CHECK: Cost of 8 for VF 8: INTERLEAVE-GROUP with factor 4,
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/strided-load-i8.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/strided-load-i8.ll
index df0a191ce638f..4deb4228fd433 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/strided-load-i8.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/strided-load-i8.ll
@@ -9,7 +9,7 @@ target triple = "x86_64-unknown-linux-gnu"
define void @load_i8_stride2() {
;CHECK-LABEL: load_i8_stride2
-;CHECK: Found an estimated cost of 1 for VF 1 For instruction: %1 = load
+;CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
;CHECK: Cost of 1 for VF 2: INTERLEAVE-GROUP with factor 2,
;CHECK: Cost of 1 for VF 4: INTERLEAVE-GROUP with factor 2,
;CHECK: Cost of 1 for VF 8: INTERLEAVE-GROUP with factor 2,
@@ -36,7 +36,7 @@ for.end:
define void @load_i8_stride3() {
;CHECK-LABEL: load_i8_stride3
-;CHECK: Found an estimated cost of 1 for VF 1 For instruction: %1 = load
+;CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
;CHECK: Cost of 1 for VF 2: INTERLEAVE-GROUP with factor 3,
;CHECK: Cost of 1 for VF 4: INTERLEAVE-GROUP with factor 3,
;CHECK: Cost of 4 for VF 8: INTERLEAVE-GROUP with factor 3,
@@ -63,7 +63,7 @@ for.end:
define void @load_i8_stride4() {
;CHECK-LABEL: load_i8_stride4
-;CHECK: Found an estimated cost of 1 for VF 1 For instruction: %1 = load
+;CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
;CHECK: Cost of 1 for VF 2: INTERLEAVE-GROUP with factor 4,
;CHECK: Cost of 1 for VF 4: INTERLEAVE-GROUP with factor 4,
;CHECK: Cost of 4 for VF 8: INTERLEAVE-GROUP with factor 4,
@@ -90,7 +90,7 @@ for.end:
define void @load_i8_stride5() {
;CHECK-LABEL: load_i8_stride5
-;CHECK: Found an estimated cost of 1 for VF 1 For instruction: %1 = load
+;CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%1> = load
;CHECK: Cost of 1 for VF 2: INTERLEAVE-GROUP with factor 5,
;CHECK: Cost of 4 for VF 4: INTERLEAVE-GROUP with factor 5,
;CHECK: Cost of 8 for VF 8: INTERLEAVE-GROUP with factor 5,
diff --git a/llvm/test/Transforms/LoopVectorize/X86/CostModel/vpinstruction-cost.ll b/llvm/test/Transforms/LoopVectorize/X86/CostModel/vpinstruction-cost.ll
index 421ce3c18d95b..de84ed732c33a 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/CostModel/vpinstruction-cost.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/CostModel/vpinstruction-cost.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9]+ for VF 1 For instruction" --filter "Cost of"
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "Cost of"
; RUN: opt -S -passes=loop-vectorize -mcpu=skylake-avx512 -mtriple=x86_64-apple-macosx -debug -disable-output -S %s 2>&1 | FileCheck %s
; REQUIRES: asserts
@@ -7,19 +7,18 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:
define void @wide_or_replaced_with_add_vpinstruction(ptr %src, ptr noalias %dst) {
; CHECK-LABEL: 'wide_or_replaced_with_add_vpinstruction'
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop.latch ]
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %g.src = getelementptr inbounds i64, ptr %src, i64 %iv
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %l = load i64, ptr %g.src, align 8
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %iv.4 = add nuw nsw i64 %iv, 4
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %c = icmp ule i64 %l, 128
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: br i1 %c, label %loop.then, label %loop.latch
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %or = or disjoint i64 %iv.4, 1
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %g.dst = getelementptr inbounds i64, ptr %dst, i64 %or
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: store i64 %iv.4, ptr %g.dst, align 4
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: br label %loop.latch
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %iv.next = add nuw nsw i64 %iv, 1
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %exitcond = icmp eq i64 %iv.next, 32
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: br i1 %exitcond, label %exit, label %loop.header
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%iv> = phi [ ir<0>, vector.ph ], [ ir<%iv.next>, loop.latch ]
+; CHECK: Cost of 0 for VF 1: EMIT ir<%g.src> = getelementptr inbounds ir<%src>, ir<%iv>
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%l> = load ir<%g.src>
+; CHECK: Cost of 1 for VF 1: EMIT ir<%iv.4> = add nuw nsw ir<%iv>, ir<4>
+; CHECK: Cost of 1 for VF 1: EMIT ir<%c> = icmp ule ir<%l>, ir<128>
+; CHECK: Cost of 0 for VF 1: EMIT branch-on-cond ir<%c>
+; CHECK: Cost of 1 for VF 1: EMIT ir<%or> = or disjoint ir<%iv.4>, ir<1>
+; CHECK: Cost of 0 for VF 1: EMIT ir<%g.dst> = getelementptr inbounds ir<%dst>, ir<%or>
+; CHECK: Cost of 1 for VF 1: EMIT store ir<%iv.4>, ir<%g.dst>
+; CHECK: Cost of 1 for VF 1: EMIT ir<%iv.next> = add nuw nsw ir<%iv>, ir<1>
+; CHECK: Cost of 1 for VF 1: EMIT ir<%exitcond> = icmp eq ir<%iv.next>, ir<32>
+; CHECK: Cost of 0 for VF 1: EMIT branch-on-cond ir<%exitcond>
; CHECK: Cost of 1 for VF 2: induction instruction %iv.next = add nuw nsw i64 %iv, 1
; CHECK: Cost of 0 for VF 2: induction instruction %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop.latch ]
; CHECK: Cost of 0 for VF 2: ir<%iv> = WIDEN-INDUCTION nuw nsw ir<0>, ir<1>, vp<[[VP0:%[0-9]+]]>
@@ -99,15 +98,15 @@ exit:
define void @test_vpinstruction_freeze_cost(ptr %src, ptr noalias %dst) {
; CHECK-LABEL: 'test_vpinstruction_freeze_cost'
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %g.src = getelementptr inbounds i64, ptr %src, i64 %iv
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %l = load i64, ptr %g.src, align 8
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %fr = freeze i64 %l
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %g.dst = getelementptr inbounds i64, ptr %dst, i64 %iv
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: store i64 %fr, ptr %g.dst, align 8
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %iv.next = add nuw nsw i64 %iv, 1
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %ec = icmp eq i64 %iv.next, 32
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: br i1 %ec, label %exit, label %loop
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%iv> = phi [ ir<0>, vector.ph ], [ ir<%iv.next>, loop ]
+; CHECK: Cost of 0 for VF 1: EMIT ir<%g.src> = getelementptr inbounds ir<%src>, ir<%iv>
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%l> = load ir<%g.src>
+; CHECK: Cost of 0 for VF 1: EMIT ir<%fr> = freeze ir<%l>
+; CHECK: Cost of 0 for VF 1: EMIT ir<%g.dst> = getelementptr inbounds ir<%dst>, ir<%iv>
+; CHECK: Cost of 1 for VF 1: EMIT store ir<%fr>, ir<%g.dst>
+; CHECK: Cost of 1 for VF 1: EMIT ir<%iv.next> = add nuw nsw ir<%iv>, ir<1>
+; CHECK: Cost of 1 for VF 1: EMIT ir<%ec> = icmp eq ir<%iv.next>, ir<32>
+; CHECK: Cost of 0 for VF 1: EMIT branch-on-cond ir<%ec>
; CHECK: Cost of 1 for VF 2: induction instruction %iv.next = add nuw nsw i64 %iv, 1
; CHECK: Cost of 0 for VF 2: induction instruction %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
; CHECK: Cost of 0 for VF 2: vp<[[VP4:%[0-9]+]]> = SCALAR-STEPS vp<[[VP3:%[0-9]+]]>, ir<1>, vp<[[VP0:%[0-9]+]]>
@@ -179,20 +178,16 @@ exit:
define void @test_vpinstruction_switch_cost(ptr %start, ptr %end) {
; CHECK-LABEL: 'test_vpinstruction_switch_cost'
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %ptr.iv = phi ptr [ %start, %entry ], [ %ptr.iv.next, %loop.latch ]
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %l = load i64, ptr %ptr.iv, align 1
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: switch i64 %l, label %default [
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: store i64 1, ptr %ptr.iv, align 1
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: br label %loop.latch
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: store i64 0, ptr %ptr.iv, align 1
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: br label %loop.latch
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: store i64 42, ptr %ptr.iv, align 1
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: br label %loop.latch
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: store i64 2, ptr %ptr.iv, align 1
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: br label %loop.latch
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %ptr.iv.next = getelementptr inbounds i64, ptr %ptr.iv, i64 1
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %ec = icmp eq ptr %ptr.iv.next, %end
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: br i1 %ec, label %exit, label %loop.header
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%ptr.iv> = phi [ ir<%start>, vector.ph ], [ ir<%ptr.iv.next>, loop.latch ]
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%l> = load ir<%ptr.iv>
+; CHECK: Cost of 0 for VF 1: EMIT switch ir<%l>, ir<-12>, ir<13>, ir<0>
+; CHECK: Cost of 1 for VF 1: EMIT store ir<1>, ir<%ptr.iv>
+; CHECK: Cost of 1 for VF 1: EMIT store ir<0>, ir<%ptr.iv>
+; CHECK: Cost of 1 for VF 1: EMIT store ir<42>, ir<%ptr.iv>
+; CHECK: Cost of 1 for VF 1: EMIT store ir<2>, ir<%ptr.iv>
+; CHECK: Cost of 0 for VF 1: EMIT ir<%ptr.iv.next> = getelementptr inbounds ir<%ptr.iv>, ir<1>
+; CHECK: Cost of 1 for VF 1: EMIT ir<%ec> = icmp eq ir<%ptr.iv.next>, ir<%end>
+; CHECK: Cost of 0 for VF 1: EMIT branch-on-cond ir<%ec>
; CHECK: Cost of 0 for VF 2: induction instruction %ptr.iv.next = getelementptr inbounds i64, ptr %ptr.iv, i64 1
; CHECK: Cost of 0 for VF 2: induction instruction %ptr.iv = phi ptr [ %start, %entry ], [ %ptr.iv.next, %loop.latch ]
; CHECK: Cost of 1 for VF 2: vp<[[VP6:%[0-9]+]]> = DERIVED-IV ir<0> + vp<[[VP5:%[0-9]+]]> * ir<8>
@@ -295,15 +290,15 @@ exit:
define void @test_vpinstruction_extractvalue_cost(ptr noalias %dst, {i64, i64} %sv) {
; CHECK-LABEL: 'test_vpinstruction_extractvalue_cost'
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %a = extractvalue { i64, i64 } %sv, 0
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %b = extractvalue { i64, i64 } %sv, 1
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %add = add i64 %a, %b
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: %g.dst = getelementptr inbounds i64, ptr %dst, i64 %iv
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: store i64 %add, ptr %g.dst, align 8
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %iv.next = add nuw nsw i64 %iv, 1
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %ec = icmp eq i64 %iv.next, 1000
-; CHECK: LV: Found an estimated cost of 0 for VF 1 For instruction: br i1 %ec, label %exit, label %loop
+; CHECK: Cost of 0 for VF 1: EMIT-SCALAR ir<%iv> = phi [ ir<0>, vector.ph ], [ ir<%iv.next>, loop ]
+; CHECK: Cost of 0 for VF 1: EMIT ir<%a> = extractvalue ir<%sv>
+; CHECK: Cost of 0 for VF 1: EMIT ir<%b> = extractvalue ir<%sv>
+; CHECK: Cost of 1 for VF 1: EMIT ir<%add> = add ir<%a>, ir<%b>
+; CHECK: Cost of 0 for VF 1: EMIT ir<%g.dst> = getelementptr inbounds ir<%dst>, ir<%iv>
+; CHECK: Cost of 1 for VF 1: EMIT store ir<%add>, ir<%g.dst>
+; CHECK: Cost of 1 for VF 1: EMIT ir<%iv.next> = add nuw nsw ir<%iv>, ir<1>
+; CHECK: Cost of 1 for VF 1: EMIT ir<%ec> = icmp eq ir<%iv.next>, ir<1000>
+; CHECK: Cost of 0 for VF 1: EMIT branch-on-cond ir<%ec>
; CHECK: Cost of 1 for VF 2: induction instruction %iv.next = add nuw nsw i64 %iv, 1
; CHECK: Cost of 0 for VF 2: induction instruction %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
; CHECK: Cost of 0 for VF 2: vp<[[VP4:%[0-9]+]]> = SCALAR-STEPS vp<[[VP3:%[0-9]+]]>, ir<1>, vp<[[VP0:%[0-9]+]]>
diff --git a/llvm/test/Transforms/LoopVectorize/X86/fneg-cost.ll b/llvm/test/Transforms/LoopVectorize/X86/fneg-cost.ll
index 693c6e5732d37..e046efc3a089f 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/fneg-cost.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/fneg-cost.ll
@@ -5,7 +5,7 @@
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.8.0"
-; CHECK: Found an estimated cost of 1 for VF 1 For instruction: %neg = fneg float %{{.*}}
+; CHECK: Cost of 1 for VF 1: EMIT ir<%neg> = fneg ir<%0>
; CHECK: Cost of 1 for VF 2: WIDEN ir<%neg> = fneg ir<%0>
; CHECK: Cost of 1 for VF 4: WIDEN ir<%neg> = fneg ir<%0>
define void @fneg_cost(ptr %a, i64 %n) {
diff --git a/llvm/test/Transforms/LoopVectorize/X86/fp_to_sint8-cost-model.ll b/llvm/test/Transforms/LoopVectorize/X86/fp_to_sint8-cost-model.ll
index 38662644e2612..7140ed86f15dc 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/fp_to_sint8-cost-model.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/fp_to_sint8-cost-model.ll
@@ -5,7 +5,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
target triple = "x86_64-apple-macosx10.8.0"
-; CHECK: cost of 1 for VF 1 For instruction: %conv = fptosi float %tmp to i8
+; CHECK: Cost of 1 for VF 1: EMIT-SCALAR ir<%conv> = fptosi ir<%tmp> to i8
define void @float_to_sint8_cost(ptr noalias nocapture %a, ptr noalias nocapture readonly %b) {
entry:
br label %for.body
diff --git a/llvm/test/Transforms/LoopVectorize/X86/reduction-small-size.ll b/llvm/test/Transforms/LoopVectorize/X86/reduction-small-size.ll
index dcd47c18c8672..d705a51b7f9ef 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/reduction-small-size.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/reduction-small-size.ll
@@ -13,21 +13,20 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
;
; CHECK-LABEL: reduction_i8
-; CHECK: LV: Found an estimated cost of {{[0-9]+}} for VF 1 For instruction: %{{.*}} = phi
-; CHECK: LV: Found an estimated cost of {{[0-9]+}} for VF 1 For instruction: %{{.*}} = phi
-; CHECK: LV: Found an estimated cost of {{[0-9]+}} for VF 1 For instruction: %{{.*}} = getelementptr
-; CHECK: LV: Found an estimated cost of {{[0-9]+}} for VF 1 For instruction: %{{.*}} = load
-; CHECK: LV: Found an estimated cost of {{[0-9]+}} for VF 1 For instruction: %{{.*}} = zext i8 %{{.*}} to i32
-; CHECK: LV: Found an estimated cost of {{[0-9]+}} for VF 1 For instruction: %{{.*}} = getelementptr
-; CHECK: LV: Found an estimated cost of {{[0-9]+}} for VF 1 For instruction: %{{.*}} = load
-; CHECK: LV: Found an estimated cost of {{[0-9]+}} for VF 1 For instruction: %{{.*}} = zext i8 %{{.*}} to i32
-; CHECK: LV: Found an estimated cost of {{[0-9]+}} for VF 1 For instruction: %{{.*}} = and i32 %{{.*}}, 255
-; CHECK: LV: Found an estimated cost of {{[0-9]+}} for VF 1 For instruction: %{{.*}} = add
-; CHECK: LV: Found an estimated cost of {{[0-9]+}} for VF 1 For instruction: %{{.*}} = add
-; CHECK: LV: Found an estimated cost of {{[0-9]+}} for VF 1 For instruction: %{{.*}} = add
-; CHECK: LV: Found an estimated cost of {{[0-9]+}} for VF 1 For instruction: %{{.*}} = trunc
-; CHECK: LV: Found an estimated cost of {{[0-9]+}} for VF 1 For instruction: %{{.*}} = icmp
-; CHECK: LV: Found an estimated cost of {{[0-9]+}} for VF 1 For instruction: br
+; CHECK: Cost of {{[0-9]+}} for VF 1: EMIT-SCALAR ir<%indvars.iv> = phi
+; CHECK: Cost of {{[0-9]+}} for VF 1: EMIT-SCALAR ir<%sum.013> = phi
+; CHECK: Cost of {{[0-9]+}} for VF 1: EMIT ir<%arrayidx> = getelementptr
+; CHECK: Cost of {{[0-9]+}} for VF 1: EMIT-SCALAR ir<%0> = load
+; CHECK: Cost of {{[0-9]+}} for VF 1: EMIT-SCALAR ir<%conv> = zext ir<%0> to i32
+; CHECK: Cost of {{[0-9]+}} for VF 1: EMIT ir<%arrayidx2> = getelementptr
+; CHECK: Cost of {{[0-9]+}} for VF 1: EMIT-SCALAR ir<%1> = load
+; CHECK: Cost of {{[0-9]+}} for VF 1: EMIT-SCALAR ir<%conv3> = zext ir<%1> to i32
+; CHECK: Cost of {{[0-9]+}} for VF 1: EMIT ir<%conv4> = and ir<%sum.013>, ir<255>
+; CHECK: Cost of {{[0-9]+}} for VF 1: EMIT ir<%add> = add
+; CHECK: Cost of {{[0-9]+}} for VF 1: EMIT ir<%add5> = add
+; CHECK: Cost of {{[0-9]+}} for VF 1: EMIT ir<%indvars.iv.next> = add
+; CHECK: Cost of {{[0-9]+}} for VF 1: EMIT-SCALAR ir<%lftr.wideiv> = trunc
+; CHECK: Cost of {{[0-9]+}} for VF 1: EMIT ir<%exitcond> = icmp
; CHECK: Cost of 1 for VF 2: induction instruction %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
; CHECK: Cost of 1 for VF 2: induction instruction %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %for.body.preheader ]
; CHECK: Cost of 1 for VF 2: WIDEN-REDUCTION-PHI ir<%sum.013> = phi (add) vp<{{.+}}>, vp<[[EXT:%.+]]>
diff --git a/llvm/test/Transforms/LoopVectorize/X86/uint64_to_fp64-cost-model.ll b/llvm/test/Transforms/LoopVectorize/X86/uint64_to_fp64-cost-model.ll
index 0edb89af5bc54..f124389e7eaa4 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/uint64_to_fp64-cost-model.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/uint64_to_fp64-cost-model.ll
@@ -5,7 +5,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
target triple = "x86_64-apple-macosx10.8.0"
-; CHECK: cost of 4 for VF 1 For instruction: %conv = uitofp i64 %tmp to double
+; CHECK: Cost of 4 for VF 1: EMIT-SCALAR ir<%conv> = uitofp ir<%tmp> to double
; CHECK: Cost of 5 for VF 2: WIDEN-CAST ir<%conv> = uitofp ir<%tmp> to double
; CHECK: Cost of 10 for VF 4: WIDEN-CAST ir<%conv> = uitofp ir<%tmp> to double
define void @uint64_to_double_cost(ptr noalias nocapture %a, ptr noalias nocapture readonly %b) {
diff --git a/llvm/test/Transforms/LoopVectorize/X86/uniformshift.ll b/llvm/test/Transforms/LoopVectorize/X86/uniformshift.ll
index 61eaa3524fa56..e38ba170eb602 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/uniformshift.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/uniformshift.ll
@@ -2,7 +2,7 @@
; REQUIRES: asserts
; CHECK: 'foo'
-; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: %shift = ashr i32 %val, %k
+; CHECK: Cost of 1 for VF 1: EMIT ir<%shift> = ashr ir<%val>, ir<%k>
; CHECK: Cost of 2 for VF 2: WIDEN ir<%shift> = ashr ir<%val>, ir<%k>
; CHECK: Cost of 2 for VF 4: WIDEN ir<%shift> = ashr ir<%val>, ir<%k>
define void @foo(ptr nocapture %p, i32 %k) {
diff --git a/llvm/test/Transforms/LoopVectorize/X86/vector-scalar-select-cost.ll b/llvm/test/Transforms/LoopVectorize/X86/vector-scalar-select-cost.ll
index 8acdabd6d675e..bfa3e59df03c7 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/vector-scalar-select-cost.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/vector-scalar-select-cost.ll
@@ -22,7 +22,7 @@ define void @scalarselect(i1 %cond) {
%6 = add nsw i32 %5, %3
%7 = getelementptr inbounds [2048 x i32], ptr @a, i64 0, i64 %indvars.iv
-; CHECK: cost of 1 for VF 1 {{.*}} select i1 %cond, i32 %6, i32 0
+; CHECK: Cost of 1 for VF 1: EMIT ir<%sel> = select ir<%cond>, ir<%6>, ir<0>
; CHECK: Cost of 2 for VF 2: WIDEN ir<%sel> = select ir<%cond>, ir<%6>, ir<0>
; CHECK: Cost of 2 for VF 4: WIDEN ir<%sel> = select ir<%cond>, ir<%6>, ir<0>
@@ -51,7 +51,7 @@ define void @vectorselect(i1 %cond) {
%7 = getelementptr inbounds [2048 x i32], ptr @a, i64 0, i64 %indvars.iv
%8 = icmp ult i64 %indvars.iv, 8
-; CHECK: cost of 1 for VF 1 {{.*}} select i1 %8, i32 %6, i32 0
+; CHECK: Cost of 1 for VF 1: EMIT ir<%sel> = select ir<%8>, ir<%6>, ir<0>
; CHECK: Cost of 2 for VF 2: WIDEN ir<%sel> = select ir<%8>, ir<%6>, ir<0>
; CHECK: Cost of 2 for VF 4: WIDEN ir<%sel> = select ir<%8>, ir<%6>, ir<0>
More information about the llvm-commits
mailing list