|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
2 |
| -; RUN: opt < %s -mtriple=x86_64-unknown -passes=slp-vectorizer,instcombine -S | FileCheck %s --check-prefixes=CHECK,SSE2 |
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 |
5 |
| -; RUN: opt < %s -mtriple=x86_64-unknown -mcpu=core-avx2 -passes=slp-vectorizer,instcombine -S | FileCheck %s --check-prefixes=CHECK,AVX2 |
6 |
| -; RUN: opt < %s -mtriple=x86_64-unknown -mcpu=knl -passes=slp-vectorizer,instcombine -S | FileCheck %s --check-prefixes=CHECK,AVX512 |
7 |
| -; RUN: opt < %s -mtriple=x86_64-unknown -mcpu=skx -passes=slp-vectorizer,instcombine -S | FileCheck %s --check-prefixes=CHECK,AVX512 |
| 2 | +; RUN: opt < %s -mtriple=x86_64-unknown -passes=slp-vectorizer,instcombine -S | FileCheck %s |
| 3 | +; RUN: opt < %s -mtriple=x86_64-unknown -mcpu=slm -passes=slp-vectorizer,instcombine -S | FileCheck %s |
| 4 | +; RUN: opt < %s -mtriple=x86_64-unknown -mcpu=corei7-avx -passes=slp-vectorizer,instcombine -S | FileCheck %s |
| 5 | +; RUN: opt < %s -mtriple=x86_64-unknown -mcpu=core-avx2 -passes=slp-vectorizer,instcombine -S | FileCheck %s |
| 6 | +; RUN: opt < %s -mtriple=x86_64-unknown -mcpu=knl -passes=slp-vectorizer,instcombine -S | FileCheck %s |
| 7 | +; RUN: opt < %s -mtriple=x86_64-unknown -mcpu=skx -passes=slp-vectorizer,instcombine -S | FileCheck %s |
8 | 8 |
|
9 | 9 | define <8 x float> @sitofp_uitofp(<8 x i32> %a) {
|
10 | 10 | ; CHECK-LABEL: @sitofp_uitofp(
|
11 |
| -; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <8 x i32> [[A:%.*]], <8 x i32> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 3> |
12 |
| -; CHECK-NEXT: [[TMP2:%.*]] = sitofp <4 x i32> [[TMP1]] to <4 x float> |
13 |
| -; CHECK-NEXT: [[TMP5:%.*]] = shufflevector <8 x i32> [[A]], <8 x i32> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7> |
14 |
| -; CHECK-NEXT: [[TMP4:%.*]] = uitofp <4 x i32> [[TMP5]] to <4 x float> |
15 |
| -; CHECK-NEXT: [[TMP3:%.*]] = shufflevector <4 x float> [[TMP2]], <4 x float> [[TMP4]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> |
| 11 | +; CHECK-NEXT: [[TMP1:%.*]] = sitofp <8 x i32> [[A:%.*]] to <8 x float> |
| 12 | +; CHECK-NEXT: [[TMP2:%.*]] = uitofp <8 x i32> [[A]] to <8 x float> |
| 13 | +; CHECK-NEXT: [[TMP3:%.*]] = shufflevector <8 x float> [[TMP1]], <8 x float> [[TMP2]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 12, i32 13, i32 14, i32 15> |
16 | 14 | ; CHECK-NEXT: ret <8 x float> [[TMP3]]
|
17 | 15 | ;
|
18 | 16 | %a0 = extractelement <8 x i32> %a, i32 0
|
@@ -44,11 +42,9 @@ define <8 x float> @sitofp_uitofp(<8 x i32> %a) {
|
44 | 42 |
|
45 | 43 | define <8 x i32> @fptosi_fptoui(<8 x float> %a) {
|
46 | 44 | ; CHECK-LABEL: @fptosi_fptoui(
|
47 |
| -; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <8 x float> [[A:%.*]], <8 x float> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 3> |
48 |
| -; CHECK-NEXT: [[TMP2:%.*]] = fptosi <4 x float> [[TMP1]] to <4 x i32> |
49 |
| -; CHECK-NEXT: [[TMP5:%.*]] = shufflevector <8 x float> [[A]], <8 x float> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7> |
50 |
| -; CHECK-NEXT: [[TMP4:%.*]] = fptoui <4 x float> [[TMP5]] to <4 x i32> |
51 |
| -; CHECK-NEXT: [[TMP3:%.*]] = shufflevector <4 x i32> [[TMP2]], <4 x i32> [[TMP4]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> |
| 45 | +; CHECK-NEXT: [[TMP1:%.*]] = fptosi <8 x float> [[A:%.*]] to <8 x i32> |
| 46 | +; CHECK-NEXT: [[TMP2:%.*]] = fptoui <8 x float> [[A]] to <8 x i32> |
| 47 | +; CHECK-NEXT: [[TMP3:%.*]] = shufflevector <8 x i32> [[TMP1]], <8 x i32> [[TMP2]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 12, i32 13, i32 14, i32 15> |
52 | 48 | ; CHECK-NEXT: ret <8 x i32> [[TMP3]]
|
53 | 49 | ;
|
54 | 50 | %a0 = extractelement <8 x float> %a, i32 0
|
@@ -79,39 +75,11 @@ define <8 x i32> @fptosi_fptoui(<8 x float> %a) {
|
79 | 75 | }
|
80 | 76 |
|
81 | 77 | define <8 x float> @fneg_fabs(<8 x float> %a) {
|
82 |
| -; SSE2-LABEL: @fneg_fabs( |
83 |
| -; SSE2-NEXT: [[TMP1:%.*]] = shufflevector <8 x float> [[A:%.*]], <8 x float> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 3> |
84 |
| -; SSE2-NEXT: [[TMP2:%.*]] = shufflevector <8 x float> [[A]], <8 x float> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7> |
85 |
| -; SSE2-NEXT: [[TMP3:%.*]] = fneg <4 x float> [[TMP1]] |
86 |
| -; SSE2-NEXT: [[TMP4:%.*]] = call <4 x float> @llvm.fabs.v4f32(<4 x float> [[TMP2]]) |
87 |
| -; SSE2-NEXT: [[DOTUNCASTED:%.*]] = shufflevector <4 x float> [[TMP3]], <4 x float> [[TMP4]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> |
88 |
| -; SSE2-NEXT: ret <8 x float> [[DOTUNCASTED]] |
89 |
| -; |
90 |
| -; SLM-LABEL: @fneg_fabs( |
91 |
| -; SLM-NEXT: [[TMP1:%.*]] = shufflevector <8 x float> [[A:%.*]], <8 x float> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 3> |
92 |
| -; SLM-NEXT: [[TMP2:%.*]] = shufflevector <8 x float> [[A]], <8 x float> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7> |
93 |
| -; SLM-NEXT: [[TMP3:%.*]] = fneg <4 x float> [[TMP1]] |
94 |
| -; SLM-NEXT: [[TMP4:%.*]] = call <4 x float> @llvm.fabs.v4f32(<4 x float> [[TMP2]]) |
95 |
| -; SLM-NEXT: [[DOTUNCASTED:%.*]] = shufflevector <4 x float> [[TMP3]], <4 x float> [[TMP4]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> |
96 |
| -; SLM-NEXT: ret <8 x float> [[DOTUNCASTED]] |
97 |
| -; |
98 |
| -; AVX-LABEL: @fneg_fabs( |
99 |
| -; AVX-NEXT: [[TMP1:%.*]] = fneg <8 x float> [[A:%.*]] |
100 |
| -; AVX-NEXT: [[TMP2:%.*]] = call <8 x float> @llvm.fabs.v8f32(<8 x float> [[A]]) |
101 |
| -; AVX-NEXT: [[DOTUNCASTED:%.*]] = shufflevector <8 x float> [[TMP1]], <8 x float> [[TMP2]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 12, i32 13, i32 14, i32 15> |
102 |
| -; AVX-NEXT: ret <8 x float> [[DOTUNCASTED]] |
103 |
| -; |
104 |
| -; AVX2-LABEL: @fneg_fabs( |
105 |
| -; AVX2-NEXT: [[TMP1:%.*]] = fneg <8 x float> [[A:%.*]] |
106 |
| -; AVX2-NEXT: [[TMP2:%.*]] = call <8 x float> @llvm.fabs.v8f32(<8 x float> [[A]]) |
107 |
| -; AVX2-NEXT: [[DOTUNCASTED:%.*]] = shufflevector <8 x float> [[TMP1]], <8 x float> [[TMP2]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 12, i32 13, i32 14, i32 15> |
108 |
| -; AVX2-NEXT: ret <8 x float> [[DOTUNCASTED]] |
109 |
| -; |
110 |
| -; AVX512-LABEL: @fneg_fabs( |
111 |
| -; AVX512-NEXT: [[TMP1:%.*]] = fneg <8 x float> [[A:%.*]] |
112 |
| -; AVX512-NEXT: [[TMP2:%.*]] = call <8 x float> @llvm.fabs.v8f32(<8 x float> [[A]]) |
113 |
| -; AVX512-NEXT: [[DOTUNCASTED:%.*]] = shufflevector <8 x float> [[TMP1]], <8 x float> [[TMP2]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 12, i32 13, i32 14, i32 15> |
114 |
| -; AVX512-NEXT: ret <8 x float> [[DOTUNCASTED]] |
| 78 | +; CHECK-LABEL: @fneg_fabs( |
| 79 | +; CHECK-NEXT: [[TMP1:%.*]] = fneg <8 x float> [[A:%.*]] |
| 80 | +; CHECK-NEXT: [[TMP2:%.*]] = call <8 x float> @llvm.fabs.v8f32(<8 x float> [[A]]) |
| 81 | +; CHECK-NEXT: [[DOTUNCASTED:%.*]] = shufflevector <8 x float> [[TMP1]], <8 x float> [[TMP2]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 12, i32 13, i32 14, i32 15> |
| 82 | +; CHECK-NEXT: ret <8 x float> [[DOTUNCASTED]] |
115 | 83 | ;
|
116 | 84 | %a0 = extractelement <8 x float> %a, i32 0
|
117 | 85 | %a1 = extractelement <8 x float> %a, i32 1
|
@@ -158,11 +126,9 @@ define <8 x float> @fneg_fabs(<8 x float> %a) {
|
158 | 126 |
|
159 | 127 | define <8 x i32> @sext_zext(<8 x i16> %a) {
|
160 | 128 | ; CHECK-LABEL: @sext_zext(
|
161 |
| -; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <8 x i16> [[A:%.*]], <8 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 3> |
162 |
| -; CHECK-NEXT: [[TMP2:%.*]] = sext <4 x i16> [[TMP1]] to <4 x i32> |
163 |
| -; CHECK-NEXT: [[TMP5:%.*]] = shufflevector <8 x i16> [[A]], <8 x i16> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7> |
164 |
| -; CHECK-NEXT: [[TMP4:%.*]] = zext <4 x i16> [[TMP5]] to <4 x i32> |
165 |
| -; CHECK-NEXT: [[TMP3:%.*]] = shufflevector <4 x i32> [[TMP2]], <4 x i32> [[TMP4]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> |
| 129 | +; CHECK-NEXT: [[TMP1:%.*]] = sext <8 x i16> [[A:%.*]] to <8 x i32> |
| 130 | +; CHECK-NEXT: [[TMP2:%.*]] = zext <8 x i16> [[A]] to <8 x i32> |
| 131 | +; CHECK-NEXT: [[TMP3:%.*]] = shufflevector <8 x i32> [[TMP1]], <8 x i32> [[TMP2]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 12, i32 13, i32 14, i32 15> |
166 | 132 | ; CHECK-NEXT: ret <8 x i32> [[TMP3]]
|
167 | 133 | ;
|
168 | 134 | %a0 = extractelement <8 x i16> %a, i32 0
|
|
0 commit comments