1/* Test the attribute((optimize)) really works. Do this test by checking 2 whether we vectorize a simple loop. */ 3/* { dg-do compile } */ 4/* { dg-options "-O1 -msse2 -mfpmath=sse -march=k8" } */ 5/* { dg-require-effective-target sse2 } */ 6/* { dg-final { scan-assembler "prefetcht0" } } */ 7/* { dg-final { scan-assembler "addps" } } */ 8/* { dg-final { scan-assembler "subss" } } */ 9 10#define SIZE 10240 11float a[SIZE] __attribute__((__aligned__(32))); 12float b[SIZE] __attribute__((__aligned__(32))); 13float c[SIZE] __attribute__((__aligned__(32))); 14 15/* This should vectorize. */ 16void opt3 (void) __attribute__((__optimize__(3,"unroll-all-loops,-fprefetch-loop-arrays"))); 17 18void 19opt3 (void) 20{ 21 int i; 22 23 for (i = 0; i < SIZE; i++) 24 a[i] = b[i] + c[i]; 25} 26 27/* This should not vectorize. */ 28void 29not_opt3 (void) 30{ 31 int i; 32 33 for (i = 0; i < SIZE; i++) 34 a[i] = b[i] - c[i]; 35} 36 37