diff options
Diffstat (limited to '3rdparty/bx/include/bx/inline/simd256_ref.inl')
-rw-r--r-- | 3rdparty/bx/include/bx/inline/simd256_ref.inl | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/3rdparty/bx/include/bx/inline/simd256_ref.inl b/3rdparty/bx/include/bx/inline/simd256_ref.inl new file mode 100644 index 00000000000..6d9a5a31ab5 --- /dev/null +++ b/3rdparty/bx/include/bx/inline/simd256_ref.inl @@ -0,0 +1,87 @@ +/* + * Copyright 2010-2016 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bx#license-bsd-2-clause + */ + +#ifndef BX_SIMD256_REF_H_HEADER_GUARD +#define BX_SIMD256_REF_H_HEADER_GUARD + +#include "simd_ni.inl" + +namespace bx +{ + template<> + BX_SIMD_FORCE_INLINE simd256_ref_t simd_ld(const void* _ptr) + { + const simd256_ref_t::type* ptr = reinterpret_cast<const simd256_ref_t::type*>(_ptr); + simd256_ref_t result; + result.simd128_0 = simd_ld<simd256_ref_t::type>(&ptr[0]); + result.simd128_1 = simd_ld<simd256_ref_t::type>(&ptr[1]); + return result; + } + + template<> + BX_SIMD_FORCE_INLINE void simd_st(void* _ptr, simd256_ref_t& _a) + { + simd256_ref_t* result = reinterpret_cast<simd256_ref_t*>(_ptr); + simd_st<simd256_ref_t::type>(&result[0], _a.simd128_0); + simd_st<simd256_ref_t::type>(&result[1], _a.simd128_1); + } + + template<> + BX_SIMD_FORCE_INLINE simd256_ref_t simd_ld(float _x, float _y, float _z, float _w, float _a, float _b, float _c, float _d) + { + simd256_ref_t result; + result.simd128_0 = simd_ld<simd256_ref_t::type>(_x, _y, _z, _w); + result.simd128_1 = simd_ld<simd256_ref_t::type>(_a, _b, _c, _d); + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd256_ref_t simd_ild(uint32_t _x, uint32_t _y, uint32_t _z, uint32_t _w, uint32_t _a, uint32_t _b, uint32_t _c, uint32_t _d) + { + simd256_ref_t result; + result.simd128_0 = simd_ild<simd256_ref_t::type>(_x, _y, _z, _w); + result.simd128_1 = simd_ild<simd256_ref_t::type>(_a, _b, _c, _d); + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd256_ref_t simd_splat(float _a) + { + simd256_ref_t result; + result.simd128_0 = simd_splat<simd256_ref_t::type>(_a); + result.simd128_1 = simd_splat<simd256_ref_t::type>(_a); + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd256_ref_t simd_isplat(uint32_t _a) + { + simd256_ref_t result; + result.simd128_0 = simd_isplat<simd256_ref_t::type>(_a); + result.simd128_1 = simd_isplat<simd256_ref_t::type>(_a); + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd256_ref_t simd_itof(simd256_ref_t _a) + { + simd256_ref_t result; + result.simd128_0 = simd_itof(_a.simd128_0); + result.simd128_1 = simd_itof(_a.simd128_1); + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd256_ref_t simd_ftoi(simd256_ref_t _a) + { + simd256_ref_t result; + result.simd128_0 = simd_ftoi(_a.simd128_0); + result.simd128_1 = simd_ftoi(_a.simd128_1); + return result; + } + +} // namespace bx + +#endif // BX_SIMD256_REF_H_HEADER_GUARD |