Skip to content

Commit 799ca59

Browse files
committed
Fix from_bool
1 parent e6b5909 commit 799ca59

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

include/xsimd/arch/xsimd_neon.hpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)