2018-03-08 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / gcc.target / i386 / pr54400.c
blob5ed5ba066444475bcafa04d5354d3f50b125ca6b
1 /* { dg-do compile } */
2 /* { dg-options "-O2 -msse3 -mfpmath=sse" } */
4 #include <x86intrin.h>
6 double f (__m128d p)
8 return p[0] - p[1];
11 double g1 (__m128d p)
13 return p[0] + p[1];
16 double g2 (__m128d p)
18 return p[1] + p[0];
21 __m128d h (__m128d p, __m128d q)
23 __m128d r = { p[0] - p[1], q[0] - q[1] };
24 return r;
27 __m128d i1 (__m128d p, __m128d q)
29 __m128d r = { p[0] + p[1], q[0] + q[1] };
30 return r;
33 __m128d i2 (__m128d p, __m128d q)
35 __m128d r = { p[0] + p[1], q[1] + q[0] };
36 return r;
39 __m128d i3 (__m128d p, __m128d q)
41 __m128d r = { p[1] + p[0], q[0] + q[1] };
42 return r;
45 __m128d i4 (__m128d p, __m128d q)
47 __m128d r = { p[1] + p[0], q[1] + q[0] };
48 return r;
51 /* { dg-final { scan-assembler-times "hsubpd" 2 } } */
52 /* { dg-final { scan-assembler-times "haddpd" 6 } } */
53 /* { dg-final { scan-assembler-not "unpck" } } */