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
@@ -292,6 +292,12 @@ namespace xsimd
292
292
returnload_unaligned(mem, b, A {});
293
293
}
294
294
295
+
template <classA, classT>
296
+
XSIMD_INLINE batch_bool<T, A> load_stream(boolconst* mem, batch_bool<T, A> b, requires_arch<common>) noexcept
297
+
{
298
+
returnload_aligned(mem, b, A {});
299
+
}
300
+
295
301
// load_aligned
296
302
namespacedetail
297
303
{
@@ -438,6 +444,12 @@ namespace xsimd
438
444
store_masked<A>(reinterpret_cast<double*>(mem), bitwise_cast<double>(src), batch_bool_constant<double, A, Values...> {}, Mode {}, A {});
439
445
}
440
446
447
+
template <classA, classT_in, classT_out>
448
+
XSIMD_INLINE batch<T_out, A> load_stream(T_in const* mem, convert<T_out> cvt, requires_arch<common>) noexcept
449
+
{
450
+
return load_aligned<A>(mem, cvt, A {});
451
+
}
452
+
441
453
// rotate_right
442
454
template <size_t N, classA, classT>
443
455
XSIMD_INLINE batch<T, A> rotate_right(batch<T, A> const& self, requires_arch<common>) noexcept
@@ -679,6 +691,12 @@ namespace xsimd
679
691
mem[i] = bool(buffer[i]);
680
692
}
681
693
694
+
template <classA, classT>
695
+
XSIMD_INLINE voidstore_stream(batch_bool<T, A> const& self, bool* mem, requires_arch<common>) noexcept
696
+
{
697
+
store(self, mem, A {});
698
+
}
699
+
682
700
// store_aligned
683
701
template <classA, classT_in, classT_out>
684
702
XSIMD_INLINE voidstore_aligned(T_out* mem, batch<T_in, A> const& self, requires_arch<common>) noexcept
@@ -697,6 +715,12 @@ namespace xsimd
697
715
return store_aligned<A>(mem, self, common {});
698
716
}
699
717
718
+
template <classA, classT_in, classT_out>
719
+
XSIMD_INLINE voidstore_stream(T_out* mem, batch<T_in, A> const& self, requires_arch<common>) noexcept
720
+
{
721
+
store_aligned<A>(mem, self, A {});
722
+
}
723
+
700
724
// swizzle
701
725
template <classA, classT, classITy, ITy... Vs>
702
726
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
@@ -778,6 +802,12 @@ namespace xsimd
778
802
returndetail::load_complex(hi, lo, A {});
779
803
}
780
804
805
+
template <classA, classT_out, classT_in>
806
+
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
807
+
{
808
+
return load_complex_aligned<A>(mem, kernel::convert<std::complex<T_out>> {}, A {});
809
+
}
810
+
781
811
// store_complex_aligned
782
812
template <classA, classT_out, classT_in>
783
813
XSIMD_INLINE voidstore_complex_aligned(std::complex<T_out>* dst, batch<std::complex<T_in>, A> const& src, requires_arch<common>) noexcept
@@ -802,6 +832,12 @@ namespace xsimd
802
832
hi.store_unaligned(buffer + real_batch::size);
803
833
}
804
834
835
+
template <classA, classT_out, classT_in>
836
+
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