|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py |
2 | 2 | ; RUN: opt < %s -mtriple=x86_64-unknown -passes=slp-vectorizer,instcombine -S | FileCheck %s --check-prefixes=CHECK,SSE |
3 | 3 | ; RUN: opt < %s -mtriple=x86_64-unknown -mcpu=slm -passes=slp-vectorizer,instcombine -S | FileCheck %s --check-prefixes=CHECK,SLM |
4 | | -; RUN: opt < %s -mtriple=x86_64-unknown -mcpu=corei7-avx -passes=slp-vectorizer,instcombine -S | FileCheck %s --check-prefixes=CHECK,AVX,AVX1 |
5 | | -; RUN: opt < %s -mtriple=x86_64-unknown -mcpu=core-avx2 -passes=slp-vectorizer,instcombine -S | FileCheck %s --check-prefixes=CHECK,AVX,AVX2 |
6 | | -; RUN: opt < %s -mtriple=x86_64-unknown -mcpu=knl -passes=slp-vectorizer,instcombine -S | FileCheck %s --check-prefixes=CHECK,AVX,AVX512 |
7 | | -; RUN: opt < %s -mtriple=x86_64-unknown -mcpu=skx -passes=slp-vectorizer,instcombine -S | FileCheck %s --check-prefixes=CHECK,AVX,AVX512 |
| 4 | +; RUN: opt < %s -mtriple=x86_64-unknown -mcpu=corei7-avx -passes=slp-vectorizer,instcombine -S | FileCheck %s --check-prefixes=CHECK,AVX |
| 5 | +; RUN: opt < %s -mtriple=x86_64-unknown -mcpu=core-avx2 -passes=slp-vectorizer,instcombine -S | FileCheck %s --check-prefixes=CHECK,AVX |
| 6 | +; RUN: opt < %s -mtriple=x86_64-unknown -mcpu=knl -passes=slp-vectorizer,instcombine -S | FileCheck %s --check-prefixes=CHECK,AVX |
| 7 | +; RUN: opt < %s -mtriple=x86_64-unknown -mcpu=skx -passes=slp-vectorizer,instcombine -S | FileCheck %s --check-prefixes=CHECK,AVX |
8 | 8 |
|
9 | 9 | ; |
10 | 10 | ; 128-bit vectors |
@@ -213,62 +213,16 @@ define <4 x double> @test_v4f64(<4 x double> %a, <4 x double> %b) { |
213 | 213 |
|
214 | 214 | ; PR50392 |
215 | 215 | define <4 x double> @test_v4f64_partial_swizzle(<4 x double> %a, <4 x double> %b) { |
216 | | -; SSE-LABEL: @test_v4f64_partial_swizzle( |
217 | | -; SSE-NEXT: [[B2:%.*]] = extractelement <4 x double> [[B:%.*]], i64 2 |
218 | | -; SSE-NEXT: [[B3:%.*]] = extractelement <4 x double> [[B]], i64 3 |
219 | | -; SSE-NEXT: [[TMP1:%.*]] = shufflevector <4 x double> [[A:%.*]], <4 x double> [[B]], <2 x i32> <i32 0, i32 4> |
220 | | -; SSE-NEXT: [[TMP2:%.*]] = shufflevector <4 x double> [[A]], <4 x double> [[B]], <2 x i32> <i32 1, i32 5> |
221 | | -; SSE-NEXT: [[TMP3:%.*]] = fadd <2 x double> [[TMP1]], [[TMP2]] |
222 | | -; SSE-NEXT: [[R3:%.*]] = fadd double [[B2]], [[B3]] |
223 | | -; SSE-NEXT: [[TMP4:%.*]] = shufflevector <2 x double> [[TMP3]], <2 x double> poison, <4 x i32> <i32 0, i32 poison, i32 1, i32 poison> |
224 | | -; SSE-NEXT: [[R03:%.*]] = insertelement <4 x double> [[TMP4]], double [[R3]], i64 3 |
225 | | -; SSE-NEXT: ret <4 x double> [[R03]] |
226 | | -; |
227 | | -; SLM-LABEL: @test_v4f64_partial_swizzle( |
228 | | -; SLM-NEXT: [[B2:%.*]] = extractelement <4 x double> [[B:%.*]], i64 2 |
229 | | -; SLM-NEXT: [[B3:%.*]] = extractelement <4 x double> [[B]], i64 3 |
230 | | -; SLM-NEXT: [[TMP1:%.*]] = shufflevector <4 x double> [[A:%.*]], <4 x double> [[B]], <2 x i32> <i32 0, i32 4> |
231 | | -; SLM-NEXT: [[TMP2:%.*]] = shufflevector <4 x double> [[A]], <4 x double> [[B]], <2 x i32> <i32 1, i32 5> |
232 | | -; SLM-NEXT: [[TMP3:%.*]] = fadd <2 x double> [[TMP1]], [[TMP2]] |
233 | | -; SLM-NEXT: [[R3:%.*]] = fadd double [[B2]], [[B3]] |
234 | | -; SLM-NEXT: [[TMP4:%.*]] = shufflevector <2 x double> [[TMP3]], <2 x double> poison, <4 x i32> <i32 0, i32 poison, i32 1, i32 poison> |
235 | | -; SLM-NEXT: [[R03:%.*]] = insertelement <4 x double> [[TMP4]], double [[R3]], i64 3 |
236 | | -; SLM-NEXT: ret <4 x double> [[R03]] |
237 | | -; |
238 | | -; AVX1-LABEL: @test_v4f64_partial_swizzle( |
239 | | -; AVX1-NEXT: [[A0:%.*]] = extractelement <4 x double> [[A:%.*]], i64 0 |
240 | | -; AVX1-NEXT: [[A1:%.*]] = extractelement <4 x double> [[A]], i64 1 |
241 | | -; AVX1-NEXT: [[R0:%.*]] = fadd double [[A0]], [[A1]] |
242 | | -; AVX1-NEXT: [[TMP1:%.*]] = shufflevector <4 x double> [[B:%.*]], <4 x double> poison, <2 x i32> <i32 1, i32 2> |
243 | | -; AVX1-NEXT: [[TMP2:%.*]] = shufflevector <4 x double> [[B]], <4 x double> poison, <2 x i32> <i32 0, i32 3> |
244 | | -; AVX1-NEXT: [[TMP3:%.*]] = fadd <2 x double> [[TMP1]], [[TMP2]] |
245 | | -; AVX1-NEXT: [[R00:%.*]] = insertelement <4 x double> poison, double [[R0]], i64 0 |
246 | | -; AVX1-NEXT: [[TMP4:%.*]] = shufflevector <2 x double> [[TMP3]], <2 x double> poison, <4 x i32> <i32 0, i32 1, i32 poison, i32 poison> |
247 | | -; AVX1-NEXT: [[R031:%.*]] = shufflevector <4 x double> [[R00]], <4 x double> [[TMP4]], <4 x i32> <i32 0, i32 poison, i32 4, i32 5> |
248 | | -; AVX1-NEXT: ret <4 x double> [[R031]] |
249 | | -; |
250 | | -; AVX2-LABEL: @test_v4f64_partial_swizzle( |
251 | | -; AVX2-NEXT: [[A0:%.*]] = extractelement <4 x double> [[A:%.*]], i64 0 |
252 | | -; AVX2-NEXT: [[A1:%.*]] = extractelement <4 x double> [[A]], i64 1 |
253 | | -; AVX2-NEXT: [[R0:%.*]] = fadd double [[A0]], [[A1]] |
254 | | -; AVX2-NEXT: [[TMP1:%.*]] = shufflevector <4 x double> [[B:%.*]], <4 x double> poison, <2 x i32> <i32 1, i32 2> |
255 | | -; AVX2-NEXT: [[TMP2:%.*]] = shufflevector <4 x double> [[B]], <4 x double> poison, <2 x i32> <i32 0, i32 3> |
256 | | -; AVX2-NEXT: [[TMP3:%.*]] = fadd <2 x double> [[TMP1]], [[TMP2]] |
257 | | -; AVX2-NEXT: [[R00:%.*]] = insertelement <4 x double> poison, double [[R0]], i64 0 |
258 | | -; AVX2-NEXT: [[TMP4:%.*]] = shufflevector <2 x double> [[TMP3]], <2 x double> poison, <4 x i32> <i32 0, i32 1, i32 poison, i32 poison> |
259 | | -; AVX2-NEXT: [[R031:%.*]] = shufflevector <4 x double> [[R00]], <4 x double> [[TMP4]], <4 x i32> <i32 0, i32 poison, i32 4, i32 5> |
260 | | -; AVX2-NEXT: ret <4 x double> [[R031]] |
261 | | -; |
262 | | -; AVX512-LABEL: @test_v4f64_partial_swizzle( |
263 | | -; AVX512-NEXT: [[B2:%.*]] = extractelement <4 x double> [[B:%.*]], i64 2 |
264 | | -; AVX512-NEXT: [[B3:%.*]] = extractelement <4 x double> [[B]], i64 3 |
265 | | -; AVX512-NEXT: [[TMP1:%.*]] = shufflevector <4 x double> [[A:%.*]], <4 x double> [[B]], <2 x i32> <i32 0, i32 4> |
266 | | -; AVX512-NEXT: [[TMP2:%.*]] = shufflevector <4 x double> [[A]], <4 x double> [[B]], <2 x i32> <i32 1, i32 5> |
267 | | -; AVX512-NEXT: [[TMP3:%.*]] = fadd <2 x double> [[TMP1]], [[TMP2]] |
268 | | -; AVX512-NEXT: [[R3:%.*]] = fadd double [[B2]], [[B3]] |
269 | | -; AVX512-NEXT: [[TMP4:%.*]] = shufflevector <2 x double> [[TMP3]], <2 x double> poison, <4 x i32> <i32 0, i32 poison, i32 1, i32 poison> |
270 | | -; AVX512-NEXT: [[R03:%.*]] = insertelement <4 x double> [[TMP4]], double [[R3]], i64 3 |
271 | | -; AVX512-NEXT: ret <4 x double> [[R03]] |
| 216 | +; CHECK-LABEL: @test_v4f64_partial_swizzle( |
| 217 | +; CHECK-NEXT: [[B2:%.*]] = extractelement <4 x double> [[B:%.*]], i64 2 |
| 218 | +; CHECK-NEXT: [[B3:%.*]] = extractelement <4 x double> [[B]], i64 3 |
| 219 | +; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <4 x double> [[A:%.*]], <4 x double> [[B]], <2 x i32> <i32 0, i32 4> |
| 220 | +; CHECK-NEXT: [[TMP2:%.*]] = shufflevector <4 x double> [[A]], <4 x double> [[B]], <2 x i32> <i32 1, i32 5> |
| 221 | +; CHECK-NEXT: [[TMP3:%.*]] = fadd <2 x double> [[TMP1]], [[TMP2]] |
| 222 | +; CHECK-NEXT: [[R3:%.*]] = fadd double [[B2]], [[B3]] |
| 223 | +; CHECK-NEXT: [[TMP4:%.*]] = shufflevector <2 x double> [[TMP3]], <2 x double> poison, <4 x i32> <i32 0, i32 poison, i32 1, i32 poison> |
| 224 | +; CHECK-NEXT: [[R03:%.*]] = insertelement <4 x double> [[TMP4]], double [[R3]], i64 3 |
| 225 | +; CHECK-NEXT: ret <4 x double> [[R03]] |
272 | 226 | ; |
273 | 227 | %a0 = extractelement <4 x double> %a, i64 0 |
274 | 228 | %a1 = extractelement <4 x double> %a, i64 1 |
|
0 commit comments