@@ -304,7 +304,8 @@ namespace xsimd
304304 template <class A , class T , detail::enable_sized_signed_t <T, 1 > = 0 >
305305 XSIMD_INLINE batch<T, A> from_bool (batch_bool<T, A> const & arg, requires_arch<neon>) noexcept
306306 {
307- return vandq_s8 (wrap::x_vreinterpretq<int8_t , project_num_t <T>>(arg.data ), vdupq_n_s8 (1 ));
307+ auto const arg_int = wrap::x_vreinterpretq<int8_t , project_num_t <T>>(arg.data );
308+ return vandq_s8 (arg_int, vdupq_n_s8 (1 ));
308309 }
309310
310311 template <class A , class T , detail::enable_sized_unsigned_t <T, 2 > = 0 >
@@ -316,7 +317,8 @@ namespace xsimd
316317 template <class A , class T , detail::enable_sized_signed_t <T, 2 > = 0 >
317318 XSIMD_INLINE batch<T, A> from_bool (batch_bool<T, A> const & arg, requires_arch<neon>) noexcept
318319 {
319- return vandq_s16 (wrap::x_vreinterpretq<int16_t , project_num_t <T>>(arg.data ), vdupq_n_s16 (1 ));
320+ auto const arg_int = wrap::x_vreinterpretq<int16_t , project_num_t <T>>(arg.data );
321+ return vandq_s16 (arg_int, vdupq_n_s16 (1 ));
320322 }
321323
322324 template <class A , class T , detail::enable_sized_unsigned_t <T, 4 > = 0 >
@@ -328,7 +330,8 @@ namespace xsimd
328330 template <class A , class T , detail::enable_sized_signed_t <T, 4 > = 0 >
329331 XSIMD_INLINE batch<T, A> from_bool (batch_bool<T, A> const & arg, requires_arch<neon>) noexcept
330332 {
331- return vandq_s32 (wrap::x_vreinterpretq<int32_t , project_num_t <T>>(arg.data ), vdupq_n_s32 (1 ));
333+ auto const arg_int = wrap::x_vreinterpretq<int32_t , project_num_t <T>>(arg.data );
334+ return vandq_s32 (arg_int, vdupq_n_s32 (1 ));
332335 }
333336
334337 template <class A , class T , detail::enable_sized_unsigned_t <T, 8 > = 0 >
@@ -340,7 +343,8 @@ namespace xsimd
340343 template <class A , class T , detail::enable_sized_signed_t <T, 8 > = 0 >
341344 XSIMD_INLINE batch<T, A> from_bool (batch_bool<T, A> const & arg, requires_arch<neon>) noexcept
342345 {
343- return vandq_s64 (wrap::x_vreinterpretq<int64_t , project_num_t <T>>(arg.data ), vdupq_n_s64 (1 ));
346+ auto const arg_int = wrap::x_vreinterpretq<int64_t , project_num_t <T>>(arg.data );
347+ return vandq_s64 (arg_int, vdupq_n_s64 (1 ));
344348 }
345349
346350 template <class A >
0 commit comments