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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [builtin-prefetch-1.c] - Blame information for rev 715

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 688 jeremybenn
/* Test that __builtin_prefetch does no harm.
2
 
3
   Prefetch using all valid combinations of rw and locality values.
4
   These must be compile-time constants.  */
5
 
6
#define NO_TEMPORAL_LOCALITY 0
7
#define LOW_TEMPORAL_LOCALITY 1
8
#define MODERATE_TEMPORAL_LOCALITY 1
9
#define HIGH_TEMPORAL_LOCALITY 3
10
 
11
#define WRITE_ACCESS 1
12
#define READ_ACCESS 0
13
 
14
enum locality { none, low, moderate, high };
15
enum rw { read, write };
16
 
17
int arr[10];
18
 
19
void
20
good_const (const int *p)
21
{
22
  __builtin_prefetch (p, 0, 0);
23
  __builtin_prefetch (p, 0, 1);
24
  __builtin_prefetch (p, 0, 2);
25
  __builtin_prefetch (p, READ_ACCESS, 3);
26
  __builtin_prefetch (p, 1, NO_TEMPORAL_LOCALITY);
27
  __builtin_prefetch (p, 1, LOW_TEMPORAL_LOCALITY);
28
  __builtin_prefetch (p, 1, MODERATE_TEMPORAL_LOCALITY);
29
  __builtin_prefetch (p, WRITE_ACCESS, HIGH_TEMPORAL_LOCALITY);
30
}
31
 
32
void
33
good_enum (const int *p)
34
{
35
    __builtin_prefetch (p, read, none);
36
    __builtin_prefetch (p, read, low);
37
    __builtin_prefetch (p, read, moderate);
38
    __builtin_prefetch (p, read, high);
39
    __builtin_prefetch (p, write, none);
40
    __builtin_prefetch (p, write, low);
41
    __builtin_prefetch (p, write, moderate);
42
    __builtin_prefetch (p, write, high);
43
}
44
 
45
void
46
good_expr (const int *p)
47
{
48
  __builtin_prefetch (p, 1 - 1, 6 - (2 * 3));
49
  __builtin_prefetch (p, 1 + 0, 1 + 2);
50
}
51
 
52
void
53
good_vararg (const int *p)
54
{
55
  __builtin_prefetch (p, 0, 3);
56
  __builtin_prefetch (p, 0);
57
  __builtin_prefetch (p, 1);
58
  __builtin_prefetch (p);
59
}
60
 
61
int
62
main ()
63
{
64
  good_const (arr);
65
  good_enum (arr);
66
  good_expr (arr);
67
  good_vararg (arr);
68
  exit (0);
69
}

powered by: WebSVN 2.1.0

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