You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: include/xsimd/arch/common/xsimd_common_memory.hpp
+36Lines changed: 36 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -298,6 +298,12 @@ namespace xsimd
298
298
returnload_unaligned(mem, b, A {});
299
299
}
300
300
301
+
template <classA, classT>
302
+
XSIMD_INLINE batch_bool<T, A> load_stream(boolconst* mem, batch_bool<T, A> b, requires_arch<common>) noexcept
303
+
{
304
+
returnload_aligned(mem, b, A {});
305
+
}
306
+
301
307
// load_aligned
302
308
namespacedetail
303
309
{
@@ -348,6 +354,12 @@ namespace xsimd
348
354
return detail::load_unaligned<A>(mem, cvt, common {}, detail::conversion_type<A, T_in, T_out> {});
349
355
}
350
356
357
+
template <classA, classT_in, classT_out>
358
+
XSIMD_INLINE batch<T_out, A> load_stream(T_in const* mem, convert<T_out> cvt, requires_arch<common>) noexcept
359
+
{
360
+
return load_aligned<A>(mem, cvt, A {});
361
+
}
362
+
351
363
// rotate_right
352
364
template <size_t N, classA, classT>
353
365
XSIMD_INLINE batch<T, A> rotate_right(batch<T, A> const& self, requires_arch<common>) noexcept
@@ -589,6 +601,12 @@ namespace xsimd
589
601
mem[i] = bool(buffer[i]);
590
602
}
591
603
604
+
template <classA, classT>
605
+
XSIMD_INLINE voidstore_stream(batch_bool<T, A> const& self, bool* mem, requires_arch<common>) noexcept
606
+
{
607
+
store(self, mem, A {});
608
+
}
609
+
592
610
// store_aligned
593
611
template <classA, classT_in, classT_out>
594
612
XSIMD_INLINE voidstore_aligned(T_out* mem, batch<T_in, A> const& self, requires_arch<common>) noexcept
@@ -607,6 +625,12 @@ namespace xsimd
607
625
return store_aligned<A>(mem, self, common {});
608
626
}
609
627
628
+
template <classA, classT_in, classT_out>
629
+
XSIMD_INLINE voidstore_stream(T_out* mem, batch<T_in, A> const& self, requires_arch<common>) noexcept
630
+
{
631
+
store_aligned<A>(mem, self, A {});
632
+
}
633
+
610
634
// swizzle
611
635
template <classA, classT, classITy, ITy... Vs>
612
636
XSIMD_INLINE batch<std::complex<T>, A> swizzle(batch<std::complex<T>, A> const& self, batch_constant<ITy, A, Vs...> mask, requires_arch<common>) noexcept
@@ -688,6 +712,12 @@ namespace xsimd
688
712
returndetail::load_complex(hi, lo, A {});
689
713
}
690
714
715
+
template <classA, classT_out, classT_in>
716
+
XSIMD_INLINE batch<std::complex<T_out>, A> load_complex_stream(std::complex<T_in> const* mem, convert<std::complex<T_out>>, requires_arch<common>) noexcept
717
+
{
718
+
return load_complex_aligned<A>(mem, kernel::convert<std::complex<T_out>> {}, A {});
719
+
}
720
+
691
721
// store_complex_aligned
692
722
template <classA, classT_out, classT_in>
693
723
XSIMD_INLINE voidstore_complex_aligned(std::complex<T_out>* dst, batch<std::complex<T_in>, A> const& src, requires_arch<common>) noexcept
@@ -712,6 +742,12 @@ namespace xsimd
712
742
hi.store_unaligned(buffer + real_batch::size);
713
743
}
714
744
745
+
template <classA, classT_out, classT_in>
746
+
XSIMD_INLINE voidstore_complex_stream(std::complex<T_out>* dst, batch<std::complex<T_in>, A> const& src, requires_arch<common>) noexcept
0 commit comments