iLLD_TC27xD  1.0
IfxCpu_IntrinsicsGnuc.h File Reference
#include "Ifx_Types.h"
#include "machine/intrinsics.h"

Go to the source code of this file.

Macros

#define IFXCPU_INTRINSICSGNUC_USE_MACHINE_INTRINSICS   1
 
#define STRINGIFY(x)   #x
 
#define __non_return_call(fun)   __asm__ volatile ("ji %0"::"a"(fun))
 
#define __minX(X, Y)   ( ((X) < (Y)) ? (X) : (Y) )
 
#define __maxX(X, Y)   ( ((X) > (Y)) ? (X) : (Y) )
 
#define __saturateX(X, Min, Max)   ( __minX(__maxX(X, Min), Max) )
 
#define __checkrangeX(X, Min, Max)   (((X) >= (Min)) && ((X) <= (Max)))
 
#define __saturate(X, Min, Max)   ( __min(__max(X, Min), Max) )
 
#define __saturateu(X, Min, Max)   ( __minu(__maxu(X, Min), Max) )
 
#define __sqrf(X)   ((X) * (X))
 
#define __sqrtf(X)   sqrtf(X)
 
#define __checkrange(X, Min, Max)   (((X) >= (Min)) && ((X) <= (Max)))
 
#define __roundf(X)   ((((X) - (sint32)(X)) > 0.5) ? (1 + (sint32)(X)) : ((sint32)(X)))
 
#define __absf(X)   ( ((X) < 0.0) ? -(X) : (X) )
 
#define __minf(X, Y)   ( ((X) < (Y)) ? (X) : (Y) )
 
#define __maxf(X, Y)   ( ((X) > (Y)) ? (X) : (Y) )
 
#define __saturatef(X, Min, Max)   ( __minf(__maxf(X, Min), Max) )
 
#define __checkrangef(X, Min, Max)   (((X) >= (Min)) && ((X) <= (Max)))
 
#define __abs_stdreal(X)   ( ((X) > 0.0) ? (X) : -(X) )
 
#define __min_stdreal(X, Y)   ( ((X) < (Y)) ? (X) : (Y) )
 
#define __max_stdreal(X, Y)   ( ((X) > (Y)) ? (X) : (Y) )
 
#define __saturate_stdreal(X, Min, Max)   ( __min_stdreal(__max_stdreal(X, Min), Max) )
 
#define __neqf(X, Y)   ( ((X) > (Y)) || ((X) < (Y)) )
 
#define __leqf(X, Y)   ( !((X) > (Y)) )
 
#define __geqf(X, Y)   ( !((X) < (Y)) )
 
#define __getbit(address, bitoffset)   ((*(address) & (1U << (bitoffset))) != 0)
 
#define __imaskldmst(address, value, bitoffset, bits)
 
#define __putbit(value, address, bitoffset)   __imaskldmst(address, value, bitoffset,1)
 
#define __disable()   __asm__ volatile ("disable" : : : "memory")
 
#define __enable()   __asm__ volatile ("enable" : : : "memory")
 
#define __abs(a)   __builtin_abs(a)
 
#define __clz(a)   __builtin_clz(a)
 
#define NOP(n)   __asm(".rept " #n "\n\tnop\n\t.endr\n")
 
#define __extru(src, start, size)
 
#define __setareg(areg, val)
 

Functions

IFX_INLINE void __jump_and_link (void(*fun)(void))
 
IFX_INLINE sint32 __max (sint32 a, sint32 b)
 
IFX_INLINE sint32 __maxs (sint16 a, sint16 b)
 
IFX_INLINE uint32 __maxu (uint32 a, uint32 b)
 
IFX_INLINE sint32 __min (sint32 a, sint32 b)
 
IFX_INLINE sint16 __mins (sint16 a, sint16 b)
 
IFX_INLINE uint32 __minu (uint32 a, uint32 b)
 
IFX_INLINE sint16 __clssf (sfract a)
 
IFX_INLINE float __fract_to_float (fract a)
 
IFX_INLINE fract __float_to_fract (float a)
 
