PIPS
vecacc-aligned.c
Go to the documentation of this file.
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4 //#include "tools.h"
5 
6 void vecacc(int n, float* src1, float* src2, float* result)
7 {
8  int i;
9 #pragma vector aligned
10 #pragma ivdep
11  for(i=0;i<n;i++)
12  result[i]=src1[i]*src2[i];
13 }
14 
15 int main(int argc, char **argv)
16 {
17  int n;
18  float *src1, *src2, *result;
19  n = atoi(argv[1]);
20 
21 #define xmalloc(p) \
22  do { \
23  if (posix_memalign((void **) &p, 32, n * sizeof(float))) \
24  return 3; \
25  } while(0);
26 #define vmalloc(p)\
27  do {\
28  p=(float*)malloc(n*sizeof(float));\
29  } while(0)
30 
31  xmalloc(src1);
32  xmalloc(src2);
33  xmalloc(result);
34 
35  init_data_file(argv[2]);
36  init_data_float(src1, n);
37  init_data_float(src2, n);
39 
40  vecacc(n, src1, src2, result);
41 
42  print_array_float("result", result, n);
43 
44  free(src1);
45  free(src2);
46  free(result);
47 
48  return 0;
49 }
50 
51 
void free(void *)
void close_data_file()
Definition: tools.c:48
void print_array_float(const char *name, const float *arr, const unsigned int n)
Definition: tools.c:54
int init_data_float(float *ptr, const unsigned int n)
Definition: tools.c:125
void init_data_file(const char *data_file)
Definition: tools.c:36
#define xmalloc(p)
int main(int argc, char **argv)
void vecacc(int n, float *src1, float *src2, float *result)
Definition: vecacc-aligned.c:6