1 #include <immintrin.h> 2 3 #define PASTER2(x,y) x##y 4 #define PASTER3(x,y,z) _mm##x##_##y##_##z 5 #define TYPE(vec) PASTER2 (__m, vec) 6 #define OP(vec, op, suffix) PASTER3 (vec, op, suffix) 7 #define DUP(vec, suffix, val) PASTER3 (vec, set1, suffix) (val) 8 9 type foo(type x,type y,SCALAR * f)10foo (type x, type y, SCALAR *f) 11 { 12 return OP (vec, op, suffix) (x, DUP (vec, suffix, *f), y); 13 } 14