| /* Test the attribute((optimize)) really works. Do this test by checking |
| whether we vectorize a simple loop. */ |
| /* { dg-do compile } */ |
| /* { dg-options "-O1 -msse2 -mfpmath=sse -march=k8 --param min-insn-to-prefetch-ratio=0" } */ |
| /* { dg-final { scan-assembler "prefetcht0" } } */ |
| /* { dg-final { scan-assembler "addps" } } */ |
| /* { dg-final { scan-assembler "subss" } } */ |
| |
| #define SIZE 10240 |
| float a[SIZE] __attribute__((__aligned__(32))); |
| float b[SIZE] __attribute__((__aligned__(32))); |
| float c[SIZE] __attribute__((__aligned__(32))); |
| |
| /* This should vectorize. */ |
| void opt3 (void) __attribute__((__optimize__(3,"unroll-all-loops,-fprefetch-loop-arrays"))); |
| |
| void |
| opt3 (void) |
| { |
| int i; |
| |
| for (i = 0; i < SIZE; i++) |
| a[i] = b[i] + c[i]; |
| } |
| |
| /* This should not vectorize. */ |
| void |
| not_opt3 (void) |
| { |
| int i; |
| |
| for (i = 0; i < SIZE; i++) |
| a[i] = b[i] - c[i]; |
| } |
| |