Vectors can be reinterpreted as vectors with a different element type, as long as they have the same total size.
More...
Vectors can be reinterpreted as vectors with a different element type, as long as they have the same total size.
v3 = aie::vector_cast<cint16>(v);
auto cast_to() const
Reinterprets the current vector as a vector of the given type.
Definition vector.hpp:242
Type for vector registers.
Definition vector.hpp:107
int32_t int32
Definition types.hpp:64
Vectors can be converted into accumulators. Their values can be shifted into a larger magnitude to implement fixed point precision schemes (this does not apply to floating point accumulators).
void from_vector(const vector< T, Elems > &v, int shift=0)
Updates the contents of the accumulator using the values in the given vector after applying the reque...
Definition accum.hpp:415
Type for vector accumulators.
Definition accum.hpp:84
Conversely, accumulators can be converted into vectors. Their values can be shifted down before rounding and saturation is applied (this does not apply to floating point accumulators).
vector< T, Elems > to_vector(int shift=0) const
Applies shift-round-saturate to the elements of the accumulator and stores the result into a vector o...
Definition accum.hpp:354
int16_t int16
Definition types.hpp:63
|
template<AccumElemBaseType AccumTag, VectorOrOp Vec> |
accum< AccumTag, Vec::size()> | aie::from_vector (const Vec &v, int shift=0) |
| Returns the values of the passed vector in an accumulator of the requested type after applying the requested upshift operation.
|
|
template<VectorOrOp Vec, typename T2 = Utils::get_prev_integer_type_t<typename Vec::value_type>> |
auto | aie::pack (const Vec &v) -> vector< T2, Vec::size()> |
| Returns a conversion of the passed vector to the next smaller integer datatype, with the same number of elements.
|
|
template<typename TR , typename T >
requires (AccumOrOp<T> || MmulOrOp<T>) |
vector< TR, T::size()> | aie::to_vector (const T &acc, int shift=0) |
| Returns the values of the passed accumulator in a vector of the requested type.
|
|
template<VectorOrOp Vec, typename T2 = Utils::get_next_integer_type_t<typename Vec::value_type>>
requires (Utils::is_one_of_v<T2, int8, uint8, int16, uint16>) |
auto | aie::unpack (const Vec &v) -> vector< T2, Vec::size()> |
| Returns a conversion of the passed vector to the next larger integer datatype, with the same number of elements.
|
|
template<ElemBaseType DstT, Accum Acc>
requires (arch::is(arch::AIE_ML)) |
auto | aie::vector_cast (const Acc &acc) |
| Reinterpret an accumulator as a vector.
|
|
template<ElemBaseType DstT, Vector Vec> |
auto | aie::vector_cast (const Vec &v) |
| Reinterpret a vector using a different element type.
|
|
◆ from_vector()
accum< AccumTag, Vec::size()> aie::from_vector |
( |
const Vec & |
v, |
|
|
int |
shift = 0 |
|
) |
| |
Returns the values of the passed vector in an accumulator of the requested type after applying the requested upshift operation.
- Parameters
-
v | Input vector. The type must meet VectorOrOp. |
shift | Optional upshift in bits to be applied to output accumulator. This parameter is ignored for floating-point types. |
- Template Parameters
-
AccumTag | Accumulator tag that specifies returned accumulator type. The class must be compatible with the vector type (real/complex). |
◆ pack()
template<
VectorOrOp Vec, typename T2 = Utils::get_prev_integer_type_t<typename Vec::value_type>>
auto aie::pack |
( |
const Vec & |
v | ) |
-> vector<T2, Vec::size()>
|
Returns a conversion of the passed vector to the next smaller integer datatype, with the same number of elements.
- Parameters
-
- Template Parameters
-
T2 | Element type for the returned vector. Can only select between int8/uint8 on AIE1. |
◆ to_vector()
template<typename TR , typename T >
requires (
AccumOrOp<T> || MmulOrOp<T>)
vector< TR, T::size()> aie::to_vector |
( |
const T & |
acc, |
|
|
int |
shift = 0 |
|
) |
| |
Returns the values of the passed accumulator in a vector of the requested type.
The values can be shifted down before rounding and saturation are applied (does not apply to floating point accumulators).
- Parameters
-
acc | Input accumulator. The type must meet AccumOrOp or MmulOrOp. |
shift | Optional downshift in bits to be applied to output data. This parameter is ignored for floating-point types. |
- Template Parameters
-
TR | Element type for the returned vector. |
◆ unpack()
template<
VectorOrOp Vec, typename T2 = Utils::get_next_integer_type_t<typename Vec::value_type>>
requires (Utils::is_one_of_v<T2,
int8,
uint8,
int16,
uint16>)
auto aie::unpack |
( |
const Vec & |
v | ) |
-> vector<T2, Vec::size()>
|
Returns a conversion of the passed vector to the next larger integer datatype, with the same number of elements.
- Parameters
-
◆ vector_cast() [1/2]
auto aie::vector_cast |
( |
const Acc & |
acc | ) |
|
Reinterpret an accumulator as a vector.
The returned vector has the same size in bits as the input accumulator.
- Template Parameters
-
DstT | Element type for the returned vector. |
- Parameters
-
◆ vector_cast() [2/2]
auto aie::vector_cast |
( |
const Vec & |
v | ) |
|
Reinterpret a vector using a different element type.
The returned vector has the same size in bits as the input vector.
- Template Parameters
-
DstT | Element type for the returned vector. |
- Parameters
-