Function split¶
function split(const vec<T, N> &) simd¶
template <size_t, typename T, size_t N>
KFR_INTRINSIC void split(const vec<T, N>&) Terminal overload of split() for variadic recursion.
No-op overload that terminates the recursive unpacking of output references.
| T | Element type of the vector. |
| N | Input vector length. |
| x | Source vector (unused). |
Fully qualified name: kfr::split(const vec<T, N> &)
Declared at simd/shuffle.hpp:437
Function split¶
function split(const vec<T, N> &, vec<T, Nout> &, Args &&...) simd¶
template <size_t start = 0, typename T, size_t N, size_t Nout, typename... Args>
KFR_INTRINSIC void split(const vec<T, N>& x, vec<T, Nout>& out, Args&&... args) Splits x into consecutive subvectors written into the supplied output references.
Each output reference receives the next Nout elements of x, starting at offset start. The function recurses on the remaining outputs.
| start | Index of the first element to write into out. |
| T | Element type of the vector. |
| N | Input vector length. |
| Nout | Length of the current output subvector. |
| Args | Remaining output reference types. |
| x | Source vector. |
| out | Output reference receiving the current subvector. |
| args | Remaining output references. |
Fully qualified name: kfr::split(const vec<T, N> &, vec<T, Nout> &, Args &&...)
Declared at simd/shuffle.hpp:454
Function split¶
function split(const vec<T, N> &, vec<T, N / 2> &, vec<T, N / 2> &) simd¶
template <typename T, size_t N>
KFR_INTRINSIC void split(const vec<T, N>& x, vec<T, N / 2>& low, vec<T, N / 2>& high) Splits x into two equal halves.
| T | Element type of the vector. |
| N | Input vector length, must be even. |
| x | Source vector. |
| low | Output receiving the first N/2 elements. |
| high | Output receiving the last N/2 elements. |
Fully qualified name: kfr::split(const vec<T, N> &, vec<T, N / 2> &, vec<T, N / 2> &)
Declared at simd/shuffle.hpp:468
Function split¶
function split(const vec<T, N> &, vec<T, N / 4> &, vec<T, N / 4> &, vec<T, N / 4> &, vec<T, N / 4> &) simd¶
template <typename T, size_t N>
KFR_INTRINSIC void split(const vec<T, N>& x, vec<T, N / 4>& w0, vec<T, N / 4>& w1, vec<T, N / 4>& w2,
vec<T, N / 4>& w3) Splits x into four equal quarters.
| T | Element type of the vector. |
| N | Input vector length, must be divisible by 4. |
| x | Source vector. |
| w0 | Output receiving the first quarter. |
| w1 | Output receiving the second quarter. |
| w2 | Output receiving the third quarter. |
| w3 | Output receiving the fourth quarter. |
Fully qualified name: kfr::split(const vec<T, N> &, vec<T, N / 4> &, vec<T, N / 4> &, vec<T, N / 4> &, vec<T, N / 4> &)
Declared at simd/shuffle.hpp:484