From da9248697ee90ef527f732e783a50aa3a832c349 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D1=80=D0=B0=D0=BD=D0=B8=D0=BC=D0=B8=D1=80=20=D0=9A?= =?UTF-8?q?=D0=B0=D1=80=D0=B0=D1=9F=D0=B8=D1=9B?= Date: Wed, 4 Sep 2019 22:26:45 -0700 Subject: [PATCH] Added uint64 intrisics. --- include/bx/inline/uint32_t.inl | 60 ++++++++++++++++++++++++++++++++++ include/bx/uint32_t.h | 36 ++++++++++++++++++++ 2 files changed, 96 insertions(+) diff --git a/include/bx/inline/uint32_t.inl b/include/bx/inline/uint32_t.inl index 8427264..6e047c3 100644 --- a/include/bx/inline/uint32_t.inl +++ b/include/bx/inline/uint32_t.inl @@ -468,6 +468,66 @@ namespace bx ; } + inline BX_CONSTEXPR_FUNC uint64_t uint64_li(uint64_t _a) + { + return _a; + } + + inline BX_CONSTEXPR_FUNC uint64_t uint64_dec(uint64_t _a) + { + return _a - 1; + } + + inline BX_CONSTEXPR_FUNC uint64_t uint64_inc(uint64_t _a) + { + return _a + 1; + } + + inline BX_CONSTEXPR_FUNC uint64_t uint64_not(uint64_t _a) + { + return ~_a; + } + + inline BX_CONSTEXPR_FUNC uint64_t uint64_neg(uint64_t _a) + { + return -(int32_t)_a; + } + + inline BX_CONSTEXPR_FUNC uint64_t uint64_ext(uint64_t _a) + { + return ( (int32_t)_a)>>31; + } + + inline BX_CONSTEXPR_FUNC uint64_t uint64_and(uint64_t _a, uint64_t _b) + { + return _a & _b; + } + + inline BX_CONSTEXPR_FUNC uint64_t uint64_andc(uint64_t _a, uint64_t _b) + { + return _a & ~_b; + } + + inline BX_CONSTEXPR_FUNC uint64_t uint64_xor(uint64_t _a, uint64_t _b) + { + return _a ^ _b; + } + + inline BX_CONSTEXPR_FUNC uint64_t uint64_xorl(uint64_t _a, uint64_t _b) + { + return !_a != !_b; + } + + inline BX_CONSTEXPR_FUNC uint64_t uint64_or(uint64_t _a, uint64_t _b) + { + return _a | _b; + } + + inline BX_CONSTEXPR_FUNC uint64_t uint64_orc(uint64_t _a, uint64_t _b) + { + return _a | ~_b; + } + inline BX_CONSTEXPR_FUNC uint64_t uint64_sll(uint64_t _a, int32_t _sa) { return _a << _sa; diff --git a/include/bx/uint32_t.h b/include/bx/uint32_t.h index 7b617c2..d78e2ac 100644 --- a/include/bx/uint32_t.h +++ b/include/bx/uint32_t.h @@ -181,6 +181,42 @@ namespace bx /// BX_CONSTEXPR_FUNC uint32_t uint64_cnttz(uint64_t _val); + /// + BX_CONSTEXPR_FUNC uint64_t uint64_li(uint64_t _a); + + /// + BX_CONSTEXPR_FUNC uint64_t uint64_dec(uint64_t _a); + + /// + BX_CONSTEXPR_FUNC uint64_t uint64_inc(uint64_t _a); + + /// + BX_CONSTEXPR_FUNC uint64_t uint64_not(uint64_t _a); + + /// + BX_CONSTEXPR_FUNC uint64_t uint64_neg(uint64_t _a); + + /// + BX_CONSTEXPR_FUNC uint64_t uint64_ext(uint64_t _a); + + /// + BX_CONSTEXPR_FUNC uint64_t uint64_and(uint64_t _a, uint64_t _b); + + /// + BX_CONSTEXPR_FUNC uint64_t uint64_andc(uint64_t _a, uint64_t _b); + + /// + BX_CONSTEXPR_FUNC uint64_t uint64_xor(uint64_t _a, uint64_t _b); + + /// + BX_CONSTEXPR_FUNC uint64_t uint64_xorl(uint64_t _a, uint64_t _b); + + /// + BX_CONSTEXPR_FUNC uint64_t uint64_or(uint64_t _a, uint64_t _b); + + /// + BX_CONSTEXPR_FUNC uint64_t uint64_orc(uint64_t _a, uint64_t _b); + /// BX_CONSTEXPR_FUNC uint64_t uint64_sll(uint64_t _a, int32_t _sa);