From 04fa7cbf559ccb18cceb99594bfa05d3b26a9ee9 Mon Sep 17 00:00:00 2001 From: Roman Lebedev Date: Sat, 6 Nov 2021 00:53:08 +0300 Subject: [PATCH] [NFC][CostModel] Add exhaustive test coverage for replication shuffles This coverage has been brought to you by https://godbolt.org/z/nfc3cY1za --- .../CostModel/X86/shuffle-replication-i8.ll | 579 +++++++++++++++++++++ 1 file changed, 579 insertions(+) create mode 100644 llvm/test/Analysis/CostModel/X86/shuffle-replication-i8.ll diff --git a/llvm/test/Analysis/CostModel/X86/shuffle-replication-i8.ll b/llvm/test/Analysis/CostModel/X86/shuffle-replication-i8.ll new file mode 100644 index 0000000..2760a0b --- /dev/null +++ b/llvm/test/Analysis/CostModel/X86/shuffle-replication-i8.ll @@ -0,0 +1,579 @@ +; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py +; RUN: opt < %s -cost-model -mtriple=x86_64-pc-linux-gnu -analyze -mattr=+sse2 | FileCheck %s --check-prefixes=SSE2 +; RUN: opt < %s -cost-model -mtriple=x86_64-pc-linux-gnu -analyze -mattr=+sse3 | FileCheck %s --check-prefixes=SSE3 +; RUN: opt < %s -cost-model -mtriple=x86_64-pc-linux-gnu -analyze -mattr=+ssse3 | FileCheck %s --check-prefixes=SSSE3 +; RUN: opt < %s -cost-model -mtriple=x86_64-pc-linux-gnu -analyze -mattr=+sse4.1| FileCheck %s --check-prefixes=SSE41 +; RUN: opt < %s -cost-model -mtriple=x86_64-pc-linux-gnu -analyze -mattr=+sse4.2 | FileCheck %s --check-prefixes=SSE42 +; RUN: opt < %s -cost-model -mtriple=x86_64-pc-linux-gnu -analyze -mattr=+avx | FileCheck %s --check-prefixes=AVX +; RUN: opt < %s -cost-model -mtriple=x86_64-pc-linux-gnu -analyze -mattr=+avx2 | FileCheck %s --check-prefixes=AVX +; RUN: opt < %s -cost-model -mtriple=x86_64-pc-linux-gnu -analyze -mattr=+avx512f | FileCheck %s --check-prefixes=AVX512 +; RUN: opt < %s -cost-model -mtriple=x86_64-pc-linux-gnu -analyze -mattr=+avx512f,+avx512vl | FileCheck %s --check-prefixes=AVX512 +; RUN: opt < %s -cost-model -mtriple=x86_64-pc-linux-gnu -analyze -mattr=+avx512f,+avx512vbmi | FileCheck %s --check-prefixes=AVX512 +; RUN: opt < %s -cost-model -mtriple=x86_64-pc-linux-gnu -analyze -mattr=+avx512f,+avx512vl,+avx512vbmi | FileCheck %s --check-prefixes=AVX512 + +define void @replication_i8_stride2() nounwind { +; SSE2-LABEL: 'replication_i8_stride2' +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <4 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <8 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <16 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <32 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <64 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <128 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <256 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSE3-LABEL: 'replication_i8_stride2' +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <4 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <8 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <16 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <32 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <64 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <128 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <256 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSSE3-LABEL: 'replication_i8_stride2' +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <4 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <8 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <16 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <32 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <64 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <128 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <256 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSE41-LABEL: 'replication_i8_stride2' +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <4 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <8 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <16 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <32 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <64 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <128 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <256 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSE42-LABEL: 'replication_i8_stride2' +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <4 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <8 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <16 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <32 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <64 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <128 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <256 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; AVX-LABEL: 'replication_i8_stride2' +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <4 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <8 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <16 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <32 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <64 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <128 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <256 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; AVX512-LABEL: 'replication_i8_stride2' +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <4 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <8 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <16 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <32 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <64 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <128 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <256 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; + %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <4 x i32> + %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <8 x i32> + %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <16 x i32> + %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <32 x i32> + %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <64 x i32> + %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <128 x i32> + %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <256 x i32> + ret void +} + +define void @replication_i8_stride3() nounwind { +; SSE2-LABEL: 'replication_i8_stride3' +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <6 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <12 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <24 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <48 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <96 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <192 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <384 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSE3-LABEL: 'replication_i8_stride3' +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <6 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <12 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <24 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <48 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <96 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <192 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <384 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSSE3-LABEL: 'replication_i8_stride3' +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <6 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <12 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <24 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <48 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <96 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <192 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <384 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSE41-LABEL: 'replication_i8_stride3' +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <6 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <12 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <24 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <48 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <96 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <192 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <384 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSE42-LABEL: 'replication_i8_stride3' +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <6 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <12 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <24 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <48 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <96 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <192 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <384 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; AVX-LABEL: 'replication_i8_stride3' +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <6 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <12 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <24 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <48 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <96 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <192 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <384 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; AVX512-LABEL: 'replication_i8_stride3' +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <6 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <12 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <24 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <48 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <96 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <192 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <384 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; + %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <6 x i32> + %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <12 x i32> + %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <24 x i32> + %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <48 x i32> + %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <96 x i32> + %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <192 x i32> + %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <384 x i32> + ret void +} + +define void @replication_i8_stride4() nounwind { +; SSE2-LABEL: 'replication_i8_stride4' +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <8 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <16 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <32 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <64 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <128 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <256 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <512 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSE3-LABEL: 'replication_i8_stride4' +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <8 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <16 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <32 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <64 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <128 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <256 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <512 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSSE3-LABEL: 'replication_i8_stride4' +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <8 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <16 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <32 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <64 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <128 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <256 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <512 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSE41-LABEL: 'replication_i8_stride4' +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <8 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <16 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <32 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <64 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <128 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <256 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <512 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSE42-LABEL: 'replication_i8_stride4' +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <8 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <16 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <32 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <64 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <128 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <256 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <512 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; AVX-LABEL: 'replication_i8_stride4' +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <8 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <16 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <32 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <64 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <128 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <256 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <512 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; AVX512-LABEL: 'replication_i8_stride4' +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <8 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <16 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <32 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <64 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <128 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <256 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <512 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; + %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <8 x i32> + %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <16 x i32> + %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <32 x i32> + %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <64 x i32> + %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <128 x i32> + %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <256 x i32> + %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <512 x i32> + ret void +} + +define void @replication_i8_stride5() nounwind { +; SSE2-LABEL: 'replication_i8_stride5' +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <10 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <20 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <40 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <80 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <160 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <320 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <640 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSE3-LABEL: 'replication_i8_stride5' +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <10 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <20 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <40 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <80 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <160 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <320 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <640 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSSE3-LABEL: 'replication_i8_stride5' +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <10 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <20 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <40 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <80 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <160 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <320 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <640 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSE41-LABEL: 'replication_i8_stride5' +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <10 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <20 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <40 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <80 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <160 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <320 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <640 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSE42-LABEL: 'replication_i8_stride5' +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <10 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <20 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <40 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <80 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <160 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <320 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <640 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; AVX-LABEL: 'replication_i8_stride5' +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <10 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <20 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <40 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <80 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <160 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <320 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <640 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; AVX512-LABEL: 'replication_i8_stride5' +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <10 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <20 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <40 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <80 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <160 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <320 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <640 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; + %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <10 x i32> + %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <20 x i32> + %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <40 x i32> + %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <80 x i32> + %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <160 x i32> + %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <320 x i32> + %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <640 x i32> + ret void +} + +define void @replication_i8_stride6() nounwind { +; SSE2-LABEL: 'replication_i8_stride6' +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <12 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <24 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <48 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <96 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <192 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <384 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <768 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSE3-LABEL: 'replication_i8_stride6' +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <12 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <24 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <48 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <96 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <192 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <384 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <768 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSSE3-LABEL: 'replication_i8_stride6' +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <12 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <24 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <48 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <96 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <192 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <384 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <768 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSE41-LABEL: 'replication_i8_stride6' +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <12 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <24 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <48 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <96 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <192 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <384 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <768 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSE42-LABEL: 'replication_i8_stride6' +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <12 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <24 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <48 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <96 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <192 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <384 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <768 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; AVX-LABEL: 'replication_i8_stride6' +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <12 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <24 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <48 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <96 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <192 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <384 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <768 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; AVX512-LABEL: 'replication_i8_stride6' +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <12 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <24 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <48 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <96 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <192 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <384 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <768 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; + %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <12 x i32> + %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <24 x i32> + %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <48 x i32> + %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <96 x i32> + %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <192 x i32> + %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <384 x i32> + %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <768 x i32> + ret void +} + +define void @replication_i8_stride7() nounwind { +; SSE2-LABEL: 'replication_i8_stride7' +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <14 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <28 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <56 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <112 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <224 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <448 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <896 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSE3-LABEL: 'replication_i8_stride7' +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <14 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <28 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <56 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <112 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <224 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <448 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <896 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSSE3-LABEL: 'replication_i8_stride7' +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <14 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <28 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <56 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <112 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <224 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <448 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <896 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSE41-LABEL: 'replication_i8_stride7' +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <14 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <28 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <56 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <112 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <224 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <448 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <896 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSE42-LABEL: 'replication_i8_stride7' +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <14 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <28 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <56 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <112 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <224 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <448 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <896 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; AVX-LABEL: 'replication_i8_stride7' +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <14 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <28 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <56 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <112 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <224 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <448 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <896 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; AVX512-LABEL: 'replication_i8_stride7' +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <14 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <28 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <56 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <112 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <224 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <448 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <896 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; + %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <14 x i32> + %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <28 x i32> + %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <56 x i32> + %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <112 x i32> + %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <224 x i32> + %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <448 x i32> + %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <896 x i32> + ret void +} + +define void @replication_i8_stride8() nounwind { +; SSE2-LABEL: 'replication_i8_stride8' +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <16 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <32 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <64 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <128 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <256 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <512 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <1024 x i32> +; SSE2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSE3-LABEL: 'replication_i8_stride8' +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <16 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <32 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <64 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <128 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <256 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <512 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <1024 x i32> +; SSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSSE3-LABEL: 'replication_i8_stride8' +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <16 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <32 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <64 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <128 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <256 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <512 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <1024 x i32> +; SSSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSE41-LABEL: 'replication_i8_stride8' +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <16 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <32 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <64 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <128 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <256 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <512 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <1024 x i32> +; SSE41-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; SSE42-LABEL: 'replication_i8_stride8' +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <16 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <32 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <64 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <128 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <256 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <512 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <1024 x i32> +; SSE42-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; AVX-LABEL: 'replication_i8_stride8' +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <16 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <32 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <64 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <128 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <256 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <512 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <1024 x i32> +; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; +; AVX512-LABEL: 'replication_i8_stride8' +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <16 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <32 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <64 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <128 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <256 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <512 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of -1 for instruction: %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <1024 x i32> +; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; + %vf2 = shufflevector <2 x i8> undef, <2 x i8> poison, <16 x i32> + %vf4 = shufflevector <4 x i8> undef, <4 x i8> poison, <32 x i32> + %vf8 = shufflevector <8 x i8> undef, <8 x i8> poison, <64 x i32> + %vf16 = shufflevector <16 x i8> undef, <16 x i8> poison, <128 x i32> + %vf32 = shufflevector <32 x i8> undef, <32 x i8> poison, <256 x i32> + %vf64 = shufflevector <64 x i8> undef, <64 x i8> poison, <512 x i32> + %vf128 = shufflevector <128 x i8> undef, <128 x i8> poison, <1024 x i32> + ret void +} -- 2.7.4