1/* Prefetching when the step is loop invariant. */ 2/* { dg-do compile } */ 3/* { dg-require-effective-target sse2 } */ 4/* { dg-options "-O3 -msse2 -fprefetch-loop-arrays -fdump-tree-aprefetch-details --param min-insn-to-prefetch-ratio=3 --param simultaneous-prefetches=10 -fdump-tree-aprefetch-details" } */ 5 6 7double data[16384]; 8void prefetch_when_non_constant_step_is_invariant(int step, int n) 9{ 10 int a; 11 int b; 12 for (a = 1; a < step; a++) { 13 for (b = 0; b < n; b += 2 * step) { 14 15 int i = 2*(b + a); 16 int j = 2*(b + a + step); 17 18 19 data[j] = data[i]; 20 data[j+1] = data[i+1]; 21 } 22 } 23} 24 25/* { dg-final { scan-tree-dump "Issued prefetch" "aprefetch" } } */ 26/* { dg-final { scan-assembler "prefetcht0" } } */ 27 28/* { dg-final { cleanup-tree-dump "aprefetch" } } */ 29