TEST2
#if defined (TEST) || defined (TEST2)
TEST2(z x, y w) TEST2(z x, w y) \
TEST2(x w, y z) TEST2(x w, z y) \
TEST2(w x, y z) TEST2(w x, z y)
TEST2(char, signed)
TEST2(char, unsigned)
TEST2(int, short)
TEST2(int, long)
TEST2(long, long)
TEST2(short, signed)
TEST2(int, signed)
TEST2(long, signed)
TEST2(short, unsigned)
#define TEST4(x, y, z, w) TEST2(x y, z w) TEST2(x y, w z) \
TEST2(int, unsigned)
TEST2(long, unsigned)
TEST2(y x, z w) TEST2(y x, w z) \
TEST2(x z, y w) TEST2(x z, w y) \
TEST2(double, long)