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 --param min-insn-to-prefetch-ratio=0" } */ 5/* { dg-final { scan-assembler "prefetcht0" } } */ 6/* { dg-final { scan-assembler "addps" } } */ 7/* { dg-final { scan-assembler "subss" } } */ 8 9#define SIZE 10240 10float a[SIZE] __attribute__((__aligned__(32))); 11float b[SIZE] __attribute__((__aligned__(32))); 12float c[SIZE] __attribute__((__aligned__(32))); 13 14/* This should vectorize. */ 15void opt3 (void) __attribute__((__optimize__(3,"unroll-all-loops,-fprefetch-loop-arrays"))); 16 17void 18opt3 (void) 19{ 20 int i; 21 22 for (i = 0; i < SIZE; i++) 23 a[i] = b[i] + c[i]; 24} 25 26/* This should not vectorize. */ 27void 28not_opt3 (void) 29{ 30 int i; 31 32 for (i = 0; i < SIZE; i++) 33 a[i] = b[i] - c[i]; 34} 35 36