@@ -303,8 +303,7 @@ namespace xsimd
303303 template <class A , class T , detail::enable_sized_signed_t <T, 1 > = 0 >
304304 XSIMD_INLINE batch<T, A> from_bool (batch_bool<T, A> const & arg, requires_arch<neon>) noexcept
305305 {
306- auto const arg_int = wrap::x_vreinterpretq<int8_t , project_num_t <T>>(arg.data );
307- return vandq_s8 (arg_int, vdupq_n_s8 (1 ));
306+ return vreinterpretq_s8_u8 (vandq_u8 (arg.data , vdupq_n_u8 (1 )));
308307 }
309308
310309 template <class A , class T , detail::enable_sized_unsigned_t <T, 2 > = 0 >
@@ -316,8 +315,7 @@ namespace xsimd
316315 template <class A , class T , detail::enable_sized_signed_t <T, 2 > = 0 >
317316 XSIMD_INLINE batch<T, A> from_bool (batch_bool<T, A> const & arg, requires_arch<neon>) noexcept
318317 {
319- auto const arg_int = wrap::x_vreinterpretq<int16_t , project_num_t <T>>(arg.data );
320- return vandq_s16 (arg_int, vdupq_n_s16 (1 ));
318+ return vreinterpretq_s16_u16 (vandq_u16 (arg.data , vdupq_n_u16 (1 )));
321319 }
322320
323321 template <class A , class T , detail::enable_sized_unsigned_t <T, 4 > = 0 >
@@ -329,8 +327,7 @@ namespace xsimd
329327 template <class A , class T , detail::enable_sized_signed_t <T, 4 > = 0 >
330328 XSIMD_INLINE batch<T, A> from_bool (batch_bool<T, A> const & arg, requires_arch<neon>) noexcept
331329 {
332- auto const arg_int = wrap::x_vreinterpretq<int32_t , project_num_t <T>>(arg.data );
333- return vandq_s32 (arg_int, vdupq_n_s32 (1 ));
330+ return vreinterpretq_s32_u32 (vandq_u32 (arg.data , vdupq_n_u32 (1 )));
334331 }
335332
336333 template <class A , class T , detail::enable_sized_unsigned_t <T, 8 > = 0 >
@@ -342,8 +339,7 @@ namespace xsimd
342339 template <class A , class T , detail::enable_sized_signed_t <T, 8 > = 0 >
343340 XSIMD_INLINE batch<T, A> from_bool (batch_bool<T, A> const & arg, requires_arch<neon>) noexcept
344341 {
345- auto const arg_int = wrap::x_vreinterpretq<int64_t , project_num_t <T>>(arg.data );
346- return vandq_s64 (arg_int, vdupq_n_s64 (1 ));
342+ return vreinterpretq_s64_u64 (vandq_u64 (arg.data , vdupq_n_u64 (1 )));
347343 }
348344
349345 template <class A >
0 commit comments