@@ -242,45 +242,106 @@ namespace xsimd
242242 * bitwise cast functions implementation *
243243 *****************************************/
244244
245- XSIMD_BITWISE_CAST_INTRINSIC (float , 16 ,
246- double , 8 ,
247- _mm512_castps_pd)
248-
249- XSIMD_BITWISE_CAST_INTRINSIC (float , 16 ,
250- int32_t , 16 ,
251- _mm512_castps_si512)
252-
253- XSIMD_BITWISE_CAST_INTRINSIC (float , 16 ,
254- int64_t , 8 ,
255- _mm512_castps_si512)
256-
257- XSIMD_BITWISE_CAST_INTRINSIC (double , 8 ,
258- float , 16 ,
259- _mm512_castpd_ps)
260-
261- XSIMD_BITWISE_CAST_INTRINSIC (double , 8 ,
262- int32_t , 16 ,
263- _mm512_castpd_si512)
264-
265- XSIMD_BITWISE_CAST_INTRINSIC (double , 8 ,
266- int64_t , 8 ,
267- _mm512_castpd_si512)
268-
269- XSIMD_BITWISE_CAST_INTRINSIC (int32_t , 16 ,
270- float , 16 ,
271- _mm512_castsi512_ps)
272-
273- XSIMD_BITWISE_CAST_INTRINSIC (int32_t , 16 ,
274- double , 8 ,
275- _mm512_castsi512_pd)
276-
277- XSIMD_BITWISE_CAST_INTRINSIC (int64_t , 8 ,
278- float , 16 ,
279- _mm512_castsi512_ps)
280-
281- XSIMD_BITWISE_CAST_INTRINSIC (int64_t , 8 ,
282- double , 8 ,
283- _mm512_castsi512_pd)
245+ XSIMD_BITWISE_CAST_IMPLICIT (int8_t , 64 , int8_t , 64 )
246+ XSIMD_BITWISE_CAST_IMPLICIT (int8_t , 64 , uint8_t , 64 )
247+ XSIMD_BITWISE_CAST_IMPLICIT (int8_t , 64 , int16_t , 32 )
248+ XSIMD_BITWISE_CAST_IMPLICIT (int8_t , 64 , uint16_t , 32 )
249+ XSIMD_BITWISE_CAST_IMPLICIT (int8_t , 64 , int32_t , 16 )
250+ XSIMD_BITWISE_CAST_IMPLICIT (int8_t , 64 , uint32_t , 16 )
251+ XSIMD_BITWISE_CAST_IMPLICIT (int8_t , 64 , int64_t , 8 )
252+ XSIMD_BITWISE_CAST_IMPLICIT (int8_t , 64 , uint64_t , 8 )
253+ XSIMD_BITWISE_CAST_INTRINSIC (int8_t , 64 , float , 16 , _mm512_castsi512_ps)
254+ XSIMD_BITWISE_CAST_INTRINSIC (int8_t , 64 , double , 8 , _mm512_castsi512_pd)
255+ XSIMD_BITWISE_CAST_IMPLICIT (uint8_t , 64 , int8_t , 64 )
256+ XSIMD_BITWISE_CAST_IMPLICIT (uint8_t , 64 , uint8_t , 64 )
257+ XSIMD_BITWISE_CAST_IMPLICIT (uint8_t , 64 , int16_t , 32 )
258+ XSIMD_BITWISE_CAST_IMPLICIT (uint8_t , 64 , uint16_t , 32 )
259+ XSIMD_BITWISE_CAST_IMPLICIT (uint8_t , 64 , int32_t , 16 )
260+ XSIMD_BITWISE_CAST_IMPLICIT (uint8_t , 64 , uint32_t , 16 )
261+ XSIMD_BITWISE_CAST_IMPLICIT (uint8_t , 64 , int64_t , 8 )
262+ XSIMD_BITWISE_CAST_IMPLICIT (uint8_t , 64 , uint64_t , 8 )
263+ XSIMD_BITWISE_CAST_INTRINSIC (uint8_t , 64 , float , 16 , _mm512_castsi512_ps)
264+ XSIMD_BITWISE_CAST_INTRINSIC (uint8_t , 64 , double , 8 , _mm512_castsi512_pd)
265+ XSIMD_BITWISE_CAST_IMPLICIT (int16_t , 32 , int8_t , 64 )
266+ XSIMD_BITWISE_CAST_IMPLICIT (int16_t , 32 , uint8_t , 64 )
267+ XSIMD_BITWISE_CAST_IMPLICIT (int16_t , 32 , int16_t , 32 )
268+ XSIMD_BITWISE_CAST_IMPLICIT (int16_t , 32 , uint16_t , 32 )
269+ XSIMD_BITWISE_CAST_IMPLICIT (int16_t , 32 , int32_t , 16 )
270+ XSIMD_BITWISE_CAST_IMPLICIT (int16_t , 32 , uint32_t , 16 )
271+ XSIMD_BITWISE_CAST_IMPLICIT (int16_t , 32 , int64_t , 8 )
272+ XSIMD_BITWISE_CAST_IMPLICIT (int16_t , 32 , uint64_t , 8 )
273+ XSIMD_BITWISE_CAST_INTRINSIC (int16_t , 32 , float , 16 , _mm512_castsi512_ps)
274+ XSIMD_BITWISE_CAST_INTRINSIC (int16_t , 32 , double , 8 , _mm512_castsi512_pd)
275+ XSIMD_BITWISE_CAST_IMPLICIT (uint16_t , 32 , int8_t , 64 )
276+ XSIMD_BITWISE_CAST_IMPLICIT (uint16_t , 32 , uint8_t , 64 )
277+ XSIMD_BITWISE_CAST_IMPLICIT (uint16_t , 32 , int16_t , 32 )
278+ XSIMD_BITWISE_CAST_IMPLICIT (uint16_t , 32 , uint16_t , 32 )
279+ XSIMD_BITWISE_CAST_IMPLICIT (uint16_t , 32 , int32_t , 16 )
280+ XSIMD_BITWISE_CAST_IMPLICIT (uint16_t , 32 , uint32_t , 16 )
281+ XSIMD_BITWISE_CAST_IMPLICIT (uint16_t , 32 , int64_t , 8 )
282+ XSIMD_BITWISE_CAST_IMPLICIT (uint16_t , 32 , uint64_t , 8 )
283+ XSIMD_BITWISE_CAST_INTRINSIC (uint16_t , 32 , float , 16 , _mm512_castsi512_ps)
284+ XSIMD_BITWISE_CAST_INTRINSIC (uint16_t , 32 , double , 8 , _mm512_castsi512_pd)
285+ XSIMD_BITWISE_CAST_IMPLICIT (int32_t , 16 , int8_t , 64 )
286+ XSIMD_BITWISE_CAST_IMPLICIT (int32_t , 16 , uint8_t , 64 )
287+ XSIMD_BITWISE_CAST_IMPLICIT (int32_t , 16 , int16_t , 32 )
288+ XSIMD_BITWISE_CAST_IMPLICIT (int32_t , 16 , uint16_t , 32 )
289+ XSIMD_BITWISE_CAST_IMPLICIT (int32_t , 16 , int32_t , 16 )
290+ XSIMD_BITWISE_CAST_IMPLICIT (int32_t , 16 , uint32_t , 16 )
291+ XSIMD_BITWISE_CAST_IMPLICIT (int32_t , 16 , int64_t , 8 )
292+ XSIMD_BITWISE_CAST_IMPLICIT (int32_t , 16 , uint64_t , 8 )
293+ XSIMD_BITWISE_CAST_INTRINSIC (int32_t , 16 , float , 16 , _mm512_castsi512_ps)
294+ XSIMD_BITWISE_CAST_INTRINSIC (int32_t , 16 , double , 8 , _mm512_castsi512_pd)
295+ XSIMD_BITWISE_CAST_IMPLICIT (uint32_t , 16 , int8_t , 64 )
296+ XSIMD_BITWISE_CAST_IMPLICIT (uint32_t , 16 , uint8_t , 64 )
297+ XSIMD_BITWISE_CAST_IMPLICIT (uint32_t , 16 , int16_t , 32 )
298+ XSIMD_BITWISE_CAST_IMPLICIT (uint32_t , 16 , uint16_t , 32 )
299+ XSIMD_BITWISE_CAST_IMPLICIT (uint32_t , 16 , int32_t , 16 )
300+ XSIMD_BITWISE_CAST_IMPLICIT (uint32_t , 16 , uint32_t , 16 )
301+ XSIMD_BITWISE_CAST_IMPLICIT (uint32_t , 16 , int64_t , 8 )
302+ XSIMD_BITWISE_CAST_IMPLICIT (uint32_t , 16 , uint64_t , 8 )
303+ XSIMD_BITWISE_CAST_INTRINSIC (uint32_t , 16 , float , 16 , _mm512_castsi512_ps)
304+ XSIMD_BITWISE_CAST_INTRINSIC (uint32_t , 16 , double , 8 , _mm512_castsi512_pd)
305+ XSIMD_BITWISE_CAST_IMPLICIT (int64_t , 8 , int8_t , 64 )
306+ XSIMD_BITWISE_CAST_IMPLICIT (int64_t , 8 , uint8_t , 64 )
307+ XSIMD_BITWISE_CAST_IMPLICIT (int64_t , 8 , int16_t , 32 )
308+ XSIMD_BITWISE_CAST_IMPLICIT (int64_t , 8 , uint16_t , 32 )
309+ XSIMD_BITWISE_CAST_IMPLICIT (int64_t , 8 , int32_t , 16 )
310+ XSIMD_BITWISE_CAST_IMPLICIT (int64_t , 8 , uint32_t , 16 )
311+ XSIMD_BITWISE_CAST_IMPLICIT (int64_t , 8 , int64_t , 8 )
312+ XSIMD_BITWISE_CAST_IMPLICIT (int64_t , 8 , uint64_t , 8 )
313+ XSIMD_BITWISE_CAST_INTRINSIC (int64_t , 8 , float , 16 , _mm512_castsi512_ps)
314+ XSIMD_BITWISE_CAST_INTRINSIC (int64_t , 8 , double , 8 , _mm512_castsi512_pd)
315+ XSIMD_BITWISE_CAST_IMPLICIT (uint64_t , 8 , int8_t , 64 )
316+ XSIMD_BITWISE_CAST_IMPLICIT (uint64_t , 8 , uint8_t , 64 )
317+ XSIMD_BITWISE_CAST_IMPLICIT (uint64_t , 8 , int16_t , 32 )
318+ XSIMD_BITWISE_CAST_IMPLICIT (uint64_t , 8 , uint16_t , 32 )
319+ XSIMD_BITWISE_CAST_IMPLICIT (uint64_t , 8 , int32_t , 16 )
320+ XSIMD_BITWISE_CAST_IMPLICIT (uint64_t , 8 , uint32_t , 16 )
321+ XSIMD_BITWISE_CAST_IMPLICIT (uint64_t , 8 , int64_t , 8 )
322+ XSIMD_BITWISE_CAST_IMPLICIT (uint64_t , 8 , uint64_t , 8 )
323+ XSIMD_BITWISE_CAST_INTRINSIC (uint64_t , 8 , float , 16 , _mm512_castsi512_ps)
324+ XSIMD_BITWISE_CAST_INTRINSIC (uint64_t , 8 , double , 8 , _mm512_castsi512_pd)
325+ XSIMD_BITWISE_CAST_INTRINSIC (float , 16 , int8_t , 64 , _mm512_castps_si512)
326+ XSIMD_BITWISE_CAST_INTRINSIC (float , 16 , uint8_t , 64 , _mm512_castps_si512)
327+ XSIMD_BITWISE_CAST_INTRINSIC (float , 16 , int16_t , 32 , _mm512_castps_si512)
328+ XSIMD_BITWISE_CAST_INTRINSIC (float , 16 , uint16_t , 32 , _mm512_castps_si512)
329+ XSIMD_BITWISE_CAST_INTRINSIC (float , 16 , int32_t , 16 , _mm512_castps_si512)
330+ XSIMD_BITWISE_CAST_INTRINSIC (float , 16 , uint32_t , 16 , _mm512_castps_si512)
331+ XSIMD_BITWISE_CAST_INTRINSIC (float , 16 , int64_t , 8 , _mm512_castps_si512)
332+ XSIMD_BITWISE_CAST_INTRINSIC (float , 16 , uint64_t , 8 , _mm512_castps_si512)
333+ XSIMD_BITWISE_CAST_IMPLICIT (float , 16 , float , 16 )
334+ XSIMD_BITWISE_CAST_INTRINSIC (float , 16 , double , 8 , _mm512_castps_pd)
335+ XSIMD_BITWISE_CAST_INTRINSIC (double , 8 , int8_t , 64 , _mm512_castpd_si512)
336+ XSIMD_BITWISE_CAST_INTRINSIC (double , 8 , uint8_t , 64 , _mm512_castpd_si512)
337+ XSIMD_BITWISE_CAST_INTRINSIC (double , 8 , int16_t , 32 , _mm512_castpd_si512)
338+ XSIMD_BITWISE_CAST_INTRINSIC (double , 8 , uint16_t , 32 , _mm512_castpd_si512)
339+ XSIMD_BITWISE_CAST_INTRINSIC (double , 8 , int32_t , 16 , _mm512_castpd_si512)
340+ XSIMD_BITWISE_CAST_INTRINSIC (double , 8 , uint32_t , 16 , _mm512_castpd_si512)
341+ XSIMD_BITWISE_CAST_INTRINSIC (double , 8 , int64_t , 8 , _mm512_castpd_si512)
342+ XSIMD_BITWISE_CAST_INTRINSIC (double , 8 , uint64_t , 8 , _mm512_castpd_si512)
343+ XSIMD_BITWISE_CAST_INTRINSIC (double , 8 , float , 16 , _mm512_castpd_ps)
344+ XSIMD_BITWISE_CAST_IMPLICIT (double , 8 , double , 8 )
284345}
285346
286347#endif
0 commit comments