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