IFX_INLINE fract __getfract (laccum a)
 
IFX_INLINE sfract __mac_r_sf (sfract a, sfract b, sfract c)
 
IFX_INLINE sfract __mac_sf (sfract a, sfract b, sfract c)
 
IFX_INLINE long __mulfractfract (fract a, fract b)
 
IFX_INLINE long __mulfractlong (fract a, long b)
 
IFX_INLINE sfract __round16 (fract a)
 
IFX_INLINE sfract __s16_to_sfract (sint16 a)
 
IFX_INLINE sint16 __sfract_to_s16 (sfract a)
 
IFX_INLINE uint16 __sfract_to_u16 (sfract a)
 
IFX_INLINE laccum __shaaccum (laccum a, sint32 b)
 
IFX_INLINE fract __shafracts (fract a, sint32 b)
 
IFX_INLINE sfract __shasfracts (sfract a, sint32 b)
 
IFX_INLINE sfract __u16_to_sfract (uint16 a)
 
IFX_INLINE sint32 __extr (sint32 a, uint32 p, uint32 w)
 
IFX_INLINE uint32 __extru (uint32 a, uint32 p, uint32 w)
 
IFX_INLINE sint32 __ins (sint32 trg, const sint32 trgbit, sint32 src, const sint32 srcbit)
 
IFX_INLINE sint32 __insert (sint32 a, sint32 b, sint32 p, const sint32 w)
 
IFX_INLINE sint32 __insn (sint32 trg, const sint32 trgbit, sint32 src, const sint32 srcbit)
 
IFX_INLINE sint32 __disable_and_save (void)
 
IFX_INLINE void __restore (sint32 ie)
 
IFX_INLINE void __cacheawi (uint8 *p)
 
IFX_INLINE void __cacheiwi (uint8 *p)
 
IFX_INLINE uint8__cacheawi_bo_post_inc (uint8 *p)
 
IFX_INLINE sint32 __mulsc (sint32 a, sint32 b, sint32 offset)
 
IFX_INLINE uint32 __rol (uint32 operand, uint32 count)
 
IFX_INLINE uint32 __ror (uint32 operand, uint32 count)
 
IFX_INLINE __packb __absb (__packb a)
 
IFX_INLINE __packhw __absh (__packhw a)
 
IFX_INLINE __packhw __abssh (__packhw a)
 
IFX_INLINE sint8 __extractbyte1 (__packb a)
 
IFX_INLINE sint8 __extractbyte2 (__packb a)
 
IFX_INLINE sint8 __extractbyte3 (__packb a)
 
IFX_INLINE sint8 __extractbyte4 (__packb a)
 
IFX_INLINE sint16 __extracthw1 (__packhw a)
 
IFX_INLINE sint16 __extracthw2 (__packhw a)
 
IFX_INLINE uint8 __extractubyte1 (__upackb a)
 
IFX_INLINE uint8 __extractubyte2 (__upackb a)
 
IFX_INLINE uint8 __extractubyte3 (__upackb a)
 
IFX_INLINE uint8 __extractubyte4 (__upackb a)
 
IFX_INLINE uint16 __extractuhw1 (__upackhw a)
 
IFX_INLINE uint16 __extractuhw2 (__upackhw a)
 
IFX_INLINE sint8 __getbyte1 (__packb *a)
 
IFX_INLINE sint8 __getbyte2 (__packb *a)
 
IFX_INLINE sint8 __getbyte3 (__packb *a)
 
IFX_INLINE sint8 __getbyte4 (__packb *a)
 
IFX_INLINE sint16 __gethw1 (__packhw *a)
 
IFX_INLINE sint16 __gethw2 (__packhw *a)
 
IFX_INLINE uint8 __getubyte1 (__upackb *a)
 
IFX_INLINE uint8 __getubyte2 (__upackb *a)
 
IFX_INLINE uint8 __getubyte3 (__upackb *a)
 
IFX_INLINE uint8 __getubyte4 (__upackb *a)
 
IFX_INLINE uint16 __getuhw1 (__upackhw *a)
 
