@@ -83,6 +83,45 @@ typedef obj_p (*ray_cmp_f)(obj_p, obj_p, i64_t, i64_t, obj_p);
8383 return b8(op##I8(x->b8, y->u8)); \
8484 case MTYPE2(-TYPE_U8, -TYPE_B8): \
8585 return b8(op##I8(x->u8, y->b8)); \
86+ case MTYPE2(-TYPE_U8, -TYPE_I16): \
87+ return b8(op##I16(u8_to_i16(x->u8), y->i16)); \
88+ case MTYPE2(-TYPE_U8, -TYPE_I32): \
89+ return b8(op##I32(u8_to_i32(x->u8), y->i32)); \
90+ case MTYPE2(-TYPE_U8, -TYPE_I64): \
91+ return b8(op##I64(u8_to_i64(x->u8), y->i64)); \
92+ case MTYPE2(-TYPE_U8, -TYPE_F64): \
93+ return b8(op##F64(u8_to_f64(x->u8), y->f64)); \
94+ case MTYPE2(-TYPE_U8, TYPE_U8): \
95+ return __CMP_A_V(x, y, u8, u8, u8, op##U8, len, offset, res); \
96+ case MTYPE2(-TYPE_U8, TYPE_I16): \
97+ return __CMP_A_V(x, y, u8, i16, i16, op##I16, len, offset, res); \
98+ case MTYPE2(-TYPE_U8, TYPE_I32): \
99+ return __CMP_A_V(x, y, u8, i32, i32, op##I32, len, offset, res); \
100+ case MTYPE2(-TYPE_U8, TYPE_I64): \
101+ return __CMP_A_V(x, y, u8, i64, i64, op##I64, len, offset, res); \
102+ case MTYPE2(-TYPE_U8, TYPE_F64): \
103+ return __CMP_A_V(x, y, u8, f64, f64, op##F64, len, offset, res); \
104+ case MTYPE2(TYPE_U8, -TYPE_U8): \
105+ return __CMP_V_A(x, y, u8, u8, u8, op##U8, len, offset, res); \
106+ case MTYPE2(TYPE_U8, -TYPE_I16): \
107+ return __CMP_V_A(x, y, u8, i16, i16, op##I16, len, offset, res); \
108+ case MTYPE2(TYPE_U8, -TYPE_I32): \
109+ return __CMP_V_A(x, y, u8, i32, i32, op##I32, len, offset, res); \
110+ case MTYPE2(TYPE_U8, -TYPE_I64): \
111+ return __CMP_V_A(x, y, u8, i64, i64, op##I64, len, offset, res); \
112+ case MTYPE2(TYPE_U8, -TYPE_F64): \
113+ return __CMP_V_A(x, y, u8, f64, f64, op##F64, len, offset, res); \
114+ case MTYPE2(TYPE_U8, TYPE_U8): \
115+ return __CMP_V_V(x, y, u8, u8, u8, op##U8, len, offset, res); \
116+ case MTYPE2(TYPE_U8, TYPE_I16): \
117+ return __CMP_V_V(x, y, u8, i16, i16, op##I16, len, offset, res); \
118+ case MTYPE2(TYPE_U8, TYPE_I32): \
119+ return __CMP_V_V(x, y, u8, i32, i32, op##I32, len, offset, res); \
120+ case MTYPE2(TYPE_U8, TYPE_I64): \
121+ return __CMP_V_V(x, y, u8, i64, i64, op##I64, len, offset, res); \
122+ case MTYPE2(TYPE_U8, TYPE_F64): \
123+ return __CMP_V_V(x, y, u8, f64, f64, op##F64, len, offset, res); \
124+ \
86125 case MTYPE2(-TYPE_C8, -TYPE_C8): \
87126 return b8(op##C8(x->c8, y->c8)); \
88127 case MTYPE2(-TYPE_C8, TYPE_C8): \
@@ -92,6 +131,8 @@ typedef obj_p (*ray_cmp_f)(obj_p, obj_p, i64_t, i64_t, obj_p);
92131 case MTYPE2(TYPE_C8, TYPE_C8): \
93132 return b8(op##STR(AS_C8(x), x->len, AS_C8(y), y->len)); \
94133 \
134+ case MTYPE2(-TYPE_I16, -TYPE_U8): \
135+ return b8(op##I16(x->i16, u8_to_i16(y->u8))); \
95136 case MTYPE2(-TYPE_I16, -TYPE_I16): \
96137 return b8(op##I16(x->i16, y->i16)); \
97138 case MTYPE2(-TYPE_I16, -TYPE_I32): \
@@ -106,8 +147,12 @@ typedef obj_p (*ray_cmp_f)(obj_p, obj_p, i64_t, i64_t, obj_p);
106147 return __CMP_A_V(x, y, i16, i32, i32, op##I32, len, offset, res); \
107148 case MTYPE2(-TYPE_I16, TYPE_I64): \
108149 return __CMP_A_V(x, y, i16, i64, i64, op##I64, len, offset, res); \
150+ case MTYPE2(-TYPE_I16, TYPE_U8): \
151+ return __CMP_A_V(x, y, i16, u8, i16, op##I16, len, offset, res); \
109152 case MTYPE2(-TYPE_I16, TYPE_F64): \
110153 return __CMP_A_V(x, y, i16, f64, f64, op##F64, len, offset, res); \
154+ case MTYPE2(TYPE_I16, -TYPE_U8): \
155+ return __CMP_V_A(x, y, i16, u8, i16, op##I16, len, offset, res); \
111156 case MTYPE2(TYPE_I16, -TYPE_I16): \
112157 return __CMP_V_A(x, y, i16, i16, i16, op##I16, len, offset, res); \
113158 case MTYPE2(TYPE_I16, -TYPE_I32): \
@@ -122,9 +167,13 @@ typedef obj_p (*ray_cmp_f)(obj_p, obj_p, i64_t, i64_t, obj_p);
122167 return __CMP_V_V(x, y, i16, i32, i32, op##I32, len, offset, res); \
123168 case MTYPE2(TYPE_I16, TYPE_I64): \
124169 return __CMP_V_V(x, y, i16, i64, i64, op##I64, len, offset, res); \
170+ case MTYPE2(TYPE_I16, TYPE_U8): \
171+ return __CMP_V_V(x, y, i16, u8, i16, op##I16, len, offset, res); \
125172 case MTYPE2(TYPE_I16, TYPE_F64): \
126173 return __CMP_V_V(x, y, i16, f64, f64, op##F64, len, offset, res); \
127174 \
175+ case MTYPE2(-TYPE_I32, -TYPE_U8): \
176+ return b8(op##I32(x->i32, u8_to_i32(y->u8))); \
128177 case MTYPE2(-TYPE_I32, -TYPE_I16): \
129178 return b8(op##I32(x->i32, i16_to_i32(y->i16))); \
130179 case MTYPE2(-TYPE_I32, -TYPE_I32): \
@@ -135,6 +184,8 @@ typedef obj_p (*ray_cmp_f)(obj_p, obj_p, i64_t, i64_t, obj_p);
135184 return b8(op##I64(i32_to_i64(x->i32), y->i64)); \
136185 case MTYPE2(-TYPE_I32, -TYPE_F64): \
137186 return b8(op##F64(i32_to_f64(x->i32), y->f64)); \
187+ case MTYPE2(-TYPE_I32, TYPE_U8): \
188+ return __CMP_A_V(x, y, i32, u8, i32, op##I32, len, offset, res); \
138189 case MTYPE2(-TYPE_I32, TYPE_I16): \
139190 return __CMP_A_V(x, y, i32, i16, i32, op##I32, len, offset, res); \
140191 case MTYPE2(-TYPE_I32, TYPE_I32): \
@@ -145,6 +196,8 @@ typedef obj_p (*ray_cmp_f)(obj_p, obj_p, i64_t, i64_t, obj_p);
145196 return __CMP_A_V(x, y, i32, i64, i64, op##I64, len, offset, res); \
146197 case MTYPE2(-TYPE_I32, TYPE_F64): \
147198 return __CMP_A_V(x, y, i32, f64, f64, op##F64, len, offset, res); \
199+ case MTYPE2(TYPE_I32, -TYPE_U8): \
200+ return __CMP_V_A(x, y, i32, u8, i32, op##I32, len, offset, res); \
148201 case MTYPE2(TYPE_I32, -TYPE_I16): \
149202 return __CMP_V_A(x, y, i32, i16, i32, op##I32, len, offset, res); \
150203 case MTYPE2(TYPE_I32, -TYPE_I32): \
@@ -155,6 +208,8 @@ typedef obj_p (*ray_cmp_f)(obj_p, obj_p, i64_t, i64_t, obj_p);
155208 return __CMP_V_A(x, y, i32, i64, i64, op##I64, len, offset, res); \
156209 case MTYPE2(TYPE_I32, -TYPE_F64): \
157210 return __CMP_V_A(x, y, i32, f64, f64, op##F64, len, offset, res); \
211+ case MTYPE2(TYPE_I32, TYPE_U8): \
212+ return __CMP_V_V(x, y, i32, u8, i32, op##I32, len, offset, res); \
158213 case MTYPE2(TYPE_I32, TYPE_I16): \
159214 return __CMP_V_V(x, y, i32, i16, i32, op##I32, len, offset, res); \
160215 case MTYPE2(TYPE_I32, TYPE_I32): \
@@ -166,6 +221,8 @@ typedef obj_p (*ray_cmp_f)(obj_p, obj_p, i64_t, i64_t, obj_p);
166221 case MTYPE2(TYPE_I32, TYPE_F64): \
167222 return __CMP_V_V(x, y, i32, f64, f64, op##F64, len, offset, res); \
168223 \
224+ case MTYPE2(-TYPE_I64, -TYPE_U8): \
225+ return b8(op##I64(x->i64, u8_to_i64(y->u8))); \
169226 case MTYPE2(-TYPE_I64, -TYPE_I16): \
170227 return b8(op##I64(x->i64, i16_to_i64(y->i16))); \
171228 case MTYPE2(-TYPE_I64, -TYPE_I32): \
@@ -176,6 +233,8 @@ typedef obj_p (*ray_cmp_f)(obj_p, obj_p, i64_t, i64_t, obj_p);
176233 return b8(op##I64(x->i64, y->i64)); \
177234 case MTYPE2(-TYPE_I64, -TYPE_F64): \
178235 return b8(op##F64(i64_to_f64(x->i64), y->f64)); \
236+ case MTYPE2(-TYPE_I64, TYPE_U8): \
237+ return __CMP_A_V(x, y, i64, u8, i64, op##I64, len, offset, res); \
179238 case MTYPE2(-TYPE_I64, TYPE_I16): \
180239 return __CMP_A_V(x, y, i64, i16, i64, op##I64, len, offset, res); \
181240 case MTYPE2(-TYPE_I64, TYPE_I32): \
@@ -186,6 +245,8 @@ typedef obj_p (*ray_cmp_f)(obj_p, obj_p, i64_t, i64_t, obj_p);
186245 return __CMP_A_V(x, y, i64, i64, i64, op##I64, len, offset, res); \
187246 case MTYPE2(-TYPE_I64, TYPE_F64): \
188247 return __CMP_A_V(x, y, i64, f64, f64, op##F64, len, offset, res); \
248+ case MTYPE2(TYPE_I64, -TYPE_U8): \
249+ return __CMP_V_A(x, y, i64, u8, i64, op##I64, len, offset, res); \
189250 case MTYPE2(TYPE_I64, -TYPE_I16): \
190251 return __CMP_V_A(x, y, i64, i16, i64, op##I64, len, offset, res); \
191252 case MTYPE2(TYPE_I64, -TYPE_I32): \
@@ -196,6 +257,8 @@ typedef obj_p (*ray_cmp_f)(obj_p, obj_p, i64_t, i64_t, obj_p);
196257 return __CMP_V_A(x, y, i64, i64, i64, op##I64, len, offset, res); \
197258 case MTYPE2(TYPE_I64, -TYPE_F64): \
198259 return __CMP_V_A(x, y, i64, f64, f64, op##F64, len, offset, res); \
260+ case MTYPE2(TYPE_I64, TYPE_U8): \
261+ return __CMP_V_V(x, y, i64, u8, i64, op##I64, len, offset, res); \
199262 case MTYPE2(TYPE_I64, TYPE_I16): \
200263 return __CMP_V_V(x, y, i64, i16, i64, op##I64, len, offset, res); \
201264 case MTYPE2(TYPE_I64, TYPE_I32): \
@@ -207,6 +270,8 @@ typedef obj_p (*ray_cmp_f)(obj_p, obj_p, i64_t, i64_t, obj_p);
207270 case MTYPE2(TYPE_I64, TYPE_F64): \
208271 return __CMP_V_V(x, y, i64, f64, f64, op##F64, len, offset, res); \
209272 \
273+ case MTYPE2(-TYPE_F64, -TYPE_U8): \
274+ return b8(op##F64(x->f64, u8_to_f64(y->u8))); \
210275 case MTYPE2(-TYPE_F64, -TYPE_I16): \
211276 return b8(op##F64(x->f64, i16_to_f64(y->i16))); \
212277 case MTYPE2(-TYPE_F64, -TYPE_I32): \
@@ -215,6 +280,8 @@ typedef obj_p (*ray_cmp_f)(obj_p, obj_p, i64_t, i64_t, obj_p);
215280 return b8(op##F64(x->f64, i64_to_f64(y->i64))); \
216281 case MTYPE2(-TYPE_F64, -TYPE_F64): \
217282 return b8(op##F64(x->f64, y->f64)); \
283+ case MTYPE2(-TYPE_F64, TYPE_U8): \
284+ return __CMP_A_V(x, y, f64, u8, f64, op##F64, len, offset, res); \
218285 case MTYPE2(-TYPE_F64, TYPE_I16): \
219286 return __CMP_A_V(x, y, f64, i16, f64, op##F64, len, offset, res); \
220287 case MTYPE2(-TYPE_F64, TYPE_I32): \
@@ -223,6 +290,8 @@ typedef obj_p (*ray_cmp_f)(obj_p, obj_p, i64_t, i64_t, obj_p);
223290 return __CMP_A_V(x, y, f64, i64, f64, op##F64, len, offset, res); \
224291 case MTYPE2(-TYPE_F64, TYPE_F64): \
225292 return __CMP_A_V(x, y, f64, f64, f64, op##F64, len, offset, res); \
293+ case MTYPE2(TYPE_F64, -TYPE_U8): \
294+ return __CMP_V_A(x, y, f64, u8, f64, op##F64, len, offset, res); \
226295 case MTYPE2(TYPE_F64, -TYPE_I16): \
227296 return __CMP_V_A(x, y, f64, i16, f64, op##F64, len, offset, res); \
228297 case MTYPE2(TYPE_F64, -TYPE_I32): \
@@ -231,6 +300,8 @@ typedef obj_p (*ray_cmp_f)(obj_p, obj_p, i64_t, i64_t, obj_p);
231300 return __CMP_V_A(x, y, f64, i64, f64, op##F64, len, offset, res); \
232301 case MTYPE2(TYPE_F64, -TYPE_F64): \
233302 return __CMP_V_A(x, y, f64, f64, f64, op##F64, len, offset, res); \
303+ case MTYPE2(TYPE_F64, TYPE_U8): \
304+ return __CMP_V_V(x, y, f64, u8, f64, op##F64, len, offset, res); \
234305 case MTYPE2(TYPE_F64, TYPE_I16): \
235306 return __CMP_V_V(x, y, f64, i16, f64, op##F64, len, offset, res); \
236307 case MTYPE2(TYPE_F64, TYPE_I32): \
0 commit comments