aboutsummaryrefslogtreecommitdiff
path: root/tests/performance/18_mv_new.sy
diff options
context:
space:
mode:
Diffstat (limited to 'tests/performance/18_mv_new.sy')
-rw-r--r--tests/performance/18_mv_new.sy83
1 files changed, 83 insertions, 0 deletions
diff --git a/tests/performance/18_mv_new.sy b/tests/performance/18_mv_new.sy
new file mode 100644
index 0000000..632c2fb
--- /dev/null
+++ b/tests/performance/18_mv_new.sy
@@ -0,0 +1,83 @@
+
+int A[1024][1024];
+int B[1024];
+int C[1024];
+
+void mv(int n, int A[][1024], int B[], int C[])
+{
+ int i, k;
+
+ i = 0;
+ while (i < n)
+ {
+ C[i] = 0;
+ i = i + 1;
+ }
+
+ i = 0;
+ k = 0;
+ while (k < n)
+ {
+ i = 0;
+ while (i < n) //L8
+ {
+ C[i] = C[i] + A[k][i] * B[i];
+ i = i + 1;
+ }
+ k = k + 1;
+ }
+}
+
+int main()
+{
+ int n = getint();
+ int i, j;
+
+ i = 0;
+ j = 0;
+ while (i < n)
+ {
+ j = 0;
+ while (j < n)
+ {
+ A[i][j] = getint();
+ j = j + 1;
+ }
+ i = i + 1;
+ }
+ i = 0;
+ j = 0;
+ while (i < n)
+ {
+ B[i] = getint();
+ i = i + 1;
+ }
+
+ starttime();
+
+ i = 0;
+ while (i < 500)
+ {
+ mv(n, A, B, C);
+ mv(n, A, C, B);
+ i = i + 1;
+ }
+
+ int ans = 0;
+ i = 0;
+ while (i < n)
+ {
+ j = 0;
+ while (j < n)
+ {
+ ans = ans + B[i];
+ j = j + 1;
+ }
+ i = i + 1;
+ }
+ stoptime();
+ putint(ans);
+ putch(10);
+
+ return 0;
+}