1/* { dg-do run } */ 2/* { dg-options "-mno-sse2 -mno-popcnt -mno-avx" } */ 3 4 5__attribute__((always_inline,target("avx2"))) 6__inline int c1 () 7{ 8 return 0; 9} 10 11__attribute__((always_inline,target("avx"))) 12__inline int c2 () 13{ 14 return 0; 15} 16 17__attribute__((always_inline,target("popcnt"))) 18__inline int c3 () 19{ 20 return 0; 21} 22 23__attribute__((always_inline,target("sse4.2"))) 24__inline int c4 () 25{ 26 return 0; 27} 28 29__attribute__((always_inline,target("sse4.1"))) 30__inline int c5 () 31{ 32 return 0; 33} 34 35__attribute__((always_inline,target("ssse3"))) 36__inline int c6 () 37{ 38 return 0; 39} 40 41__attribute__((always_inline,target("sse3"))) 42__inline int c7 () 43{ 44 return 0; 45} 46 47__attribute__((always_inline,target("sse2"))) 48__inline int c8 () 49{ 50 return 0; 51} 52 53int nop () 54{ 55 return 1; 56} 57 58#pragma GCC push_options 59#pragma GCC target("sse2") 60int C8 () 61{ 62 return c8 (); 63} 64#pragma GCC pop_options 65 66 67#pragma GCC push_options 68#pragma GCC target("sse3") 69int C7 () 70{ 71 return c7 (); 72} 73#pragma GCC pop_options 74 75 76#pragma GCC push_options 77#pragma GCC target("ssse3") 78int C6 () 79{ 80 return c6 (); 81} 82#pragma GCC pop_options 83 84 85#pragma GCC push_options 86#pragma GCC target("sse4.1") 87int C5 () 88{ 89 return c5 (); 90} 91#pragma GCC pop_options 92 93 94#pragma GCC push_options 95#pragma GCC target("sse4.2") 96int C4 () 97{ 98 return c4 (); 99} 100#pragma GCC pop_options 101 102 103#pragma GCC push_options 104#pragma GCC target("popcnt") 105int C3 () 106{ 107 return c3 (); 108} 109#pragma GCC pop_options 110 111 112#pragma GCC push_options 113#pragma GCC target("avx") 114int C2 () 115{ 116 return c2 (); 117} 118#pragma GCC pop_options 119 120 121#pragma GCC push_options 122#pragma GCC target("avx2") 123int C1 () 124{ 125 return c1 (); 126} 127#pragma GCC pop_options 128 129int main () 130{ 131 return C1 () + C2 () + C3 () + C4 () + C5 () + C6 () + C7 () + C8 (); 132} 133