The class for integer SIMD computations using128-bit registers (MM0-XMM15 for SSE, and Q0-Q15 for NEON).
More...
|
static i128 | SetZero () noexcept |
| Sets all bits to 0 .
|
|
static i128 | SetFull (i128arg dummy) noexcept |
| Sets all bits to 1 .
|
|
|
static i128 | SetValue (int8_t v, each_int8_tag) noexcept |
| Sets a signed 8-bit integer to sixteen 8-bit lanes.
|
|
static i128 | SetValue (int16_t v, each_int16_tag) noexcept |
| Sets a signed 8-bit integer to sixteen 6-bit lanes.
|
|
static i128 | SetValue (int32_t v, each_int32_tag) noexcept |
| Sets a signed 32-bit integer to four 32-bit lanes.
|
|
static i128 | SetValue (int64_t v, each_int64_tag) noexcept |
| Sets a signed 64-bit integer to two 64-bit lanes.
|
|
static i128 | SetValue (uint8_t v, each_uint8_tag) noexcept |
| Sets an unsigned 8-bit integer to sixteen 8-bit lanes.
|
|
static i128 | SetValue (uint16_t v, each_uint16_tag) noexcept |
| Sets an unsigned 8-bit integer to sixteen 16-bit lanes.
|
|
static i128 | SetValue (uint32_t v, each_uint32_tag) noexcept |
| Sets an unsigned 32-bit integer to four 32-bit lanes.
|
|
static i128 | SetValue (uint64_t v, each_uint64_tag) noexcept |
| Sets an unsigned 64-bit integer to two 64-bit lanes.
|
|
|
template<size_t N> |
static i128 | SetValue (i128 value, each_select32_tag) noexcept |
| Sets all lanes to the 32-bit value in lane N of the value argument. More...
|
|
template<size_t N> |
static i128 | SetValue (i128 value, each_select16_tag) noexcept |
| Sets all lanes to the 16-bit value in lane N of the value argument. More...
|
|
template<size_t N> |
static i128 | SetValue (i128 value, each_select8_tag) noexcept |
| Sets all lanes to the 8-bit value in lane N of the value argument. More...
|
|
|
static i128 | LoadA16 (const void *p) noexcept |
| Loads 16 bytes of data from the 16-byte-aligned address p and sets the value. The argument type is either uintptr_t or intptr_t .
|
|
static i128 | LoadA8 (const void *p) noexcept |
| Loads 8 bytes of data from the 16-byte-aligned address p and sets the value. The argument type is either uintptr_t or intptr_t .
|
|
static i128 | LoadA4 (const void *p) noexcept |
| Loads 4 bytes of data from the 16-byte-aligned address p and sets the value. The argument type is either uintptr_t or intptr_t .
|
|
static i128 | LoadA2 (const void *p) noexcept |
| Loads 2 bytes of data from the 16-byte-aligned address p and sets the value. The argument type is either uintptr_t or intptr_t .
|
|
static i128 | LoadA1 (const void *p) noexcept |
| Loads 16 bytes of data from the unaligned address p and sets the value. The argument type is either uintptr_t or intptr_t .
|
|
static i128 | LoadLoA8 (const void *p) noexcept |
| Loads 8 bytes of data from the 8-byte-aligned address p and sets the data value to the lower 64 bits and 0 to the upper 64 bits. The argument type can be either uintptr_t or intptr_t .
|
|
static i128 | LoadLoA4 (const void *p) noexcept |
| Loads 8 bytes of data from the 4-byte-aligned address p and sets the data value to the lower 64 bits and 0 to the upper 64 bits. The argument type can be either uintptr_t or intptr_t .
|
|
static i128 | LoadLoA2 (const void *p) noexcept |
| Loads 8 bytes of data from the 2-byte-aligned address p and sets the data value to the lower 64 bits and 0 to the upper 64 bits. The argument type can be either uintptr_t or intptr_t .
|
|
static i128 | LoadLoA1 (const void *p) noexcept |
| Loads 8 bytes of data from the unaligned address p and sets the data value to the lower 64 bits and 0 to the upper 64 bits. The argument type can be either uintptr_t or intptr_t .
|
|
static i128 | LoadHiA8 (const void *p) noexcept |
| Loads 8 bytes of data from the 8-byte-aligned address p and sets the data value to the upper 64 bits and 0 to the lower 64 bits. The argument type can be either uintptr_t or intptr_t .
|
|
static i128 | LoadHiA4 (const void *p) noexcept |
| Loads 8 bytes of data from the 4-byte-aligned address p and sets the data value to the upper 64 bits and 0 to the lower 64 bits. The argument type can be either uintptr_t or intptr_t .
|
|
static i128 | LoadHiA2 (const void *p) noexcept |
| Loads 8 bytes of data from the 2-byte-aligned address p and sets the data value to the upper 64 bits and 0 to the lower 64 bits. The argument type can be either uintptr_t or intptr_t .
|
|
static i128 | LoadHiA1 (const void *p) noexcept |
| Loads 8 bytes of data from the unaligned address p and sets the data value to the upper 64 bits and 0 to the lower 64 bits. The argument type can be either uintptr_t or intptr_t .
|
|
|
static void | StoreA16 (void *p, i128arg value) noexcept |
| Writes the 16 bytes of data of value to the 16-byte-aligned address specified in the p parameter. The argument type is either uintptr_t or intptr_t .
|
|
static void | StoreA8 (void *p, i128arg value) noexcept |
| Writes the 8 bytes of data of value to the 16-byte-aligned address specified in the p parameter. The argument type is either uintptr_t or intptr_t .
|
|
static void | StoreA4 (void *p, i128arg value) noexcept |
| Writes the 4 bytes of data of value to the 16-byte-aligned address specified in the p parameter. The argument type is either uintptr_t or intptr_t .
|
|
static void | StoreA2 (void *p, i128arg value) noexcept |
| Writes the 2 bytes of data of value to the 16-byte-aligned address specified in the p parameter. The argument type is either uintptr_t or intptr_t .
|
|
static void | StoreA1 (void *p, i128arg value) noexcept |
| Writes the 16 bytes of data of value to the unaligned address in the p parameter. The argument type is either uintptr_t or intptr_t .
|
|
static void | StoreLoA8 (void *p, i128arg value) noexcept |
| Writes the lower 64 bits of value to the 8-byte-aligned address specified in the p parameter. The argument type can be either uintptr_t or intptr_t .
|
|
static void | StoreLoA4 (void *p, i128arg value) noexcept |
| Writes the lower 64 bits of value to the 4-byte-aligned address specified in the p parameter. The argument type can be either uintptr_t or intptr_t .
|
|
static void | StoreLoA2 (void *p, i128arg value) noexcept |
| Writes the lower 64 bits of value to the 2-byte-aligned address specified in the p parameter. The argument type can be either uintptr_t or intptr_t .
|
|
static void | StoreLoA1 (void *p, i128arg value) noexcept |
| Writes the lower 64 bits of value to the unaligned address specified in the p parameter. The argument type can be either uintptr_t or intptr_t .
|
|
static void | StoreHiA8 (void *p, i128arg value) noexcept |
| Writes the upper 64 bits of value to the 8-byte-aligned address specified in the p parameter. The argument type can be either uintptr_t or intptr_t .
|
|
static void | StoreHiA4 (void *p, i128arg value) noexcept |
| Writes the upper 64 bits of value to the 4-byte-aligned address specified in the p parameter. The argument type can be either uintptr_t or intptr_t .
|
|
static void | StoreHiA2 (void *p, i128arg value) noexcept |
| Writes the upper 64 bits of value to the 2-byte-aligned address specified in the p parameter. The argument type can be either uintptr_t or intptr_t .
|
|
static void | StoreHiA1 (void *p, i128arg value) noexcept |
| Writes the upper 64 bits of value to the unaligned address specified in the p parameter. The argument type can be either uintptr_t or intptr_t .
|
|
|
template<size_t N> |
static uint8_t | GetUint8FromLane (i128arg value) noexcept |
| Gets a 8-bit unsigned integer from lane N of value. More...
|
|
template<size_t N> |
static uint16_t | GetUint16FromLane (i128arg value) noexcept |
| Gets a 16-bit unsigned integer from lane N of value. More...
|
|
template<size_t N> |
static uint32_t | GetUint32FromLane (i128arg value) noexcept |
| Gets a 32-bit unsigned integer from lane N of value. More...
|
|
template<size_t N> |
static uint64_t | GetUint64FromLane (i128arg value) noexcept |
| Gets a 64-bit unsigned integer from lane N of value. More...
|
|
template<size_t N> |
static i128 | SetUint8ToLane (i128arg value, uint8_t v) noexcept |
| Sets v to the unsigned 8-bit integer from lane N of the value argument. More...
|
|
template<size_t N> |
static i128 | SetUint16ToLane (i128arg value, uint16_t v) noexcept |
| Sets v to the unsigned 16-bit integer from lane N of the value argument. More...
|
|
template<size_t N> |
static i128 | SetUint32ToLane (i128arg value, uint32_t v) noexcept |
| Sets v to the unsigned 32-bit integer from lane N of the value argument. More...
|
|
template<size_t N> |
static i128 | SetUint64ToLane (i128arg value, uint64_t v) noexcept |
| Sets v to the unsigned 64-bit integer from lane N of the value argument. More...
|
|
|
static i128 | Add8 (i128arg a, i128arg b) noexcept |
| Adds the 8-bit integer values of each lane in the a and b arguments. More...
|
|
static i128 | Add16 (i128arg a, i128arg b) noexcept |
| Adds the 16-bit integer values of each lane in the a and b arguments. More...
|
|
static i128 | Add32 (i128arg a, i128arg b) noexcept |
| Adds the 32-bit integer values of each lane in the a and b arguments. More...
|
|
static i128 | Add64 (i128arg a, i128arg b) noexcept |
| Adds the 64-bit integer values of each lane in the a and b arguments. More...
|
|
static i128 | AddInt8Saturated (i128arg a, i128arg b) noexcept |
| Saturated addition of the signed 8-bit integers of each lane in the a and b arguments. More...
|
|
static i128 | AddInt16Saturated (i128arg a, i128arg b) noexcept |
| Saturated addition of the signed 16-bit integers of each lane in the a and b arguments. More...
|
|
static i128 | AddUint8Saturated (i128arg a, i128arg b) noexcept |
| Saturated addition of the unsigned 8-bit integers of each lane in the a and b arguments. More...
|
|
static i128 | AddUint16Saturated (i128arg a, i128arg b) noexcept |
| Saturated addition of the unsigned 16-bit integers of each lane in the a and b arguments. More...
|
|
static i128 | Sub8 (i128arg a, i128arg b) noexcept |
| Subtracts the 8-bit integer values in each lane of the b argument from each lane of the a argument. More...
|
|
static i128 | Sub16 (i128arg a, i128arg b) noexcept |
| Subtracts the 16-bit integer values in each lane of the b argument from each lane of the a argument. More...
|
|
static i128 | Sub32 (i128arg a, i128arg b) noexcept |
| Subtracts the 32-bit integer values in each lane of the b argument from each lane of the a argument. More...
|
|
static i128 | Sub64 (i128arg a, i128arg b) noexcept |
| Subtracts the 64-bit integer values in each lane of the b argument from each lane of the a argument. More...
|
|
static i128 | SubInt8Saturated (i128arg a, i128arg b) noexcept |
| Saturated subtraction of the signed 8-bit integer value in each lane of the b argument from each lane of the a argument. More...
|
|
static i128 | SubInt16Saturated (i128arg a, i128arg b) noexcept |
| Saturated subtraction of the signed 16-bit integer value in each lane of the b argument from each lane of the a argument. More...
|
|
static i128 | SubUint8Saturated (i128arg a, i128arg b) noexcept |
| Saturated subtraction of the unsigned 8-bit integer value in each lane of the b argument from each lane of the a argument. More...
|
|
static i128 | SubUint16Saturated (i128arg a, i128arg b) noexcept |
| Saturated subtraction of the unsigned 16-bit integer value in each lane of the b argument from each lane of the a argument. More...
|
|
static i128 | PairwiseAdd8 (i128arg a, i128arg b) noexcept |
| Horizontal addition of the 8-bit integer value in each lane of the a and b arguments. More...
|
|
static i128 | PairwiseAdd16 (i128arg a, i128arg b) noexcept |
| Horizontal addition of the 16-bit integer value in each lane of the a and b arguments. More...
|
|
static i128 | PairwiseAdd32 (i128arg a, i128arg b) noexcept |
| Horizontal addition of the 32-bit integer value in each lane of the a and b arguments. More...
|
|
static i128 | Mult16 (i128arg a, i128arg b) noexcept |
| Multiplies the 16-bit integer value in each lane of the a and b arguments. More...
|
|
static i128 | MultAdd16 (i128arg a, i128arg b, i128arg c) noexcept |
| Multiplies the 16-bit integer value in each lane of the a and b arguments, and adds the 16-bit integer value in each lane of c to the result. More...
|
|
static i128 | MultSub16 (i128arg a, i128arg b, i128arg c) noexcept |
| Multiplies the 16-bit integer value in each lane of the a and b arguments, and subtracts the 16-bit integer value in each lane of c from the result. More...
|
|
static i128 | Mult32 (i128arg a, i128arg b) noexcept |
| Multiplies the 32-bit integer value in each lane of the a and b arguments. More...
|
|
static i128 | MultAdd32 (i128arg a, i128arg b, i128arg c) noexcept |
| Multiplies the 32-bit integer value in each lane of the a and b arguments, and adds the 32-bit integer value in each lane of c to the result. More...
|
|
static i128 | MultSub32 (i128arg a, i128arg b, i128arg c) noexcept |
| Multiplies the 32-bit integer value in each lane of the a and b arguments, and subtracts the 32-bit integer value in each lane of c from the result. More...
|
|
static i128 | NegateInt8 (i128arg value) noexcept |
| Calculates the negation of the signed 8-bit integer value in each lane of the value argument.
|
|
static i128 | NegateInt16 (i128arg value) noexcept |
| Calculates the negation of the signed 16-bit integer value in each lane of the value argument.
|
|
static i128 | NegateInt32 (i128arg value) noexcept |
| Calculates the negation of the signed 32-bit integer value in each lane of the value argument.
|
|
|
static i128 | MaxInt8 (i128arg a, i128arg b) noexcept |
| Sets the larger signed 8-bit integer value of each lane in the a and b arguments. More...
|
|
static i128 | MaxInt16 (i128arg a, i128arg b) noexcept |
| Sets the larger signed 16-bit integer value of each lane in the a and b arguments. More...
|
|
static i128 | MaxInt32 (i128arg a, i128arg b) noexcept |
| Sets the larger signed 32-bit integer value of each lane in the a and b arguments. More...
|
|
static i128 | MaxUint8 (i128arg a, i128arg b) noexcept |
| Sets the larger unsigned 8-bit integer value of each lane in the a and b arguments. More...
|
|
static i128 | MaxUint16 (i128arg a, i128arg b) noexcept |
| Sets the larger unsigned 16-bit integer value of each lane in the a and b arguments. More...
|
|
static i128 | MaxUint32 (i128arg a, i128arg b) noexcept |
| Sets the larger unsigned 32-bit integer value of each lane in the a and b arguments. More...
|
|
static i128 | MinInt8 (i128arg a, i128arg b) noexcept |
| Sets the smaller signed 8-bit integer value of each lane in the a and b arguments. More...
|
|
static i128 | MinInt16 (i128arg a, i128arg b) noexcept |
| Sets the smaller signed 16-bit integer value of each lane in the a and b arguments. More...
|
|
static i128 | MinInt32 (i128arg a, i128arg b) noexcept |
| Sets the smaller signed 32-bit integer value of each lane in the a and b arguments. More...
|
|
static i128 | MinUint8 (i128arg a, i128arg b) noexcept |
| Sets the smaller unsigned 8-bit integer value of each lane in the a and b arguments. More...
|
|
static i128 | MinUint16 (i128arg a, i128arg b) noexcept |
| Sets the smaller unsigned 16-bit integer value of each lane in the a and b arguments. More...
|
|
static i128 | MinUint32 (i128arg a, i128arg b) noexcept |
| Sets the smaller unsigned 32-bit integer value of each lane in the a and b arguments. More...
|
|
|
static i128 | AbsInt8 (i128arg value) noexcept |
| Calculates the absolute values for the signed 8-bit integers from each lane of the value argument.
|
|
static i128 | AbsInt16 (i128arg value) noexcept |
| Calculates the absolute values for the signed 16-bit integers from each lane of the value argument.
|
|
static i128 | AbsInt32 (i128arg value) noexcept |
| Calculates the absolute values for the signed 32-bit integers from each lane of the value argument.
|
|
static i128 | AbsDiffInt8 (i128arg a, i128arg b) noexcept |
| Calculates the absolute value of the difference of the signed 8-bit integer values in each lane of the a and b arguments.
|
|
static i128 | AbsDiffInt16 (i128arg a, i128arg b) noexcept |
| Calculates the absolute value of the difference of the signed 16-bit integer values in each lane of the a and b arguments.
|
|
static i128 | AbsDiffInt32 (i128arg a, i128arg b) noexcept |
| Calculates the absolute value of the difference of the signed 32-bit integer values in each lane of the a and b arguments.
|
|
|
static i128 | And (i128arg a, i128arg b) noexcept |
| Calculates the bitwise AND of the a and b arguments.
|
|
static i128 | Or (i128arg a, i128arg b) noexcept |
| Calculates the bitwise OR of the a and b arguments.
|
|
static i128 | Xor (i128arg a, i128arg b) noexcept |
| Calculates the bitwise XOR of the a and b arguments.
|
|
static i128 | Not (i128arg a) noexcept |
| Calculates the bitwise NOT of the a argument.
|
|
static i128 | AndNot (i128arg a, i128arg b) noexcept |
| Calculates the bitwise NOT of the a argument, and the bitwise AND of the b argument. More...
|
|
static i128 | OrNot (i128arg a, i128arg b) noexcept |
| Calculates the bitwise NOT of the a argument, and the bitwise OR of the b argument. More...
|
|
static i128 | Test8 (i128arg a, i128arg b) noexcept |
| The same meaning as I128::Not(I128::CmpEqZero8(I128::And(a, b))) .
|
|
static i128 | Test16 (i128arg a, i128arg b) noexcept |
| The same meaning as I128::Not(I128::CmpEqZero16(I128::And(a, b))) .
|
|
static i128 | Test32 (i128arg a, i128arg b) noexcept |
| The same meaning as I128::Not(I128::CmpEqZero32(I128::And(a, b))) .
|
|
|
static i128 | CmpEq8 (i128arg a, i128arg b) noexcept |
| Compares a and b in units of 8-bit lanes. More...
|
|
static i128 | CmpEq16 (i128arg a, i128arg b) noexcept |
| Compares a and b in units of 16-bit lanes. More...
|
|
static i128 | CmpEq32 (i128arg a, i128arg b) noexcept |
| Compares a and b in units of 32-bit lanes. More...
|
|
static i128 | CmpEq64 (i128arg a, i128arg b) noexcept |
| Compares a and b on a 64-bit lane basis. More...
|
|
static i128 | CmpLtInt8 (i128arg a, i128arg b) noexcept |
| Compares a and b as 8-bit signed integers. More...
|
|
static i128 | CmpLtInt16 (i128arg a, i128arg b) noexcept |
| Compares a and b as 16-bit signed integers. More...
|
|
static i128 | CmpLtInt32 (i128arg a, i128arg b) noexcept |
| Compares a and b as 32-bit signed integers. More...
|
|
static i128 | CmpLtInt64 (i128arg a, i128arg b) noexcept |
| Compares a and b as 64-bit signed integers. More...
|
|
static i128 | CmpGtInt8 (i128arg a, i128arg b) noexcept |
| Compares a and b as 8-bit signed integers. More...
|
|
static i128 | CmpGtInt16 (i128arg a, i128arg b) noexcept |
| Compares a and b as 16-bit signed integers. More...
|
|
static i128 | CmpGtInt32 (i128arg a, i128arg b) noexcept |
| Compares a and b as 32-bit signed integers. More...
|
|
static i128 | CmpGtInt64 (i128arg a, i128arg b) noexcept |
| Compares a and b as 64-bit signed integers. More...
|
|
static i128 | CmpLtUint8 (i128arg a, i128arg b) noexcept |
| Compares a and b as 8-bit unsigned integers. More...
|
|
static i128 | CmpLtUint16 (i128arg a, i128arg b) noexcept |
| Compares a and b as 16-bit unsigned integers. More...
|
|
static i128 | CmpLtUint32 (i128arg a, i128arg b) noexcept |
| Compares a and b as 32-bit unsigned integers. More...
|
|
static i128 | CmpLtUint64 (i128arg a, i128arg b) noexcept |
| Compares a and b as 64-bit unsigned integers. More...
|
|
static i128 | CmpGtUint8 (i128arg a, i128arg b) noexcept |
| Compares a and b as 8-bit unsigned integers. More...
|
|
static i128 | CmpGtUint16 (i128arg a, i128arg b) noexcept |
| Compares a and b as 16-bit unsigned integers. More...
|
|
static i128 | CmpGtUint32 (i128arg a, i128arg b) noexcept |
| Compares a and b as 32-bit unsigned integers. More...
|
|
static i128 | CmpGtUint64 (i128arg a, i128arg b) noexcept |
| Compares a and b as 64-bit unsigned integers. More...
|
|
static i128 | CmpLeInt8 (i128arg a, i128arg b) noexcept |
| Compares a and b as 8-bit signed integers. More...
|
|
static i128 | CmpLeInt16 (i128arg a, i128arg b) noexcept |
| Compares a and b as 16-bit signed integers. More...
|
|
static i128 | CmpLeInt32 (i128arg a, i128arg b) noexcept |
| Compares a and b as 32-bit signed integers. More...
|
|
static i128 | CmpLeInt64 (i128arg a, i128arg b) noexcept |
| Compares a and b as 64-bit signed integers. More...
|
|
static i128 | CmpGeInt8 (i128arg a, i128arg b) noexcept |
| Compares a and b as 8-bit signed integers. More...
|
|
static i128 | CmpGeInt16 (i128arg a, i128arg b) noexcept |
| Compares a and b as 16-bit signed integers. More...
|
|
static i128 | CmpGeInt32 (i128arg a, i128arg b) noexcept |
| Compares a and b as 32-bit signed integers. More...
|
|
static i128 | CmpGeInt64 (i128arg a, i128arg b) noexcept |
| Compares a and b as 64-bit signed integers. More...
|
|
static i128 | CmpLeUint8 (i128arg a, i128arg b) noexcept |
| Compares a and b as 8-bit unsigned integers. More...
|
|
static i128 | CmpLeUint16 (i128arg a, i128arg b) noexcept |
| Compares a and b as 16-bit unsigned integers. More...
|
|
static i128 | CmpLeUint32 (i128arg a, i128arg b) noexcept |
| Compares a and b as 32-bit unsigned integers. More...
|
|
static i128 | CmpLeUint64 (i128arg a, i128arg b) noexcept |
| Compares a and b as 64-bit unsigned integers. More...
|
|
static i128 | CmpGeUint8 (i128arg a, i128arg b) noexcept |
| Compares a and b as 8-bit unsigned integers. More...
|
|
static i128 | CmpGeUint16 (i128arg a, i128arg b) noexcept |
| Compares a and b as 16-bit unsigned integers. More...
|
|
static i128 | CmpGeUint32 (i128arg a, i128arg b) noexcept |
| Compares a and b as 32-bit unsigned integers. More...
|
|
static i128 | CmpGeUint64 (i128arg a, i128arg b) noexcept |
| Compares a and b as 64-bit unsigned integers. More...
|
|
static i128 | CmpEqZero8 (i128arg value) noexcept |
| The same meaning as I128::CmpEq8(value, I128::SetZero()) .
|
|
static i128 | CmpEqZero16 (i128arg value) noexcept |
| The same meaning as I128::CmpEq16(value, I128::SetZero()) .
|
|
static i128 | CmpEqZero32 (i128arg value) noexcept |
| The same meaning as I128::CmpEq32(value, I128::SetZero()) .
|
|
static i128 | CmpEqZero64 (i128arg value) noexcept |
| The same meaning as I128::CmpEq64(value, I128::SetZero()) .
|
|
|
static i128 | ShiftLeftLogical8 (i128arg value, int count) noexcept |
| Left shifts each 8-bit lane by count digits.
|
|
static i128 | ShiftRightLogical8 (i128arg value, int count) noexcept |
| Conducts a right logical shift of each 8-bit lane by count digits.
|
|
static i128 | ShiftRightArithmetic8 (i128arg value, int count) noexcept |
| Conducts a right arithmetic shift of each 8-bit lane by count digits.
|
|
static i128 | ShiftLeftLogical16 (i128arg value, int count) noexcept |
| Left shifts each 16-bit lane by count digits.
|
|
static i128 | ShiftRightLogical16 (i128arg value, int count) noexcept |
| Conducts a right logical shift of each 16-bit lane by count digits.
|
|
static i128 | ShiftRightArithmetic16 (i128arg value, int count) noexcept |
| Conducts a right arithmetic shift of each 16-bit lane by count digits.
|
|
static i128 | ShiftLeftLogical32 (i128arg value, int count) noexcept |
| Left shifts each 32-bit lane by count digits.
|
|
static i128 | ShiftRightLogical32 (i128arg value, int count) noexcept |
| Conducts a right logical shift of each 32-bit lane by count digits.
|
|
static i128 | ShiftRightArithmetic32 (i128arg value, int count) noexcept |
| Conducts a right arithmetic shift of each 32-bit lane by count digits.
|
|
static i128 | ShiftLeftLogical64 (i128arg value, int count) noexcept |
| Left shifts each 64-bit lane by count digits.
|
|
static i128 | ShiftRightLogical64 (i128arg value, int count) noexcept |
| Conducts a right logical shift of each 64-bit lane by count digits.
|
|
|
template<size_t N> |
static i128 | ShiftLeftLogical8 (i128arg value) noexcept |
| Each 8-bit lane is shifted to the left by N bits. More...
|
|
template<size_t N> |
static i128 | ShiftRightLogical8 (i128arg value) noexcept |
| Each 8-bit lane is shifted to the right by N bits. More...
|
|
template<size_t N> |
static i128 | ShiftRightArithmetic8 (i128arg value) noexcept |
| Each 8-bit lane is arithmetically shifted to the right by N bits. More...
|
|
template<size_t N> |
static i128 | ShiftLeftLogical16 (i128arg value) noexcept |
| Each 16-bit lane is shifted to the left by N bits. More...
|
|
template<size_t N> |
static i128 | ShiftRightLogical16 (i128arg value) noexcept |
| Each 16-bit lane is shifted to the right by N bits. More...
|
|
template<size_t N> |
static i128 | ShiftRightArithmetic16 (i128arg value) noexcept |
| Each 16-bit lane is arithmetically shifted to the right by N bits. More...
|
|
template<size_t N> |
static i128 | ShiftLeftLogical32 (i128arg value) noexcept |
| Each 32-bit lane is shifted to the left by N bits. More...
|
|
template<size_t N> |
static i128 | ShiftRightLogical32 (i128arg value) noexcept |
| Each 32-bit lane is shifted to the right by N bits. More...
|
|
template<size_t N> |
static i128 | ShiftRightArithmetic32 (i128arg value) noexcept |
| Each 32-bit lane is arithmetically shifted to the right by N bits. More...
|
|
template<size_t N> |
static i128 | ShiftLeftLogical64 (i128arg value) noexcept |
| Each 64-bit lane is shifted to the left by N bits. More...
|
|
template<size_t N> |
static i128 | ShiftRightLogical64 (i128arg value) noexcept |
| Each 64-bit lane is shifted to the right by N bits. More...
|
|
|
template<size_t N> |
static i128 | ByteShiftLeft (i128arg value) noexcept |
| Left-shifts value by an amount of N bytes. Empty lanes are populated with zero. More...
|
|
template<size_t N> |
static i128 | ByteShiftRight (i128arg value) noexcept |
| Right-shifts value by an amount of N bytes. Empty lanes are populated with zero. More...
|
|
template<size_t N> |
static i128 | ByteRotateRight (i128arg value) noexcept |
| Rotates value to the right by an amount of N bytes. More...
|
|
template<size_t N> |
static i128 | AlignR (i128arg a, i128arg b) noexcept |
| Returns the lower 128-bit value after a and b have been right-shifted N bytes to resemble a 256-bit value. More...
|
|
|
static i128 | NarrowFrom16To8 (i128arg lo, i128arg hi) noexcept |
| Cuts the upper 8 bits off of 16-bit-wide lanes and returns sixteen values as a single 128-bit value. More...
|
|
static i128 | NarrowFrom32To16 (i128arg lo, i128arg hi) noexcept |
| Cuts the upper 16 bits off of 32-bit-wide lanes and returns eight values as a single 128-bit value. More...
|
|
static i128 | NarrowFrom64To32 (i128arg lo, i128arg hi) noexcept |
| Cuts the upper 32 bits off of 64-bit-wide lanes and returns four values as a single 128-bit value. More...
|
|
static i128 | ConvertFromUint16ToUint8Saturated (i128arg lo, i128arg hi) noexcept |
| Converts sixteen 16-bit unsigned integers into sixteen 8-bit unsigned integers. Out of range values are clamped. More...
|
|
static i128 | ConvertFromInt16ToInt8Saturated (i128arg lo, i128arg hi) noexcept |
| Converts sixteen 16-bit signed integers into sixteen 8-bit signed integers. Out of range values are clamped. More...
|
|
static i128 | ConvertFromUint32ToUint16Saturated (i128arg lo, i128arg hi) noexcept |
| Converts eight 32-bit unsigned integers into eight 16-bit unsigned integers. Out of range values are clamped. More...
|
|
static i128 | ConvertFromInt32ToInt16Saturated (i128arg lo, i128arg hi) noexcept |
| Converts eight 32-bit signed integers into eight 16-bit signed integers. Out of range values are clamped. More...
|
|
static i128 | ConvertFromInt8ToInt16Lo (i128arg value) noexcept |
| Sign-extends eight 8-bit signed integers from the lower 64 bits of the argument to eight 16-bit signed integers. More...
|
|
static i128 | ConvertFromInt8ToInt16Hi (i128arg value) noexcept |
| Sign-extends eight 8-bit signed integers from the upper 64 bits of the argument to eight 16-bit signed integers. More...
|
|
static i128 | ConvertFromInt16ToInt32Lo (i128arg value) noexcept |
| Sign-extends four 16-bit signed integers from the lower 64 bits of the argument to four 32-bit signed integers. More...
|
|
static i128 | ConvertFromInt16ToInt32Hi (i128arg value) noexcept |
| Sign-extends four 16-bit signed integers from the upper 64 bits of the argument to four 32-bit signed integers. More...
|
|
static i128 | ConvertFromInt32ToInt64Lo (i128arg value) noexcept |
| Sign-extends two 32-bit signed integers from the lower 64 bits of the argument to two 64-bit signed integers. More...
|
|
static i128 | ConvertFromInt32ToInt64Hi (i128arg value) noexcept |
| Sign-extends two 32-bit signed integers from the upper 64 bits of the argument to two 64-bit signed integers. More...
|
|
static i128 | ConvertFromUint8ToUint16Lo (i128arg value) noexcept |
| Extends eight 8-bit unsigned integers from the lower 64 bits of the argument to eight 16-bit unsigned integers. More...
|
|
static i128 | ConvertFromUint8ToUint16Hi (i128arg value) noexcept |
| Extends eight 8-bit unsigned integers from the upper 64 bits of the argument to eight 16-bit unsigned integers. More...
|
|
static i128 | ConvertFromUint16ToUint32Lo (i128arg value) noexcept |
| Converts four 16-bit unsigned integers from the lower 64 bits of the argument to four 32-bit unsigned integers. More...
|
|
static i128 | ConvertFromUint16ToUint32Hi (i128arg value) noexcept |
| Converts four 16-bit unsigned integers from the upper 64 bits of the argument to four 32-bit unsigned integers. More...
|
|
static i128 | ConvertFromUint32ToUint64Lo (i128arg value) noexcept |
| Converts two 32-bit unsigned integers from the lower 64 bits of the argument to two 64-bit unsigned integers. More...
|
|
static i128 | ConvertFromUint32ToUint64Hi (i128arg value) noexcept |
| Converts two 32-bit unsigned integers from the upper 64 bits of the argument to two 64-bit unsigned integers. More...
|
|
|
static i128 | Zip8Lo (i128arg a, i128arg b) noexcept |
| Returns the same result as I128::Permute8<0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23>(a, b) .
|
|
static i128 | Zip8Hi (i128arg a, i128arg b) noexcept |
| Returns the same result as I128::Permute8<8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31>(a, b) .
|
|
static i128 | Unzip8Lo (i128arg a, i128arg b) noexcept |
| Returns the same result as I128::Permute8<0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30>(a, b) .
|
|
static i128 | Unzip8Hi (i128arg a, i128arg b) noexcept |
| Returns the same result as I128::Permute8<1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31>(a, b) .
|
|
static i128 | Zip16Lo (i128arg a, i128arg b) noexcept |
| Returns the same result as I128::Permute16<0, 8, 1, 9, 2, 10, 3, 11>(a, b) .
|
|
static i128 | Zip16Hi (i128arg a, i128arg b) noexcept |
| Returns the same result as I128::Permute16<4, 12, 5, 13, 6, 14, 7, 15>(a, b) .
|
|
static i128 | Unzip16Lo (i128arg a, i128arg b) noexcept |
| Returns the same result as I128::Permute16<0, 2, 4, 6, 8, 10, 12, 14>(a, b) .
|
|
static i128 | Unzip16Hi (i128arg a, i128arg b) noexcept |
| Returns the same result as I128::Permute16<1, 3, 5, 7, 9, 11, 13, 15>(a, b) .
|
|
static i128 | Zip32Lo (i128arg a, i128arg b) noexcept |
| Returns the same result as I128::Permute32<0, 4, 1, 5>(a, b) .
|
|
static i128 | Zip32Hi (i128arg a, i128arg b) noexcept |
| Returns the same result as I128::Permute32<2, 6, 3, 7>(a, b) .
|
|
static i128 | Unzip32Lo (i128arg a, i128arg b) noexcept |
| Returns the same result as I128::Permute32<0, 2, 4, 6>(a, b) .
|
|
static i128 | Unzip32Hi (i128arg a, i128arg b) noexcept |
| Returns the same result as I128::Permute32<1, 3, 5, 7>(a, b) .
|
|
template<int V0, int V1, int V2, int V3, int V4, int V5, int V6, int V7, int V8, int V9, int V10, int V11, int V12, int V13, int V14, int V15> |
static i128 | Permute8 (i128arg a, i128arg b) noexcept |
| Generates a new 128-bit value by arranging 32 8-bit values. You can specify -1 if arbitrary values generated do not matter. More...
|
|
template<int V0, int V1, int V2, int V3, int V4, int V5, int V6, int V7> |
static i128 | Permute16 (i128arg a, i128arg b) noexcept |
| Generates a new 128-bit value by arranging 16 16-bit values. You can specify -1 if arbitrary values generated do not matter. More...
|
|
template<int V0, int V1, int V2, int V3> |
static i128 | Permute32 (i128arg a, i128arg b) noexcept |
| Generates a new 128-bit value by arranging 8 32-bit values. You can specify -1 if arbitrary values generated do not matter. More...
|
|
|
static i128 | Reverse16 (i128arg value) noexcept |
| Reverses the endianness of eight 16-bit values. More...
|
|
static i128 | Reverse32 (i128arg value) noexcept |
| Reverses the endianness of four 32-bit values. More...
|
|
static i128 | Reverse64 (i128arg value) noexcept |
| Reverses the endianness of two 64-bit values. More...
|
|
|
static int | MoveMask8 (i128arg value) noexcept |
| Consolidates the various 8-bit lanes into a 1-bit value and returns it as an integer. More...
|
|
static int | MoveMask16 (i128arg value) noexcept |
| Consolidates the various 16-bit lanes into a 1-bit value and returns it as an integer. More...
|
|
static int | MoveMask32 (i128arg value) noexcept |
| Consolidates the various 32-bit lanes into a 1-bit value and returns it as an integer. More...
|
|
static i128 | SetMask8 (int mask) noexcept |
| Performs the reversed calculation of I128::MoveMask8() .
|
|
static i128 | SetMask16 (int mask) noexcept |
| Performs the reversed calculation of I128::MoveMask16() .
|
|
static i128 | SetMask32 (int mask) noexcept |
| Performs the reversed calculation of I128::MoveMask32() .
|
|
static bool | IsZero (i128arg value) noexcept |
| Examines whether all bits are 0. More...
|
|
static bool | IsFull (i128arg value) noexcept |
| Examines whether all bits are 1. More...
|
|
static i128 | Select (i128arg mask, i128arg a, i128arg b) noexcept |
| Selects and sets either of the values a and b for each lane according to the mask value. More...
|
|
static i128 | Shuffle8 (i128arg value, i128arg shuffle) noexcept |
| Sorts sixteen 8-bit values in an arbitrary order, including duplicates. More...
|
|
static int | PopCntMask8 (i128arg value) noexcept |
| Returns the number of masks with the value 0xFF among from 16 8-bit wide masks. More...
|
|
static int | ClzMask8 (i128arg value) noexcept |
| Returns the number of bytes, from the MSB (the byte at the end), consisting of consecutive zeros, among from 16 8-bit wide masks. More...
|
|
static int | CtzMask8 (i128arg value) noexcept |
| Returns the number of bytes, from the LSB (the byte at the beginning), consisting of consecutive zeros, among from 16 8-bit wide masks. More...
|
|