IFX_INLINE uint16 __getuhw2 (__upackhw *a)
 
IFX_INLINE __packb __initpackb (sint32 a, sint32 b, sint32 c, sint32 d)
 
IFX_INLINE __packb __initpackbl (long a)
 
IFX_INLINE __packhw __initpackhw (sint16 a, sint16 b)
 
IFX_INLINE __packhw __initpackhwl (long a)
 
IFX_INLINE __upackb __initupackb (uint32 a, uint32 b, uint32 c, uint32 d)
 
IFX_INLINE __upackhw __initupackhw (uint16 a, uint16 b)
 
IFX_INLINE __packb __insertbyte1 (__packb a, sint8 b)
 
IFX_INLINE __packb __insertbyte2 (__packb a, sint8 b)
 
IFX_INLINE __packb __insertbyte3 (__packb a, sint8 b)
 
IFX_INLINE __packb __insertbyte4 (__packb a, sint8 b)
 
IFX_INLINE __upackb __insertubyte1 (__upackb a, uint8 b)
 
IFX_INLINE __upackb __insertubyte2 (__upackb a, uint8 b)
 
IFX_INLINE __upackb __insertubyte3 (__upackb a, uint8 b)
 
IFX_INLINE __upackb __insertubyte4 (__upackb a, uint8 b)
 
IFX_INLINE __packhw __inserthw1 (__packhw a, sint16 b)
 
IFX_INLINE __packhw __inserthw2 (__packhw a, sint16 b)
 
IFX_INLINE __upackhw __insertuhw1 (__upackhw a, uint16 b)
 
IFX_INLINE __upackhw __insertuhw2 (__upackhw a, uint16 b)
 
IFX_INLINE __packb __minb (__packb a, __packb b)
 
IFX_INLINE __upackb __minbu (__upackb a, __upackb b)
 
IFX_INLINE __packhw __minh (__packhw a, __packhw b)
 
IFX_INLINE __upackhw __minhu (__upackhw a, __upackhw b)
 
IFX_INLINE void __setbyte1 (__packb *a, sint8 b)
 
IFX_INLINE void __setbyte2 (__packb *a, sint8 b)
 
IFX_INLINE void __setbyte3 (__packb *a, sint8 b)
 
IFX_INLINE void __setbyte4 (__packb *a, sint8 b)
 
IFX_INLINE void __sethw1 (__packhw *a, sint16 b)
 
IFX_INLINE void __sethw2 (__packhw *a, sint16 b)
 
IFX_INLINE void __setubyte1 (__upackb *a, uint8 b)
 
IFX_INLINE void __setubyte2 (__upackb *a, uint8 b)
 
IFX_INLINE void __setubyte3 (__upackb *a, uint8 b)
 
IFX_INLINE void __setubyte4 (__upackb *a, uint8 b)
 
IFX_INLINE void __setuhw1 (__upackhw *a, uint16 b)
 
IFX_INLINE void __setuhw2 (__upackhw *a, uint16 b)
 
IFX_INLINE sint32 __absdif (sint32 a, sint32 b)
 
IFX_INLINE sint32 __abss (sint32 a)
 
IFX_INLINE sint32 __clo (sint32 a)
 
IFX_INLINE sint32 __cls (sint32 a)
 
IFX_INLINE double __fabs (double d)
 
IFX_INLINE float __fabsf (float f)
 
IFX_INLINE sint32 __parity (sint32 a)
 
IFX_INLINE sint8 __satb (sint32 a)
 
IFX_INLINE uint8 __satbu (sint32 a)
 
IFX_INLINE sint16 __sath (sint32 a)
 
IFX_INLINE uint16 __sathu (sint32 a)
 
IFX_INLINE sint32 __adds (sint32 a, sint32 b)
 
IFX_INLINE uint32 __addsu (uint32 a, uint32 b)
 
IFX_INLINE sint32 __subs (sint32 a, sint32 b)
 
IFX_INLINE uint32 __subsu (uint32 a, uint32 b)
 
IFX_INLINE void __debug (void)
 
IFX_INLINE void __dsync (void)
 
