• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2;RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=knl | FileCheck %s --check-prefix=KNL
3;RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=skx | FileCheck %s --check-prefix=SKX
4
5define i32 @hadd_16(<16 x i32> %x225) {
6; KNL-LABEL: hadd_16:
7; KNL:       # %bb.0:
8; KNL-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
9; KNL-NEXT:    vpaddd %zmm1, %zmm0, %zmm0
10; KNL-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[1,1,2,3]
11; KNL-NEXT:    vpaddd %zmm1, %zmm0, %zmm0
12; KNL-NEXT:    vmovd %xmm0, %eax
13; KNL-NEXT:    retq
14;
15; SKX-LABEL: hadd_16:
16; SKX:       # %bb.0:
17; SKX-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
18; SKX-NEXT:    vpaddd %zmm1, %zmm0, %zmm0
19; SKX-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[1,1,2,3]
20; SKX-NEXT:    vpaddd %zmm1, %zmm0, %zmm0
21; SKX-NEXT:    vmovd %xmm0, %eax
22; SKX-NEXT:    vzeroupper
23; SKX-NEXT:    retq
24  %x226 = shufflevector <16 x i32> %x225, <16 x i32> undef, <16 x i32> <i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
25  %x227 = add <16 x i32> %x225, %x226
26  %x228 = shufflevector <16 x i32> %x227, <16 x i32> undef, <16 x i32> <i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
27  %x229 = add <16 x i32> %x227, %x228
28  %x230 = extractelement <16 x i32> %x229, i32 0
29  ret i32 %x230
30}
31
32define i32 @hsub_16(<16 x i32> %x225) {
33; KNL-LABEL: hsub_16:
34; KNL:       # %bb.0:
35; KNL-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
36; KNL-NEXT:    vpaddd %zmm1, %zmm0, %zmm0
37; KNL-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[1,1,2,3]
38; KNL-NEXT:    vpsubd %zmm1, %zmm0, %zmm0
39; KNL-NEXT:    vmovd %xmm0, %eax
40; KNL-NEXT:    retq
41;
42; SKX-LABEL: hsub_16:
43; SKX:       # %bb.0:
44; SKX-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
45; SKX-NEXT:    vpaddd %zmm1, %zmm0, %zmm0
46; SKX-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[1,1,2,3]
47; SKX-NEXT:    vpsubd %zmm1, %zmm0, %zmm0
48; SKX-NEXT:    vmovd %xmm0, %eax
49; SKX-NEXT:    vzeroupper
50; SKX-NEXT:    retq
51  %x226 = shufflevector <16 x i32> %x225, <16 x i32> undef, <16 x i32> <i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
52  %x227 = add <16 x i32> %x225, %x226
53  %x228 = shufflevector <16 x i32> %x227, <16 x i32> undef, <16 x i32> <i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
54  %x229 = sub <16 x i32> %x227, %x228
55  %x230 = extractelement <16 x i32> %x229, i32 0
56  ret i32 %x230
57}
58
59define float @fhadd_16(<16 x float> %x225) {
60; KNL-LABEL: fhadd_16:
61; KNL:       # %bb.0:
62; KNL-NEXT:    vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
63; KNL-NEXT:    vaddps %zmm1, %zmm0, %zmm0
64; KNL-NEXT:    vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
65; KNL-NEXT:    vaddps %zmm1, %zmm0, %zmm0
66; KNL-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
67; KNL-NEXT:    retq
68;
69; SKX-LABEL: fhadd_16:
70; SKX:       # %bb.0:
71; SKX-NEXT:    vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
72; SKX-NEXT:    vaddps %zmm1, %zmm0, %zmm0
73; SKX-NEXT:    vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
74; SKX-NEXT:    vaddps %zmm1, %zmm0, %zmm0
75; SKX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
76; SKX-NEXT:    vzeroupper
77; SKX-NEXT:    retq
78  %x226 = shufflevector <16 x float> %x225, <16 x float> undef, <16 x i32> <i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
79  %x227 = fadd <16 x float> %x225, %x226
80  %x228 = shufflevector <16 x float> %x227, <16 x float> undef, <16 x i32> <i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
81  %x229 = fadd <16 x float> %x227, %x228
82  %x230 = extractelement <16 x float> %x229, i32 0
83  ret float %x230
84}
85
86define float @fhsub_16(<16 x float> %x225) {
87; KNL-LABEL: fhsub_16:
88; KNL:       # %bb.0:
89; KNL-NEXT:    vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
90; KNL-NEXT:    vaddps %zmm1, %zmm0, %zmm0
91; KNL-NEXT:    vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
92; KNL-NEXT:    vsubps %zmm1, %zmm0, %zmm0
93; KNL-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
94; KNL-NEXT:    retq
95;
96; SKX-LABEL: fhsub_16:
97; SKX:       # %bb.0:
98; SKX-NEXT:    vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
99; SKX-NEXT:    vaddps %zmm1, %zmm0, %zmm0
100; SKX-NEXT:    vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
101; SKX-NEXT:    vsubps %zmm1, %zmm0, %zmm0
102; SKX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
103; SKX-NEXT:    vzeroupper
104; SKX-NEXT:    retq
105  %x226 = shufflevector <16 x float> %x225, <16 x float> undef, <16 x i32> <i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
106  %x227 = fadd <16 x float> %x225, %x226
107  %x228 = shufflevector <16 x float> %x227, <16 x float> undef, <16 x i32> <i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
108  %x229 = fsub <16 x float> %x227, %x228
109  %x230 = extractelement <16 x float> %x229, i32 0
110  ret float %x230
111}
112
113define <16 x i32> @hadd_16_3(<16 x i32> %x225, <16 x i32> %x227) {
114; KNL-LABEL: hadd_16_3:
115; KNL:       # %bb.0:
116; KNL-NEXT:    vshufps {{.*#+}} ymm2 = ymm0[0,2],ymm1[0,2],ymm0[4,6],ymm1[4,6]
117; KNL-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[1,3],ymm1[1,3],ymm0[5,7],ymm1[5,7]
118; KNL-NEXT:    vpaddd %zmm0, %zmm2, %zmm0
119; KNL-NEXT:    retq
120;
121; SKX-LABEL: hadd_16_3:
122; SKX:       # %bb.0:
123; SKX-NEXT:    vshufps {{.*#+}} ymm2 = ymm0[0,2],ymm1[0,2],ymm0[4,6],ymm1[4,6]
124; SKX-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[1,3],ymm1[1,3],ymm0[5,7],ymm1[5,7]
125; SKX-NEXT:    vpaddd %zmm0, %zmm2, %zmm0
126; SKX-NEXT:    retq
127  %x226 = shufflevector <16 x i32> %x225, <16 x i32> %x227, <16 x i32> <i32 0, i32 2, i32 16, i32 18
128, i32 4, i32 6, i32 20, i32 22, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
129  %x228 = shufflevector <16 x i32> %x225, <16 x i32> %x227, <16 x i32> <i32 1, i32 3, i32 17, i32 19
130, i32 5 , i32 7, i32 21,   i32 23, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef,
131 i32 undef, i32 undef>
132  %x229 = add <16 x i32> %x226, %x228
133  ret <16 x i32> %x229
134}
135
136define <16 x float> @fhadd_16_3(<16 x float> %x225, <16 x float> %x227) {
137; KNL-LABEL: fhadd_16_3:
138; KNL:       # %bb.0:
139; KNL-NEXT:    vshufps {{.*#+}} ymm2 = ymm0[0,2],ymm1[0,2],ymm0[4,6],ymm1[4,6]
140; KNL-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[1,3],ymm1[1,3],ymm0[5,7],ymm1[5,7]
141; KNL-NEXT:    vaddps %zmm0, %zmm2, %zmm0
142; KNL-NEXT:    retq
143;
144; SKX-LABEL: fhadd_16_3:
145; SKX:       # %bb.0:
146; SKX-NEXT:    vshufps {{.*#+}} ymm2 = ymm0[0,2],ymm1[0,2],ymm0[4,6],ymm1[4,6]
147; SKX-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[1,3],ymm1[1,3],ymm0[5,7],ymm1[5,7]
148; SKX-NEXT:    vaddps %zmm0, %zmm2, %zmm0
149; SKX-NEXT:    retq
150  %x226 = shufflevector <16 x float> %x225, <16 x float> %x227, <16 x i32> <i32 0, i32 2, i32 16, i32 18
151, i32 4, i32 6, i32 20, i32 22, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
152  %x228 = shufflevector <16 x float> %x225, <16 x float> %x227, <16 x i32> <i32 1, i32 3, i32 17, i32 19
153, i32 5 , i32 7, i32 21,   i32 23, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
154  %x229 = fadd <16 x float> %x226, %x228
155  ret <16 x float> %x229
156}
157
158define <8 x double> @fhadd_16_4(<8 x double> %x225, <8 x double> %x227) {
159; KNL-LABEL: fhadd_16_4:
160; KNL:       # %bb.0:
161; KNL-NEXT:    vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
162; KNL-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
163; KNL-NEXT:    vaddpd %zmm0, %zmm2, %zmm0
164; KNL-NEXT:    retq
165;
166; SKX-LABEL: fhadd_16_4:
167; SKX:       # %bb.0:
168; SKX-NEXT:    vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
169; SKX-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
170; SKX-NEXT:    vaddpd %zmm0, %zmm2, %zmm0
171; SKX-NEXT:    retq
172  %x226 = shufflevector <8 x double> %x225, <8 x double> %x227, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 undef, i32 undef, i32 undef, i32 undef>
173  %x228 = shufflevector <8 x double> %x225, <8 x double> %x227, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 undef ,i32 undef, i32 undef, i32 undef>
174  %x229 = fadd <8 x double> %x226, %x228
175  ret <8 x double> %x229
176}
177
178define <4 x double> @fadd_noundef_low(<8 x double> %x225, <8 x double> %x227) {
179; KNL-LABEL: fadd_noundef_low:
180; KNL:       # %bb.0:
181; KNL-NEXT:    vunpcklpd {{.*#+}} zmm2 = zmm0[0],zmm1[0],zmm0[2],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6]
182; KNL-NEXT:    vunpckhpd {{.*#+}} zmm0 = zmm0[1],zmm1[1],zmm0[3],zmm1[3],zmm0[5],zmm1[5],zmm0[7],zmm1[7]
183; KNL-NEXT:    vaddpd %zmm0, %zmm2, %zmm0
184; KNL-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
185; KNL-NEXT:    retq
186;
187; SKX-LABEL: fadd_noundef_low:
188; SKX:       # %bb.0:
189; SKX-NEXT:    vunpcklpd {{.*#+}} zmm2 = zmm0[0],zmm1[0],zmm0[2],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6]
190; SKX-NEXT:    vunpckhpd {{.*#+}} zmm0 = zmm0[1],zmm1[1],zmm0[3],zmm1[3],zmm0[5],zmm1[5],zmm0[7],zmm1[7]
191; SKX-NEXT:    vaddpd %zmm0, %zmm2, %zmm0
192; SKX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
193; SKX-NEXT:    retq
194  %x226 = shufflevector <8 x double> %x225, <8 x double> %x227, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
195  %x228 = shufflevector <8 x double> %x225, <8 x double> %x227, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5 ,i32 13, i32 7, i32 15>
196  %x229 = fadd <8 x double> %x226, %x228
197  %x230 = shufflevector <8 x double> %x229, <8 x double> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
198  ret <4 x double> %x230
199}
200
201define <4 x double> @fadd_noundef_high(<8 x double> %x225, <8 x double> %x227) {
202; KNL-LABEL: fadd_noundef_high:
203; KNL:       # %bb.0:
204; KNL-NEXT:    vunpcklpd {{.*#+}} zmm2 = zmm0[0],zmm1[0],zmm0[2],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6]
205; KNL-NEXT:    vunpckhpd {{.*#+}} zmm0 = zmm0[1],zmm1[1],zmm0[3],zmm1[3],zmm0[5],zmm1[5],zmm0[7],zmm1[7]
206; KNL-NEXT:    vaddpd %zmm0, %zmm2, %zmm0
207; KNL-NEXT:    vextractf64x4 $1, %zmm0, %ymm0
208; KNL-NEXT:    retq
209;
210; SKX-LABEL: fadd_noundef_high:
211; SKX:       # %bb.0:
212; SKX-NEXT:    vunpcklpd {{.*#+}} zmm2 = zmm0[0],zmm1[0],zmm0[2],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6]
213; SKX-NEXT:    vunpckhpd {{.*#+}} zmm0 = zmm0[1],zmm1[1],zmm0[3],zmm1[3],zmm0[5],zmm1[5],zmm0[7],zmm1[7]
214; SKX-NEXT:    vaddpd %zmm0, %zmm2, %zmm0
215; SKX-NEXT:    vextractf64x4 $1, %zmm0, %ymm0
216; SKX-NEXT:    retq
217  %x226 = shufflevector <8 x double> %x225, <8 x double> %x227, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
218  %x228 = shufflevector <8 x double> %x225, <8 x double> %x227, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5 ,i32 13, i32 7, i32 15>
219  %x229 = fadd <8 x double> %x226, %x228
220  %x230 = shufflevector <8 x double> %x229, <8 x double> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
221  ret <4 x double> %x230
222}
223
224
225define <8 x i32> @hadd_16_3_sv(<16 x i32> %x225, <16 x i32> %x227) {
226; KNL-LABEL: hadd_16_3_sv:
227; KNL:       # %bb.0:
228; KNL-NEXT:    vshufps {{.*#+}} ymm2 = ymm0[0,2],ymm1[0,2],ymm0[4,6],ymm1[4,6]
229; KNL-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[1,3],ymm1[1,3],ymm0[5,7],ymm1[5,7]
230; KNL-NEXT:    vpaddd %zmm0, %zmm2, %zmm0
231; KNL-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
232; KNL-NEXT:    retq
233;
234; SKX-LABEL: hadd_16_3_sv:
235; SKX:       # %bb.0:
236; SKX-NEXT:    vshufps {{.*#+}} ymm2 = ymm0[0,2],ymm1[0,2],ymm0[4,6],ymm1[4,6]
237; SKX-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[1,3],ymm1[1,3],ymm0[5,7],ymm1[5,7]
238; SKX-NEXT:    vpaddd %zmm0, %zmm2, %zmm0
239; SKX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
240; SKX-NEXT:    retq
241  %x226 = shufflevector <16 x i32> %x225, <16 x i32> %x227, <16 x i32> <i32 0, i32 2, i32 16, i32 18
242, i32 4, i32 6, i32 20, i32 22, i32 8, i32 10, i32 24, i32 26, i32 12, i32 14, i32 28, i32 30>
243  %x228 = shufflevector <16 x i32> %x225, <16 x i32> %x227, <16 x i32> <i32 1, i32 3, i32 17, i32 19
244, i32 5 , i32 7, i32 21,   i32 23, i32 9, i32 11, i32 25, i32 27, i32 13, i32 15,
245 i32 29, i32 31>
246  %x229 = add <16 x i32> %x226, %x228
247  %x230 = shufflevector <16 x i32> %x229, <16 x i32> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4 ,i32 5, i32 6, i32 7>
248  ret <8 x i32> %x230
249}
250
251
252define double @fadd_noundef_eel(<8 x double> %x225, <8 x double> %x227) {
253; KNL-LABEL: fadd_noundef_eel:
254; KNL:       # %bb.0:
255; KNL-NEXT:    vunpcklpd {{.*#+}} zmm2 = zmm0[0],zmm1[0],zmm0[2],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6]
256; KNL-NEXT:    vunpckhpd {{.*#+}} zmm0 = zmm0[1],zmm1[1],zmm0[3],zmm1[3],zmm0[5],zmm1[5],zmm0[7],zmm1[7]
257; KNL-NEXT:    vaddpd %zmm0, %zmm2, %zmm0
258; KNL-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
259; KNL-NEXT:    retq
260;
261; SKX-LABEL: fadd_noundef_eel:
262; SKX:       # %bb.0:
263; SKX-NEXT:    vunpcklpd {{.*#+}} zmm2 = zmm0[0],zmm1[0],zmm0[2],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6]
264; SKX-NEXT:    vunpckhpd {{.*#+}} zmm0 = zmm0[1],zmm1[1],zmm0[3],zmm1[3],zmm0[5],zmm1[5],zmm0[7],zmm1[7]
265; SKX-NEXT:    vaddpd %zmm0, %zmm2, %zmm0
266; SKX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
267; SKX-NEXT:    vzeroupper
268; SKX-NEXT:    retq
269  %x226 = shufflevector <8 x double> %x225, <8 x double> %x227, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
270  %x228 = shufflevector <8 x double> %x225, <8 x double> %x227, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5 ,i32 13, i32 7, i32 15>
271  %x229 = fadd <8 x double> %x226, %x228
272  %x230 = extractelement <8 x double> %x229, i32 0
273  ret double %x230
274}
275
276
277
278define double @fsub_noundef_ee (<8 x double> %x225, <8 x double> %x227) {
279; KNL-LABEL: fsub_noundef_ee:
280; KNL:       # %bb.0:
281; KNL-NEXT:    vunpcklpd {{.*#+}} zmm2 = zmm0[0],zmm1[0],zmm0[2],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6]
282; KNL-NEXT:    vunpckhpd {{.*#+}} zmm0 = zmm0[1],zmm1[1],zmm0[3],zmm1[3],zmm0[5],zmm1[5],zmm0[7],zmm1[7]
283; KNL-NEXT:    vsubpd %zmm0, %zmm2, %zmm0
284; KNL-NEXT:    vextractf32x4 $2, %zmm0, %xmm0
285; KNL-NEXT:    vpermilpd {{.*#+}} xmm0 = xmm0[1,0]
286; KNL-NEXT:    retq
287;
288; SKX-LABEL: fsub_noundef_ee:
289; SKX:       # %bb.0:
290; SKX-NEXT:    vunpcklpd {{.*#+}} zmm2 = zmm0[0],zmm1[0],zmm0[2],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6]
291; SKX-NEXT:    vunpckhpd {{.*#+}} zmm0 = zmm0[1],zmm1[1],zmm0[3],zmm1[3],zmm0[5],zmm1[5],zmm0[7],zmm1[7]
292; SKX-NEXT:    vsubpd %zmm0, %zmm2, %zmm0
293; SKX-NEXT:    vextractf32x4 $2, %zmm0, %xmm0
294; SKX-NEXT:    vpermilpd {{.*#+}} xmm0 = xmm0[1,0]
295; SKX-NEXT:    vzeroupper
296; SKX-NEXT:    retq
297  %x226 = shufflevector <8 x double> %x225, <8 x double> %x227, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
298  %x228 = shufflevector <8 x double> %x225, <8 x double> %x227, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5 ,i32 13, i32 7, i32 15>
299  %x229 = fsub <8 x double> %x226, %x228
300  %x230 = extractelement <8 x double> %x229, i32 5
301  ret double %x230
302}
303
304