#include "stdlib.h" #include "dataset.h" void __attribute__((noinline)) vvadd(int coreid, int ncores, size_t n, const data_t* x, const data_t* y, data_t* z) { data_t* to = &z[coreid * (n / ncores)]; const data_t* from1 = &x[coreid * (n / ncores)]; const data_t* from2 = &y[coreid * (n / ncores)]; size_t count = n / ncores; size_t c = (count + 7) / 8; switch(count % 8) { case 0: do { *to++ = *from1++ + *from2++; case 7: *to++ = *from1++ + *from2++; case 6: *to++ = *from1++ + *from2++; case 5: *to++ = *from1++ + *from2++; case 4: *to++ = *from1++ + *from2++; case 3: *to++ = *from1++ + *from2++; case 2: *to++ = *from1++ + *from2++; case 1: *to++ = *from1++ + *from2++; } while(--c > 0); } }