62 #if defined(__GNUC__) && (defined(ARM) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__)) 76 #define CLIPTOSHORT(x) __SSAT(x,16) 78 #define CLZ(x) __CLZ(x) 83 __asm__
volatile (
"smull %0,%1,%2,%3" :
"=&r" (zlow),
"=r" (y) :
"r" (x),
"1" (y) :
"cc");
87 static inline int FASTABS(
int x)
90 sign = x >> (
sizeof(int) * 8 - 1);
100 __asm__
volatile (
"smlal %0,%1,%2,%3" :
"+&r" (u.
r.lo32),
"+&r" (u.
r.hi32) :
"r" (x),
"r" (y) :
"cc");
107 #elif defined(__ICCARM__) 121 #define CLIPTOSHORT(x) __SSAT(x,16) 123 #define CLZ(x) __CLZ(x) 128 z = (
long long)x * (
long long)y >> 32;
132 static inline int FASTABS(
int x)
135 sign = x >> (
sizeof(int) * 8 - 1);
141 static inline long long MADD64(
long long sum,
int x,
int y)
143 return (sum +(
long long)x * y);
160 static inline int CLZ(
int x)
168 if(!((
unsigned int)x >> 16)) { numZeros += 16; x <<= 16;}
169 if(!((
unsigned int)x >> 24)) { numZeros += 8; x <<= 8;}
170 if(!((
unsigned int)x >> 28)) { numZeros += 4; x <<= 4;}
171 if(!((
unsigned int)x >> 30)) { numZeros += 2; x <<= 2;}
173 numZeros -= ((
unsigned int)x >> 31);
184 if(sign != (x >> 15))
185 x = sign ^ ((1 << 15)-1);
194 z = (
long long)x * (
long long)y >> 32;
201 sign = x >> (
sizeof(int) * 8 - 1);
207 static inline long long MADD64(
long long sum,
int x,
int y)
209 return (sum +(
long long)x * y);
Definition: aacassembly.h:150
long long Word64
Definition: aacassembly.h:148
static int CLIPTOSHORT(int x)
Definition: aacassembly.h:179
static long long MADD64(long long sum, int x, int y)
Definition: aacassembly.h:207
static int FASTABS(int x)
Definition: aacassembly.h:198
static int MULSHIFT32(int x, int y)
Definition: aacassembly.h:191
static int CLZ(int x)
Definition: aacassembly.h:160
Word64 w64
Definition: aacassembly.h:152