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/] [ldist-6.c] - Blame information for rev 298

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

Line No. Rev Author Line
1 298 jeremybenn
/* { dg-do compile } */
2
/* { dg-options "-O2 -ftree-loop-distribution -fdump-tree-ldist-all" } */
3
 
4
int loop1 (int k)
5
{
6
  unsigned int i;
7
  int a[1000], b[1000], c[1000], d[1000];
8
 
9
  for (i = 2; i < (1000-1); i ++) {
10
    a[i] = k * i; /* S1 */
11
    b[i] = a[i-2] + k; /* S2 */
12
    c[i] = b[i-1] + a[i+1]; /* S3 */
13
    d[i] = c[i-1] + k + i; /* S4 */
14
  }
15
  /* Dependences:
16
     S1->S2 (flow, level 1)
17
     S2->S3 (flow, level 1)
18
     S3->S1 (anti, level 1)
19
     S3->S4 (flow, level 1)
20
 
21
    There are two partitions: {S1, S2, S3} and {S4}.
22
 
23
    {S1, S2, S3} have to be in the same partition because:
24
    - S1 (i) has to be executed before S2 (i+2), as S1 produces a[i] that is then consumed 2 iterations later by S2.
25
    - S2 (i) has to be executed before S3 (i+1), as S2 produces b[i] that is then consumed one iteration later by S3,
26
    - S3 (i) has to be executed before S1 (i+1), as a[i+1] has to execute before the update to a[i],
27
 
28
    {S4} is the consumer partition: it consumes the values from array "c" produced in S3.
29
 
30
    The cost model should fuse all the tasks together as the cost of
31
    fetching data from caches is too high.
32
  */
33
 
34
  return a[1000-2] + b[1000-1] + c[1000-2] + d[1000-2];
35
}
36
 
37
/* { dg-final { scan-tree-dump-times "distributed: split to 2 loops" 0 "ldist" } } */
38
/* { dg-final { cleanup-tree-dump "ldist" } } */

powered by: WebSVN 2.1.0

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