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 extern SCALAR bar (void); 10 11 type foo(type x,type y)12foo (type x, type y) 13 { 14 SCALAR f = bar (); 15 return OP (vec, op, suffix) (x, y, DUP (vec, suffix, f)); 16 } 17