#ifndef GENERIC_FI_H
#define GENERIC_FI_H



/* TI C55x instrinics are found in c55x.h */

/* ETSI Basic Operations intrinsics are found in dspfns.h */

/* instruction intrinsics */
void __breakpoint(int val);
int __builtin_clz(unsigned int val);
int __builtin_constant_p();
long __builtin_expect(long int expr, long int c);
void *__builtin_frame_address(unsigned int val);
void *__builtin_return_address(unsigned int val);
int __builtin_popcount(unsigned int val);
void __cdp(unsigned int coproc, unsigned int opcode1, unsigned int opcode2);
void __clrex(void);
unsigned char __clz(unsigned int val);
unsigned int __current_pc(void);
unsigned int __current_sp(void);
int __disable_fiq(void);
int __disable_irq(void);
void __enable_fiq(void);
void __enable_irq(void);
double __fabs(double val);
float __fabsf(float val);
void __force_stores(void);
unsigned int __ldrex(volatile void *ptr);
unsigned int __ldrt(const volatile void *ptr);
void __memory_changed(void);
void __nop(void);
void __pld();
void __pli();
int __qadd(int val1, int val2);
int __qdbl(int val);
int __qsub(int val1, int val2);
unsigned int __rbit(unsigned int val);
unsigned int __rev(unsigned int val);
unsigned int __return_address(void);
unsigned int __ror(unsigned int val, unsigned int shift);
void schedule_barrier(void);
int __semihost(int val, const void *ptr);
void __sev(void);
double __sqrt(double val);
float __sqrtf(float val);
int __ssat(int val, unsigned int sat);
int __strex(unsigned int val, volatile void *ptr);
void __strt(unsigned int val, volatile void *ptr);
unsigned int __swp(unsigned int val, volatile void *ptr);
int __usat(unsigned int val, unsigned int sat);
void __wfe(void);
void __wfi(void);
void __yield(void);

/* ARMv6 SIMD intrinsics */
unsigned int __qadd16(unsigned int, unsigned int);
unsigned int __qadd8(unsigned int, unsigned int);
unsigned int __qasx(unsigned int, unsigned int);
unsigned int __qsax(unsigned int, unsigned int);
unsigned int __qsub16(unsigned int, unsigned int);
unsigned int __qsub8(unsigned int, unsigned int);
unsigned int __sadd16(unsigned int, unsigned int);
unsigned int __sadd8(unsigned int, unsigned int);
unsigned int __sasx(unsigned int, unsigned int);
unsigned int __sel(unsigned int, unsigned int);
unsigned int __shadd16(unsigned int, unsigned int);
unsigned int __shadd8(unsigned int, unsigned int);
unsigned int __shasx(unsigned int, unsigned int);
unsigned int __shsax(unsigned int, unsigned int);
unsigned int __shsub16(unsigned int, unsigned int);
unsigned int __shsub8(unsigned int, unsigned int);
unsigned int __smlad(unsigned int, unsigned int, unsigned int);
unsigned long long __smlald(unsigned int, unsigned int, unsigned long long);
unsigned int __smlsd(unsigned int, unsigned int, unsigned int);
unsigned long long __smlsld(unsigned int, unsigned int, unsigned long long);
unsigned int __smuad(unsigned int, unsigned int);
unsigned int __smusd(unsigned int, unsigned int);
unsigned int __ssat16(unsigned int, unsigned int);
unsigned int __ssax(unsigned int, unsigned int);
unsigned int __ssub16(unsigned int, unsigned int);
unsigned int __ssub8(unsigned int, unsigned int);
unsigned int __sxtab16(unsigned int, unsigned int);
unsigned int __sxtb16(unsigned int, unsigned int);
unsigned int __uadd16(unsigned int, unsigned int);
unsigned int __uadd8(unsigned int, unsigned int);
unsigned int __uasx(unsigned int, unsigned int);
unsigned int __uhadd16(unsigned int, unsigned int);
unsigned int __uhadd8(unsigned int, unsigned int);
unsigned int __uhasx(unsigned int, unsigned int);
unsigned int __uhsax(unsigned int, unsigned int);
unsigned int __uhsub16(unsigned int, unsigned int);
unsigned int __uhsub8(unsigned int, unsigned int);
unsigned int __uqadd16(unsigned int, unsigned int);
unsigned int __uqadd8(unsigned int, unsigned int);
unsigned int __uqasx(unsigned int, unsigned int);
unsigned int __uqsax(unsigned int, unsigned int);
unsigned int __uqsub16(unsigned int, unsigned int);
unsigned int __uqsub8(unsigned int, unsigned int);
unsigned int __usad8(unsigned int, unsigned int);
unsigned int __usada8(unsigned int, unsigned int, unsigned int);
unsigned int __usax(unsigned int, unsigned int);
unsigned int __usat16(unsigned int, unsigned int);
unsigned int __usub16(unsigned int, unsigned int);
unsigned int __usub8(unsigned int, unsigned int);
unsigned int __uxtab16(unsigned int, unsigned int);
unsigned int __uxtb16(unsigned int, unsigned int);


#else
#error "Multiple include"
#endif  /* ifndef GENERIC_FI_H */
