1/* { dg-do run } */ 2/* { dg-options "-O3 -mavx" } */ 3/* { dg-require-effective-target avx_runtime } */ 4 5extern void abort (void); 6double ad[1024]; 7float af[1024]; 8short as[1024]; 9int ai[1024]; 10long long all[1024]; 11unsigned short aus[1024]; 12unsigned int au[1024]; 13unsigned long long aull[1024]; 14 15#define F(var) \ 16__attribute__((noinline, noclone)) __typeof (var[0]) \ 17f##var (void) \ 18{ \ 19 int i; \ 20 __typeof (var[0]) r = 0; \ 21 for (i = 0; i < 1024; i++) \ 22 r = r > var[i] ? r : var[i]; \ 23 return r; \ 24} 25 26#define TESTS \ 27F (ad) F (af) F (as) F (ai) F (all) F (aus) F (au) F (aull) 28 29TESTS 30 31int 32main () 33{ 34 int i; 35 for (i = 0; i < 1024; i++) 36 { 37#undef F 38#define F(var) var[i] = i; 39 TESTS 40 } 41 for (i = 1023; i < 32 * 1024; i += 1024 + 271) 42 { 43#undef F 44#define F(var) var[i & 1023] = i; if (f##var () != i) abort (); 45 TESTS 46 } 47 return 0; 48} 49