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.c-torture/] [execute/] [builtin-prefetch-5.c] - Diff between revs 297 and 338

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

Rev 297 Rev 338
/* Test that __builtin_prefetch does no harm.
/* Test that __builtin_prefetch does no harm.
 
 
   Use addresses that are unlikely to be word-aligned.  Some targets
   Use addresses that are unlikely to be word-aligned.  Some targets
   have alignment requirements for prefetch addresses, so make sure the
   have alignment requirements for prefetch addresses, so make sure the
   compiler takes care of that.  This fails if it aborts, anything else
   compiler takes care of that.  This fails if it aborts, anything else
   is OK.  */
   is OK.  */
 
 
struct S {
struct S {
  short a;
  short a;
  short b;
  short b;
  char c[8];
  char c[8];
} s;
} s;
 
 
char arr[100];
char arr[100];
char *ptr = arr;
char *ptr = arr;
int idx = 3;
int idx = 3;
 
 
void
void
arg_ptr (char *p)
arg_ptr (char *p)
{
{
  __builtin_prefetch (p, 0, 0);
  __builtin_prefetch (p, 0, 0);
}
}
 
 
void
void
arg_idx (char *p, int i)
arg_idx (char *p, int i)
{
{
  __builtin_prefetch (&p[i], 0, 0);
  __builtin_prefetch (&p[i], 0, 0);
}
}
 
 
void
void
glob_ptr (void)
glob_ptr (void)
{
{
  __builtin_prefetch (ptr, 0, 0);
  __builtin_prefetch (ptr, 0, 0);
}
}
 
 
void
void
glob_idx (void)
glob_idx (void)
{
{
  __builtin_prefetch (&ptr[idx], 0, 0);
  __builtin_prefetch (&ptr[idx], 0, 0);
}
}
 
 
int
int
main ()
main ()
{
{
  __builtin_prefetch (&s.b, 0, 0);
  __builtin_prefetch (&s.b, 0, 0);
  __builtin_prefetch (&s.c[1], 0, 0);
  __builtin_prefetch (&s.c[1], 0, 0);
 
 
  arg_ptr (&s.c[1]);
  arg_ptr (&s.c[1]);
  arg_ptr (ptr+3);
  arg_ptr (ptr+3);
  arg_idx (ptr, 3);
  arg_idx (ptr, 3);
  arg_idx (ptr+1, 2);
  arg_idx (ptr+1, 2);
  idx = 3;
  idx = 3;
  glob_ptr ();
  glob_ptr ();
  glob_idx ();
  glob_idx ();
  ptr++;
  ptr++;
  idx = 2;
  idx = 2;
  glob_ptr ();
  glob_ptr ();
  glob_idx ();
  glob_idx ();
  exit (0);
  exit (0);
}
}
 
 

powered by: WebSVN 2.1.0

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