1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
.. Copyright (c) 2016, Johan Mabille, Sylvain Corlay
Distributed under the terms of the BSD 3-Clause License.
The full license is in the file LICENSE, distributed with this software.
Data transfer
=============
From memory:
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`load` | load values from memory |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`load_aligned` | load values from aligned memory |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`load_unaligned` | load values from unaligned memory |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`load_as` | load values, forcing a type conversion |
+---------------------------------------+----------------------------------------------------+
From a scalar:
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`broadcast` | broadcasting a value to all slots |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`broadcast_as` | broadcasting a value, forcing a type conversion |
+---------------------------------------+----------------------------------------------------+
To memory:
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`store` | store values to memory |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`store_aligned` | store values to aligned memory |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`store_unaligned` | store values to unaligned memory |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`store_as` | store values, forcing a type conversion |
+---------------------------------------+----------------------------------------------------+
In place:
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`swizzle` | rearrange slots within the batch |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`slide_left` | bitwise shift the whole batch to the left |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`slide_right` | bitwise shift the whole batch to the right |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`rotate_left` | bitwise rotate the whole batch to the left |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`rotate_right` | bitwise rotate the whole batch to the right |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`insert` | modify a single batch slot |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`compress` | pack elements according to a mask |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`expand` | select contiguous elements from the batch |
+---------------------------------------+----------------------------------------------------+
Between batches:
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`transpose` | tranpose a matrix as an array of batches |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`zip_lo` | interleave low halves of two batches |
+---------------------------------------+----------------------------------------------------+
| :cpp:func:`zip_hi` | interleave high halves of two batches |
+---------------------------------------+----------------------------------------------------+
----
.. doxygengroup:: batch_data_transfer
:project: xsimd
:content-only:
The following empty types are used for tag dispatching:
.. doxygenstruct:: xsimd::aligned_mode
:project: xsimd
.. doxygenstruct:: xsimd::unaligned_mode
:project: xsimd
|