|
63 | 63 | ARG_TYPE) \ |
64 | 64 | _CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(RET_TYPE, FUNCTION, ARG_TYPE) |
65 | 65 |
|
66 | | -#define _CLC_DEFINE_RELATIONAL_BINARY_SCALAR(RET_TYPE, FUNCTION, BUILTIN_NAME, \ |
67 | | - ARG0_TYPE, ARG1_TYPE) \ |
68 | | - _CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG0_TYPE x, ARG1_TYPE y) { \ |
69 | | - return BUILTIN_NAME(x, y); \ |
70 | | - } |
71 | | - |
72 | | -#define _CLC_DEFINE_RELATIONAL_BINARY_VEC(RET_TYPE, FUNCTION, ARG0_TYPE, \ |
73 | | - ARG1_TYPE) \ |
74 | | - _CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG0_TYPE x, ARG1_TYPE y) { \ |
75 | | - return (RET_TYPE)((RET_TYPE){FUNCTION(x.lo, y.lo), \ |
76 | | - FUNCTION(x.hi, y.hi)} != (RET_TYPE)0); \ |
77 | | - } |
78 | | - |
79 | | -#define _CLC_DEFINE_RELATIONAL_BINARY_VEC2(RET_TYPE, FUNCTION, ARG0_TYPE, \ |
80 | | - ARG1_TYPE) \ |
81 | | - _CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG0_TYPE x, ARG1_TYPE y) { \ |
82 | | - return (RET_TYPE)((RET_TYPE){FUNCTION(x.lo, y.lo), \ |
83 | | - FUNCTION(x.hi, y.hi)} != (RET_TYPE)0); \ |
84 | | - } |
85 | | - |
86 | | -#define _CLC_DEFINE_RELATIONAL_BINARY_VEC3(RET_TYPE, FUNCTION, ARG0_TYPE, \ |
87 | | - ARG1_TYPE) \ |
88 | | - _CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG0_TYPE x, ARG1_TYPE y) { \ |
89 | | - return (RET_TYPE)((RET_TYPE){FUNCTION(x.s0, y.s0), FUNCTION(x.s1, y.s1), \ |
90 | | - FUNCTION(x.s2, y.s2)} != (RET_TYPE)0); \ |
91 | | - } |
92 | | - |
93 | | -#define _CLC_DEFINE_RELATIONAL_BINARY_VEC4(RET_TYPE, FUNCTION, ARG0_TYPE, \ |
94 | | - ARG1_TYPE) \ |
95 | | - _CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG0_TYPE x, ARG1_TYPE y) { \ |
96 | | - return (RET_TYPE)((RET_TYPE){FUNCTION(x.s0, y.s0), FUNCTION(x.s1, y.s1), \ |
97 | | - FUNCTION(x.s2, y.s2), \ |
98 | | - FUNCTION(x.s3, y.s3)} != (RET_TYPE)0); \ |
99 | | - } |
100 | | - |
101 | | -#define _CLC_DEFINE_RELATIONAL_BINARY_VEC8(RET_TYPE, FUNCTION, ARG0_TYPE, \ |
102 | | - ARG1_TYPE) \ |
103 | | - _CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG0_TYPE x, ARG1_TYPE y) { \ |
104 | | - return (RET_TYPE)((RET_TYPE){FUNCTION(x.s0, y.s0), FUNCTION(x.s1, y.s1), \ |
105 | | - FUNCTION(x.s2, y.s2), FUNCTION(x.s3, y.s3), \ |
106 | | - FUNCTION(x.s4, y.s4), FUNCTION(x.s5, y.s5), \ |
107 | | - FUNCTION(x.s6, y.s6), \ |
108 | | - FUNCTION(x.s7, y.s7)} != (RET_TYPE)0); \ |
109 | | - } |
110 | | - |
111 | | -#define _CLC_DEFINE_RELATIONAL_BINARY_VEC16(RET_TYPE, FUNCTION, ARG0_TYPE, \ |
112 | | - ARG1_TYPE) \ |
113 | | - _CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG0_TYPE x, ARG1_TYPE y) { \ |
114 | | - return (RET_TYPE)((RET_TYPE){FUNCTION(x.s0, y.s0), FUNCTION(x.s1, y.s1), \ |
115 | | - FUNCTION(x.s2, y.s2), FUNCTION(x.s3, y.s3), \ |
116 | | - FUNCTION(x.s4, y.s4), FUNCTION(x.s5, y.s5), \ |
117 | | - FUNCTION(x.s6, y.s6), FUNCTION(x.s7, y.s7), \ |
118 | | - FUNCTION(x.s8, y.s8), FUNCTION(x.s9, y.s9), \ |
119 | | - FUNCTION(x.sa, y.sa), FUNCTION(x.sb, y.sb), \ |
120 | | - FUNCTION(x.sc, y.sc), FUNCTION(x.sd, y.sd), \ |
121 | | - FUNCTION(x.se, y.se), \ |
122 | | - FUNCTION(x.sf, y.sf)} != (RET_TYPE)0); \ |
123 | | - } |
124 | | - |
125 | | -#define _CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(RET_TYPE, FUNCTION, ARG0_TYPE, \ |
126 | | - ARG1_TYPE) \ |
127 | | - _CLC_DEFINE_RELATIONAL_BINARY_VEC2(RET_TYPE##2, FUNCTION, ARG0_TYPE##2, \ |
128 | | - ARG1_TYPE##2) \ |
129 | | - _CLC_DEFINE_RELATIONAL_BINARY_VEC3(RET_TYPE##3, FUNCTION, ARG0_TYPE##3, \ |
130 | | - ARG1_TYPE##3) \ |
131 | | - _CLC_DEFINE_RELATIONAL_BINARY_VEC4(RET_TYPE##4, FUNCTION, ARG0_TYPE##4, \ |
132 | | - ARG1_TYPE##4) \ |
133 | | - _CLC_DEFINE_RELATIONAL_BINARY_VEC8(RET_TYPE##8, FUNCTION, ARG0_TYPE##8, \ |
134 | | - ARG1_TYPE##8) \ |
135 | | - _CLC_DEFINE_RELATIONAL_BINARY_VEC16(RET_TYPE##16, FUNCTION, ARG0_TYPE##16, \ |
136 | | - ARG1_TYPE##16) |
137 | | - |
138 | | -#define _CLC_DEFINE_RELATIONAL_BINARY(RET_TYPE, FUNCTION, BUILTIN_FUNCTION, \ |
139 | | - ARG0_TYPE, ARG1_TYPE) \ |
140 | | - _CLC_DEFINE_RELATIONAL_BINARY_SCALAR(RET_TYPE, FUNCTION, BUILTIN_FUNCTION, \ |
141 | | - ARG0_TYPE, ARG1_TYPE) \ |
142 | | - _CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(RET_TYPE, FUNCTION, ARG0_TYPE, \ |
143 | | - ARG1_TYPE) |
144 | | - |
145 | 66 | #define _CLC_DEFINE_SIMPLE_RELATIONAL_BINARY(RET_TYPE, RET_TYPE_VEC, FUNCTION, \ |
146 | 67 | ARG1_TYPE, ARG2_TYPE) \ |
147 | 68 | _CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG1_TYPE x, ARG2_TYPE y) { \ |
|
0 commit comments