#include "tree-vect.h" /* Extracted from MultiSource/Benchmarks/TSVC/tsc.inc From LLVM test-suite */ #define N 40 int dummy(double[N], double[N], double[N], double[N]); double array[256*256] __attribute__((aligned(32))); double x[N] __attribute__((aligned(32))); double temp; int temp_int; struct GlobalData { __attribute__((aligned(32))) double a[N]; int pad1[3]; __attribute__((aligned(32))) double b[N]; int pad2[5]; __attribute__((aligned(32))) double c[N]; int pad3[7]; __attribute__((aligned(32))) double d[N]; int pad4[11]; } global_data; __attribute__((aligned(32))) double * const a = global_data.a; __attribute__((aligned(32))) double * const b = global_data.b; __attribute__((aligned(32))) double * const c = global_data.c; __attribute__((aligned(32))) double * const d = global_data.d; void init(void); void check(double *_a, double *_b); int s221(void) { int i; init(); for (i = 1; i < N; i++) { a[i] += c[i] * d[i]; b[i] = b[i - 1] + a[i] + d[i]; } check(a, b); return 0; } int set1d(double arr[N], double value) { int i; for (i = 0; i < N; i++) { arr[i] = value; } return 0; } void init(void) { set1d(a, 1); set1d(b, 2); set1d(c, 3); set1d(d, 4); } void abort(void); void check(double *_a, double *_b) { int i; double suma = 0; double sumb = 0; for (i = 0; i < N; i++){ suma += _a[i]; sumb += _b[i]; } if (suma != 508) abort(); if (sumb != 13340.00) abort(); } int main(int argc, char *argv[]) { check_vect (); s221(); return 0; }