source: CIVL/examples/languageFeatures/bundleTest2_conc.cvl

main
Last change on this file was ea777aa, checked in by Alex Wilton <awilton@…>, 3 years ago

Moved examples, include, build_default.properties, common.xml, and README out from dev.civl.com into the root of the repo.

git-svn-id: svn://vsl.cis.udel.edu/civl/trunk@5704 fb995dde-84ed-4084-dfe6-e5aef3e2452c

  • Property mode set to 100644
File size: 1.8 KB
RevLine 
[aaa9c8d]1#include <bundle.cvh>
2
3$input int M = 50;
4$input int N = 40;
5$input int L = 35;
6$input int I;
7$assume( 10 < M && 10 < N && 10 < L && 0 <= I && I < 10);
8
9$input int X[M][N];
10$input int Y[N][M];
11$input int Z[L][M][N];
12
13int x[M][N];
14int y[N][M];
15int z[L][M][N];
16int zz[L][N][M];
17int w[M][L][N];
18
19#define MN (M*N-1)
20
21int main() {
22 int dat = 6;
23 $bundle bun = $bundle_pack(&dat, sizeof(int));
24
25 $bundle_unpack(bun, &w[1][2][3]);
26 $assert(w[1][2][3] == dat);
27
28 bun = $bundle_pack(X, sizeof(int) * M * N);
29 // [M][N] in [M][L][N] from [0][0][0]
30 $bundle_unpack(bun, w);
31 $assert(
32 w[ 0 ][ 0 ][ 0 ] ==
33 X[ 0 ][ 0 ]
34 );
35 $assert(
36 w[0][1][1] == X[1][1] && w[0][0][1] == X[0][1] && w[0][2][2] == X[2][2]
37 );
38 $assert(w[ MN / (L*N) ][ (MN % (L*N)) / N ][ (MN % (L*N)) % N] ==
39 X[M-1][N-1]
40 );
41
42 /*
43 SALR bug, following will crash ...
44 $assert($forall (int i : 0 .. (M*N)-1)
45 w[ i / (N*L) ][ (i % (N*L)) / N ][ ((i % (N*L))) % N ] ==
46 X[ i / N ][ i % N ]
47 );
48 */
49 $bundle_unpack(bun, x);
50 $assert($forall (int i : 0 .. M-1) ($forall (int j : 0 .. N-1)
51 x[i][j] == X[i][j]
52 ));
53 // [M][N] -> [N][M]
54 $bundle_unpack(bun, y);
55 $assert($forall (int i : 0 .. N-1) ($forall (int j : 0 .. M-1)
56 y[i][j] == X[(i*M + j) / N][(i*M + j) % N]
57 ));
58
59 $bundle_unpack(bun, z);
60 $assert($forall (int i : 0 .. M-1) ($forall (int j : 0 .. N-1)
61 z[0][i][j] == X[i][j]
62 ));
63
64 $bundle_unpack(bun, z[I]);
65 $assert($forall (int i : 0 .. M-1) ($forall (int j : 0 .. N-1)
66 z[I][i][j] == X[i][j]
67 ));
68
69 // [M][N] -> [N][M]
70 $bundle_unpack(bun, zz[I]);
71 $assert($forall (int i : 0 .. N-1) ($forall (int j : 0 .. M-1)
72 zz[I][i][j] == X[(i*M + j) / N][(i*M + j) % N]
73 ));
74}
Note: See TracBrowser for help on using the repository browser.