36 using BaseClass::_toTrueType;
40 using BaseClass::m_extent;
46 _copyFrom(args.m_indexes, _toTrueType(args.m_source), _toTrueType(args.m_destination));
50 _copyTo(args.m_indexes, _toTrueType(args.m_source), _toTrueType(args.m_destination));
54 _fill(args.m_indexes, _toTrueType(args.m_source), _toTrueType(args.m_destination));
58 _copyFrom(args.m_indexes, args.m_multi_memory, _toTrueType(args.m_source_buffer));
62 _copyTo(args.m_indexes, args.m_const_multi_memory, _toTrueType(args.m_destination_buffer));
66 _fill(args.m_indexes, args.m_multi_memory, _toTrueType(args.m_source_buffer));
79 for (
Int32 i = 0; i < nb_index; ++i) {
82 for (
Int32 z = 0, n = m_extent.v; z < n; ++z)
83 destination[z_index + z] = source[zci + z];
93 const Int32 value_size = indexes.
size() / 2;
94 for (
Int32 i = 0; i < value_size; ++i) {
95 Int32 index0 = indexes[i * 2];
96 Int32 index1 = indexes[(i * 2) + 1];
98 auto* orig_view_data =
reinterpret_cast<DataType*
>(orig_view_bytes.data());
101 Span<DataType> orig_view = { orig_view_data, orig_view_bytes.size() / (
Int64)
sizeof(DataType) };
104 for (
Int32 z = 0, n = m_extent.v; z < n; ++z)
105 orig_view[zci + z] = source[z_index + z];
123 Int64 nb_value = destination.
size() / m_extent.v;
124 for (
Int64 i = 0; i < nb_value; ++i) {
125 Int64 zci = i * m_extent.v;
126 for (
Int32 z = 0, n = m_extent.v; z < n; ++z)
127 destination[zci + z] = source[z];
132 for (
Int32 i = 0; i < nb_index; ++i) {
134 for (
Int32 z = 0, n = m_extent.v; z < n; ++z)
135 destination[zci + z] = source[z];
146 const Int32 nb_index = indexes.
size() / 2;
149 const Int32 nb_dim1 = multi_views.size();
150 for (
Int32 zz = 0; zz < nb_dim1; ++zz) {
152 Int64 nb_value = orig_view_bytes.
size() / ((
Int64)
sizeof(DataType));
153 auto* orig_view_data =
reinterpret_cast<DataType*
>(orig_view_bytes.
data());
155 for (
Int64 i = 0; i < nb_value; i += m_extent.v) {
158 for (
Int32 z = 0, n = m_extent.v; z < n; ++z) {
159 orig_view[i + z] = source[z];
166 for (
Int32 i = 0; i < nb_index; ++i) {
167 Int32 index0 = indexes[i * 2];
168 Int32 index1 = indexes[(i * 2) + 1];
169 Span<std::byte> orig_view_bytes = multi_views[index0];
170 auto* orig_view_data =
reinterpret_cast<DataType*
>(orig_view_bytes.data());
173 Span<DataType> orig_view = { orig_view_data, orig_view_bytes.size() / (
Int64)
sizeof(DataType) };
175 for (
Int32 z = 0, n = m_extent.v; z < n; ++z)
176 orig_view[zci + z] = source[z];
181 void _copyTo(SmallSpan<const Int32> indexes, Span<const DataType> source,
182 Span<DataType> destination)
188 Int32 nb_index = indexes.size();
190 for (
Int32 i = 0; i < nb_index; ++i) {
193 for (
Int32 z = 0, n = m_extent.v; z < n; ++z)
194 destination[zci + z] = source[z_index + z];
198 void _copyTo(SmallSpan<const Int32> indexes, SmallSpan<
const Span<const std::byte>> multi_views,
199 Span<DataType> destination)
205 const Int32 value_size = indexes.size() / 2;
206 for (
Int32 i = 0; i < value_size; ++i) {
207 Int32 index0 = indexes[i * 2];
208 Int32 index1 = indexes[(i * 2) + 1];
209 Span<const std::byte> orig_view_bytes = multi_views[index0];
210 auto* orig_view_data =
reinterpret_cast<const DataType*
>(orig_view_bytes.data());
213 Span<const DataType> orig_view = { orig_view_data, orig_view_bytes.size() / (
Int64)
sizeof(DataType) };
216 for (
Int32 z = 0, n = m_extent.v; z < n; ++z)
217 destination[z_index + z] = orig_view[zci + z];