1a9e87304SSimon Pilgrim; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 4 2a9e87304SSimon Pilgrim; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -mattr=+sse2 | FileCheck %s -check-prefixes=SSE,SSE2 3a9e87304SSimon Pilgrim; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -mattr=+ssse3 | FileCheck %s -check-prefixes=SSE,SSSE3 4a9e87304SSimon Pilgrim; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -mattr=+sse4.2 | FileCheck %s -check-prefixes=SSE,SSE42 5a9e87304SSimon Pilgrim; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -mattr=+avx | FileCheck %s -check-prefixes=AVX,AVX1 6a9e87304SSimon Pilgrim; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -mattr=+avx2 | FileCheck %s -check-prefixes=AVX,AVX2 7a9e87304SSimon Pilgrim; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -mattr=+avx512f | FileCheck %s --check-prefixes=AVX,AVX512 8a9e87304SSimon Pilgrim; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -mattr=+avx512f,+avx512bw | FileCheck %s --check-prefixes=AVX,AVX512 9a9e87304SSimon Pilgrim; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -mattr=+avx512f,+avx512bw,+avx512vbmi | FileCheck %s --check-prefixes=AVX,AVX512 10a9e87304SSimon Pilgrim; 11a9e87304SSimon Pilgrim; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -mcpu=slm | FileCheck %s --check-prefixes=SSE,SSE42 12a9e87304SSimon Pilgrim; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -mcpu=goldmont | FileCheck %s --check-prefixes=SSE,SSE42 13a9e87304SSimon Pilgrim; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -mcpu=btver2 | FileCheck %s --check-prefixes=AVX,AVX1 14a9e87304SSimon Pilgrim 15a9e87304SSimon Pilgrim; 16a9e87304SSimon Pilgrim; vXf64 17a9e87304SSimon Pilgrim; 18a9e87304SSimon Pilgrim 19a9e87304SSimon Pilgrimdefine <2 x double> @broadcast_load_v2f64_v2f64(ptr %src) { 20a9e87304SSimon Pilgrim; SSE2-LABEL: 'broadcast_load_v2f64_v2f64' 21a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <2 x double>, ptr %src, align 16 22a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <2 x double> %load, <2 x double> poison, <2 x i32> zeroinitializer 23a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <2 x double> %bcst 24a9e87304SSimon Pilgrim; 25a9e87304SSimon Pilgrim; SSSE3-LABEL: 'broadcast_load_v2f64_v2f64' 26a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <2 x double>, ptr %src, align 16 27a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <2 x double> %load, <2 x double> poison, <2 x i32> zeroinitializer 28a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <2 x double> %bcst 29a9e87304SSimon Pilgrim; 30a9e87304SSimon Pilgrim; SSE42-LABEL: 'broadcast_load_v2f64_v2f64' 31a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <2 x double>, ptr %src, align 16 32a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <2 x double> %load, <2 x double> poison, <2 x i32> zeroinitializer 33a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <2 x double> %bcst 34a9e87304SSimon Pilgrim; 35a9e87304SSimon Pilgrim; AVX-LABEL: 'broadcast_load_v2f64_v2f64' 36a9e87304SSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <2 x double>, ptr %src, align 16 37a9e87304SSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <2 x double> %load, <2 x double> poison, <2 x i32> zeroinitializer 38a9e87304SSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <2 x double> %bcst 39a9e87304SSimon Pilgrim; 40a9e87304SSimon Pilgrim %load = load <2 x double>, ptr %src 41a9e87304SSimon Pilgrim %bcst = shufflevector <2 x double> %load, <2 x double> poison, <2 x i32> zeroinitializer 42a9e87304SSimon Pilgrim ret <2 x double> %bcst 43a9e87304SSimon Pilgrim} 44a9e87304SSimon Pilgrim 45a9e87304SSimon Pilgrimdefine <4 x double> @broadcast_load_v2f64_v4f64(ptr %src) { 46a9e87304SSimon Pilgrim; SSE2-LABEL: 'broadcast_load_v2f64_v4f64' 47a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <2 x double>, ptr %src, align 16 48a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <2 x double> %load, <2 x double> poison, <4 x i32> zeroinitializer 49a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <4 x double> %bcst 50a9e87304SSimon Pilgrim; 51a9e87304SSimon Pilgrim; SSSE3-LABEL: 'broadcast_load_v2f64_v4f64' 52a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <2 x double>, ptr %src, align 16 53a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <2 x double> %load, <2 x double> poison, <4 x i32> zeroinitializer 54a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <4 x double> %bcst 55a9e87304SSimon Pilgrim; 56a9e87304SSimon Pilgrim; SSE42-LABEL: 'broadcast_load_v2f64_v4f64' 57a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <2 x double>, ptr %src, align 16 58a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <2 x double> %load, <2 x double> poison, <4 x i32> zeroinitializer 59a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <4 x double> %bcst 60a9e87304SSimon Pilgrim; 61*f89f670dSSimon Pilgrim; AVX-LABEL: 'broadcast_load_v2f64_v4f64' 62*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <2 x double>, ptr %src, align 16 63*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <2 x double> %load, <2 x double> poison, <4 x i32> zeroinitializer 64*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <4 x double> %bcst 65a9e87304SSimon Pilgrim; 66a9e87304SSimon Pilgrim %load = load <2 x double>, ptr %src 67a9e87304SSimon Pilgrim %bcst = shufflevector <2 x double> %load, <2 x double> poison, <4 x i32> zeroinitializer 68a9e87304SSimon Pilgrim ret <4 x double> %bcst 69a9e87304SSimon Pilgrim} 70a9e87304SSimon Pilgrim 71a9e87304SSimon Pilgrimdefine <8 x double> @broadcast_load_v2f64_v8f64(ptr %src) { 72a9e87304SSimon Pilgrim; SSE2-LABEL: 'broadcast_load_v2f64_v8f64' 73a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <2 x double>, ptr %src, align 16 74a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <2 x double> %load, <2 x double> poison, <8 x i32> zeroinitializer 75a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <8 x double> %bcst 76a9e87304SSimon Pilgrim; 77a9e87304SSimon Pilgrim; SSSE3-LABEL: 'broadcast_load_v2f64_v8f64' 78a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <2 x double>, ptr %src, align 16 79a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <2 x double> %load, <2 x double> poison, <8 x i32> zeroinitializer 80a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <8 x double> %bcst 81a9e87304SSimon Pilgrim; 82a9e87304SSimon Pilgrim; SSE42-LABEL: 'broadcast_load_v2f64_v8f64' 83a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <2 x double>, ptr %src, align 16 84a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <2 x double> %load, <2 x double> poison, <8 x i32> zeroinitializer 85a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <8 x double> %bcst 86a9e87304SSimon Pilgrim; 87*f89f670dSSimon Pilgrim; AVX-LABEL: 'broadcast_load_v2f64_v8f64' 88*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <2 x double>, ptr %src, align 16 89*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <2 x double> %load, <2 x double> poison, <8 x i32> zeroinitializer 90*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <8 x double> %bcst 91a9e87304SSimon Pilgrim; 92a9e87304SSimon Pilgrim %load = load <2 x double>, ptr %src 93a9e87304SSimon Pilgrim %bcst = shufflevector <2 x double> %load, <2 x double> poison, <8 x i32> zeroinitializer 94a9e87304SSimon Pilgrim ret <8 x double> %bcst 95a9e87304SSimon Pilgrim} 96a9e87304SSimon Pilgrim 97a9e87304SSimon Pilgrimdefine <2 x double> @broadcast_load_f64_v2f64(ptr %src) { 98a9e87304SSimon Pilgrim; SSE-LABEL: 'broadcast_load_f64_v2f64' 99a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load double, ptr %src, align 8 100a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %insert = insertelement <2 x double> poison, double %load, i32 0 101a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <2 x double> %insert, <2 x double> poison, <2 x i32> zeroinitializer 102a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <2 x double> %bcst 103a9e87304SSimon Pilgrim; 104a9e87304SSimon Pilgrim; AVX-LABEL: 'broadcast_load_f64_v2f64' 105a9e87304SSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load double, ptr %src, align 8 106a9e87304SSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %insert = insertelement <2 x double> poison, double %load, i32 0 107a9e87304SSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <2 x double> %insert, <2 x double> poison, <2 x i32> zeroinitializer 108a9e87304SSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <2 x double> %bcst 109a9e87304SSimon Pilgrim; 110a9e87304SSimon Pilgrim %load = load double, ptr %src 111a9e87304SSimon Pilgrim %insert = insertelement <2 x double> poison, double %load, i32 0 112a9e87304SSimon Pilgrim %bcst = shufflevector <2 x double> %insert, <2 x double> poison, <2 x i32> zeroinitializer 113a9e87304SSimon Pilgrim ret <2 x double> %bcst 114a9e87304SSimon Pilgrim} 115a9e87304SSimon Pilgrim 116a9e87304SSimon Pilgrimdefine <4 x double> @broadcast_load_f64_v4f64(ptr %src) { 117a9e87304SSimon Pilgrim; SSE-LABEL: 'broadcast_load_f64_v4f64' 118a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load double, ptr %src, align 8 119a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %insert = insertelement <4 x double> poison, double %load, i32 0 120a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <4 x double> %insert, <4 x double> poison, <4 x i32> zeroinitializer 121a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <4 x double> %bcst 122a9e87304SSimon Pilgrim; 123a9e87304SSimon Pilgrim; AVX1-LABEL: 'broadcast_load_f64_v4f64' 124a9e87304SSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load double, ptr %src, align 8 125a9e87304SSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %insert = insertelement <4 x double> poison, double %load, i32 0 126a9e87304SSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %bcst = shufflevector <4 x double> %insert, <4 x double> poison, <4 x i32> zeroinitializer 127a9e87304SSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <4 x double> %bcst 128a9e87304SSimon Pilgrim; 129a9e87304SSimon Pilgrim; AVX2-LABEL: 'broadcast_load_f64_v4f64' 130a9e87304SSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load double, ptr %src, align 8 131a9e87304SSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %insert = insertelement <4 x double> poison, double %load, i32 0 132a9e87304SSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <4 x double> %insert, <4 x double> poison, <4 x i32> zeroinitializer 133a9e87304SSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <4 x double> %bcst 134a9e87304SSimon Pilgrim; 135a9e87304SSimon Pilgrim; AVX512-LABEL: 'broadcast_load_f64_v4f64' 136a9e87304SSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load double, ptr %src, align 8 137a9e87304SSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %insert = insertelement <4 x double> poison, double %load, i32 0 138a9e87304SSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <4 x double> %insert, <4 x double> poison, <4 x i32> zeroinitializer 139a9e87304SSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <4 x double> %bcst 140a9e87304SSimon Pilgrim; 141a9e87304SSimon Pilgrim %load = load double, ptr %src 142a9e87304SSimon Pilgrim %insert = insertelement <4 x double> poison, double %load, i32 0 143a9e87304SSimon Pilgrim %bcst = shufflevector <4 x double> %insert, <4 x double> poison, <4 x i32> zeroinitializer 144a9e87304SSimon Pilgrim ret <4 x double> %bcst 145a9e87304SSimon Pilgrim} 146a9e87304SSimon Pilgrim 147a9e87304SSimon Pilgrimdefine <8 x double> @broadcast_load_f64_v8f64(ptr %src) { 148a9e87304SSimon Pilgrim; SSE-LABEL: 'broadcast_load_f64_v8f64' 149a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load double, ptr %src, align 8 150a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %insert = insertelement <8 x double> poison, double %load, i32 0 151a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <8 x double> %insert, <8 x double> poison, <8 x i32> zeroinitializer 152a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <8 x double> %bcst 153a9e87304SSimon Pilgrim; 154a9e87304SSimon Pilgrim; AVX1-LABEL: 'broadcast_load_f64_v8f64' 155a9e87304SSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load double, ptr %src, align 8 156a9e87304SSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %insert = insertelement <8 x double> poison, double %load, i32 0 157a9e87304SSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %bcst = shufflevector <8 x double> %insert, <8 x double> poison, <8 x i32> zeroinitializer 158a9e87304SSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <8 x double> %bcst 159a9e87304SSimon Pilgrim; 160a9e87304SSimon Pilgrim; AVX2-LABEL: 'broadcast_load_f64_v8f64' 161a9e87304SSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load double, ptr %src, align 8 162a9e87304SSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %insert = insertelement <8 x double> poison, double %load, i32 0 163a9e87304SSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <8 x double> %insert, <8 x double> poison, <8 x i32> zeroinitializer 164a9e87304SSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <8 x double> %bcst 165a9e87304SSimon Pilgrim; 166a9e87304SSimon Pilgrim; AVX512-LABEL: 'broadcast_load_f64_v8f64' 167a9e87304SSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load double, ptr %src, align 8 168a9e87304SSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %insert = insertelement <8 x double> poison, double %load, i32 0 169a9e87304SSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <8 x double> %insert, <8 x double> poison, <8 x i32> zeroinitializer 170a9e87304SSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <8 x double> %bcst 171a9e87304SSimon Pilgrim; 172a9e87304SSimon Pilgrim %load = load double, ptr %src 173a9e87304SSimon Pilgrim %insert = insertelement <8 x double> poison, double %load, i32 0 174a9e87304SSimon Pilgrim %bcst = shufflevector <8 x double> %insert, <8 x double> poison, <8 x i32> zeroinitializer 175a9e87304SSimon Pilgrim ret <8 x double> %bcst 176a9e87304SSimon Pilgrim} 177a9e87304SSimon Pilgrim 178a9e87304SSimon Pilgrim; 179a9e87304SSimon Pilgrim; vXf32 180a9e87304SSimon Pilgrim; 181a9e87304SSimon Pilgrim 182a9e87304SSimon Pilgrimdefine <4 x float> @broadcast_load_v4f32_v4f32(ptr %src) { 183a9e87304SSimon Pilgrim; SSE-LABEL: 'broadcast_load_v4f32_v4f32' 184a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <4 x float>, ptr %src, align 16 185a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <4 x float> %load, <4 x float> poison, <4 x i32> zeroinitializer 186a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <4 x float> %bcst 187a9e87304SSimon Pilgrim; 188a9e87304SSimon Pilgrim; AVX-LABEL: 'broadcast_load_v4f32_v4f32' 189a9e87304SSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <4 x float>, ptr %src, align 16 190*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <4 x float> %load, <4 x float> poison, <4 x i32> zeroinitializer 191a9e87304SSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <4 x float> %bcst 192a9e87304SSimon Pilgrim; 193a9e87304SSimon Pilgrim %load = load <4 x float>, ptr %src 194a9e87304SSimon Pilgrim %bcst = shufflevector <4 x float> %load, <4 x float> poison, <4 x i32> zeroinitializer 195a9e87304SSimon Pilgrim ret <4 x float> %bcst 196a9e87304SSimon Pilgrim} 197a9e87304SSimon Pilgrim 198a9e87304SSimon Pilgrimdefine <8 x float> @broadcast_load_v4f32_v8f32(ptr %src) { 199a9e87304SSimon Pilgrim; SSE-LABEL: 'broadcast_load_v4f32_v8f32' 200a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <4 x float>, ptr %src, align 16 201a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <4 x float> %load, <4 x float> poison, <8 x i32> zeroinitializer 202a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <8 x float> %bcst 203a9e87304SSimon Pilgrim; 204*f89f670dSSimon Pilgrim; AVX-LABEL: 'broadcast_load_v4f32_v8f32' 205*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <4 x float>, ptr %src, align 16 206*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <4 x float> %load, <4 x float> poison, <8 x i32> zeroinitializer 207*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <8 x float> %bcst 208a9e87304SSimon Pilgrim; 209a9e87304SSimon Pilgrim %load = load <4 x float>, ptr %src 210a9e87304SSimon Pilgrim %bcst = shufflevector <4 x float> %load, <4 x float> poison, <8 x i32> zeroinitializer 211a9e87304SSimon Pilgrim ret <8 x float> %bcst 212a9e87304SSimon Pilgrim} 213a9e87304SSimon Pilgrim 214a9e87304SSimon Pilgrimdefine <16 x float> @broadcast_load_v4f32_v16f32(ptr %src) { 215a9e87304SSimon Pilgrim; SSE-LABEL: 'broadcast_load_v4f32_v16f32' 216a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <4 x float>, ptr %src, align 16 217a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <4 x float> %load, <4 x float> poison, <16 x i32> zeroinitializer 218a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <16 x float> %bcst 219a9e87304SSimon Pilgrim; 220*f89f670dSSimon Pilgrim; AVX-LABEL: 'broadcast_load_v4f32_v16f32' 221*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <4 x float>, ptr %src, align 16 222*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <4 x float> %load, <4 x float> poison, <16 x i32> zeroinitializer 223*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <16 x float> %bcst 224a9e87304SSimon Pilgrim; 225a9e87304SSimon Pilgrim %load = load <4 x float>, ptr %src 226a9e87304SSimon Pilgrim %bcst = shufflevector <4 x float> %load, <4 x float> poison, <16 x i32> zeroinitializer 227a9e87304SSimon Pilgrim ret <16 x float> %bcst 228a9e87304SSimon Pilgrim} 229a9e87304SSimon Pilgrim 230a9e87304SSimon Pilgrimdefine <2 x i64> @broadcast_load_v2i64_v2i64(ptr %src) { 231a9e87304SSimon Pilgrim; SSE-LABEL: 'broadcast_load_v2i64_v2i64' 232a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <2 x i64>, ptr %src, align 16 233a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <2 x i64> %load, <2 x i64> poison, <2 x i32> zeroinitializer 234a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <2 x i64> %bcst 235a9e87304SSimon Pilgrim; 236a9e87304SSimon Pilgrim; AVX-LABEL: 'broadcast_load_v2i64_v2i64' 237a9e87304SSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <2 x i64>, ptr %src, align 16 238*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <2 x i64> %load, <2 x i64> poison, <2 x i32> zeroinitializer 239a9e87304SSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <2 x i64> %bcst 240a9e87304SSimon Pilgrim; 241a9e87304SSimon Pilgrim %load = load <2 x i64>, ptr %src 242a9e87304SSimon Pilgrim %bcst = shufflevector <2 x i64> %load, <2 x i64> poison, <2 x i32> zeroinitializer 243a9e87304SSimon Pilgrim ret <2 x i64> %bcst 244a9e87304SSimon Pilgrim} 245a9e87304SSimon Pilgrim 246a9e87304SSimon Pilgrim; 247a9e87304SSimon Pilgrim; vXi64 248a9e87304SSimon Pilgrim; 249a9e87304SSimon Pilgrim 250a9e87304SSimon Pilgrimdefine <4 x i64> @broadcast_load_v2i64_v4i64(ptr %src) { 251a9e87304SSimon Pilgrim; SSE-LABEL: 'broadcast_load_v2i64_v4i64' 252a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <2 x i64>, ptr %src, align 16 253a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <2 x i64> %load, <2 x i64> poison, <4 x i32> zeroinitializer 254a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <4 x i64> %bcst 255a9e87304SSimon Pilgrim; 256*f89f670dSSimon Pilgrim; AVX-LABEL: 'broadcast_load_v2i64_v4i64' 257*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <2 x i64>, ptr %src, align 16 258*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <2 x i64> %load, <2 x i64> poison, <4 x i32> zeroinitializer 259*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <4 x i64> %bcst 260a9e87304SSimon Pilgrim; 261a9e87304SSimon Pilgrim %load = load <2 x i64>, ptr %src 262a9e87304SSimon Pilgrim %bcst = shufflevector <2 x i64> %load, <2 x i64> poison, <4 x i32> zeroinitializer 263a9e87304SSimon Pilgrim ret <4 x i64> %bcst 264a9e87304SSimon Pilgrim} 265a9e87304SSimon Pilgrim 266a9e87304SSimon Pilgrimdefine <8 x i64> @broadcast_load_v2i64_v8i64(ptr %src) { 267a9e87304SSimon Pilgrim; SSE-LABEL: 'broadcast_load_v2i64_v8i64' 268a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <2 x i64>, ptr %src, align 16 269a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <2 x i64> %load, <2 x i64> poison, <8 x i32> zeroinitializer 270a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <8 x i64> %bcst 271a9e87304SSimon Pilgrim; 272*f89f670dSSimon Pilgrim; AVX-LABEL: 'broadcast_load_v2i64_v8i64' 273*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <2 x i64>, ptr %src, align 16 274*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <2 x i64> %load, <2 x i64> poison, <8 x i32> zeroinitializer 275*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <8 x i64> %bcst 276a9e87304SSimon Pilgrim; 277a9e87304SSimon Pilgrim %load = load <2 x i64>, ptr %src 278a9e87304SSimon Pilgrim %bcst = shufflevector <2 x i64> %load, <2 x i64> poison, <8 x i32> zeroinitializer 279a9e87304SSimon Pilgrim ret <8 x i64> %bcst 280a9e87304SSimon Pilgrim} 281a9e87304SSimon Pilgrim 282a9e87304SSimon Pilgrim; 283a9e87304SSimon Pilgrim; vXi32 284a9e87304SSimon Pilgrim; 285a9e87304SSimon Pilgrim 286a9e87304SSimon Pilgrimdefine <4 x i32> @broadcast_load_v4i32_v4i32(ptr %src) { 287a9e87304SSimon Pilgrim; SSE-LABEL: 'broadcast_load_v4i32_v4i32' 288a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <4 x i32>, ptr %src, align 16 289a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <4 x i32> %load, <4 x i32> poison, <4 x i32> zeroinitializer 290a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <4 x i32> %bcst 291a9e87304SSimon Pilgrim; 292a9e87304SSimon Pilgrim; AVX-LABEL: 'broadcast_load_v4i32_v4i32' 293a9e87304SSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <4 x i32>, ptr %src, align 16 294*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <4 x i32> %load, <4 x i32> poison, <4 x i32> zeroinitializer 295a9e87304SSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <4 x i32> %bcst 296a9e87304SSimon Pilgrim; 297a9e87304SSimon Pilgrim %load = load <4 x i32>, ptr %src 298a9e87304SSimon Pilgrim %bcst = shufflevector <4 x i32> %load, <4 x i32> poison, <4 x i32> zeroinitializer 299a9e87304SSimon Pilgrim ret <4 x i32> %bcst 300a9e87304SSimon Pilgrim} 301a9e87304SSimon Pilgrim 302a9e87304SSimon Pilgrimdefine <8 x i32> @broadcast_load_v4i32_v8i32(ptr %src) { 303a9e87304SSimon Pilgrim; SSE-LABEL: 'broadcast_load_v4i32_v8i32' 304a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <4 x i32>, ptr %src, align 16 305a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <4 x i32> %load, <4 x i32> poison, <8 x i32> zeroinitializer 306a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <8 x i32> %bcst 307a9e87304SSimon Pilgrim; 308*f89f670dSSimon Pilgrim; AVX-LABEL: 'broadcast_load_v4i32_v8i32' 309*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <4 x i32>, ptr %src, align 16 310*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <4 x i32> %load, <4 x i32> poison, <8 x i32> zeroinitializer 311*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <8 x i32> %bcst 312a9e87304SSimon Pilgrim; 313a9e87304SSimon Pilgrim %load = load <4 x i32>, ptr %src 314a9e87304SSimon Pilgrim %bcst = shufflevector <4 x i32> %load, <4 x i32> poison, <8 x i32> zeroinitializer 315a9e87304SSimon Pilgrim ret <8 x i32> %bcst 316a9e87304SSimon Pilgrim} 317a9e87304SSimon Pilgrim 318a9e87304SSimon Pilgrimdefine <16 x i32> @broadcast_load_v4i32_v16i32(ptr %src) { 319a9e87304SSimon Pilgrim; SSE-LABEL: 'broadcast_load_v4i32_v16i32' 320a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <4 x i32>, ptr %src, align 16 321a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <4 x i32> %load, <4 x i32> poison, <16 x i32> zeroinitializer 322a9e87304SSimon Pilgrim; SSE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <16 x i32> %bcst 323a9e87304SSimon Pilgrim; 324*f89f670dSSimon Pilgrim; AVX-LABEL: 'broadcast_load_v4i32_v16i32' 325*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <4 x i32>, ptr %src, align 16 326*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <4 x i32> %load, <4 x i32> poison, <16 x i32> zeroinitializer 327*f89f670dSSimon Pilgrim; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <16 x i32> %bcst 328a9e87304SSimon Pilgrim; 329a9e87304SSimon Pilgrim %load = load <4 x i32>, ptr %src 330a9e87304SSimon Pilgrim %bcst = shufflevector <4 x i32> %load, <4 x i32> poison, <16 x i32> zeroinitializer 331a9e87304SSimon Pilgrim ret <16 x i32> %bcst 332a9e87304SSimon Pilgrim} 333a9e87304SSimon Pilgrim 334a9e87304SSimon Pilgrim; 335a9e87304SSimon Pilgrim; vXi16 336a9e87304SSimon Pilgrim; 337a9e87304SSimon Pilgrim 338a9e87304SSimon Pilgrimdefine <8 x i16> @broadcast_load_v8i16_v8i16(ptr %src) { 339a9e87304SSimon Pilgrim; SSE2-LABEL: 'broadcast_load_v8i16_v8i16' 340a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <8 x i16>, ptr %src, align 16 341a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %bcst = shufflevector <8 x i16> %load, <8 x i16> poison, <8 x i32> zeroinitializer 342a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <8 x i16> %bcst 343a9e87304SSimon Pilgrim; 344a9e87304SSimon Pilgrim; SSSE3-LABEL: 'broadcast_load_v8i16_v8i16' 345a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <8 x i16>, ptr %src, align 16 346a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <8 x i16> %load, <8 x i16> poison, <8 x i32> zeroinitializer 347a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <8 x i16> %bcst 348a9e87304SSimon Pilgrim; 349a9e87304SSimon Pilgrim; SSE42-LABEL: 'broadcast_load_v8i16_v8i16' 350a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <8 x i16>, ptr %src, align 16 351a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <8 x i16> %load, <8 x i16> poison, <8 x i32> zeroinitializer 352a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <8 x i16> %bcst 353a9e87304SSimon Pilgrim; 354*f89f670dSSimon Pilgrim; AVX1-LABEL: 'broadcast_load_v8i16_v8i16' 355*f89f670dSSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <8 x i16>, ptr %src, align 16 356*f89f670dSSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <8 x i16> %load, <8 x i16> poison, <8 x i32> zeroinitializer 357*f89f670dSSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <8 x i16> %bcst 358*f89f670dSSimon Pilgrim; 359*f89f670dSSimon Pilgrim; AVX2-LABEL: 'broadcast_load_v8i16_v8i16' 360*f89f670dSSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <8 x i16>, ptr %src, align 16 361*f89f670dSSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <8 x i16> %load, <8 x i16> poison, <8 x i32> zeroinitializer 362*f89f670dSSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <8 x i16> %bcst 363*f89f670dSSimon Pilgrim; 364*f89f670dSSimon Pilgrim; AVX512-LABEL: 'broadcast_load_v8i16_v8i16' 365*f89f670dSSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <8 x i16>, ptr %src, align 16 366*f89f670dSSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <8 x i16> %load, <8 x i16> poison, <8 x i32> zeroinitializer 367*f89f670dSSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <8 x i16> %bcst 368a9e87304SSimon Pilgrim; 369a9e87304SSimon Pilgrim %load = load <8 x i16>, ptr %src 370a9e87304SSimon Pilgrim %bcst = shufflevector <8 x i16> %load, <8 x i16> poison, <8 x i32> zeroinitializer 371a9e87304SSimon Pilgrim ret <8 x i16> %bcst 372a9e87304SSimon Pilgrim} 373a9e87304SSimon Pilgrim 374a9e87304SSimon Pilgrimdefine <16 x i16> @broadcast_load_v8i16_v16i16(ptr %src) { 375a9e87304SSimon Pilgrim; SSE2-LABEL: 'broadcast_load_v8i16_v16i16' 376a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <8 x i16>, ptr %src, align 16 377a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %bcst = shufflevector <8 x i16> %load, <8 x i16> poison, <16 x i32> zeroinitializer 378a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <16 x i16> %bcst 379a9e87304SSimon Pilgrim; 380a9e87304SSimon Pilgrim; SSSE3-LABEL: 'broadcast_load_v8i16_v16i16' 381a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <8 x i16>, ptr %src, align 16 382a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <8 x i16> %load, <8 x i16> poison, <16 x i32> zeroinitializer 383a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <16 x i16> %bcst 384a9e87304SSimon Pilgrim; 385a9e87304SSimon Pilgrim; SSE42-LABEL: 'broadcast_load_v8i16_v16i16' 386a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <8 x i16>, ptr %src, align 16 387a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <8 x i16> %load, <8 x i16> poison, <16 x i32> zeroinitializer 388a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <16 x i16> %bcst 389a9e87304SSimon Pilgrim; 390a9e87304SSimon Pilgrim; AVX1-LABEL: 'broadcast_load_v8i16_v16i16' 391a9e87304SSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <8 x i16>, ptr %src, align 16 392a9e87304SSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %bcst = shufflevector <8 x i16> %load, <8 x i16> poison, <16 x i32> zeroinitializer 393a9e87304SSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <16 x i16> %bcst 394a9e87304SSimon Pilgrim; 395a9e87304SSimon Pilgrim; AVX2-LABEL: 'broadcast_load_v8i16_v16i16' 396a9e87304SSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <8 x i16>, ptr %src, align 16 397*f89f670dSSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <8 x i16> %load, <8 x i16> poison, <16 x i32> zeroinitializer 398a9e87304SSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <16 x i16> %bcst 399a9e87304SSimon Pilgrim; 400a9e87304SSimon Pilgrim; AVX512-LABEL: 'broadcast_load_v8i16_v16i16' 401a9e87304SSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <8 x i16>, ptr %src, align 16 402*f89f670dSSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <8 x i16> %load, <8 x i16> poison, <16 x i32> zeroinitializer 403a9e87304SSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <16 x i16> %bcst 404a9e87304SSimon Pilgrim; 405a9e87304SSimon Pilgrim %load = load <8 x i16>, ptr %src 406a9e87304SSimon Pilgrim %bcst = shufflevector <8 x i16> %load, <8 x i16> poison, <16 x i32> zeroinitializer 407a9e87304SSimon Pilgrim ret <16 x i16> %bcst 408a9e87304SSimon Pilgrim} 409a9e87304SSimon Pilgrim 410a9e87304SSimon Pilgrimdefine <32 x i16> @broadcast_load_v8i16_v32i16(ptr %src) { 411a9e87304SSimon Pilgrim; SSE2-LABEL: 'broadcast_load_v8i16_v32i16' 412a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <8 x i16>, ptr %src, align 16 413a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %bcst = shufflevector <8 x i16> %load, <8 x i16> poison, <32 x i32> zeroinitializer 414a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <32 x i16> %bcst 415a9e87304SSimon Pilgrim; 416a9e87304SSimon Pilgrim; SSSE3-LABEL: 'broadcast_load_v8i16_v32i16' 417a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <8 x i16>, ptr %src, align 16 418a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <8 x i16> %load, <8 x i16> poison, <32 x i32> zeroinitializer 419a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <32 x i16> %bcst 420a9e87304SSimon Pilgrim; 421a9e87304SSimon Pilgrim; SSE42-LABEL: 'broadcast_load_v8i16_v32i16' 422a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <8 x i16>, ptr %src, align 16 423a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <8 x i16> %load, <8 x i16> poison, <32 x i32> zeroinitializer 424a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <32 x i16> %bcst 425a9e87304SSimon Pilgrim; 426a9e87304SSimon Pilgrim; AVX1-LABEL: 'broadcast_load_v8i16_v32i16' 427a9e87304SSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <8 x i16>, ptr %src, align 16 428a9e87304SSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %bcst = shufflevector <8 x i16> %load, <8 x i16> poison, <32 x i32> zeroinitializer 429a9e87304SSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <32 x i16> %bcst 430a9e87304SSimon Pilgrim; 431a9e87304SSimon Pilgrim; AVX2-LABEL: 'broadcast_load_v8i16_v32i16' 432a9e87304SSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <8 x i16>, ptr %src, align 16 433*f89f670dSSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <8 x i16> %load, <8 x i16> poison, <32 x i32> zeroinitializer 434a9e87304SSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <32 x i16> %bcst 435a9e87304SSimon Pilgrim; 436a9e87304SSimon Pilgrim; AVX512-LABEL: 'broadcast_load_v8i16_v32i16' 437a9e87304SSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <8 x i16>, ptr %src, align 16 438*f89f670dSSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <8 x i16> %load, <8 x i16> poison, <32 x i32> zeroinitializer 439a9e87304SSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <32 x i16> %bcst 440a9e87304SSimon Pilgrim; 441a9e87304SSimon Pilgrim %load = load <8 x i16>, ptr %src 442a9e87304SSimon Pilgrim %bcst = shufflevector <8 x i16> %load, <8 x i16> poison, <32 x i32> zeroinitializer 443a9e87304SSimon Pilgrim ret <32 x i16> %bcst 444a9e87304SSimon Pilgrim} 445a9e87304SSimon Pilgrim 446a9e87304SSimon Pilgrim; 447a9e87304SSimon Pilgrim; vXi8 448a9e87304SSimon Pilgrim; 449a9e87304SSimon Pilgrim 450a9e87304SSimon Pilgrimdefine <16 x i8> @broadcast_load_v16i8_v16i8(ptr %src) { 451a9e87304SSimon Pilgrim; SSE2-LABEL: 'broadcast_load_v16i8_v16i8' 452a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <16 x i8>, ptr %src, align 16 453a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %bcst = shufflevector <16 x i8> %load, <16 x i8> poison, <16 x i32> zeroinitializer 454a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <16 x i8> %bcst 455a9e87304SSimon Pilgrim; 456a9e87304SSimon Pilgrim; SSSE3-LABEL: 'broadcast_load_v16i8_v16i8' 457a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <16 x i8>, ptr %src, align 16 458a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <16 x i8> %load, <16 x i8> poison, <16 x i32> zeroinitializer 459a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <16 x i8> %bcst 460a9e87304SSimon Pilgrim; 461a9e87304SSimon Pilgrim; SSE42-LABEL: 'broadcast_load_v16i8_v16i8' 462a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <16 x i8>, ptr %src, align 16 463a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <16 x i8> %load, <16 x i8> poison, <16 x i32> zeroinitializer 464a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <16 x i8> %bcst 465a9e87304SSimon Pilgrim; 466*f89f670dSSimon Pilgrim; AVX1-LABEL: 'broadcast_load_v16i8_v16i8' 467*f89f670dSSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <16 x i8>, ptr %src, align 16 468*f89f670dSSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <16 x i8> %load, <16 x i8> poison, <16 x i32> zeroinitializer 469*f89f670dSSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <16 x i8> %bcst 470*f89f670dSSimon Pilgrim; 471*f89f670dSSimon Pilgrim; AVX2-LABEL: 'broadcast_load_v16i8_v16i8' 472*f89f670dSSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <16 x i8>, ptr %src, align 16 473*f89f670dSSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <16 x i8> %load, <16 x i8> poison, <16 x i32> zeroinitializer 474*f89f670dSSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <16 x i8> %bcst 475*f89f670dSSimon Pilgrim; 476*f89f670dSSimon Pilgrim; AVX512-LABEL: 'broadcast_load_v16i8_v16i8' 477*f89f670dSSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <16 x i8>, ptr %src, align 16 478*f89f670dSSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <16 x i8> %load, <16 x i8> poison, <16 x i32> zeroinitializer 479*f89f670dSSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <16 x i8> %bcst 480a9e87304SSimon Pilgrim; 481a9e87304SSimon Pilgrim %load = load <16 x i8>, ptr %src 482a9e87304SSimon Pilgrim %bcst = shufflevector <16 x i8> %load, <16 x i8> poison, <16 x i32> zeroinitializer 483a9e87304SSimon Pilgrim ret <16 x i8> %bcst 484a9e87304SSimon Pilgrim} 485a9e87304SSimon Pilgrim 486a9e87304SSimon Pilgrimdefine <32 x i8> @broadcast_load_v16i8_v32i8(ptr %src) { 487a9e87304SSimon Pilgrim; SSE2-LABEL: 'broadcast_load_v16i8_v32i8' 488a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <16 x i8>, ptr %src, align 16 489a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %bcst = shufflevector <16 x i8> %load, <16 x i8> poison, <32 x i32> zeroinitializer 490a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <32 x i8> %bcst 491a9e87304SSimon Pilgrim; 492a9e87304SSimon Pilgrim; SSSE3-LABEL: 'broadcast_load_v16i8_v32i8' 493a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <16 x i8>, ptr %src, align 16 494a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <16 x i8> %load, <16 x i8> poison, <32 x i32> zeroinitializer 495a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <32 x i8> %bcst 496a9e87304SSimon Pilgrim; 497a9e87304SSimon Pilgrim; SSE42-LABEL: 'broadcast_load_v16i8_v32i8' 498a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <16 x i8>, ptr %src, align 16 499a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <16 x i8> %load, <16 x i8> poison, <32 x i32> zeroinitializer 500a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <32 x i8> %bcst 501a9e87304SSimon Pilgrim; 502a9e87304SSimon Pilgrim; AVX1-LABEL: 'broadcast_load_v16i8_v32i8' 503a9e87304SSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <16 x i8>, ptr %src, align 16 504a9e87304SSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %bcst = shufflevector <16 x i8> %load, <16 x i8> poison, <32 x i32> zeroinitializer 505a9e87304SSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <32 x i8> %bcst 506a9e87304SSimon Pilgrim; 507a9e87304SSimon Pilgrim; AVX2-LABEL: 'broadcast_load_v16i8_v32i8' 508a9e87304SSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <16 x i8>, ptr %src, align 16 509*f89f670dSSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <16 x i8> %load, <16 x i8> poison, <32 x i32> zeroinitializer 510a9e87304SSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <32 x i8> %bcst 511a9e87304SSimon Pilgrim; 512a9e87304SSimon Pilgrim; AVX512-LABEL: 'broadcast_load_v16i8_v32i8' 513a9e87304SSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <16 x i8>, ptr %src, align 16 514*f89f670dSSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <16 x i8> %load, <16 x i8> poison, <32 x i32> zeroinitializer 515a9e87304SSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <32 x i8> %bcst 516a9e87304SSimon Pilgrim; 517a9e87304SSimon Pilgrim %load = load <16 x i8>, ptr %src 518a9e87304SSimon Pilgrim %bcst = shufflevector <16 x i8> %load, <16 x i8> poison, <32 x i32> zeroinitializer 519a9e87304SSimon Pilgrim ret <32 x i8> %bcst 520a9e87304SSimon Pilgrim} 521a9e87304SSimon Pilgrim 522a9e87304SSimon Pilgrimdefine <64 x i8> @broadcast_load_v16i8_v64i8(ptr %src) { 523a9e87304SSimon Pilgrim; SSE2-LABEL: 'broadcast_load_v16i8_v64i8' 524a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <16 x i8>, ptr %src, align 16 525a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %bcst = shufflevector <16 x i8> %load, <16 x i8> poison, <64 x i32> zeroinitializer 526a9e87304SSimon Pilgrim; SSE2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <64 x i8> %bcst 527a9e87304SSimon Pilgrim; 528a9e87304SSimon Pilgrim; SSSE3-LABEL: 'broadcast_load_v16i8_v64i8' 529a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <16 x i8>, ptr %src, align 16 530a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <16 x i8> %load, <16 x i8> poison, <64 x i32> zeroinitializer 531a9e87304SSimon Pilgrim; SSSE3-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <64 x i8> %bcst 532a9e87304SSimon Pilgrim; 533a9e87304SSimon Pilgrim; SSE42-LABEL: 'broadcast_load_v16i8_v64i8' 534a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <16 x i8>, ptr %src, align 16 535a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %bcst = shufflevector <16 x i8> %load, <16 x i8> poison, <64 x i32> zeroinitializer 536a9e87304SSimon Pilgrim; SSE42-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <64 x i8> %bcst 537a9e87304SSimon Pilgrim; 538a9e87304SSimon Pilgrim; AVX1-LABEL: 'broadcast_load_v16i8_v64i8' 539a9e87304SSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <16 x i8>, ptr %src, align 16 540a9e87304SSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %bcst = shufflevector <16 x i8> %load, <16 x i8> poison, <64 x i32> zeroinitializer 541a9e87304SSimon Pilgrim; AVX1-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <64 x i8> %bcst 542a9e87304SSimon Pilgrim; 543a9e87304SSimon Pilgrim; AVX2-LABEL: 'broadcast_load_v16i8_v64i8' 544a9e87304SSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <16 x i8>, ptr %src, align 16 545*f89f670dSSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <16 x i8> %load, <16 x i8> poison, <64 x i32> zeroinitializer 546a9e87304SSimon Pilgrim; AVX2-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <64 x i8> %bcst 547a9e87304SSimon Pilgrim; 548a9e87304SSimon Pilgrim; AVX512-LABEL: 'broadcast_load_v16i8_v64i8' 549a9e87304SSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %load = load <16 x i8>, ptr %src, align 16 550*f89f670dSSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %bcst = shufflevector <16 x i8> %load, <16 x i8> poison, <64 x i32> zeroinitializer 551a9e87304SSimon Pilgrim; AVX512-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <64 x i8> %bcst 552a9e87304SSimon Pilgrim; 553a9e87304SSimon Pilgrim %load = load <16 x i8>, ptr %src 554a9e87304SSimon Pilgrim %bcst = shufflevector <16 x i8> %load, <16 x i8> poison, <64 x i32> zeroinitializer 555a9e87304SSimon Pilgrim ret <64 x i8> %bcst 556a9e87304SSimon Pilgrim} 557