OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [gcc.dg/] [tree-ssa/] [prefetch-5.c] - Diff between revs 298 and 338

Only display areas with differences | Details | Blame | View Log

Rev 298 Rev 338
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
/* { dg-require-effective-target ilp32 } */
/* { dg-require-effective-target ilp32 } */
/* { dg-options "-O2 --param min-insn-to-prefetch-ratio=5 -fprefetch-loop-arrays -march=athlon -fdump-tree-aprefetch-details" } */
/* { dg-options "-O2 --param min-insn-to-prefetch-ratio=5 -fprefetch-loop-arrays -march=athlon -fdump-tree-aprefetch-details" } */
 
 
/* These are common idioms for writing variable-length arrays at the end
/* These are common idioms for writing variable-length arrays at the end
   of structures.  We should not deduce anything about the number of iterations
   of structures.  We should not deduce anything about the number of iterations
   of the loops from them.  */
   of the loops from them.  */
 
 
struct tail0
struct tail0
{
{
  int xxx;
  int xxx;
  int yyy[0];
  int yyy[0];
};
};
 
 
int loop0 (int n, struct tail0 *x)
int loop0 (int n, struct tail0 *x)
{
{
  int i, s = 0;
  int i, s = 0;
 
 
  for (i = 0; i < n; i++)
  for (i = 0; i < n; i++)
    s += x->yyy[i];
    s += x->yyy[i];
 
 
  return s;
  return s;
}
}
 
 
struct tail1
struct tail1
{
{
  int xxx;
  int xxx;
  int yyy[1];
  int yyy[1];
};
};
int loop1 (int n, struct tail1 *x)
int loop1 (int n, struct tail1 *x)
{
{
  int i, s = 0;
  int i, s = 0;
 
 
  for (i = 0; i < n; i++)
  for (i = 0; i < n; i++)
    s += x->yyy[i];
    s += x->yyy[i];
 
 
  return s;
  return s;
}
}
 
 
/* It is unlikely that this should be a tail array.  We may deduce that most
/* It is unlikely that this should be a tail array.  We may deduce that most
   likely, the loop iterates about 5 times, and the array is not worth prefetching.  */
   likely, the loop iterates about 5 times, and the array is not worth prefetching.  */
 
 
struct tail5
struct tail5
{
{
  int xxx;
  int xxx;
  int yyy[5];
  int yyy[5];
};
};
int loop5 (int n, struct tail5 *x)
int loop5 (int n, struct tail5 *x)
{
{
  int i, s = 0;
  int i, s = 0;
 
 
  for (i = 0; i < n; i++)
  for (i = 0; i < n; i++)
    s += x->yyy[i];
    s += x->yyy[i];
 
 
  return s;
  return s;
}
}
 
 
/* { dg-final { scan-tree-dump-times "Issued prefetch" 2 "aprefetch" } } */
/* { dg-final { scan-tree-dump-times "Issued prefetch" 2 "aprefetch" } } */
/* { dg-final { scan-tree-dump-times "Not prefetching" 1 "aprefetch" } } */
/* { dg-final { scan-tree-dump-times "Not prefetching" 1 "aprefetch" } } */
/* { dg-final { cleanup-tree-dump "aprefetch" } } */
/* { dg-final { cleanup-tree-dump "aprefetch" } } */
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.