summaryrefslogtreecommitdiff
path: root/omegalib/examples/syr2k.out
blob: 345ad049bdcf47a9aea353f188f8238c41979a8c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
>>> # This example of code generation comes from
>>> #        "Access Normalization: Loop Restructuring for NUMA Compilers"
>>> #           by Wei Li and Keshav Pingali
>>> #           Cornell Tech. report TR 92-1278
>>> Symbolic n,b;
>>> 
>>> IS10 := {[i,j,k] : 1 <= i <= j <= n && j <= i+2b-2
>>> 		&& i-b+1,j-b+1,1 <= k <= i+b-1,j+b-1,n};
>>> T10 :={[i,j,k] -> [j-i+1,k-j,k]};
>>> 
>>> known := {[*,*,*] : 1 <= b <= n};
>>> 
>>> codegen T10:IS10;
for(t1 = 1; t1 <= min(2*b-1,n); t1++) {
  for(t2 = max(-b+1,-n+1); t2 <= min(b-t1,n-t1); t2++) {
    for(t3 = max(t1+t2,1); t3 <= min(t2+n,n); t3++) {
      s1(t3-t1-t2+1,t3-t2,t3);
    }
  }
}

>>> codegen T10:IS10 given known;
for(t1 = 1; t1 <= min(n,2*b-1); t1++) {
  for(t2 = -b+1; t2 <= b-t1; t2++) {
    for(t3 = max(t1+t2,1); t3 <= min(n,n+t2); t3++) {
      s1(t3-t1-t2+1,t3-t2,t3);
    }
  }
}

>>> codegen 2 T10:IS10;
for(t1 = 1; t1 <= min(2*b-1,n); t1++) {
  for(t2 = max(-b+1,-n+1); t2 <= -t1; t2++) {
    for(t3 = 1; t3 <= t2+n; t3++) {
      s1(t3-t1-t2+1,t3-t2,t3);
    }
  }
  for(t2 = max(-t1+1,-b+1); t2 <= min(-t1+b,-1); t2++) {
    for(t3 = t1+t2; t3 <= t2+n; t3++) {
      s1(t3-t1-t2+1,t3-t2,t3);
    }
  }
  for(t2 = 0; t2 <= min(-t1+n,-t1+b); t2++) {
    for(t3 = t1+t2; t3 <= n; t3++) {
      s1(t3-t1-t2+1,t3-t2,t3);
    }
  }
}

>>> codegen 2 T10:IS10 given known;
for(t1 = 1; t1 <= min(n,2*b-1); t1++) {
  for(t2 = -b+1; t2 <= -t1; t2++) {
    for(t3 = 1; t3 <= t2+n; t3++) {
      s1(t3-t1-t2+1,t3-t2,t3);
    }
  }
  for(t2 = max(-t1+1,-b+1); t2 <= min(b-t1,0); t2++) {
    for(t3 = t2+t1; t3 <= t2+n; t3++) {
      s1(t3-t1-t2+1,t3-t2,t3);
    }
  }
  for(t2 = 1; t2 <= b-t1; t2++) {
    for(t3 = t1+t2; t3 <= n; t3++) {
      s1(t3-t1-t2+1,t3-t2,t3);
    }
  }
}