diff options
Diffstat (limited to 'benchmarks/polybench-syn/stencils/adi.c')
-rw-r--r-- | benchmarks/polybench-syn/stencils/adi.c | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/benchmarks/polybench-syn/stencils/adi.c b/benchmarks/polybench-syn/stencils/adi.c index a424dec..ec2bf2a 100644 --- a/benchmarks/polybench-syn/stencils/adi.c +++ b/benchmarks/polybench-syn/stencils/adi.c @@ -11,7 +11,12 @@ #include "../include/misc.h" +#ifndef SYNTHESIS +#include <stdio.h> +#endif + #define plus(i) i = i + ONE + static void init_array (int n, int u[ 20 + 0][20 + 0]) @@ -21,7 +26,7 @@ void init_array (int n, for (i = 0; i < n; i++) for (j = 0; j < n; j++) { - u[i][j] = (int)(i + n-j) / n; + u[i][j] = divider((int)(i + n-j) ,n); } } @@ -40,6 +45,10 @@ int print_array(int n, for (j = 0; j < n; j++) { res ^= u[i][j]; } +#ifndef SYNTHESIS + printf("finished: %u\n", res); +#endif + return res; } static @@ -50,20 +59,14 @@ void kernel_adi(int tsteps, int n, int q[ 20 + 0][20 + 0]) { int t, i, j; - int DX, DY, DT; int B1, B2; int mul1, mul2; int a, b, c, d, e, f; -#pragma scop - - DX = 1/(int)n; - DY = 1/(int)n; - DT = 1/(int)tsteps; B1 = 2; B2 = 1; - mul1 = B1 * DT / (DX * DX); - mul2 = B2 * DT / (DY * DY); + mul1 = divider(B1 * n * n, tsteps); + mul2 = divider(B2 * n * n, tsteps); a = -(sdivider(mul1,2)); b = 1+mul1; @@ -73,15 +76,15 @@ void kernel_adi(int tsteps, int n, f = d; int ZERO = 0; - for (t=1; t<=tsteps; t++) { + for (t=1; t<=tsteps; t++) { for (i=1; i<n-1; i++) { v[ZERO][i] = 1; p[i][ZERO] = 0; q[i][ZERO] = v[ZERO][i]; for (j=1; j<n-1; j++) { - p[i][j] = -c / (a*p[i][j-1]+b); - q[i][j] = (-d*u[j][i-1]+(1+2*d)*u[j][i] - f*u[j][i+1]-a*q[i][j-1])/(a*p[i][j-1]+b); + p[i][j] = -sdivider(c, (a*p[i][j-1]+b)); + q[i][j] = -sdivider((-d*u[j][i-1]+(1+2*d)*u[j][i] - f*u[j][i+1]-a*q[i][j-1]),(a*p[i][j-1]+b)); } v[n-1][i] = 1; @@ -95,8 +98,8 @@ void kernel_adi(int tsteps, int n, p[i][ZERO] = 0; q[i][ZERO] = u[i][ZERO]; for (j=1; j<n-1; j++) { - p[i][j] = -f / (d*p[i][j-1]+e); - q[i][j] = (-a*v[i-1][j]+(1+2*a)*v[i][j] - c*v[i+1][j]-d*q[i][j-1])/(d*p[i][j-1]+e); + p[i][j] = -sdivider(f, (d*p[i][j-1]+e)); + q[i][j] = sdivider((-a*v[i-1][j]+(1+2*a)*v[i][j] - c*v[i+1][j]-d*q[i][j-1]),(d*p[i][j-1]+e)); } u[i][n-1] = 1; for (j=n-2; j>=1; j--) { @@ -104,10 +107,8 @@ void kernel_adi(int tsteps, int n, } } } -#pragma endscop } - int main() { |