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)
10 foo (type x
, type y
, SCALAR
*f
)
12 return OP (vec
, op
, suffix
) (y
, DUP (vec
, suffix
, *f
), x
);