|
ReXGlue SDK
|
Functions | |
| simde__m128 | ReciprocalEstimate (simde__m128 v) noexcept |
| simde__m128 | ReciprocalSqrtEstimate (simde__m128 v) noexcept |
| simde__m128 | Log2Estimate (simde__m128 v) noexcept |
| simde__m128 | Exp2Estimate (simde__m128 v) noexcept |
| template<bool NonJava> | |
| simde__m128 | ReciprocalEstimate (simde__m128 v) noexcept |
| simde__m128 | ReciprocalEstimate (simde__m128 v, bool non_java) noexcept |
| template<bool NonJava> | |
| simde__m128 | ReciprocalSqrtEstimate (simde__m128 v) noexcept |
| simde__m128 | ReciprocalSqrtEstimate (simde__m128 v, bool non_java) noexcept |
| template<bool NonJava> | |
| simde__m128 | Log2Estimate (simde__m128 v) noexcept |
| simde__m128 | Log2Estimate (simde__m128 v, bool non_java) noexcept |
| simde__m128 | Exp2Estimate (simde__m128 v, bool non_java) noexcept |
| simde__m128 | DotProduct3 (simde__m128 a, simde__m128 b) noexcept |
| simde__m128 | DotProduct3 (simde__m128 a, simde__m128 b, bool non_java) noexcept |
| simde__m128 | DotProduct4 (simde__m128 a, simde__m128 b) noexcept |
| simde__m128 | DotProduct4 (simde__m128 a, simde__m128 b, bool non_java) noexcept |
| simde__m128 | MultiplyAdd (simde__m128 a, simde__m128 b, simde__m128 c) noexcept |
| simde__m128 | MultiplyAdd (simde__m128 a, simde__m128 b, simde__m128 c, bool non_java) noexcept |
| simde__m128 | NegativeMultiplySubtract (simde__m128 a, simde__m128 b, simde__m128 c) noexcept |
| simde__m128 | NegativeMultiplySubtract (simde__m128 a, simde__m128 b, simde__m128 c, bool non_java) noexcept |
| template<bool Signed> | |
| bool | IsConvertSaturating (simde__m128 scaled) noexcept |
| template<u32 Bits, bool Signed> | |
| bool | IsAddSaturating (simde__m128i a, simde__m128i b) noexcept |
| template<u32 Bits, bool Signed> | |
| bool | IsSubSaturating (simde__m128i a, simde__m128i b) noexcept |
| template<u32 SourceBits, bool SignedDest> | |
| bool | IsPackSaturating (simde__m128i a, simde__m128i b) noexcept |
| template<u32 Type> | |
| bool | IsPackD3DSaturating (simde__m128 source) noexcept |
| template<u32 Type, u32 Mask, u32 Shift> | |
| u8 | PackD3D (VRegister &dest, const VRegister &source) |
Variables | |
| constexpr u32 | kReciprocalBase [32] |
| constexpr i32 | kReciprocalSlope [32] |
| constexpr u32 | kReciprocalSqrtBase [32] |
| constexpr i32 | kReciprocalSqrtSlope [32] |
| constexpr i32 | kLog2Base [16] |
| constexpr i32 | kLog2Slope [16] |
| constexpr u16 | kExp2Positive [2048] |
| template<typename T> | |
| using | VectorOf = std::conditional_t<std::is_floating_point_v<T>, simde__m128, simde__m128i> |
| constexpr u8 | kVectorMaskL [] |
| constexpr u8 | kVectorMaskR [] |
| constexpr u8 | kVectorShiftTableL [] |
| constexpr u8 | kVectorShiftTableR [] |
| template<typename T> | |
| simde__m128i | AddSaturate (simde__m128i a, simde__m128i b) |
| template<> | |
| simde__m128i | AddSaturate< u32 > (simde__m128i a, simde__m128i b) |
| template<typename T> | |
| simde__m128i | Average (simde__m128i a, simde__m128i b) |
| template<> | |
| simde__m128i | Average< i8 > (simde__m128i a, simde__m128i b) |
| template<> | |
| simde__m128i | Average< i16 > (simde__m128i a, simde__m128i b) |
| template<> | |
| simde__m128i | Average< i32 > (simde__m128i a, simde__m128i b) |
| template<typename To, typename From> | |
| VectorOf< To > | Convert (VectorOf< From > src) |
| template<> | |
| simde__m128 | Convert< f32, u32 > (simde__m128i src1) |
| simde__m128i | PermuteBytes (simde__m128i a, simde__m128i b, simde__m128i c) |
| template<typename T> | |
| simde__m128i | CompareGreater (simde__m128i a, simde__m128i b) |
| template<> | |
| simde__m128i | CompareGreater< u8 > (simde__m128i a, simde__m128i b) |
| template<> | |
| simde__m128i | CompareGreater< u16 > (simde__m128i a, simde__m128i b) |
| template<typename To, typename From> | |
| VectorOf< To > | ConvertSaturate (VectorOf< From > src) |
| template<> | |
| simde__m128i | ConvertSaturate< i32, f32 > (simde__m128 src1) |
| template<> | |
| simde__m128i | ConvertSaturate< u32, f32 > (simde__m128 src1) |
| simde__m128i | ShiftRightBits (simde__m128i a, simde__m128i b) |
| simde__m128i | ShiftLeftBits (simde__m128i a, simde__m128i b) |
| simde__m128i | ShiftLeftBytes (simde__m128i a, simde__m128i b) |
| simde__m128i | ShiftRightBytes (simde__m128i a, simde__m128i b) |
| template<typename T> | |
| simde__m128i | ShiftLeftLanes (simde__m128i a, simde__m128i count) |
| template<> | |
| simde__m128i | ShiftLeftLanes< u16 > (simde__m128i a, simde__m128i count) |
| template<typename T> | |
| simde__m128i | ShiftRightLanes (simde__m128i a, simde__m128i count) |
| template<> | |
| simde__m128i | ShiftRightLanes< u16 > (simde__m128i a, simde__m128i count) |
| template<> | |
| simde__m128i | ShiftRightLanes< i16 > (simde__m128i a, simde__m128i count) |
| template<> | |
| simde__m128i | ShiftLeftLanes< u8 > (simde__m128i a, simde__m128i count) |
| simde__m128i | ToGuestByteOrder (simde__m128i v) |
| void | StoreVectorBytes (u8 *host, const u8 *bytes, u32 count) |
| void | StoreVectorLeft (u8 *host, u32 ea, simde__m128i v) |
| void | StoreVectorRight (u8 *host, u32 ea, simde__m128i v) |
| void | StoreVectorPair (u8 *left_host, u32 left_ea, u8 *right_host, u32 right_ea, simde__m128i v) |
The vector intrinsics that generated code uses.
| using rex::ppc::simd::VectorOf = std::conditional_t<std::is_floating_point_v<T>, simde__m128, simde__m128i> |
Tables for the lvlx, lvrx, stvlx and stvrx vector load and store instructions, 16 rows of 16 bytes indexed by the low 4 address bits.
| simde__m128i rex::ppc::simd::AddSaturate | ( | simde__m128i | a, |
| simde__m128i | b ) |
Adds the lanes of two vectors with saturation.
|
inline |
Adds unsigned 32 bit lanes with saturation.
| simde__m128i rex::ppc::simd::Average | ( | simde__m128i | a, |
| simde__m128i | b ) |
Averages the lanes of two vectors.
|
inline |
Averages signed 16 bit lanes.
|
inline |
Averages signed 32 bit lanes.
|
inline |
Averages signed 8 bit lanes, rounding toward positive infinity.
| simde__m128i rex::ppc::simd::CompareGreater | ( | simde__m128i | a, |
| simde__m128i | b ) |
Compares the lanes of two vectors for greater than.
|
inline |
Compares unsigned 16 bit lanes for greater than.
|
inline |
Compares unsigned 8 bit lanes for greater than.
Converts the lanes of a vector to another lane type.
|
inline |
Converts unsigned 32 bit integers to floats.
| VectorOf< To > rex::ppc::simd::ConvertSaturate | ( | VectorOf< From > | src | ) |
Converts the lanes of a vector to another lane type with saturation.
|
inline |
Converts floats to signed fixed point words with saturation (vctsxs).
|
inline |
Converts floats to unsigned fixed point words with saturation (vctuxs).
NaN and negative inputs give 0 and inputs above UINT_MAX give UINT_MAX.
|
inlinenodiscardnoexcept |
Computes vmsum3fp128, the dot product of the first 3 vector elements.
|
inlinenodiscardnoexcept |
Computes vmsum3fp128, the dot product of the first 3 elements, honoring VSCR NJ.
| non_java | The VSCR NJ bit. When clear a denormal operand keeps its value. |
|
inlinenodiscardnoexcept |
Computes vmsum4fp128, the dot product of all 4 vector elements.
|
inlinenodiscardnoexcept |
Computes vmsum4fp128, the dot product of all 4 elements, honoring VSCR NJ.
| non_java | The VSCR NJ bit. When clear a denormal operand keeps its value. |
|
inlinenodiscardnoexcept |
Computes vexptefp and vexptefp128.
|
inlinenodiscardnoexcept |
Computes vexptefp and vexptefp128. A denormal operand gives 1.0 for either NJ value.
| non_java | The VSCR NJ bit. |
|
inlinenodiscardnoexcept |
Reports whether a saturating vector add clamps any lane.
| Bits | The element width, 8, 16 or 32. |
| Signed | True for the signed forms, false for the unsigned ones. |
|
inlinenodiscardnoexcept |
Reports whether a float to fixed point conversion clamps any lane, not counting a NaN lane.
| Signed | True for the signed word conversion, false for the unsigned one. |
| scaled | The floats after the scale multiply. |
|
inlinenodiscardnoexcept |
Reports whether a vpkd3d128 pack saturates. Every vector element counts, whatever the mask and shift write, and a NaN element never saturates.
| Type | The pack format, 0 to 6. |
|
inlinenodiscardnoexcept |
Reports whether a saturating vector pack clamps any lane of its two operands.
| SourceBits | The source element width, 16 or 32. |
| SignedDest | True when the packed elements are signed. |
|
inlinenodiscardnoexcept |
Reports whether a saturating vector subtract clamps any lane.
| Bits | The element width, 8, 16 or 32. |
| Signed | True for the signed forms, false for the unsigned ones. |
| a | The minuend. |
| b | The subtrahend. |
|
inlinenodiscardnoexcept |
Computes vlogefp and vlogefp128 for a fixed VSCR NJ bit.
| NonJava | The VSCR NJ bit. |
|
inlinenodiscardnoexcept |
Computes vlogefp and vlogefp128.
|
inlinenodiscardnoexcept |
Computes vlogefp and vlogefp128, honoring VSCR NJ.
With NJ clear a denormal operand is estimated at its value.
| non_java | The VSCR NJ bit. |
|
inlinenodiscardnoexcept |
Computes vmaddfp, vmaddfp128 and vmaddcfp128 with a single rounding.
|
inlinenodiscardnoexcept |
Computes vmaddfp, vmaddfp128 and vmaddcfp128 with a single rounding, honoring VSCR NJ.
| non_java | The VSCR NJ bit. When clear a denormal operand and a denormal result are kept. |
|
inlinenodiscardnoexcept |
Computes vnmsubfp and vnmsubfp128 with a single rounding.
| c | The value subtracted from the product. |
|
inlinenodiscardnoexcept |
Computes vnmsubfp and vnmsubfp128 with a single rounding, honoring VSCR NJ.
| c | The value subtracted from the product. |
| non_java | The VSCR NJ bit. When clear a denormal operand and a denormal result are kept. |
|
inline |
Packs a vector the way vpkd3d128 does. Element 0 is word index 3 of the register, and dest may be source.
| Type | The pack format, 0 to 6. |
| Mask | The vpkd3d128 mask, 0 to 3. |
| Shift | The vpkd3d128 shift, 0 to 3. |
|
inline |
Tables for the lvlx, lvrx, stvlx and stvrx vector load and store instructions, 16 rows of 16 bytes indexed by the low 4 address bits.
|
inlinenodiscardnoexcept |
Computes vrefp and vrefp128 for a fixed VSCR NJ bit.
| NonJava | The VSCR NJ bit. |
|
inlinenodiscardnoexcept |
Computes vrefp and vrefp128.
|
inlinenodiscardnoexcept |
Computes vrefp and vrefp128, honoring VSCR NJ.
With NJ clear, denormal operands and results are kept, rounded to nearest even.
| non_java | The VSCR NJ bit. |
|
inlinenodiscardnoexcept |
Computes vrsqrtefp and vrsqrtefp128 for a fixed VSCR NJ bit.
| NonJava | The VSCR NJ bit. |
|
inlinenodiscardnoexcept |
Computes vrsqrtefp and vrsqrtefp128.
|
inlinenodiscardnoexcept |
Computes vrsqrtefp and vrsqrtefp128, honoring VSCR NJ.
With NJ clear a denormal operand is estimated at its value.
| non_java | The VSCR NJ bit. |
|
inline |
Shifts the whole 128 bit vector left (vsl) by the low 3 bits of b.
| b | The shift count source, read from byte 15 which is byte 0 in big endian. |
|
inline |
Shifts the whole vector left by bytes (vslo) given by bits [121:124] of b.
| b | The byte count source. |
| simde__m128i rex::ppc::simd::ShiftLeftLanes | ( | simde__m128i | a, |
| simde__m128i | count ) |
Shifts each lane left by the count in the same lane.
|
inline |
Shifts 16 bit lanes left by per lane counts.
|
inline |
Shifts 8 bit lanes left by per lane counts.
|
inline |
Shifts the whole 128 bit vector right (vsr).
| b | The shift count source. |
|
inline |
Shifts the whole vector right by bytes (vsro) given by bits [121:124] of b.
| b | The byte count source. |
| simde__m128i rex::ppc::simd::ShiftRightLanes | ( | simde__m128i | a, |
| simde__m128i | count ) |
Shifts each lane right by the count in the same lane. A signed lane type shifts arithmetically.
|
inline |
Shifts 16 bit lanes right arithmetically by per lane counts.
|
inline |
Shifts 16 bit lanes right logically by per lane counts.
|
inline |
Writes the first count bytes of a 16 byte buffer to host memory, touching no other byte.
| bytes | The 16 byte source in guest memory order. |
| count | The number of bytes to write, 0 to 16. |
|
inline |
Stores the first 16 - (ea & 0xF) guest order bytes of a vector, the stvlx operation.
| host | The host address of ea. |
|
inline |
Stores a vector with the stvlx and stvrx pair used for unaligned stores.
| left_host | The host address of the stvlx address. |
| left_ea | The stvlx guest effective address. |
| right_host | Host address of the start of the quadword containing the stvrx address. |
| right_ea | The stvrx guest effective address. |
|
inline |
Stores the last ea & 0xF guest order bytes of a vector at the start of the quadword that holds ea, the stvrx operation. Writes nothing when ea is aligned.
| host | The host address of the start of that quadword. |
|
inline |
Reverses the 16 bytes of a vector register into guest byte order.
|
inlineconstexpr |
Top 11 mantissa bits of 2^x indexed by the 11 fraction bits of a positive operand.
|
inlineconstexpr |
Fraction base of the vector log2 estimate indexed by the top 4 mantissa bits.
|
inlineconstexpr |
Fraction slope of the vector log2 estimate indexed by the top 4 mantissa bits.
|
inlineconstexpr |
Mantissa base of the vector reciprocal estimate indexed by the top 5 mantissa bits.
|
inlineconstexpr |
Mantissa slope of the vector reciprocal estimate indexed by the top 5 mantissa bits.
|
inlineconstexpr |
Vector reciprocal square root mantissa base indexed by parity and the top 4 mantissa bits.
|
inlineconstexpr |
Vector reciprocal square root mantissa slope indexed by parity and the top 4 mantissa bits.
|
inlineconstexpr |
Tables for the lvlx, lvrx, stvlx and stvrx vector load and store instructions, 16 rows of 16 bytes indexed by the low 4 address bits.
|
inlineconstexpr |
Tables for the lvlx, lvrx, stvlx and stvrx vector load and store instructions, 16 rows of 16 bytes indexed by the low 4 address bits.
|
inlineconstexpr |
Tables for the lvlx, lvrx, stvlx and stvrx vector load and store instructions, 16 rows of 16 bytes indexed by the low 4 address bits.
|
inlineconstexpr |
Tables for the lvlx, lvrx, stvlx and stvrx vector load and store instructions, 16 rows of 16 bytes indexed by the low 4 address bits.