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