2015-12-10 Vladimir Makarov <vmakarov@redhat.com>
[official-gcc.git] / gcc / testsuite / gcc.target / i386 / pr57756_2.c
blob0227d8ff402da273071d7f4479e4f11982daa591
1 /* { dg-do run } */
2 /* { dg-options "-mno-sse2 -mno-popcnt -mno-avx" } */
5 __attribute__((always_inline,target("avx2")))
6 __inline int c1 ()
8 return 0;
11 __attribute__((always_inline,target("avx")))
12 __inline int c2 ()
14 return 0;
17 __attribute__((always_inline,target("popcnt")))
18 __inline int c3 ()
20 return 0;
23 __attribute__((always_inline,target("sse4.2")))
24 __inline int c4 ()
26 return 0;
29 __attribute__((always_inline,target("sse4.1")))
30 __inline int c5 ()
32 return 0;
35 __attribute__((always_inline,target("ssse3")))
36 __inline int c6 ()
38 return 0;
41 __attribute__((always_inline,target("sse3")))
42 __inline int c7 ()
44 return 0;
47 __attribute__((always_inline,target("sse2")))
48 __inline int c8 ()
50 return 0;
53 int nop ()
55 return 1;
58 #pragma GCC push_options
59 #pragma GCC target("sse2")
60 int C8 ()
62 return c8 ();
64 #pragma GCC pop_options
67 #pragma GCC push_options
68 #pragma GCC target("sse3")
69 int C7 ()
71 return c7 ();
73 #pragma GCC pop_options
76 #pragma GCC push_options
77 #pragma GCC target("ssse3")
78 int C6 ()
80 return c6 ();
82 #pragma GCC pop_options
85 #pragma GCC push_options
86 #pragma GCC target("sse4.1")
87 int C5 ()
89 return c5 ();
91 #pragma GCC pop_options
94 #pragma GCC push_options
95 #pragma GCC target("sse4.2")
96 int C4 ()
98 return c4 ();
100 #pragma GCC pop_options
103 #pragma GCC push_options
104 #pragma GCC target("popcnt")
105 int C3 ()
107 return c3 ();
109 #pragma GCC pop_options
112 #pragma GCC push_options
113 #pragma GCC target("avx")
114 int C2 ()
116 return c2 ();
118 #pragma GCC pop_options
121 #pragma GCC push_options
122 #pragma GCC target("avx2")
123 int C1 ()
125 return c1 ();
127 #pragma GCC pop_options
129 int main ()
131 return C1 () + C2 () + C3 () + C4 () + C5 () + C6 () + C7 () + C8 ();