diff --git a/llvm/lib/Target/RISCV/RISCVSubtarget.h b/llvm/lib/Target/RISCV/RISCVSubtarget.h --- a/llvm/lib/Target/RISCV/RISCVSubtarget.h +++ b/llvm/lib/Target/RISCV/RISCVSubtarget.h @@ -53,6 +53,7 @@ MVT XLenVT = MVT::i32; unsigned RVVVectorBitsMin; unsigned RVVVectorBitsMax; + uint8_t VectorToScalarBaseCost = 3; uint8_t MaxInterleaveFactor = 2; RISCVABI::ABI TargetABI = RISCVABI::ABI_Unknown; std::bitset UserReservedRegister; @@ -106,6 +107,7 @@ /// and preferably modeled with SubtargetFeatures or properties in /// initializeProperties(). RISCVProcFamilyEnum getProcFamily() const { return RISCVProcFamily; } + unsigned getVectorToScalarBaseCost() const { return VectorToScalarBaseCost; } #define GET_SUBTARGETINFO_MACRO(ATTRIBUTE, DEFAULT, GETTER) \ bool GETTER() const { return ATTRIBUTE; } diff --git a/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp b/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp --- a/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp +++ b/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp @@ -1450,7 +1450,9 @@ // In RVV, we could use vslidedown + vmv.x.s to extract element from vector // and vslideup + vmv.s.x to insert element to vector. - unsigned BaseCost = 1; + unsigned V2SCost = + (CostKind == TTI::TCK_CodeSize) ? 1 : ST->getVectorToScalarBaseCost(); + unsigned BaseCost = Opcode == Instruction::InsertElement ? 1 : V2SCost; // When insertelement we should add the index with 1 as the input of vslideup. unsigned SlideCost = Opcode == Instruction::InsertElement ? 2 : 1; diff --git a/llvm/test/Analysis/CostModel/RISCV/fixed-vector-scatter.ll b/llvm/test/Analysis/CostModel/RISCV/fixed-vector-scatter.ll --- a/llvm/test/Analysis/CostModel/RISCV/fixed-vector-scatter.ll +++ b/llvm/test/Analysis/CostModel/RISCV/fixed-vector-scatter.ll @@ -44,34 +44,34 @@ ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: call void @llvm.masked.scatter.v1i8.v1p0(<1 x i8> undef, <1 x ptr> undef, i32 1, <1 x i1> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 24 for instruction: call void @llvm.masked.scatter.v8f64.v8p0(<8 x double> undef, <8 x ptr> undef, i32 2, <8 x i1> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 12 for instruction: call void @llvm.masked.scatter.v4f64.v4p0(<4 x double> undef, <4 x ptr> undef, i32 2, <4 x i1> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: call void @llvm.masked.scatter.v2f64.v2p0(<2 x double> undef, <2 x ptr> undef, i32 2, <2 x i1> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: call void @llvm.masked.scatter.v1f64.v1p0(<1 x double> undef, <1 x ptr> undef, i32 2, <1 x i1> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 11 for instruction: call void @llvm.masked.scatter.v2f64.v2p0(<2 x double> undef, <2 x ptr> undef, i32 2, <2 x i1> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: call void @llvm.masked.scatter.v1f64.v1p0(<1 x double> undef, <1 x ptr> undef, i32 2, <1 x i1> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 48 for instruction: call void @llvm.masked.scatter.v16f32.v16p0(<16 x float> undef, <16 x ptr> undef, i32 2, <16 x i1> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 24 for instruction: call void @llvm.masked.scatter.v8f32.v8p0(<8 x float> undef, <8 x ptr> undef, i32 2, <8 x i1> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 15 for instruction: call void @llvm.masked.scatter.v4f32.v4p0(<4 x float> undef, <4 x ptr> undef, i32 2, <4 x i1> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: call void @llvm.masked.scatter.v2f32.v2p0(<2 x float> undef, <2 x ptr> undef, i32 2, <2 x i1> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: call void @llvm.masked.scatter.v1f32.v1p0(<1 x float> undef, <1 x ptr> undef, i32 2, <1 x i1> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 23 for instruction: call void @llvm.masked.scatter.v4f32.v4p0(<4 x float> undef, <4 x ptr> undef, i32 2, <4 x i1> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 11 for instruction: call void @llvm.masked.scatter.v2f32.v2p0(<2 x float> undef, <2 x ptr> undef, i32 2, <2 x i1> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: call void @llvm.masked.scatter.v1f32.v1p0(<1 x float> undef, <1 x ptr> undef, i32 2, <1 x i1> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 96 for instruction: call void @llvm.masked.scatter.v32f16.v32p0(<32 x half> undef, <32 x ptr> undef, i32 1, <32 x i1> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 48 for instruction: call void @llvm.masked.scatter.v16f16.v16p0(<16 x half> undef, <16 x ptr> undef, i32 1, <16 x i1> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 31 for instruction: call void @llvm.masked.scatter.v8f16.v8p0(<8 x half> undef, <8 x ptr> undef, i32 1, <8 x i1> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 15 for instruction: call void @llvm.masked.scatter.v4f16.v4p0(<4 x half> undef, <4 x ptr> undef, i32 1, <4 x i1> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: call void @llvm.masked.scatter.v2f16.v2p0(<2 x half> undef, <2 x ptr> undef, i32 1, <2 x i1> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: call void @llvm.masked.scatter.v1f16.v1p0(<1 x half> undef, <1 x ptr> undef, i32 1, <1 x i1> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 47 for instruction: call void @llvm.masked.scatter.v8f16.v8p0(<8 x half> undef, <8 x ptr> undef, i32 1, <8 x i1> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 23 for instruction: call void @llvm.masked.scatter.v4f16.v4p0(<4 x half> undef, <4 x ptr> undef, i32 1, <4 x i1> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 11 for instruction: call void @llvm.masked.scatter.v2f16.v2p0(<2 x half> undef, <2 x ptr> undef, i32 1, <2 x i1> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: call void @llvm.masked.scatter.v1f16.v1p0(<1 x half> undef, <1 x ptr> undef, i32 1, <1 x i1> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 24 for instruction: call void @llvm.masked.scatter.v8i64.v8p0(<8 x i64> undef, <8 x ptr> undef, i32 1, <8 x i1> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 12 for instruction: call void @llvm.masked.scatter.v4i64.v4p0(<4 x i64> undef, <4 x ptr> undef, i32 1, <4 x i1> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: call void @llvm.masked.scatter.v2i64.v2p0(<2 x i64> undef, <2 x ptr> undef, i32 1, <2 x i1> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: call void @llvm.masked.scatter.v1i64.v1p0(<1 x i64> undef, <1 x ptr> undef, i32 1, <1 x i1> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 11 for instruction: call void @llvm.masked.scatter.v2i64.v2p0(<2 x i64> undef, <2 x ptr> undef, i32 1, <2 x i1> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: call void @llvm.masked.scatter.v1i64.v1p0(<1 x i64> undef, <1 x ptr> undef, i32 1, <1 x i1> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 48 for instruction: call void @llvm.masked.scatter.v16i32.v16p0(<16 x i32> undef, <16 x ptr> undef, i32 1, <16 x i1> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 24 for instruction: call void @llvm.masked.scatter.v8i32.v8p0(<8 x i32> undef, <8 x ptr> undef, i32 1, <8 x i1> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 15 for instruction: call void @llvm.masked.scatter.v4i32.v4p0(<4 x i32> undef, <4 x ptr> undef, i32 1, <4 x i1> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: call void @llvm.masked.scatter.v2i32.v2p0(<2 x i32> undef, <2 x ptr> undef, i32 1, <2 x i1> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: call void @llvm.masked.scatter.v1i32.v1p0(<1 x i32> undef, <1 x ptr> undef, i32 1, <1 x i1> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 23 for instruction: call void @llvm.masked.scatter.v4i32.v4p0(<4 x i32> undef, <4 x ptr> undef, i32 1, <4 x i1> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 11 for instruction: call void @llvm.masked.scatter.v2i32.v2p0(<2 x i32> undef, <2 x ptr> undef, i32 1, <2 x i1> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: call void @llvm.masked.scatter.v1i32.v1p0(<1 x i32> undef, <1 x ptr> undef, i32 1, <1 x i1> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 96 for instruction: call void @llvm.masked.scatter.v32i16.v32p0(<32 x i16> undef, <32 x ptr> undef, i32 1, <32 x i1> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 48 for instruction: call void @llvm.masked.scatter.v16i16.v16p0(<16 x i16> undef, <16 x ptr> undef, i32 1, <16 x i1> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 31 for instruction: call void @llvm.masked.scatter.v8i16.v8p0(<8 x i16> undef, <8 x ptr> undef, i32 1, <8 x i1> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 15 for instruction: call void @llvm.masked.scatter.v4i16.v4p0(<4 x i16> undef, <4 x ptr> undef, i32 1, <4 x i1> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: call void @llvm.masked.scatter.v2i16.v2p0(<2 x i16> undef, <2 x ptr> undef, i32 1, <2 x i1> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: call void @llvm.masked.scatter.v1i16.v1p0(<1 x i16> undef, <1 x ptr> undef, i32 1, <1 x i1> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 47 for instruction: call void @llvm.masked.scatter.v8i16.v8p0(<8 x i16> undef, <8 x ptr> undef, i32 1, <8 x i1> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 23 for instruction: call void @llvm.masked.scatter.v4i16.v4p0(<4 x i16> undef, <4 x ptr> undef, i32 1, <4 x i1> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 11 for instruction: call void @llvm.masked.scatter.v2i16.v2p0(<2 x i16> undef, <2 x ptr> undef, i32 1, <2 x i1> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: call void @llvm.masked.scatter.v1i16.v1p0(<1 x i16> undef, <1 x ptr> undef, i32 1, <1 x i1> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 0 ; call void @llvm.masked.scatter.v8f64.v8p0(<8 x double> undef, <8 x ptr> undef, i32 8, <8 x i1> undef) diff --git a/llvm/test/Analysis/CostModel/RISCV/rvv-extractelement.ll b/llvm/test/Analysis/CostModel/RISCV/rvv-extractelement.ll --- a/llvm/test/Analysis/CostModel/RISCV/rvv-extractelement.ll +++ b/llvm/test/Analysis/CostModel/RISCV/rvv-extractelement.ll @@ -18,41 +18,41 @@ ; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8i1_0 = extractelement undef, i32 0 ; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv16i1_0 = extractelement undef, i32 0 ; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv32i1_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i8_0 = extractelement <2 x i8> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i8_0 = extractelement <4 x i8> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i8_0 = extractelement <8 x i8> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v16i8_0 = extractelement <16 x i8> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v32i8_0 = extractelement <32 x i8> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v64i8_0 = extractelement <64 x i8> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v128i8_0 = extractelement <128 x i8> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv2i8_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv4i8_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv8i8_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16i8_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32i8_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv64i8_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v2i8_0 = extractelement <2 x i8> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v4i8_0 = extractelement <4 x i8> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v8i8_0 = extractelement <8 x i8> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v16i8_0 = extractelement <16 x i8> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v32i8_0 = extractelement <32 x i8> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v64i8_0 = extractelement <64 x i8> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v128i8_0 = extractelement <128 x i8> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv2i8_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv4i8_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8i8_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv16i8_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv32i8_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv64i8_0 = extractelement undef, i32 0 ; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv128i8_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i16_0 = extractelement <2 x i16> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i16_0 = extractelement <4 x i16> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i16_0 = extractelement <8 x i16> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v16i16_0 = extractelement <16 x i16> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v32i16_0 = extractelement <32 x i16> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v64i16_0 = extractelement <64 x i16> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv2i16_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv4i16_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv8i16_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16i16_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32i16_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v2i16_0 = extractelement <2 x i16> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v4i16_0 = extractelement <4 x i16> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v8i16_0 = extractelement <8 x i16> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v16i16_0 = extractelement <16 x i16> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v32i16_0 = extractelement <32 x i16> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v64i16_0 = extractelement <64 x i16> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv2i16_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv4i16_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8i16_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv16i16_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv32i16_0 = extractelement undef, i32 0 ; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv64i16_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i32_0 = extractelement <2 x i32> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i32_0 = extractelement <4 x i32> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i32_0 = extractelement <8 x i32> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v16i32_0 = extractelement <16 x i32> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v32i32_0 = extractelement <32 x i32> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv2i32_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv4i32_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv8i32_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16i32_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v2i32_0 = extractelement <2 x i32> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v4i32_0 = extractelement <4 x i32> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v8i32_0 = extractelement <8 x i32> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v16i32_0 = extractelement <16 x i32> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v32i32_0 = extractelement <32 x i32> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv2i32_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv4i32_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8i32_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv16i32_0 = extractelement undef, i32 0 ; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32i32_0 = extractelement undef, i32 0 ; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i64_0 = extractelement <2 x i64> undef, i32 0 ; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i64_0 = extractelement <4 x i64> undef, i32 0 @@ -72,41 +72,41 @@ ; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i1_1 = extractelement undef, i32 1 ; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i1_1 = extractelement undef, i32 1 ; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i1_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i8_1 = extractelement <2 x i8> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i8_1 = extractelement <4 x i8> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i8_1 = extractelement <8 x i8> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i8_1 = extractelement <16 x i8> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32i8_1 = extractelement <32 x i8> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v64i8_1 = extractelement <64 x i8> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v128i8_1 = extractelement <128 x i8> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i8_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i8_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i8_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i8_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv32i8_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv64i8_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i8_1 = extractelement <2 x i8> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i8_1 = extractelement <4 x i8> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i8_1 = extractelement <8 x i8> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i8_1 = extractelement <16 x i8> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32i8_1 = extractelement <32 x i8> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v64i8_1 = extractelement <64 x i8> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v128i8_1 = extractelement <128 x i8> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i8_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i8_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i8_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i8_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i8_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv64i8_1 = extractelement undef, i32 1 ; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv128i8_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i16_1 = extractelement <2 x i16> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i16_1 = extractelement <4 x i16> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i16_1 = extractelement <8 x i16> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i16_1 = extractelement <16 x i16> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32i16_1 = extractelement <32 x i16> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v64i16_1 = extractelement <64 x i16> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i16_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i16_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i16_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i16_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv32i16_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i16_1 = extractelement <2 x i16> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i16_1 = extractelement <4 x i16> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i16_1 = extractelement <8 x i16> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i16_1 = extractelement <16 x i16> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32i16_1 = extractelement <32 x i16> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v64i16_1 = extractelement <64 x i16> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i16_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i16_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i16_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i16_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i16_1 = extractelement undef, i32 1 ; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv64i16_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i32_1 = extractelement <2 x i32> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i32_1 = extractelement <4 x i32> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i32_1 = extractelement <8 x i32> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i32_1 = extractelement <16 x i32> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32i32_1 = extractelement <32 x i32> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i32_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i32_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i32_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i32_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i32_1 = extractelement <2 x i32> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i32_1 = extractelement <4 x i32> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i32_1 = extractelement <8 x i32> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i32_1 = extractelement <16 x i32> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32i32_1 = extractelement <32 x i32> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i32_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i32_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i32_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i32_1 = extractelement undef, i32 1 ; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32i32_1 = extractelement undef, i32 1 ; RV32V-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %v2i64_1 = extractelement <2 x i64> undef, i32 1 ; RV32V-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %v4i64_1 = extractelement <4 x i64> undef, i32 1 @@ -126,41 +126,41 @@ ; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i1_x = extractelement undef, i32 %x ; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i1_x = extractelement undef, i32 %x ; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i1_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i8_x = extractelement <2 x i8> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i8_x = extractelement <4 x i8> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i8_x = extractelement <8 x i8> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i8_x = extractelement <16 x i8> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32i8_x = extractelement <32 x i8> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v64i8_x = extractelement <64 x i8> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v128i8_x = extractelement <128 x i8> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i8_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i8_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i8_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i8_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv32i8_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv64i8_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i8_x = extractelement <2 x i8> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i8_x = extractelement <4 x i8> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i8_x = extractelement <8 x i8> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i8_x = extractelement <16 x i8> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32i8_x = extractelement <32 x i8> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v64i8_x = extractelement <64 x i8> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v128i8_x = extractelement <128 x i8> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i8_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i8_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i8_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i8_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i8_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv64i8_x = extractelement undef, i32 %x ; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv128i8_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i16_x = extractelement <2 x i16> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i16_x = extractelement <4 x i16> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i16_x = extractelement <8 x i16> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i16_x = extractelement <16 x i16> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32i16_x = extractelement <32 x i16> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v64i16_x = extractelement <64 x i16> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i16_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i16_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i16_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i16_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv32i16_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i16_x = extractelement <2 x i16> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i16_x = extractelement <4 x i16> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i16_x = extractelement <8 x i16> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i16_x = extractelement <16 x i16> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32i16_x = extractelement <32 x i16> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v64i16_x = extractelement <64 x i16> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i16_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i16_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i16_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i16_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i16_x = extractelement undef, i32 %x ; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv64i16_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i32_x = extractelement <2 x i32> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i32_x = extractelement <4 x i32> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i32_x = extractelement <8 x i32> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i32_x = extractelement <16 x i32> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32i32_x = extractelement <32 x i32> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i32_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i32_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i32_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i32_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i32_x = extractelement <2 x i32> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i32_x = extractelement <4 x i32> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i32_x = extractelement <8 x i32> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i32_x = extractelement <16 x i32> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32i32_x = extractelement <32 x i32> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i32_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i32_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i32_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i32_x = extractelement undef, i32 %x ; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32i32_x = extractelement undef, i32 %x ; RV32V-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %v2i64_x = extractelement <2 x i64> undef, i32 %x ; RV32V-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %v4i64_x = extractelement <4 x i64> undef, i32 %x @@ -183,49 +183,49 @@ ; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8i1_0 = extractelement undef, i32 0 ; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv16i1_0 = extractelement undef, i32 0 ; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv32i1_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i8_0 = extractelement <2 x i8> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i8_0 = extractelement <4 x i8> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i8_0 = extractelement <8 x i8> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v16i8_0 = extractelement <16 x i8> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v32i8_0 = extractelement <32 x i8> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v64i8_0 = extractelement <64 x i8> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v128i8_0 = extractelement <128 x i8> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv2i8_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv4i8_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv8i8_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16i8_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32i8_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv64i8_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v2i8_0 = extractelement <2 x i8> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v4i8_0 = extractelement <4 x i8> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v8i8_0 = extractelement <8 x i8> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v16i8_0 = extractelement <16 x i8> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v32i8_0 = extractelement <32 x i8> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v64i8_0 = extractelement <64 x i8> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v128i8_0 = extractelement <128 x i8> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv2i8_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv4i8_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8i8_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv16i8_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv32i8_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv64i8_0 = extractelement undef, i32 0 ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv128i8_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i16_0 = extractelement <2 x i16> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i16_0 = extractelement <4 x i16> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i16_0 = extractelement <8 x i16> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v16i16_0 = extractelement <16 x i16> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v32i16_0 = extractelement <32 x i16> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v64i16_0 = extractelement <64 x i16> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv2i16_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv4i16_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv8i16_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16i16_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32i16_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v2i16_0 = extractelement <2 x i16> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v4i16_0 = extractelement <4 x i16> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v8i16_0 = extractelement <8 x i16> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v16i16_0 = extractelement <16 x i16> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v32i16_0 = extractelement <32 x i16> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v64i16_0 = extractelement <64 x i16> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv2i16_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv4i16_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8i16_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv16i16_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv32i16_0 = extractelement undef, i32 0 ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv64i16_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i32_0 = extractelement <2 x i32> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i32_0 = extractelement <4 x i32> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i32_0 = extractelement <8 x i32> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v16i32_0 = extractelement <16 x i32> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v32i32_0 = extractelement <32 x i32> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv2i32_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv4i32_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv8i32_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16i32_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v2i32_0 = extractelement <2 x i32> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v4i32_0 = extractelement <4 x i32> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v8i32_0 = extractelement <8 x i32> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v16i32_0 = extractelement <16 x i32> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v32i32_0 = extractelement <32 x i32> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv2i32_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv4i32_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8i32_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv16i32_0 = extractelement undef, i32 0 ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32i32_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i64_0 = extractelement <2 x i64> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i64_0 = extractelement <4 x i64> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i64_0 = extractelement <8 x i64> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v16i64_0 = extractelement <16 x i64> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv2i64_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv4i64_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv8i64_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v2i64_0 = extractelement <2 x i64> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v4i64_0 = extractelement <4 x i64> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v8i64_0 = extractelement <8 x i64> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v16i64_0 = extractelement <16 x i64> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv2i64_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv4i64_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8i64_0 = extractelement undef, i32 0 ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16i64_0 = extractelement undef, i32 0 ; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i1_1 = extractelement <2 x i1> undef, i32 1 ; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i1_1 = extractelement <4 x i1> undef, i32 1 @@ -237,49 +237,49 @@ ; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i1_1 = extractelement undef, i32 1 ; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i1_1 = extractelement undef, i32 1 ; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i1_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i8_1 = extractelement <2 x i8> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i8_1 = extractelement <4 x i8> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i8_1 = extractelement <8 x i8> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i8_1 = extractelement <16 x i8> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32i8_1 = extractelement <32 x i8> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v64i8_1 = extractelement <64 x i8> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v128i8_1 = extractelement <128 x i8> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i8_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i8_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i8_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i8_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv32i8_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv64i8_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i8_1 = extractelement <2 x i8> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i8_1 = extractelement <4 x i8> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i8_1 = extractelement <8 x i8> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i8_1 = extractelement <16 x i8> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32i8_1 = extractelement <32 x i8> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v64i8_1 = extractelement <64 x i8> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v128i8_1 = extractelement <128 x i8> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i8_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i8_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i8_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i8_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i8_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv64i8_1 = extractelement undef, i32 1 ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv128i8_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i16_1 = extractelement <2 x i16> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i16_1 = extractelement <4 x i16> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i16_1 = extractelement <8 x i16> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i16_1 = extractelement <16 x i16> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32i16_1 = extractelement <32 x i16> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v64i16_1 = extractelement <64 x i16> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i16_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i16_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i16_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i16_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv32i16_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i16_1 = extractelement <2 x i16> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i16_1 = extractelement <4 x i16> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i16_1 = extractelement <8 x i16> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i16_1 = extractelement <16 x i16> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32i16_1 = extractelement <32 x i16> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v64i16_1 = extractelement <64 x i16> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i16_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i16_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i16_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i16_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i16_1 = extractelement undef, i32 1 ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv64i16_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i32_1 = extractelement <2 x i32> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i32_1 = extractelement <4 x i32> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i32_1 = extractelement <8 x i32> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i32_1 = extractelement <16 x i32> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32i32_1 = extractelement <32 x i32> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i32_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i32_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i32_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i32_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i32_1 = extractelement <2 x i32> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i32_1 = extractelement <4 x i32> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i32_1 = extractelement <8 x i32> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i32_1 = extractelement <16 x i32> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32i32_1 = extractelement <32 x i32> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i32_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i32_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i32_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i32_1 = extractelement undef, i32 1 ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32i32_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i64_1 = extractelement <2 x i64> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i64_1 = extractelement <4 x i64> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i64_1 = extractelement <8 x i64> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i64_1 = extractelement <16 x i64> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i64_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i64_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i64_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i64_1 = extractelement <2 x i64> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i64_1 = extractelement <4 x i64> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i64_1 = extractelement <8 x i64> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i64_1 = extractelement <16 x i64> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i64_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i64_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i64_1 = extractelement undef, i32 1 ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16i64_1 = extractelement undef, i32 1 ; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i1_x = extractelement <2 x i1> undef, i32 %x ; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i1_x = extractelement <4 x i1> undef, i32 %x @@ -291,49 +291,49 @@ ; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i1_x = extractelement undef, i32 %x ; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i1_x = extractelement undef, i32 %x ; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i1_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i8_x = extractelement <2 x i8> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i8_x = extractelement <4 x i8> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i8_x = extractelement <8 x i8> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i8_x = extractelement <16 x i8> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32i8_x = extractelement <32 x i8> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v64i8_x = extractelement <64 x i8> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v128i8_x = extractelement <128 x i8> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i8_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i8_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i8_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i8_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv32i8_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv64i8_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i8_x = extractelement <2 x i8> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i8_x = extractelement <4 x i8> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i8_x = extractelement <8 x i8> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i8_x = extractelement <16 x i8> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32i8_x = extractelement <32 x i8> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v64i8_x = extractelement <64 x i8> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v128i8_x = extractelement <128 x i8> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i8_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i8_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i8_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i8_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i8_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv64i8_x = extractelement undef, i32 %x ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv128i8_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i16_x = extractelement <2 x i16> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i16_x = extractelement <4 x i16> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i16_x = extractelement <8 x i16> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i16_x = extractelement <16 x i16> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32i16_x = extractelement <32 x i16> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v64i16_x = extractelement <64 x i16> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i16_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i16_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i16_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i16_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv32i16_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i16_x = extractelement <2 x i16> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i16_x = extractelement <4 x i16> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i16_x = extractelement <8 x i16> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i16_x = extractelement <16 x i16> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32i16_x = extractelement <32 x i16> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v64i16_x = extractelement <64 x i16> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i16_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i16_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i16_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i16_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i16_x = extractelement undef, i32 %x ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv64i16_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i32_x = extractelement <2 x i32> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i32_x = extractelement <4 x i32> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i32_x = extractelement <8 x i32> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i32_x = extractelement <16 x i32> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32i32_x = extractelement <32 x i32> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i32_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i32_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i32_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i32_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i32_x = extractelement <2 x i32> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i32_x = extractelement <4 x i32> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i32_x = extractelement <8 x i32> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i32_x = extractelement <16 x i32> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32i32_x = extractelement <32 x i32> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i32_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i32_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i32_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i32_x = extractelement undef, i32 %x ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32i32_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i64_x = extractelement <2 x i64> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i64_x = extractelement <4 x i64> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i64_x = extractelement <8 x i64> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i64_x = extractelement <16 x i64> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i64_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i64_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i64_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i64_x = extractelement <2 x i64> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i64_x = extractelement <4 x i64> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i64_x = extractelement <8 x i64> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i64_x = extractelement <16 x i64> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i64_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i64_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i64_x = extractelement undef, i32 %x ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16i64_x = extractelement undef, i32 %x ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void ; @@ -348,41 +348,41 @@ ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8i1_0 = extractelement undef, i32 0 ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv16i1_0 = extractelement undef, i32 0 ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv32i1_0 = extractelement undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i8_0 = extractelement <2 x i8> undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i8_0 = extractelement <4 x i8> undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i8_0 = extractelement <8 x i8> undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v16i8_0 = extractelement <16 x i8> undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v32i8_0 = extractelement <32 x i8> undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v64i8_0 = extractelement <64 x i8> undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v2i8_0 = extractelement <2 x i8> undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v4i8_0 = extractelement <4 x i8> undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v8i8_0 = extractelement <8 x i8> undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v16i8_0 = extractelement <16 x i8> undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v32i8_0 = extractelement <32 x i8> undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v64i8_0 = extractelement <64 x i8> undef, i32 0 ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v128i8_0 = extractelement <128 x i8> undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv2i8_0 = extractelement undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv4i8_0 = extractelement undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv8i8_0 = extractelement undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16i8_0 = extractelement undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32i8_0 = extractelement undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv64i8_0 = extractelement undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv2i8_0 = extractelement undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv4i8_0 = extractelement undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8i8_0 = extractelement undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv16i8_0 = extractelement undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv32i8_0 = extractelement undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv64i8_0 = extractelement undef, i32 0 ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv128i8_0 = extractelement undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i16_0 = extractelement <2 x i16> undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i16_0 = extractelement <4 x i16> undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i16_0 = extractelement <8 x i16> undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v16i16_0 = extractelement <16 x i16> undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v32i16_0 = extractelement <32 x i16> undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v2i16_0 = extractelement <2 x i16> undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v4i16_0 = extractelement <4 x i16> undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v8i16_0 = extractelement <8 x i16> undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v16i16_0 = extractelement <16 x i16> undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v32i16_0 = extractelement <32 x i16> undef, i32 0 ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v64i16_0 = extractelement <64 x i16> undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv2i16_0 = extractelement undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv4i16_0 = extractelement undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv8i16_0 = extractelement undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16i16_0 = extractelement undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32i16_0 = extractelement undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv2i16_0 = extractelement undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv4i16_0 = extractelement undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8i16_0 = extractelement undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv16i16_0 = extractelement undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv32i16_0 = extractelement undef, i32 0 ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv64i16_0 = extractelement undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i32_0 = extractelement <2 x i32> undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i32_0 = extractelement <4 x i32> undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i32_0 = extractelement <8 x i32> undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v16i32_0 = extractelement <16 x i32> undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v2i32_0 = extractelement <2 x i32> undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v4i32_0 = extractelement <4 x i32> undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v8i32_0 = extractelement <8 x i32> undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v16i32_0 = extractelement <16 x i32> undef, i32 0 ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v32i32_0 = extractelement <32 x i32> undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv2i32_0 = extractelement undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv4i32_0 = extractelement undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv8i32_0 = extractelement undef, i32 0 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16i32_0 = extractelement undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv2i32_0 = extractelement undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv4i32_0 = extractelement undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8i32_0 = extractelement undef, i32 0 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv16i32_0 = extractelement undef, i32 0 ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32i32_0 = extractelement undef, i32 0 ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i64_0 = extractelement <2 x i64> undef, i32 0 ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i64_0 = extractelement <4 x i64> undef, i32 0 @@ -402,41 +402,41 @@ ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i1_1 = extractelement undef, i32 1 ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i1_1 = extractelement undef, i32 1 ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i1_1 = extractelement undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i8_1 = extractelement <2 x i8> undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i8_1 = extractelement <4 x i8> undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i8_1 = extractelement <8 x i8> undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i8_1 = extractelement <16 x i8> undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32i8_1 = extractelement <32 x i8> undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v64i8_1 = extractelement <64 x i8> undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i8_1 = extractelement <2 x i8> undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i8_1 = extractelement <4 x i8> undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i8_1 = extractelement <8 x i8> undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i8_1 = extractelement <16 x i8> undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32i8_1 = extractelement <32 x i8> undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v64i8_1 = extractelement <64 x i8> undef, i32 1 ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v128i8_1 = extractelement <128 x i8> undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i8_1 = extractelement undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i8_1 = extractelement undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i8_1 = extractelement undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i8_1 = extractelement undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv32i8_1 = extractelement undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv64i8_1 = extractelement undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i8_1 = extractelement undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i8_1 = extractelement undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i8_1 = extractelement undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i8_1 = extractelement undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i8_1 = extractelement undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv64i8_1 = extractelement undef, i32 1 ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv128i8_1 = extractelement undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i16_1 = extractelement <2 x i16> undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i16_1 = extractelement <4 x i16> undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i16_1 = extractelement <8 x i16> undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i16_1 = extractelement <16 x i16> undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32i16_1 = extractelement <32 x i16> undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i16_1 = extractelement <2 x i16> undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i16_1 = extractelement <4 x i16> undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i16_1 = extractelement <8 x i16> undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i16_1 = extractelement <16 x i16> undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32i16_1 = extractelement <32 x i16> undef, i32 1 ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v64i16_1 = extractelement <64 x i16> undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i16_1 = extractelement undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i16_1 = extractelement undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i16_1 = extractelement undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i16_1 = extractelement undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv32i16_1 = extractelement undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i16_1 = extractelement undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i16_1 = extractelement undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i16_1 = extractelement undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i16_1 = extractelement undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i16_1 = extractelement undef, i32 1 ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv64i16_1 = extractelement undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i32_1 = extractelement <2 x i32> undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i32_1 = extractelement <4 x i32> undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i32_1 = extractelement <8 x i32> undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i32_1 = extractelement <16 x i32> undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i32_1 = extractelement <2 x i32> undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i32_1 = extractelement <4 x i32> undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i32_1 = extractelement <8 x i32> undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i32_1 = extractelement <16 x i32> undef, i32 1 ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v32i32_1 = extractelement <32 x i32> undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i32_1 = extractelement undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i32_1 = extractelement undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i32_1 = extractelement undef, i32 1 -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i32_1 = extractelement undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i32_1 = extractelement undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i32_1 = extractelement undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i32_1 = extractelement undef, i32 1 +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i32_1 = extractelement undef, i32 1 ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32i32_1 = extractelement undef, i32 1 ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %v2i64_1 = extractelement <2 x i64> undef, i32 1 ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %v4i64_1 = extractelement <4 x i64> undef, i32 1 @@ -456,41 +456,41 @@ ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i1_x = extractelement undef, i32 %x ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i1_x = extractelement undef, i32 %x ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i1_x = extractelement undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i8_x = extractelement <2 x i8> undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i8_x = extractelement <4 x i8> undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i8_x = extractelement <8 x i8> undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i8_x = extractelement <16 x i8> undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32i8_x = extractelement <32 x i8> undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v64i8_x = extractelement <64 x i8> undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i8_x = extractelement <2 x i8> undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i8_x = extractelement <4 x i8> undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i8_x = extractelement <8 x i8> undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i8_x = extractelement <16 x i8> undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32i8_x = extractelement <32 x i8> undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v64i8_x = extractelement <64 x i8> undef, i32 %x ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v128i8_x = extractelement <128 x i8> undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i8_x = extractelement undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i8_x = extractelement undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i8_x = extractelement undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i8_x = extractelement undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv32i8_x = extractelement undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv64i8_x = extractelement undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i8_x = extractelement undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i8_x = extractelement undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i8_x = extractelement undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i8_x = extractelement undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i8_x = extractelement undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv64i8_x = extractelement undef, i32 %x ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv128i8_x = extractelement undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i16_x = extractelement <2 x i16> undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i16_x = extractelement <4 x i16> undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i16_x = extractelement <8 x i16> undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i16_x = extractelement <16 x i16> undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32i16_x = extractelement <32 x i16> undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i16_x = extractelement <2 x i16> undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i16_x = extractelement <4 x i16> undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i16_x = extractelement <8 x i16> undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i16_x = extractelement <16 x i16> undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32i16_x = extractelement <32 x i16> undef, i32 %x ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v64i16_x = extractelement <64 x i16> undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i16_x = extractelement undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i16_x = extractelement undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i16_x = extractelement undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i16_x = extractelement undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv32i16_x = extractelement undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i16_x = extractelement undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i16_x = extractelement undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i16_x = extractelement undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i16_x = extractelement undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i16_x = extractelement undef, i32 %x ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv64i16_x = extractelement undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i32_x = extractelement <2 x i32> undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i32_x = extractelement <4 x i32> undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i32_x = extractelement <8 x i32> undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i32_x = extractelement <16 x i32> undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i32_x = extractelement <2 x i32> undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i32_x = extractelement <4 x i32> undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i32_x = extractelement <8 x i32> undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i32_x = extractelement <16 x i32> undef, i32 %x ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v32i32_x = extractelement <32 x i32> undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i32_x = extractelement undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i32_x = extractelement undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i32_x = extractelement undef, i32 %x -; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i32_x = extractelement undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i32_x = extractelement undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i32_x = extractelement undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i32_x = extractelement undef, i32 %x +; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i32_x = extractelement undef, i32 %x ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32i32_x = extractelement undef, i32 %x ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %v2i64_x = extractelement <2 x i64> undef, i32 %x ; RV32ZVE64X-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %v4i64_x = extractelement <4 x i64> undef, i32 %x @@ -513,49 +513,49 @@ ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8i1_0 = extractelement undef, i32 0 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv16i1_0 = extractelement undef, i32 0 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv32i1_0 = extractelement undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i8_0 = extractelement <2 x i8> undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i8_0 = extractelement <4 x i8> undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i8_0 = extractelement <8 x i8> undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v16i8_0 = extractelement <16 x i8> undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v32i8_0 = extractelement <32 x i8> undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v64i8_0 = extractelement <64 x i8> undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v2i8_0 = extractelement <2 x i8> undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v4i8_0 = extractelement <4 x i8> undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v8i8_0 = extractelement <8 x i8> undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v16i8_0 = extractelement <16 x i8> undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v32i8_0 = extractelement <32 x i8> undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v64i8_0 = extractelement <64 x i8> undef, i32 0 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v128i8_0 = extractelement <128 x i8> undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv2i8_0 = extractelement undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv4i8_0 = extractelement undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv8i8_0 = extractelement undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16i8_0 = extractelement undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32i8_0 = extractelement undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv64i8_0 = extractelement undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv2i8_0 = extractelement undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv4i8_0 = extractelement undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8i8_0 = extractelement undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv16i8_0 = extractelement undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv32i8_0 = extractelement undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv64i8_0 = extractelement undef, i32 0 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv128i8_0 = extractelement undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i16_0 = extractelement <2 x i16> undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i16_0 = extractelement <4 x i16> undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i16_0 = extractelement <8 x i16> undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v16i16_0 = extractelement <16 x i16> undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v32i16_0 = extractelement <32 x i16> undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v2i16_0 = extractelement <2 x i16> undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v4i16_0 = extractelement <4 x i16> undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v8i16_0 = extractelement <8 x i16> undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v16i16_0 = extractelement <16 x i16> undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v32i16_0 = extractelement <32 x i16> undef, i32 0 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v64i16_0 = extractelement <64 x i16> undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv2i16_0 = extractelement undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv4i16_0 = extractelement undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv8i16_0 = extractelement undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16i16_0 = extractelement undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32i16_0 = extractelement undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv2i16_0 = extractelement undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv4i16_0 = extractelement undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8i16_0 = extractelement undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv16i16_0 = extractelement undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv32i16_0 = extractelement undef, i32 0 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv64i16_0 = extractelement undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i32_0 = extractelement <2 x i32> undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i32_0 = extractelement <4 x i32> undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i32_0 = extractelement <8 x i32> undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v16i32_0 = extractelement <16 x i32> undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v2i32_0 = extractelement <2 x i32> undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v4i32_0 = extractelement <4 x i32> undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v8i32_0 = extractelement <8 x i32> undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v16i32_0 = extractelement <16 x i32> undef, i32 0 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v32i32_0 = extractelement <32 x i32> undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv2i32_0 = extractelement undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv4i32_0 = extractelement undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv8i32_0 = extractelement undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16i32_0 = extractelement undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv2i32_0 = extractelement undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv4i32_0 = extractelement undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8i32_0 = extractelement undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv16i32_0 = extractelement undef, i32 0 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32i32_0 = extractelement undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i64_0 = extractelement <2 x i64> undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i64_0 = extractelement <4 x i64> undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i64_0 = extractelement <8 x i64> undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v2i64_0 = extractelement <2 x i64> undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v4i64_0 = extractelement <4 x i64> undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v8i64_0 = extractelement <8 x i64> undef, i32 0 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v16i64_0 = extractelement <16 x i64> undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv2i64_0 = extractelement undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv4i64_0 = extractelement undef, i32 0 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv8i64_0 = extractelement undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv2i64_0 = extractelement undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv4i64_0 = extractelement undef, i32 0 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8i64_0 = extractelement undef, i32 0 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16i64_0 = extractelement undef, i32 0 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i1_1 = extractelement <2 x i1> undef, i32 1 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i1_1 = extractelement <4 x i1> undef, i32 1 @@ -567,49 +567,49 @@ ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i1_1 = extractelement undef, i32 1 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i1_1 = extractelement undef, i32 1 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i1_1 = extractelement undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i8_1 = extractelement <2 x i8> undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i8_1 = extractelement <4 x i8> undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i8_1 = extractelement <8 x i8> undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i8_1 = extractelement <16 x i8> undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32i8_1 = extractelement <32 x i8> undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v64i8_1 = extractelement <64 x i8> undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i8_1 = extractelement <2 x i8> undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i8_1 = extractelement <4 x i8> undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i8_1 = extractelement <8 x i8> undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i8_1 = extractelement <16 x i8> undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32i8_1 = extractelement <32 x i8> undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v64i8_1 = extractelement <64 x i8> undef, i32 1 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v128i8_1 = extractelement <128 x i8> undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i8_1 = extractelement undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i8_1 = extractelement undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i8_1 = extractelement undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i8_1 = extractelement undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv32i8_1 = extractelement undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv64i8_1 = extractelement undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i8_1 = extractelement undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i8_1 = extractelement undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i8_1 = extractelement undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i8_1 = extractelement undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i8_1 = extractelement undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv64i8_1 = extractelement undef, i32 1 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv128i8_1 = extractelement undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i16_1 = extractelement <2 x i16> undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i16_1 = extractelement <4 x i16> undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i16_1 = extractelement <8 x i16> undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i16_1 = extractelement <16 x i16> undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32i16_1 = extractelement <32 x i16> undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i16_1 = extractelement <2 x i16> undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i16_1 = extractelement <4 x i16> undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i16_1 = extractelement <8 x i16> undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i16_1 = extractelement <16 x i16> undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32i16_1 = extractelement <32 x i16> undef, i32 1 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v64i16_1 = extractelement <64 x i16> undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i16_1 = extractelement undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i16_1 = extractelement undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i16_1 = extractelement undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i16_1 = extractelement undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv32i16_1 = extractelement undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i16_1 = extractelement undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i16_1 = extractelement undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i16_1 = extractelement undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i16_1 = extractelement undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i16_1 = extractelement undef, i32 1 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv64i16_1 = extractelement undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i32_1 = extractelement <2 x i32> undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i32_1 = extractelement <4 x i32> undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i32_1 = extractelement <8 x i32> undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i32_1 = extractelement <16 x i32> undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i32_1 = extractelement <2 x i32> undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i32_1 = extractelement <4 x i32> undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i32_1 = extractelement <8 x i32> undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i32_1 = extractelement <16 x i32> undef, i32 1 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v32i32_1 = extractelement <32 x i32> undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i32_1 = extractelement undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i32_1 = extractelement undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i32_1 = extractelement undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i32_1 = extractelement undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i32_1 = extractelement undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i32_1 = extractelement undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i32_1 = extractelement undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i32_1 = extractelement undef, i32 1 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32i32_1 = extractelement undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i64_1 = extractelement <2 x i64> undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i64_1 = extractelement <4 x i64> undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i64_1 = extractelement <8 x i64> undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i64_1 = extractelement <2 x i64> undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i64_1 = extractelement <4 x i64> undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i64_1 = extractelement <8 x i64> undef, i32 1 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v16i64_1 = extractelement <16 x i64> undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i64_1 = extractelement undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i64_1 = extractelement undef, i32 1 -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i64_1 = extractelement undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i64_1 = extractelement undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i64_1 = extractelement undef, i32 1 +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i64_1 = extractelement undef, i32 1 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16i64_1 = extractelement undef, i32 1 ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i1_x = extractelement <2 x i1> undef, i32 %x ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i1_x = extractelement <4 x i1> undef, i32 %x @@ -621,49 +621,49 @@ ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i1_x = extractelement undef, i32 %x ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i1_x = extractelement undef, i32 %x ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i1_x = extractelement undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i8_x = extractelement <2 x i8> undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i8_x = extractelement <4 x i8> undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i8_x = extractelement <8 x i8> undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i8_x = extractelement <16 x i8> undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32i8_x = extractelement <32 x i8> undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v64i8_x = extractelement <64 x i8> undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i8_x = extractelement <2 x i8> undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i8_x = extractelement <4 x i8> undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i8_x = extractelement <8 x i8> undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i8_x = extractelement <16 x i8> undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32i8_x = extractelement <32 x i8> undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v64i8_x = extractelement <64 x i8> undef, i32 %x ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v128i8_x = extractelement <128 x i8> undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i8_x = extractelement undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i8_x = extractelement undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i8_x = extractelement undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i8_x = extractelement undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv32i8_x = extractelement undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv64i8_x = extractelement undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i8_x = extractelement undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i8_x = extractelement undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i8_x = extractelement undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i8_x = extractelement undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i8_x = extractelement undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv64i8_x = extractelement undef, i32 %x ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv128i8_x = extractelement undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i16_x = extractelement <2 x i16> undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i16_x = extractelement <4 x i16> undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i16_x = extractelement <8 x i16> undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i16_x = extractelement <16 x i16> undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32i16_x = extractelement <32 x i16> undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i16_x = extractelement <2 x i16> undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i16_x = extractelement <4 x i16> undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i16_x = extractelement <8 x i16> undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i16_x = extractelement <16 x i16> undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32i16_x = extractelement <32 x i16> undef, i32 %x ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v64i16_x = extractelement <64 x i16> undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i16_x = extractelement undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i16_x = extractelement undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i16_x = extractelement undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i16_x = extractelement undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv32i16_x = extractelement undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i16_x = extractelement undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i16_x = extractelement undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i16_x = extractelement undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i16_x = extractelement undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32i16_x = extractelement undef, i32 %x ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv64i16_x = extractelement undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i32_x = extractelement <2 x i32> undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i32_x = extractelement <4 x i32> undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i32_x = extractelement <8 x i32> undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16i32_x = extractelement <16 x i32> undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i32_x = extractelement <2 x i32> undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i32_x = extractelement <4 x i32> undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i32_x = extractelement <8 x i32> undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16i32_x = extractelement <16 x i32> undef, i32 %x ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v32i32_x = extractelement <32 x i32> undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i32_x = extractelement undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i32_x = extractelement undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i32_x = extractelement undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16i32_x = extractelement undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i32_x = extractelement undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i32_x = extractelement undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i32_x = extractelement undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16i32_x = extractelement undef, i32 %x ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32i32_x = extractelement undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i64_x = extractelement <2 x i64> undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i64_x = extractelement <4 x i64> undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i64_x = extractelement <8 x i64> undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i64_x = extractelement <2 x i64> undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i64_x = extractelement <4 x i64> undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8i64_x = extractelement <8 x i64> undef, i32 %x ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v16i64_x = extractelement <16 x i64> undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2i64_x = extractelement undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4i64_x = extractelement undef, i32 %x -; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8i64_x = extractelement undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2i64_x = extractelement undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4i64_x = extractelement undef, i32 %x +; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8i64_x = extractelement undef, i32 %x ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16i64_x = extractelement undef, i32 %x ; RV64ZVE64X-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void ; @@ -864,188 +864,188 @@ define void @extractelement_fp(i32 %x) { ; RV32V-LABEL: 'extractelement_fp' -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16_0 = extractelement <2 x half> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4f16_0 = extractelement <4 x half> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8f16_0 = extractelement <8 x half> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v16f16_0 = extractelement <16 x half> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v32f16_0 = extractelement <32 x half> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v64f16_0 = extractelement <64 x half> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv2f16_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv4f16_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv8f16_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16f16_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32f16_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v2f16_0 = extractelement <2 x half> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v4f16_0 = extractelement <4 x half> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v8f16_0 = extractelement <8 x half> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v16f16_0 = extractelement <16 x half> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v32f16_0 = extractelement <32 x half> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v64f16_0 = extractelement <64 x half> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv2f16_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv4f16_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8f16_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv16f16_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv32f16_0 = extractelement undef, i32 0 ; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv64f16_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f32_0 = extractelement <2 x float> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4f32_0 = extractelement <4 x float> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8f32_0 = extractelement <8 x float> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v16f32_0 = extractelement <16 x float> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v32f32_0 = extractelement <32 x float> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv2f32_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv4f32_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv8f32_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16f32_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v2f32_0 = extractelement <2 x float> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v4f32_0 = extractelement <4 x float> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v8f32_0 = extractelement <8 x float> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v16f32_0 = extractelement <16 x float> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v32f32_0 = extractelement <32 x float> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv2f32_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv4f32_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8f32_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv16f32_0 = extractelement undef, i32 0 ; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32f32_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f64_0 = extractelement <2 x double> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4f64_0 = extractelement <4 x double> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8f64_0 = extractelement <8 x double> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v16f64_0 = extractelement <16 x double> undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv2f64_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv4f64_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv8f64_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v2f64_0 = extractelement <2 x double> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v4f64_0 = extractelement <4 x double> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v8f64_0 = extractelement <8 x double> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v16f64_0 = extractelement <16 x double> undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv2f64_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv4f64_0 = extractelement undef, i32 0 +; RV32V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8f64_0 = extractelement undef, i32 0 ; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16f64_0 = extractelement undef, i32 0 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f16_1 = extractelement <2 x half> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4f16_1 = extractelement <4 x half> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8f16_1 = extractelement <8 x half> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16f16_1 = extractelement <16 x half> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32f16_1 = extractelement <32 x half> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v64f16_1 = extractelement <64 x half> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2f16_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4f16_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8f16_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16f16_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv32f16_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f16_1 = extractelement <2 x half> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4f16_1 = extractelement <4 x half> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8f16_1 = extractelement <8 x half> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16f16_1 = extractelement <16 x half> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32f16_1 = extractelement <32 x half> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v64f16_1 = extractelement <64 x half> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2f16_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4f16_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8f16_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16f16_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32f16_1 = extractelement undef, i32 1 ; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv64f16_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32_1 = extractelement <2 x float> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4f32_1 = extractelement <4 x float> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8f32_1 = extractelement <8 x float> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16f32_1 = extractelement <16 x float> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32f32_1 = extractelement <32 x float> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2f32_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4f32_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8f32_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16f32_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f32_1 = extractelement <2 x float> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4f32_1 = extractelement <4 x float> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8f32_1 = extractelement <8 x float> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16f32_1 = extractelement <16 x float> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32f32_1 = extractelement <32 x float> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2f32_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4f32_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8f32_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16f32_1 = extractelement undef, i32 1 ; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32f32_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f64_1 = extractelement <2 x double> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4f64_1 = extractelement <4 x double> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8f64_1 = extractelement <8 x double> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16f64_1 = extractelement <16 x double> undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2f64_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4f64_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8f64_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f64_1 = extractelement <2 x double> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4f64_1 = extractelement <4 x double> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8f64_1 = extractelement <8 x double> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16f64_1 = extractelement <16 x double> undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2f64_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4f64_1 = extractelement undef, i32 1 +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8f64_1 = extractelement undef, i32 1 ; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16f64_1 = extractelement undef, i32 1 -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f16_x = extractelement <2 x half> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4f16_x = extractelement <4 x half> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8f16_x = extractelement <8 x half> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16f16_x = extractelement <16 x half> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32f16_x = extractelement <32 x half> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v64f16_x = extractelement <64 x half> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2f16_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4f16_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8f16_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16f16_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv32f16_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f16_x = extractelement <2 x half> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4f16_x = extractelement <4 x half> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8f16_x = extractelement <8 x half> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16f16_x = extractelement <16 x half> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32f16_x = extractelement <32 x half> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v64f16_x = extractelement <64 x half> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2f16_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4f16_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8f16_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16f16_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32f16_x = extractelement undef, i32 %x ; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv64f16_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32_x = extractelement <2 x float> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4f32_x = extractelement <4 x float> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8f32_x = extractelement <8 x float> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16f32_x = extractelement <16 x float> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32f32_x = extractelement <32 x float> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2f32_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4f32_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8f32_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16f32_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f32_x = extractelement <2 x float> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4f32_x = extractelement <4 x float> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8f32_x = extractelement <8 x float> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16f32_x = extractelement <16 x float> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32f32_x = extractelement <32 x float> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2f32_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4f32_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8f32_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16f32_x = extractelement undef, i32 %x ; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32f32_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f64_x = extractelement <2 x double> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4f64_x = extractelement <4 x double> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8f64_x = extractelement <8 x double> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16f64_x = extractelement <16 x double> undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2f64_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4f64_x = extractelement undef, i32 %x -; RV32V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8f64_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f64_x = extractelement <2 x double> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4f64_x = extractelement <4 x double> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8f64_x = extractelement <8 x double> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16f64_x = extractelement <16 x double> undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2f64_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4f64_x = extractelement undef, i32 %x +; RV32V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8f64_x = extractelement undef, i32 %x ; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16f64_x = extractelement undef, i32 %x ; RV32V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void ; ; RV64V-LABEL: 'extractelement_fp' -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16_0 = extractelement <2 x half> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4f16_0 = extractelement <4 x half> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8f16_0 = extractelement <8 x half> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v16f16_0 = extractelement <16 x half> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v32f16_0 = extractelement <32 x half> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v64f16_0 = extractelement <64 x half> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv2f16_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv4f16_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv8f16_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16f16_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32f16_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v2f16_0 = extractelement <2 x half> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v4f16_0 = extractelement <4 x half> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v8f16_0 = extractelement <8 x half> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v16f16_0 = extractelement <16 x half> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v32f16_0 = extractelement <32 x half> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v64f16_0 = extractelement <64 x half> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv2f16_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv4f16_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8f16_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv16f16_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv32f16_0 = extractelement undef, i32 0 ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv64f16_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f32_0 = extractelement <2 x float> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4f32_0 = extractelement <4 x float> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8f32_0 = extractelement <8 x float> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v16f32_0 = extractelement <16 x float> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v32f32_0 = extractelement <32 x float> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv2f32_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv4f32_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv8f32_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16f32_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v2f32_0 = extractelement <2 x float> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v4f32_0 = extractelement <4 x float> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v8f32_0 = extractelement <8 x float> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v16f32_0 = extractelement <16 x float> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v32f32_0 = extractelement <32 x float> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv2f32_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv4f32_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8f32_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv16f32_0 = extractelement undef, i32 0 ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32f32_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f64_0 = extractelement <2 x double> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4f64_0 = extractelement <4 x double> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8f64_0 = extractelement <8 x double> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v16f64_0 = extractelement <16 x double> undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv2f64_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv4f64_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv8f64_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v2f64_0 = extractelement <2 x double> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v4f64_0 = extractelement <4 x double> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v8f64_0 = extractelement <8 x double> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v16f64_0 = extractelement <16 x double> undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv2f64_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv4f64_0 = extractelement undef, i32 0 +; RV64V-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nxv8f64_0 = extractelement undef, i32 0 ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16f64_0 = extractelement undef, i32 0 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f16_1 = extractelement <2 x half> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4f16_1 = extractelement <4 x half> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8f16_1 = extractelement <8 x half> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16f16_1 = extractelement <16 x half> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32f16_1 = extractelement <32 x half> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v64f16_1 = extractelement <64 x half> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2f16_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4f16_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8f16_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16f16_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv32f16_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f16_1 = extractelement <2 x half> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4f16_1 = extractelement <4 x half> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8f16_1 = extractelement <8 x half> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16f16_1 = extractelement <16 x half> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32f16_1 = extractelement <32 x half> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v64f16_1 = extractelement <64 x half> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2f16_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4f16_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8f16_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16f16_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32f16_1 = extractelement undef, i32 1 ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv64f16_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32_1 = extractelement <2 x float> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4f32_1 = extractelement <4 x float> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8f32_1 = extractelement <8 x float> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16f32_1 = extractelement <16 x float> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32f32_1 = extractelement <32 x float> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2f32_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4f32_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8f32_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16f32_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f32_1 = extractelement <2 x float> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4f32_1 = extractelement <4 x float> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8f32_1 = extractelement <8 x float> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16f32_1 = extractelement <16 x float> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32f32_1 = extractelement <32 x float> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2f32_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4f32_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8f32_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16f32_1 = extractelement undef, i32 1 ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32f32_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f64_1 = extractelement <2 x double> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4f64_1 = extractelement <4 x double> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8f64_1 = extractelement <8 x double> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16f64_1 = extractelement <16 x double> undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2f64_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4f64_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8f64_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f64_1 = extractelement <2 x double> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4f64_1 = extractelement <4 x double> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8f64_1 = extractelement <8 x double> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16f64_1 = extractelement <16 x double> undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2f64_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4f64_1 = extractelement undef, i32 1 +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8f64_1 = extractelement undef, i32 1 ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16f64_1 = extractelement undef, i32 1 -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f16_x = extractelement <2 x half> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4f16_x = extractelement <4 x half> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8f16_x = extractelement <8 x half> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16f16_x = extractelement <16 x half> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32f16_x = extractelement <32 x half> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v64f16_x = extractelement <64 x half> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2f16_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4f16_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8f16_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16f16_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv32f16_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f16_x = extractelement <2 x half> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4f16_x = extractelement <4 x half> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8f16_x = extractelement <8 x half> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16f16_x = extractelement <16 x half> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32f16_x = extractelement <32 x half> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v64f16_x = extractelement <64 x half> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2f16_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4f16_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8f16_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16f16_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv32f16_x = extractelement undef, i32 %x ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv64f16_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32_x = extractelement <2 x float> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4f32_x = extractelement <4 x float> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8f32_x = extractelement <8 x float> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16f32_x = extractelement <16 x float> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v32f32_x = extractelement <32 x float> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2f32_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4f32_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8f32_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv16f32_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f32_x = extractelement <2 x float> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4f32_x = extractelement <4 x float> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8f32_x = extractelement <8 x float> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16f32_x = extractelement <16 x float> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v32f32_x = extractelement <32 x float> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2f32_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4f32_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8f32_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv16f32_x = extractelement undef, i32 %x ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv32f32_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f64_x = extractelement <2 x double> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4f64_x = extractelement <4 x double> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8f64_x = extractelement <8 x double> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v16f64_x = extractelement <16 x double> undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv2f64_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv4f64_x = extractelement undef, i32 %x -; RV64V-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nxv8f64_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f64_x = extractelement <2 x double> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4f64_x = extractelement <4 x double> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v8f64_x = extractelement <8 x double> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v16f64_x = extractelement <16 x double> undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv2f64_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv4f64_x = extractelement undef, i32 %x +; RV64V-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nxv8f64_x = extractelement undef, i32 %x ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nxv16f64_x = extractelement undef, i32 %x ; RV64V-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void ; diff --git a/llvm/test/Transforms/LoopVectorize/RISCV/uniform-load-store.ll b/llvm/test/Transforms/LoopVectorize/RISCV/uniform-load-store.ll --- a/llvm/test/Transforms/LoopVectorize/RISCV/uniform-load-store.ll +++ b/llvm/test/Transforms/LoopVectorize/RISCV/uniform-load-store.ll @@ -940,32 +940,34 @@ ; SCALABLE-NEXT: [[TMP3:%.*]] = mul i64 [[TMP2]], 2 ; SCALABLE-NEXT: [[N_MOD_VF:%.*]] = urem i64 1025, [[TMP3]] ; SCALABLE-NEXT: [[N_VEC:%.*]] = sub i64 1025, [[N_MOD_VF]] -; SCALABLE-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement poison, i64 [[V:%.*]], i64 0 -; SCALABLE-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector [[BROADCAST_SPLATINSERT]], poison, zeroinitializer +; SCALABLE-NEXT: [[TMP4:%.*]] = call @llvm.experimental.stepvector.nxv2i64() +; SCALABLE-NEXT: [[TMP5:%.*]] = add [[TMP4]], zeroinitializer +; SCALABLE-NEXT: [[TMP6:%.*]] = mul [[TMP5]], shufflevector ( insertelement ( poison, i64 1, i64 0), poison, zeroinitializer) +; SCALABLE-NEXT: [[INDUCTION:%.*]] = add zeroinitializer, [[TMP6]] +; SCALABLE-NEXT: [[TMP7:%.*]] = call i64 @llvm.vscale.i64() +; SCALABLE-NEXT: [[TMP8:%.*]] = mul i64 [[TMP7]], 2 +; SCALABLE-NEXT: [[TMP9:%.*]] = mul i64 1, [[TMP8]] +; SCALABLE-NEXT: [[DOTSPLATINSERT:%.*]] = insertelement poison, i64 [[TMP9]], i64 0 +; SCALABLE-NEXT: [[DOTSPLAT:%.*]] = shufflevector [[DOTSPLATINSERT]], poison, zeroinitializer +; SCALABLE-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement poison, ptr [[B:%.*]], i64 0 +; SCALABLE-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector [[BROADCAST_SPLATINSERT]], poison, zeroinitializer +; SCALABLE-NEXT: [[BROADCAST_SPLATINSERT1:%.*]] = insertelement poison, i64 [[V:%.*]], i64 0 +; SCALABLE-NEXT: [[BROADCAST_SPLAT2:%.*]] = shufflevector [[BROADCAST_SPLATINSERT1]], poison, zeroinitializer ; SCALABLE-NEXT: br label [[VECTOR_BODY:%.*]] ; SCALABLE: vector.body: ; SCALABLE-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ] -; SCALABLE-NEXT: [[TMP4:%.*]] = call @llvm.experimental.stepvector.nxv2i64() -; SCALABLE-NEXT: [[DOTSPLATINSERT:%.*]] = insertelement poison, i64 [[INDEX]], i64 0 -; SCALABLE-NEXT: [[DOTSPLAT:%.*]] = shufflevector [[DOTSPLATINSERT]], poison, zeroinitializer -; SCALABLE-NEXT: [[TMP5:%.*]] = add zeroinitializer, [[TMP4]] -; SCALABLE-NEXT: [[TMP6:%.*]] = mul [[TMP5]], shufflevector ( insertelement ( poison, i64 1, i64 0), poison, zeroinitializer) -; SCALABLE-NEXT: [[TMP7:%.*]] = add [[DOTSPLAT]], [[TMP6]] -; SCALABLE-NEXT: [[TMP8:%.*]] = add i64 [[INDEX]], 0 -; SCALABLE-NEXT: [[TMP9:%.*]] = add i64 [[INDEX]], 1 -; SCALABLE-NEXT: [[TMP10:%.*]] = call i32 @llvm.vscale.i32() -; SCALABLE-NEXT: [[TMP11:%.*]] = mul i32 [[TMP10]], 2 -; SCALABLE-NEXT: [[TMP12:%.*]] = sub i32 [[TMP11]], 1 -; SCALABLE-NEXT: [[TMP13:%.*]] = extractelement [[TMP7]], i32 [[TMP12]] -; SCALABLE-NEXT: store i64 [[TMP13]], ptr [[B:%.*]], align 8 -; SCALABLE-NEXT: [[TMP14:%.*]] = getelementptr inbounds i64, ptr [[A:%.*]], i64 [[TMP8]] -; SCALABLE-NEXT: [[TMP15:%.*]] = getelementptr inbounds i64, ptr [[TMP14]], i32 0 -; SCALABLE-NEXT: store [[BROADCAST_SPLAT]], ptr [[TMP15]], align 8 -; SCALABLE-NEXT: [[TMP16:%.*]] = call i64 @llvm.vscale.i64() -; SCALABLE-NEXT: [[TMP17:%.*]] = mul i64 [[TMP16]], 2 -; SCALABLE-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], [[TMP17]] -; SCALABLE-NEXT: [[TMP18:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]] -; SCALABLE-NEXT: br i1 [[TMP18]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP12:![0-9]+]] +; SCALABLE-NEXT: [[VEC_IND:%.*]] = phi [ [[INDUCTION]], [[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], [[VECTOR_BODY]] ] +; SCALABLE-NEXT: [[TMP10:%.*]] = add i64 [[INDEX]], 0 +; SCALABLE-NEXT: call void @llvm.masked.scatter.nxv2i64.nxv2p0( [[VEC_IND]], [[BROADCAST_SPLAT]], i32 8, shufflevector ( insertelement ( poison, i1 true, i64 0), poison, zeroinitializer)) +; SCALABLE-NEXT: [[TMP11:%.*]] = getelementptr inbounds i64, ptr [[A:%.*]], i64 [[TMP10]] +; SCALABLE-NEXT: [[TMP12:%.*]] = getelementptr inbounds i64, ptr [[TMP11]], i32 0 +; SCALABLE-NEXT: store [[BROADCAST_SPLAT2]], ptr [[TMP12]], align 8 +; SCALABLE-NEXT: [[TMP13:%.*]] = call i64 @llvm.vscale.i64() +; SCALABLE-NEXT: [[TMP14:%.*]] = mul i64 [[TMP13]], 2 +; SCALABLE-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], [[TMP14]] +; SCALABLE-NEXT: [[VEC_IND_NEXT]] = add [[VEC_IND]], [[DOTSPLAT]] +; SCALABLE-NEXT: [[TMP15:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]] +; SCALABLE-NEXT: br i1 [[TMP15]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP12:![0-9]+]] ; SCALABLE: middle.block: ; SCALABLE-NEXT: [[CMP_N:%.*]] = icmp eq i64 1025, [[N_VEC]] ; SCALABLE-NEXT: br i1 [[CMP_N]], label [[FOR_END:%.*]], label [[SCALAR_PH]] @@ -987,31 +989,33 @@ ; FIXEDLEN-NEXT: entry: ; FIXEDLEN-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]] ; FIXEDLEN: vector.ph: -; FIXEDLEN-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <4 x i64> poison, i64 [[V:%.*]], i64 0 -; FIXEDLEN-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <4 x i64> [[BROADCAST_SPLATINSERT]], <4 x i64> poison, <4 x i32> zeroinitializer -; FIXEDLEN-NEXT: [[BROADCAST_SPLATINSERT1:%.*]] = insertelement <4 x i64> poison, i64 [[V]], i64 0 -; FIXEDLEN-NEXT: [[BROADCAST_SPLAT2:%.*]] = shufflevector <4 x i64> [[BROADCAST_SPLATINSERT1]], <4 x i64> poison, <4 x i32> zeroinitializer +; FIXEDLEN-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <4 x ptr> poison, ptr [[B:%.*]], i64 0 +; FIXEDLEN-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <4 x ptr> [[BROADCAST_SPLATINSERT]], <4 x ptr> poison, <4 x i32> zeroinitializer +; FIXEDLEN-NEXT: [[BROADCAST_SPLATINSERT2:%.*]] = insertelement <4 x ptr> poison, ptr [[B]], i64 0 +; FIXEDLEN-NEXT: [[BROADCAST_SPLAT3:%.*]] = shufflevector <4 x ptr> [[BROADCAST_SPLATINSERT2]], <4 x ptr> poison, <4 x i32> zeroinitializer +; FIXEDLEN-NEXT: [[BROADCAST_SPLATINSERT4:%.*]] = insertelement <4 x i64> poison, i64 [[V:%.*]], i64 0 +; FIXEDLEN-NEXT: [[BROADCAST_SPLAT5:%.*]] = shufflevector <4 x i64> [[BROADCAST_SPLATINSERT4]], <4 x i64> poison, <4 x i32> zeroinitializer +; FIXEDLEN-NEXT: [[BROADCAST_SPLATINSERT6:%.*]] = insertelement <4 x i64> poison, i64 [[V]], i64 0 +; FIXEDLEN-NEXT: [[BROADCAST_SPLAT7:%.*]] = shufflevector <4 x i64> [[BROADCAST_SPLATINSERT6]], <4 x i64> poison, <4 x i32> zeroinitializer ; FIXEDLEN-NEXT: br label [[VECTOR_BODY:%.*]] ; FIXEDLEN: vector.body: ; FIXEDLEN-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ] +; FIXEDLEN-NEXT: [[VEC_IND:%.*]] = phi <4 x i64> [ , [[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], [[VECTOR_BODY]] ] +; FIXEDLEN-NEXT: [[STEP_ADD:%.*]] = add <4 x i64> [[VEC_IND]], ; FIXEDLEN-NEXT: [[TMP0:%.*]] = add i64 [[INDEX]], 0 -; FIXEDLEN-NEXT: [[TMP1:%.*]] = add i64 [[INDEX]], 1 -; FIXEDLEN-NEXT: [[TMP2:%.*]] = add i64 [[INDEX]], 2 -; FIXEDLEN-NEXT: [[TMP3:%.*]] = add i64 [[INDEX]], 3 -; FIXEDLEN-NEXT: [[TMP4:%.*]] = add i64 [[INDEX]], 4 -; FIXEDLEN-NEXT: [[TMP5:%.*]] = add i64 [[INDEX]], 5 -; FIXEDLEN-NEXT: [[TMP6:%.*]] = add i64 [[INDEX]], 6 -; FIXEDLEN-NEXT: [[TMP7:%.*]] = add i64 [[INDEX]], 7 -; FIXEDLEN-NEXT: store i64 [[TMP7]], ptr [[B:%.*]], align 8 -; FIXEDLEN-NEXT: [[TMP8:%.*]] = getelementptr inbounds i64, ptr [[A:%.*]], i64 [[TMP0]] -; FIXEDLEN-NEXT: [[TMP9:%.*]] = getelementptr inbounds i64, ptr [[A]], i64 [[TMP4]] -; FIXEDLEN-NEXT: [[TMP10:%.*]] = getelementptr inbounds i64, ptr [[TMP8]], i32 0 -; FIXEDLEN-NEXT: store <4 x i64> [[BROADCAST_SPLAT]], ptr [[TMP10]], align 8 -; FIXEDLEN-NEXT: [[TMP11:%.*]] = getelementptr inbounds i64, ptr [[TMP8]], i32 4 -; FIXEDLEN-NEXT: store <4 x i64> [[BROADCAST_SPLAT2]], ptr [[TMP11]], align 8 +; FIXEDLEN-NEXT: [[TMP1:%.*]] = add i64 [[INDEX]], 4 +; FIXEDLEN-NEXT: call void @llvm.masked.scatter.v4i64.v4p0(<4 x i64> [[VEC_IND]], <4 x ptr> [[BROADCAST_SPLAT]], i32 8, <4 x i1> ) +; FIXEDLEN-NEXT: call void @llvm.masked.scatter.v4i64.v4p0(<4 x i64> [[STEP_ADD]], <4 x ptr> [[BROADCAST_SPLAT3]], i32 8, <4 x i1> ) +; FIXEDLEN-NEXT: [[TMP2:%.*]] = getelementptr inbounds i64, ptr [[A:%.*]], i64 [[TMP0]] +; FIXEDLEN-NEXT: [[TMP3:%.*]] = getelementptr inbounds i64, ptr [[A]], i64 [[TMP1]] +; FIXEDLEN-NEXT: [[TMP4:%.*]] = getelementptr inbounds i64, ptr [[TMP2]], i32 0 +; FIXEDLEN-NEXT: store <4 x i64> [[BROADCAST_SPLAT5]], ptr [[TMP4]], align 8 +; FIXEDLEN-NEXT: [[TMP5:%.*]] = getelementptr inbounds i64, ptr [[TMP2]], i32 4 +; FIXEDLEN-NEXT: store <4 x i64> [[BROADCAST_SPLAT7]], ptr [[TMP5]], align 8 ; FIXEDLEN-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 8 -; FIXEDLEN-NEXT: [[TMP12:%.*]] = icmp eq i64 [[INDEX_NEXT]], 1024 -; FIXEDLEN-NEXT: br i1 [[TMP12]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP12:![0-9]+]] +; FIXEDLEN-NEXT: [[VEC_IND_NEXT]] = add <4 x i64> [[STEP_ADD]], +; FIXEDLEN-NEXT: [[TMP6:%.*]] = icmp eq i64 [[INDEX_NEXT]], 1024 +; FIXEDLEN-NEXT: br i1 [[TMP6]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP12:![0-9]+]] ; FIXEDLEN: middle.block: ; FIXEDLEN-NEXT: [[CMP_N:%.*]] = icmp eq i64 1025, 1024 ; FIXEDLEN-NEXT: br i1 [[CMP_N]], label [[FOR_END:%.*]], label [[SCALAR_PH]] @@ -1090,46 +1094,24 @@ ; TF-FIXEDLEN-NEXT: entry: ; TF-FIXEDLEN-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]] ; TF-FIXEDLEN: vector.ph: -; TF-FIXEDLEN-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <4 x i64> poison, i64 [[V:%.*]], i64 0 -; TF-FIXEDLEN-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <4 x i64> [[BROADCAST_SPLATINSERT]], <4 x i64> poison, <4 x i32> zeroinitializer +; TF-FIXEDLEN-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <4 x ptr> poison, ptr [[B:%.*]], i64 0 +; TF-FIXEDLEN-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <4 x ptr> [[BROADCAST_SPLATINSERT]], <4 x ptr> poison, <4 x i32> zeroinitializer +; TF-FIXEDLEN-NEXT: [[BROADCAST_SPLATINSERT1:%.*]] = insertelement <4 x i64> poison, i64 [[V:%.*]], i64 0 +; TF-FIXEDLEN-NEXT: [[BROADCAST_SPLAT2:%.*]] = shufflevector <4 x i64> [[BROADCAST_SPLATINSERT1]], <4 x i64> poison, <4 x i32> zeroinitializer ; TF-FIXEDLEN-NEXT: br label [[VECTOR_BODY:%.*]] ; TF-FIXEDLEN: vector.body: -; TF-FIXEDLEN-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[PRED_STORE_CONTINUE6:%.*]] ] +; TF-FIXEDLEN-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ] +; TF-FIXEDLEN-NEXT: [[VEC_IND:%.*]] = phi <4 x i64> [ , [[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], [[VECTOR_BODY]] ] ; TF-FIXEDLEN-NEXT: [[TMP0:%.*]] = add i64 [[INDEX]], 0 ; TF-FIXEDLEN-NEXT: [[ACTIVE_LANE_MASK:%.*]] = call <4 x i1> @llvm.get.active.lane.mask.v4i1.i64(i64 [[TMP0]], i64 1025) -; TF-FIXEDLEN-NEXT: [[TMP1:%.*]] = extractelement <4 x i1> [[ACTIVE_LANE_MASK]], i32 0 -; TF-FIXEDLEN-NEXT: br i1 [[TMP1]], label [[PRED_STORE_IF:%.*]], label [[PRED_STORE_CONTINUE:%.*]] -; TF-FIXEDLEN: pred.store.if: -; TF-FIXEDLEN-NEXT: store i64 [[TMP0]], ptr [[B:%.*]], align 8 -; TF-FIXEDLEN-NEXT: br label [[PRED_STORE_CONTINUE]] -; TF-FIXEDLEN: pred.store.continue: -; TF-FIXEDLEN-NEXT: [[TMP2:%.*]] = extractelement <4 x i1> [[ACTIVE_LANE_MASK]], i32 1 -; TF-FIXEDLEN-NEXT: br i1 [[TMP2]], label [[PRED_STORE_IF1:%.*]], label [[PRED_STORE_CONTINUE2:%.*]] -; TF-FIXEDLEN: pred.store.if1: -; TF-FIXEDLEN-NEXT: [[TMP3:%.*]] = add i64 [[INDEX]], 1 -; TF-FIXEDLEN-NEXT: store i64 [[TMP3]], ptr [[B]], align 8 -; TF-FIXEDLEN-NEXT: br label [[PRED_STORE_CONTINUE2]] -; TF-FIXEDLEN: pred.store.continue2: -; TF-FIXEDLEN-NEXT: [[TMP4:%.*]] = extractelement <4 x i1> [[ACTIVE_LANE_MASK]], i32 2 -; TF-FIXEDLEN-NEXT: br i1 [[TMP4]], label [[PRED_STORE_IF3:%.*]], label [[PRED_STORE_CONTINUE4:%.*]] -; TF-FIXEDLEN: pred.store.if3: -; TF-FIXEDLEN-NEXT: [[TMP5:%.*]] = add i64 [[INDEX]], 2 -; TF-FIXEDLEN-NEXT: store i64 [[TMP5]], ptr [[B]], align 8 -; TF-FIXEDLEN-NEXT: br label [[PRED_STORE_CONTINUE4]] -; TF-FIXEDLEN: pred.store.continue4: -; TF-FIXEDLEN-NEXT: [[TMP6:%.*]] = extractelement <4 x i1> [[ACTIVE_LANE_MASK]], i32 3 -; TF-FIXEDLEN-NEXT: br i1 [[TMP6]], label [[PRED_STORE_IF5:%.*]], label [[PRED_STORE_CONTINUE6]] -; TF-FIXEDLEN: pred.store.if5: -; TF-FIXEDLEN-NEXT: [[TMP7:%.*]] = add i64 [[INDEX]], 3 -; TF-FIXEDLEN-NEXT: store i64 [[TMP7]], ptr [[B]], align 8 -; TF-FIXEDLEN-NEXT: br label [[PRED_STORE_CONTINUE6]] -; TF-FIXEDLEN: pred.store.continue6: -; TF-FIXEDLEN-NEXT: [[TMP8:%.*]] = getelementptr inbounds i64, ptr [[A:%.*]], i64 [[TMP0]] -; TF-FIXEDLEN-NEXT: [[TMP9:%.*]] = getelementptr inbounds i64, ptr [[TMP8]], i32 0 -; TF-FIXEDLEN-NEXT: call void @llvm.masked.store.v4i64.p0(<4 x i64> [[BROADCAST_SPLAT]], ptr [[TMP9]], i32 8, <4 x i1> [[ACTIVE_LANE_MASK]]) +; TF-FIXEDLEN-NEXT: call void @llvm.masked.scatter.v4i64.v4p0(<4 x i64> [[VEC_IND]], <4 x ptr> [[BROADCAST_SPLAT]], i32 8, <4 x i1> [[ACTIVE_LANE_MASK]]) +; TF-FIXEDLEN-NEXT: [[TMP1:%.*]] = getelementptr inbounds i64, ptr [[A:%.*]], i64 [[TMP0]] +; TF-FIXEDLEN-NEXT: [[TMP2:%.*]] = getelementptr inbounds i64, ptr [[TMP1]], i32 0 +; TF-FIXEDLEN-NEXT: call void @llvm.masked.store.v4i64.p0(<4 x i64> [[BROADCAST_SPLAT2]], ptr [[TMP2]], i32 8, <4 x i1> [[ACTIVE_LANE_MASK]]) ; TF-FIXEDLEN-NEXT: [[INDEX_NEXT]] = add i64 [[INDEX]], 4 -; TF-FIXEDLEN-NEXT: [[TMP10:%.*]] = icmp eq i64 [[INDEX_NEXT]], 1028 -; TF-FIXEDLEN-NEXT: br i1 [[TMP10]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP10:![0-9]+]] +; TF-FIXEDLEN-NEXT: [[VEC_IND_NEXT]] = add <4 x i64> [[VEC_IND]], +; TF-FIXEDLEN-NEXT: [[TMP3:%.*]] = icmp eq i64 [[INDEX_NEXT]], 1028 +; TF-FIXEDLEN-NEXT: br i1 [[TMP3]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP10:![0-9]+]] ; TF-FIXEDLEN: middle.block: ; TF-FIXEDLEN-NEXT: br i1 true, label [[FOR_END:%.*]], label [[SCALAR_PH]] ; TF-FIXEDLEN: scalar.ph: