64#if (defined _WIN32 && !defined _WIN32_WCE && defined _M_IX86) || (defined __WINS__ && defined _SYMBIAN) || defined(_OPENWAVE_SIMULATOR) || defined(WINCE_EMULATOR)
66#pragma warning( disable : 4035 )
81 sign =
x >> (
sizeof(int) * 8 - 1);
88__inline
int CLZ(
int x)
93 return (
sizeof(
int) * 8);
96 while (!(
x & 0x80000000)) {
117 unsigned int sumLo = ((
unsigned int *)&sum)[0];
118 int sumHi = ((
int *)&sum)[1];
132 unsigned int xLo = ((
unsigned int *)&
x)[0];
133 int xHi = ((
int *)&
x)[1];
134 unsigned char nb = (
unsigned char)n;
162 unsigned int xLo = ((
unsigned int *)&
x)[0];
163 int xHi = ((
int *)&
x)[1];
164 unsigned char nb = (
unsigned char)n;
192#elif (defined _WIN32) && (defined _WIN32_WCE)
195#define MULSHIFT32 xmp3_MULSHIFT32
202 sign =
x >> (
sizeof(int) * 8 - 1);
209__inline
int CLZ(
int x)
214 return (
sizeof(
int) * 8);
217 while (!(
x & 0x80000000)) {
259__inline
int CLZ(
int x)
264 return (
sizeof(
int) * 8);
267 while (!(
x & 0x80000000)) {
275#elif defined(__GNUC__) && defined(ARM)
321 __asm__
volatile (
"smull %0,%1,%2,%3" :
"=&r" (zlow),
"=r" (
y) :
"r" (
x),
"1" (
y)) ;
333 "eor %0,%2,%2, asr #31;"
334 "sub %0,%1,%2, asr #31;"
342__inline
int CLZ(
int x)
347 return (
sizeof(
int) * 8);
350 while (!(
x & 0x80000000)) {
367 asm volatile (
"mulh %0, %1, %2" :
"=r"(
result):
"r"(
x),
"r"(
y));
375 sign =
x >> (
sizeof(int) * 8 - 1);
382__inline
int CLZ(
int x)
387 return (
sizeof(
int) * 8);
390 while (!(
x & 0x80000000)) {
400 unsigned int result_hi = 0;
401 unsigned int result_lo = 0;
402 asm volatile (
"mulh %0, %1, %2" :
"=r"(result_hi):
"r"(a),
"r"(b));
403 asm volatile (
"mul %0, %1, %2" :
"=r"(result_lo):
"r"(a),
"r"(b));
422#elif defined(__xtensa__)
424#include "xtensa/config/core-isa.h"
430 return (sum64 + ((
long long)
x *
y));
433#if XCHAL_HAVE_MUL32_HIGH
448 asm volatile (
"mulsh %0, %1, %2" :
"=r" (ret) :
"r" (
x),
"r" (
y));
468 asm volatile (
"abs %0, %1" :
"=r" (ret) :
"r" (
x));
478 sign =
x >> (
sizeof(int) * 8 - 1);
491__inline
int CLZ(
int x)
493 return __builtin_clz(
x);
535 while (!(
x & 0x80000000)) {
__inline int32_t MULSHIFT32(int32_t x, int32_t y) FL_NOEXCEPT
Multiply together two 32-bit numbers and return the top 32-bits of the result.
__inline int32_t FASTABS(int32_t x) FL_NOEXCEPT
Absolute value of x.
__inline Word64 SHL64(Word64 x, int n) FL_NOEXCEPT
Shift left.
__inline Word64 MADD64(Word64 sum64, int x, int y) FL_NOEXCEPT
Increase sum by x * y.
__inline int32_t CLZ(int32_t x) FL_NOEXCEPT
Leading zeros.
__inline Word64 SAR64(Word64 x, int n) FL_NOEXCEPT
Shift right.
constexpr enable_if< is_fixed_point< T >::value, int >::type sign(T x) FL_NOEXCEPT
expected< T, E > result
Alias for expected (Rust-style naming)
float add(float &a, float &b)
Base definition for an LED controller.