IFX_INLINE void __isync (void)
 
IFX_INLINE void __ldmst (volatile void *address, uint32 mask, uint32 value)
 
IFX_INLINE void __nop (void)
 
IFX_INLINE void __nops (void *cnt)
 
IFX_INLINE void __rslcx (void)
 
IFX_INLINE void __svlcx (void)
 
IFX_INLINE uint32 __swap (void *place, uint32 value)
 
IFX_INLINE void __stopPerfCounters (void)
 
IFX_INLINE unsigned int __cmpAndSwap (unsigned int volatile *address, unsigned int value, unsigned int condition)
 This function is a implementation of a binary semaphore using compare and swap instruction. More...
 
IFX_INLINE float32 __fixpoint_to_float32 (fract value, sint32 shift)
 Convert a fixpoint value to float32. More...
 
IFX_INLINE void * __getA11 (void)
 
IFX_INLINE void __setStackPointer (void *stackAddr)
 

Detailed Description

Version
iLLD_1_0_0_11_0
                            IMPORTANT NOTICE

Infineon Technologies AG (Infineon) is supplying this file for use exclusively with Infineon's microcontroller products. This file can be freely distributed within development tools that are supporting such microcontroller products.

THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. INFINEON SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.

Definition in file IfxCpu_IntrinsicsGnuc.h.

Macro Definition Documentation

#define __extru (   src,
  start,
  size 
)
Value:
({ sint32 res; asm volatile (" extr.u\t %0,%1,%2,%3" : "=d" (res) : \
"d" (src),"i" (start),"i" (size) : "memory"); res; })

Definition at line 1411 of file IfxCpu_IntrinsicsGnuc.h.

Referenced by __addr_to_cx(), and __cx_to_addr().

#define __non_return_call (   fun)    __asm__ volatile ("ji %0"::"a"(fun))

Function call without return

Definition at line 50 of file IfxCpu_IntrinsicsGnuc.h.

#define __setareg (   areg,
  val 
)
Value:
{ uint32 reg_val= (uint32)val; \
asm volatile (" mov.a\t %%"#areg",%0"::"d"(reg_val)); }

Definition at line 1416 of file IfxCpu_IntrinsicsGnuc.h.

#define IFXCPU_INTRINSICSGNUC_USE_MACHINE_INTRINSICS   1

Definition at line 34 of file IfxCpu_IntrinsicsGnuc.h.

#define STRINGIFY (   x)    #x

Definition at line 46 of file IfxCpu_IntrinsicsGnuc.h.

Function Documentation

IFX_INLINE unsigned int __cmpAndSwap ( unsigned int volatile *  address,
unsigned int  value,
unsigned int  condition 
)

This function is a implementation of a binary semaphore using compare and swap instruction.

Parameters
addressaddress of resource.
valueThis variable is updated with status of address
conditionif the value of address matches with the value of condition, then swap of value & address occurs.

Definition at line 1436 of file IfxCpu_IntrinsicsGnuc.h.

IFX_INLINE float32 __fixpoint_to_float32 ( fract  value,
sint32  shift 
)

Convert a fixpoint value to float32.

This function converts a value from a fixpoint format to a float32 format.

Parameters
valuevalue to be converted.
shiftposition of the fix point. Range = [-256, 255] => (Qx.y format where x = shift+1).
Returns
Returns the converted value in the float32 format.

Definition at line 1474 of file IfxCpu_IntrinsicsGnuc.h.

IFX_INLINE void* __getA11 ( void  )

Definition at line 1482 of file IfxCpu_IntrinsicsGnuc.h.

IFX_INLINE void __jump_and_link ( void(*)(void)  fun)

Jump and link

Definition at line 54 of file IfxCpu_IntrinsicsGnuc.h.

IFX_INLINE void __setStackPointer ( void *  stackAddr)

Definition at line 1489 of file IfxCpu_IntrinsicsGnuc.h.

IFX_INLINE void __stopPerfCounters ( void  )

__mtcr (CPU_CCTRL, 0);

Definition at line 1422 of file IfxCpu_IntrinsicsGnuc.h.