From aeceb79f25a2587bd99e753c33ab03c5111cad82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Branimir=20Karad=C5=BEi=C4=87?= Date: Thu, 10 Aug 2017 22:25:39 -0700 Subject: [PATCH] Removed macro usage from SIMD. --- include/bx/inline/simd128_langext.inl | 218 ++++++++++++++++++++++---- include/bx/inline/simd128_neon.inl | 191 ++++++++++++++++++---- include/bx/inline/simd128_ref.inl | 197 +++++++++++++++++++---- 3 files changed, 516 insertions(+), 90 deletions(-) diff --git a/include/bx/inline/simd128_langext.inl b/include/bx/inline/simd128_langext.inl index ee7aeb0..6795503 100644 --- a/include/bx/inline/simd128_langext.inl +++ b/include/bx/inline/simd128_langext.inl @@ -7,38 +7,6 @@ # error "Must be included from bx/simd_t.h!" #endif // BX_SIMD_T_H_HEADER_GUARD -#define simd_rcp simd_rcp_ni -#define simd_orx simd_orx_ni -#define simd_orc simd_orc_ni -#define simd_neg simd_neg_ni -#define simd_madd simd_madd_ni -#define simd_nmsub simd_nmsub_ni -#define simd_div_nr simd_div_nr_ni -#define simd_selb simd_selb_ni -#define simd_sels simd_sels_ni -#define simd_not simd_not_ni -#define simd_abs simd_abs_ni -#define simd_clamp simd_clamp_ni -#define simd_lerp simd_lerp_ni -#define simd_rcp_est simd_rcp_ni -#define simd_rsqrt simd_rsqrt_ni -#define simd_rsqrt_nr simd_rsqrt_nr_ni -#define simd_rsqrt_carmack simd_rsqrt_carmack_ni -#define simd_sqrt_nr simd_sqrt_nr_ni -#define simd_log2 simd_log2_ni -#define simd_exp2 simd_exp2_ni -#define simd_pow simd_pow_ni -#define simd_cross3 simd_cross3_ni -#define simd_normalize3 simd_normalize3_ni -#define simd_dot3 simd_dot3_ni -#define simd_dot simd_dot_ni -#define simd_ceil simd_ceil_ni -#define simd_floor simd_floor_ni -#define simd_min simd_min_ni -#define simd_max simd_max_ni -#define simd_imin simd_imin_ni -#define simd_imax simd_imax_ni - namespace bx { #define ELEMx 0 @@ -507,6 +475,192 @@ BX_SIMD128_IMPLEMENT_TEST(xyzw , 0xf); return result; } + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_rcp(simd128_langext_t _a) + { + return simd_rcp_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_orx(simd128_langext_t _a) + { + return simd_orx_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_orc(simd128_langext_t _a, simd128_langext_t _b) + { + return simd_orc_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_neg(simd128_langext_t _a) + { + return simd_neg_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_madd(simd128_langext_t _a, simd128_langext_t _b, simd128_langext_t _c) + { + return simd_madd_ni(_a, _b, _c); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_nmsub(simd128_langext_t _a, simd128_langext_t _b, simd128_langext_t _c) + { + return simd_nmsub_ni(_a, _b, _c); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_div_nr(simd128_langext_t _a, simd128_langext_t _b) + { + return simd_div_nr_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_selb(simd128_langext_t _mask, simd128_langext_t _a, simd128_langext_t _b) + { + return simd_selb_ni(_mask, _a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_sels(simd128_langext_t _test, simd128_langext_t _a, simd128_langext_t _b) + { + return simd_sels_ni(_test, _a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_not(simd128_langext_t _a) + { + return simd_not_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_abs(simd128_langext_t _a) + { + return simd_abs_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_clamp(simd128_langext_t _a, simd128_langext_t _min, simd128_langext_t _max) + { + return simd_clamp_ni(_a, _min, _max); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_lerp(simd128_langext_t _a, simd128_langext_t _b, simd128_langext_t _s) + { + return simd_lerp_ni(_a, _b, _s); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_rcp_est(simd128_langext_t _a) + { + return simd_rcp_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_rsqrt(simd128_langext_t _a) + { + return simd_rsqrt_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_rsqrt_nr(simd128_langext_t _a) + { + return simd_rsqrt_nr_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_rsqrt_carmack(simd128_langext_t _a) + { + return simd_rsqrt_carmack_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_sqrt_nr(simd128_langext_t _a) + { + return simd_sqrt_nr_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_log2(simd128_langext_t _a) + { + return simd_log2_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_exp2(simd128_langext_t _a) + { + return simd_exp2_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_pow(simd128_langext_t _a, simd128_langext_t _b) + { + return simd_pow_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_cross3(simd128_langext_t _a, simd128_langext_t _b) + { + return simd_cross3_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_normalize3(simd128_langext_t _a) + { + return simd_normalize3_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_dot3(simd128_langext_t _a, simd128_langext_t _b) + { + return simd_dot3_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_dot(simd128_langext_t _a, simd128_langext_t _b) + { + return simd_dot_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_ceil(simd128_langext_t _a) + { + return simd_ceil_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_floor(simd128_langext_t _a) + { + return simd_floor_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_min(simd128_langext_t _a, simd128_langext_t _b) + { + return simd_min_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_max(simd128_langext_t _a, simd128_langext_t _b) + { + return simd_max_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_imin(simd128_langext_t _a, simd128_langext_t _b) + { + return simd_imin_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_imax(simd128_langext_t _a, simd128_langext_t _b) + { + return simd_imax_ni(_a, _b); + } + typedef simd128_langext_t simd128_t; } // namespace bx diff --git a/include/bx/inline/simd128_neon.inl b/include/bx/inline/simd128_neon.inl index 95cf2d1..bf16196 100644 --- a/include/bx/inline/simd128_neon.inl +++ b/include/bx/inline/simd128_neon.inl @@ -7,35 +7,6 @@ # error "Must be included from bx/simd_t.h!" #endif // BX_SIMD_T_H_HEADER_GUARD -#define simd_rcp simd_rcp_ni -#define simd_orx simd_orx_ni -#define simd_orc simd_orc_ni -#define simd_neg simd_neg_ni -#define simd_madd simd_madd_ni -#define simd_nmsub simd_nmsub_ni -#define simd_div_nr simd_div_nr_ni -#define simd_div simd_div_nr_ni -#define simd_selb simd_selb_ni -#define simd_sels simd_sels_ni -#define simd_not simd_not_ni -#define simd_abs simd_abs_ni -#define simd_clamp simd_clamp_ni -#define simd_lerp simd_lerp_ni -#define simd_rsqrt simd_rsqrt_ni -#define simd_rsqrt_nr simd_rsqrt_nr_ni -#define simd_rsqrt_carmack simd_rsqrt_carmack_ni -#define simd_sqrt_nr simd_sqrt_nr_ni -#define simd_sqrt simd_sqrt_nr_ni -#define simd_log2 simd_log2_ni -#define simd_exp2 simd_exp2_ni -#define simd_pow simd_pow_ni -#define simd_cross3 simd_cross3_ni -#define simd_normalize3 simd_normalize3_ni -#define simd_dot3 simd_dot3_ni -#define simd_dot simd_dot_ni -#define simd_ceil simd_ceil_ni -#define simd_floor simd_floor_ni - namespace bx { #define ELEMx 0 @@ -554,6 +525,168 @@ BX_SIMD128_IMPLEMENT_TEST(yzw, yzww); return simd_shuf_yBwD_ni(_a, _b); } + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_orx(simd128_neon_t _a) + { + return simd_orx_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_orc(simd128_neon_t _a, simd128_neon_t _b) + { + return simd_orc_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_neg(simd128_neon_t _a) + { + return simd_neg_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_madd(simd128_neon_t _a, simd128_neon_t _b, simd128_neon_t _c) + { + return simd_madd_ni(_a, _b, _c); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_nmsub(simd128_neon_t _a, simd128_neon_t _b, simd128_neon_t _b) + { + return simd_nmsub_ni(_a, _b, _c); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_div_nr(simd128_neon_t _a, simd128_neon_t _b) + { + return simd_div_nr_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_div(simd128_neon_t _a, simd128_neon_t _b) + { + return simd_div_nr_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_selb(simd128_neon_t _mask, simd128_neon_t _a, simd128_neon_t _b) + { + return simd_selb_ni(_mask, _a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_sels(simd128_neon_t _test, simd128_neon_t _a, simd128_neon_t _b) + { + return simd_sels_ni(_test, _a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_not(simd128_neon_t _a) + { + return simd_not_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_abs(simd128_neon_t _a) + { + return simd_abs_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_clamp(simd128_neon_t _a, simd128_neon_t _min, simd128_neon_t _max) + { + return simd_clamp_ni(_a, _min, _max); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_lerp(simd128_neon_t _a, simd128_neon_t _b, simd128_neon_t _s) + { + return simd_lerp_ni(_a, _b, _s); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_rsqrt(simd128_neon_t _a) + { + return simd_rsqrt_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_rsqrt_n(simd128_neon_t _a) + { + return simd_rsqrt_nr_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_rsqrt_carma(simd128_neon_t _a) + { + return simd_rsqrt_carmack_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_sqrt_n(simd128_neon_t _a) + { + return simd_sqrt_nr_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_sqrt(simd128_neon_t _a) + { + return simd_sqrt_nr_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_log2(simd128_neon_t _a) + { + return simd_log2_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_exp2(simd128_neon_t _a) + { + return simd_exp2_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_pow(simd128_neon_t _a, simd128_neon_t _b) + { + return simd_pow_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_cross3(simd128_neon_t _a, simd128_neon_t _b) + { + return simd_cross3_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_normalize3(simd128_neon_t _a, simd128_neon_t _b) + { + return simd_normalize3_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_dot3(simd128_neon_t _a, simd128_neon_t _b) + { + return simd_dot3_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_dot(simd128_neon_t _a, simd128_neon_t _b) + { + return simd_dot_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_ceil(simd128_neon_t _a) + { + return simd_ceil_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_floor(simd128_neon_t _a) + { + return simd_floor_ni(_a); + } + typedef simd128_neon_t simd128_t; } // namespace bx diff --git a/include/bx/inline/simd128_ref.inl b/include/bx/inline/simd128_ref.inl index 9e22785..f7cabf3 100644 --- a/include/bx/inline/simd128_ref.inl +++ b/include/bx/inline/simd128_ref.inl @@ -7,35 +7,6 @@ # error "Must be included from bx/simd_t.h!" #endif // BX_SIMD_T_H_HEADER_GUARD -#define simd_shuf_xAzC simd_shuf_xAzC_ni -#define simd_shuf_yBwD simd_shuf_yBwD_ni -#define simd_rcp simd_rcp_ni -#define simd_orx simd_orx_ni -#define simd_orc simd_orc_ni -#define simd_neg simd_neg_ni -#define simd_madd simd_madd_ni -#define simd_nmsub simd_nmsub_ni -#define simd_div_nr simd_div_nr_ni -#define simd_selb simd_selb_ni -#define simd_sels simd_sels_ni -#define simd_not simd_not_ni -#define simd_abs simd_abs_ni -#define simd_clamp simd_clamp_ni -#define simd_lerp simd_lerp_ni -#define simd_rsqrt simd_rsqrt_ni -#define simd_rsqrt_nr simd_rsqrt_nr_ni -#define simd_rsqrt_carmack simd_rsqrt_carmack_ni -#define simd_sqrt_nr simd_sqrt_nr_ni -#define simd_log2 simd_log2_ni -#define simd_exp2 simd_exp2_ni -#define simd_pow simd_pow_ni -#define simd_cross3 simd_cross3_ni -#define simd_normalize3 simd_normalize3_ni -#define simd_dot3 simd_dot3_ni -#define simd_dot simd_dot_ni -#define simd_ceil simd_ceil_ni -#define simd_floor simd_floor_ni - namespace bx { #define ELEMx 0 @@ -677,4 +648,172 @@ BX_SIMD128_IMPLEMENT_TEST(xyzw , 0xf); return simd_isplat(_a); } + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_shuf_xAzC(simd128_ref_t _a, simd128_ref_t _b) + { + return simd_shuf_xAzC_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_shuf_yBwD(simd128_ref_t _a, simd128_ref_t _b) + { + return simd_shuf_yBwD_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_rcp(simd128_ref_t _a) + { + return simd_rcp_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_orx(simd128_ref_t _a) + { + return simd_orx_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_orc(simd128_ref_t _a, simd128_ref_t _b) + { + return simd_orc_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_neg(simd128_ref_t _a) + { + return simd_neg_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_madd(simd128_ref_t _a, simd128_ref_t _b, simd128_ref_t _c) + { + return simd_madd_ni(_a, _b, _c); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_nmsub(simd128_ref_t _a, simd128_ref_t _b, simd128_ref_t _c) + { + return simd_nmsub_ni(_a, _b, _c); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_div_nr(simd128_ref_t _a, simd128_ref_t _b) + { + return simd_div_nr_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_selb(simd128_ref_t _mask, simd128_ref_t _a, simd128_ref_t _b) + { + return simd_selb_ni(_mask, _a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_sels(simd128_ref_t _test, simd128_ref_t _a, simd128_ref_t _b) + { + return simd_sels_ni(_test, _a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_not(simd128_ref_t _a) + { + return simd_not_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_abs(simd128_ref_t _a) + { + return simd_abs_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_clamp(simd128_ref_t _a, simd128_ref_t _min, simd128_ref_t _max) + { + return simd_clamp_ni(_a, _min, _max); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_lerp(simd128_ref_t _a, simd128_ref_t _b, simd128_ref_t _s) + { + return simd_lerp_ni(_a, _b, _s); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_rsqrt(simd128_ref_t _a) + { + return simd_rsqrt_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_rsqrt_nr(simd128_ref_t _a) + { + return simd_rsqrt_nr_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_rsqrt_carmack(simd128_ref_t _a) + { + return simd_rsqrt_carmack_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_sqrt_nr(simd128_ref_t _a) + { + return simd_sqrt_nr_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_log2(simd128_ref_t _a) + { + return simd_log2_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_exp2(simd128_ref_t _a) + { + return simd_exp2_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_pow(simd128_ref_t _a, simd128_ref_t _b) + { + return simd_pow_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_cross3(simd128_ref_t _a, simd128_ref_t _b) + { + return simd_cross3_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_normalize3(simd128_ref_t _a) + { + return simd_normalize3_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_dot3(simd128_ref_t _a, simd128_ref_t _b) + { + return simd_dot3_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_dot(simd128_ref_t _a, simd128_ref_t _b) + { + return simd_dot_ni(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_ceil(simd128_ref_t _a) + { + return simd_ceil_ni(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_floor(simd128_ref_t _a) + { + return simd_floor_ni(_a); + } + } // namespace bx