|
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