64 #if defined(__GNUC__) && (defined(ARM) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__)) 78 #define MULSHIFT32 xmp3_MULSHIFT32 81 #define FASTABS xmp3_FASTABS 88 __asm__
volatile (
"smlal %0,%1,%2,%3" :
"+&r" (u.r.lo32),
"+&r" (u.r.hi32) :
"r" (x),
"r" (y) :
"cc");
92 static inline long long SAR64(
long long x,
int n)
99 #define CLZ(x) __CLZ(x) 101 #define CLIPTO30(x) __SSAT(x,30) 107 #elif defined(__ICCARM__) 111 #define MULSHIFT32 xmp3_MULSHIFT32 114 #define FASTABS xmp3_FASTABS 117 static inline long long MADD64(
long long sum,
int x,
int y)
119 return (sum +(
long long)x * y);
122 static inline long long SAR64(
long long x,
int n)
129 #define CLZ(x) __CLZ(x) 131 #define CLIPTO30(x) __SSAT(x,30) 147 sign = x >> (
sizeof(int) * 8 -1);
153 _XIF_
static inline long long MADD64(
long long sum,
int x,
int y)
155 return (sum +(
long long)x * y);
158 _XIF_
static inline long long SAR64(
long long x,
int n)
165 _XIF_
static inline int CLZ(
int x)
173 if(!((
unsigned int)x >> 16)) { numZeros += 16; x <<= 16;}
174 if(!((
unsigned int)x >> 24)) { numZeros += 8; x <<= 8;}
175 if(!((
unsigned int)x >> 28)) { numZeros += 4; x <<= 4;}
176 if(!((
unsigned int)x >> 30)) { numZeros += 2; x <<= 2;}
178 numZeros -= ((
unsigned int)x >> 31);
188 if(sign != (x >> 30))
189 x = sign ^ ((1 << 30)-1);
static _XIF_ int MULSHIFT32(int x, int y)
Definition: mp3assembly.h:137
long long Word64
Definition: mp3assembly.h:135
static _XIF_ int FASTABS(int x)
Definition: mp3assembly.h:144
static _XIF_ int CLIPTO30(int x)
Definition: mp3assembly.h:183
static _XIF_ int CLZ(int x)
Definition: mp3assembly.h:165
static _XIF_ long long MADD64(long long sum, int x, int y)
Definition: mp3assembly.h:153
static _XIF_ long long SAR64(long long x, int n)
Definition: mp3assembly.h:158
#define U64
Definition: Global.h:78