Add matmult tests
[openscop.git] / tests / test_matmult_relation.scop
blob8d096284913ae0d04052940f65dd10bc0ac20de1
1 # Matmul example, relation representation
3 OpenScop
5 # =============================================== Global
6 # Backend Language
9 # Context
10 CONTEXT
11 1 3 0 0 0 1
12    1    1   -1    ## N-1 >= 0
14 # Parameter names are provided
16 # Parameter names
17
19 # Iterator names are provided
21 # Iterator names
22 i j k 
24 # Scattering dimension names are not provided
27 # Number of statements
30 # =============================================== Statement 1
31 # Number of relations describing the statement
34 # ----------------------------------------------  1.1 Domain
35 DOMAIN
36 4 5 2 0 0 1
37 # e/i   i    j    N    1
38    1    1    0    0    0    ## i >= 0
39    1   -1    0    1   -1    ## -i+N-1 >= 0
40    1    0    1    0    0    ## j >= 0
41    1    0   -1    1   -1    ## -j+N-1 >= 0
43 # ----------------------------------------------  1.2 Scattering
44 SCATTERING
45 5 10 5 2 0 1
46 # e/i  s1   s2   s3   s4   s5    i    j    N    1 
47    0   -1    0    0    0    0    0    0    0    0    ## s1 = 0
48    0    0   -1    0    0    0    1    0    0    0    ## s2 = i
49    0    0    0   -1    0    0    0    0    0    0    ## s3 = 0
50    0    0    0    0   -1    0    0    1    0    0    ## s4 = j
51    0    0    0    0    0   -1    0    0    0    0    ## s5 = 0
53 # ----------------------------------------------  1.3 Access
54 WRITE
55 3 8 3 2 0 1
56 # e/i  Arr  [1]  [2]   i    j    N    1
57    0   -1    0    0    0    0    0    1    ## C
58    0    0   -1    0    1    0    0    0    ##  [i]
59    0    0    0   -1    0    1    0    0    ##     [j]
61 # ----------------------------------------------  1.4 Body
62 # Statement body is provided
64 # Original iterator names
65 i j 
66 # Statement body
67 C[i][j] = 0.0;
70 # =============================================== Statement 2
71 # Number of relations describing the statement
74 # ----------------------------------------------  2.1 Domain
75 DOMAIN
76 6 6 3 0 0 1
77 # e/i   i    j    k    N    1
78    1    1    0    0    0    0    ## i >= 0
79    1   -1    0    0    1   -1    ## -i+N-1 >= 0
80    1    0    1    0    0    0    ## j >= 0
81    1    0   -1    0    1   -1    ## -j+N-1 >= 0
82    1    0    0    1    0    0    ## k >= 0
83    1    0    0   -1    1   -1    ## -k+N-1 >= 0
85 # ----------------------------------------------  2.2 Scattering
86 SCATTERING
87 7 13 7 3 0 1
88 # e/i  s1   s2   s3   s4   s5   s6   s7    i    j    k    N    1
89    0   -1    0    0    0    0    0    0    0    0    0    0    0   ## s1 = 0
90    0    0   -1    0    0    0    0    0    1    0    0    0    0   ## s2 = i
91    0    0    0   -1    0    0    0    0    0    0    0    0    0   ## s3 = 0
92    0    0    0    0   -1    0    0    0    0    1    0    0    0   ## s4 = j
93    0    0    0    0    0   -1    0    0    0    0    0    0    1   ## s5 = 1
94    0    0    0    0    0    0   -1    0    0    0    1    0    0   ## s6 = k
95    0    0    0    0    0    0    0   -1    0    0    0    0    0   ## s7 = 0
97 # ----------------------------------------------  2.3 Access
98 RDWR
99 3 9 3 3 0 1
100 # e/i  Arr  [1]  [2]   i    j    k    N    1
101    0   -1    0    0    0    0    0    0    1    ## C
102    0    0   -1    0    1    0    0    0    0    ##  [i]
103    0    0    0   -1    0    1    0    0    0    ##     [j]
105 READ
106 3 9 3 3 0 1
107 # e/i  Arr  [1]  [2]   i    j    k    N    1
108    0   -1    0    0    0    0    0    0    2    ## A
109    0    0   -1    0    1    0    0    0    0    ##  [i]
110    0    0    0   -1    0    0    1    0    0    ##     [k]
112 READ
113 3 9 3 3 0 1
114 # e/i  Arr  [1]  [2]   i    j    k    N    1
115    0   -1    0    0    0    0    0    0    3    ## B
116    0    0   -1    0    0    0    1    0    0    ##  [k]
117    0    0    0   -1    0    1    0    0    0    ##     [j]
119 # ----------------------------------------------  2.4 Body
120 # Statement body is provided
122 # Original iterator names
123 i j k 
124 # Statement body
125 C[i][j] = C[i][j] + A[i][k] * B[k][j];