17 extern const char gUpper[16];
18 extern const char gLower[16];
39#if defined(_MSC_VER) && defined(_M_IX86)
40 #define SK_FP_SAFE_ABI __vectorcall
42 #define SK_FP_SAFE_ABI
45template <
typename T,
typename P>
47 static_assert(std::is_trivially_copyable_v<P> || std::is_void_v<P>);
48 static_assert(std::is_trivially_copyable_v<T>);
56 memcpy(&val,
static_cast<const void*
>(ptr),
sizeof(val));
60template <
typename T,
typename P>
63 memcpy(ptr, &val,
sizeof(val));
67template <
typename Dst,
typename Src>
69 static_assert(
sizeof(Dst) ==
sizeof(Src));
72 return sk_unaligned_load<Dst>(&
src);
static SK_ALWAYS_INLINE T SK_FP_SAFE_ABI sk_unaligned_load(const P *ptr)
static SK_ALWAYS_INLINE Dst SK_FP_SAFE_ABI sk_bit_cast(const Src &src)
static SK_ALWAYS_INLINE void SK_FP_SAFE_ABI sk_unaligned_store(P *ptr, T val)