ReXGlue SDK
Loading...
Searching...
No Matches
vmx.h File Reference
#include <array>
#include <climits>
#include <cmath>
#include <cstring>
#include <type_traits>
#include <simde/x86/avx.h>
#include <simde/x86/avx2.h>
#include <simde/x86/sse.h>
#include <simde/x86/sse4.1.h>
#include <rex/ppc/context.h>
#include <rex/types.h>

Go to the source code of this file.

Namespaces

namespace  rex
namespace  rex::ppc
namespace  rex::ppc::simd

Functions

template<bool Signed>
bool rex::ppc::simd::IsConvertSaturating (simde__m128 scaled) noexcept
template<u32 Bits, bool Signed>
bool rex::ppc::simd::IsAddSaturating (simde__m128i a, simde__m128i b) noexcept
template<u32 Bits, bool Signed>
bool rex::ppc::simd::IsSubSaturating (simde__m128i a, simde__m128i b) noexcept
template<u32 SourceBits, bool SignedDest>
bool rex::ppc::simd::IsPackSaturating (simde__m128i a, simde__m128i b) noexcept
template<u32 Type>
bool rex::ppc::simd::IsPackD3DSaturating (simde__m128 source) noexcept
template<u32 Type, u32 Mask, u32 Shift>
u8 rex::ppc::simd::PackD3D (VRegister &dest, const VRegister &source)

Variables

constexpr u8 kVectorMaskL []
constexpr u8 kVectorMaskR []
constexpr u8 kVectorShiftTableL []
constexpr u8 kVectorShiftTableR []
template<typename T>
using rex::ppc::simd::VectorOf = std::conditional_t<std::is_floating_point_v<T>, simde__m128, simde__m128i>
constexpr u8 rex::ppc::simd::kVectorMaskL []
constexpr u8 rex::ppc::simd::kVectorMaskR []
constexpr u8 rex::ppc::simd::kVectorShiftTableL []
constexpr u8 rex::ppc::simd::kVectorShiftTableR []
template<typename T>
simde__m128i rex::ppc::simd::AddSaturate (simde__m128i a, simde__m128i b)
template<>
simde__m128i rex::ppc::simd::AddSaturate< u32 > (simde__m128i a, simde__m128i b)
template<typename T>
simde__m128i rex::ppc::simd::Average (simde__m128i a, simde__m128i b)
template<>
simde__m128i rex::ppc::simd::Average< i8 > (simde__m128i a, simde__m128i b)
template<>
simde__m128i rex::ppc::simd::Average< i16 > (simde__m128i a, simde__m128i b)
template<>
simde__m128i rex::ppc::simd::Average< i32 > (simde__m128i a, simde__m128i b)
template<typename To, typename From>
VectorOf< To > rex::ppc::simd::Convert (VectorOf< From > src)
template<>
simde__m128 rex::ppc::simd::Convert< f32, u32 > (simde__m128i src1)
simde__m128i rex::ppc::simd::PermuteBytes (simde__m128i a, simde__m128i b, simde__m128i c)
template<typename T>
simde__m128i rex::ppc::simd::CompareGreater (simde__m128i a, simde__m128i b)
template<>
simde__m128i rex::ppc::simd::CompareGreater< u8 > (simde__m128i a, simde__m128i b)
template<>
simde__m128i rex::ppc::simd::CompareGreater< u16 > (simde__m128i a, simde__m128i b)
template<typename To, typename From>
VectorOf< To > rex::ppc::simd::ConvertSaturate (VectorOf< From > src)
template<>
simde__m128i rex::ppc::simd::ConvertSaturate< i32, f32 > (simde__m128 src1)
template<>
simde__m128i rex::ppc::simd::ConvertSaturate< u32, f32 > (simde__m128 src1)
simde__m128i rex::ppc::simd::ShiftRightBits (simde__m128i a, simde__m128i b)
simde__m128i rex::ppc::simd::ShiftLeftBits (simde__m128i a, simde__m128i b)
simde__m128i rex::ppc::simd::ShiftLeftBytes (simde__m128i a, simde__m128i b)
simde__m128i rex::ppc::simd::ShiftRightBytes (simde__m128i a, simde__m128i b)
template<typename T>
simde__m128i rex::ppc::simd::ShiftLeftLanes (simde__m128i a, simde__m128i count)
template<>
simde__m128i rex::ppc::simd::ShiftLeftLanes< u16 > (simde__m128i a, simde__m128i count)
template<typename T>
simde__m128i rex::ppc::simd::ShiftRightLanes (simde__m128i a, simde__m128i count)
template<>
simde__m128i rex::ppc::simd::ShiftRightLanes< u16 > (simde__m128i a, simde__m128i count)
template<>
simde__m128i rex::ppc::simd::ShiftRightLanes< i16 > (simde__m128i a, simde__m128i count)
template<>
simde__m128i rex::ppc::simd::ShiftLeftLanes< u8 > (simde__m128i a, simde__m128i count)
simde__m128i rex::ppc::simd::ToGuestByteOrder (simde__m128i v)
void rex::ppc::simd::StoreVectorBytes (u8 *host, const u8 *bytes, u32 count)
void rex::ppc::simd::StoreVectorLeft (u8 *host, u32 ea, simde__m128i v)
void rex::ppc::simd::StoreVectorRight (u8 *host, u32 ea, simde__m128i v)
void rex::ppc::simd::StoreVectorPair (u8 *left_host, u32 left_ea, u8 *right_host, u32 right_ea, simde__m128i v)

Detailed Description

License
BSD 3-Clause License See LICENSE file in the project root for full license text.

Variable Documentation

◆ kVectorMaskL

u8 rex::ppc::simd::kVectorMaskL[]
inlineconstexpr

Vector tables at global scope for generated code.

◆ kVectorMaskR

u8 rex::ppc::simd::kVectorMaskR[]
inlineconstexpr

Vector tables at global scope for generated code.

◆ kVectorShiftTableL

u8 rex::ppc::simd::kVectorShiftTableL[]
inlineconstexpr

Vector tables at global scope for generated code.

◆ kVectorShiftTableR

u8 rex::ppc::simd::kVectorShiftTableR[]
inlineconstexpr

Vector tables at global scope for generated code.