Nut/OS  5.0.5
API Reference
CMSIS SIMD Intrinsics

Defines

#define __SSAT16(ARG1, ARG2)
#define __USAT16(ARG1, ARG2)
#define __SMLALD(ARG1, ARG2, ARG3)
#define __SMLALDX(ARG1, ARG2, ARG3)
#define __SMLSLD(ARG1, ARG2, ARG3)
#define __SMLSLDX(ARG1, ARG2, ARG3)
#define __PKHBT(ARG1, ARG2, ARG3)
#define __PKHTB(ARG1, ARG2, ARG3)

Functions

__STATIC_INLINE uint32_t __SADD8 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __QADD8 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __SHADD8 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __UADD8 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __UQADD8 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __UHADD8 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __SSUB8 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __QSUB8 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __SHSUB8 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __USUB8 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __UQSUB8 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __UHSUB8 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __SADD16 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __QADD16 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __SHADD16 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __UADD16 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __UQADD16 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __UHADD16 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __SSUB16 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __QSUB16 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __SHSUB16 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __USUB16 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __UQSUB16 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __UHSUB16 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __SASX (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __QASX (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __SHASX (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __UASX (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __UQASX (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __UHASX (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __SSAX (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __QSAX (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __SHSAX (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __USAX (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __UQSAX (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __UHSAX (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __USAD8 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __USADA8 (uint32_t op1, uint32_t op2, uint32_t op3)
__STATIC_INLINE uint32_t __UXTB16 (uint32_t op1)
__STATIC_INLINE uint32_t __UXTAB16 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __SXTB16 (uint32_t op1)
__STATIC_INLINE uint32_t __SXTAB16 (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3)
__STATIC_INLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3)
__STATIC_INLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3)
__STATIC_INLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3)
__STATIC_INLINE uint32_t __SEL (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __QADD (uint32_t op1, uint32_t op2)
__STATIC_INLINE uint32_t __QSUB (uint32_t op1, uint32_t op2)

Detailed Description

Access to dedicated SIMD instructions


Define Documentation

#define __SSAT16 (   ARG1,
  ARG2 
)
Value:
({                          \
  uint32_t __RES, __ARG1 = (ARG1); \
  __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \
  __RES; \
 })
#define __USAT16 (   ARG1,
  ARG2 
)
Value:
({                          \
  uint32_t __RES, __ARG1 = (ARG1); \
  __ASM ("usat16 %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \
  __RES; \
 })
#define __SMLALD (   ARG1,
  ARG2,
  ARG3 
)
Value:
({ \
  uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((uint64_t)(ARG3) >> 32), __ARG3_L = (uint32_t)((uint64_t)(ARG3) & 0xFFFFFFFFUL); \
  __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \
  (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \
 })
#define __SMLALDX (   ARG1,
  ARG2,
  ARG3 
)
Value:
({ \
  uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((uint64_t)(ARG3) >> 32), __ARG3_L = (uint32_t)((uint64_t)(ARG3) & 0xFFFFFFFFUL); \
  __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \
  (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \
 })
#define __SMLSLD (   ARG1,
  ARG2,
  ARG3 
)
Value:
({ \
  uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((ARG3) >> 32), __ARG3_L = (uint32_t)((ARG3) & 0xFFFFFFFFUL); \
  __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \
  (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \
 })
#define __SMLSLDX (   ARG1,
  ARG2,
  ARG3 
)
Value:
({ \
  uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((ARG3) >> 32), __ARG3_L = (uint32_t)((ARG3) & 0xFFFFFFFFUL); \
  __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \
  (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \
 })
#define __PKHBT (   ARG1,
  ARG2,
  ARG3 
)
Value:
({                          \
  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \
  __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) :  "r" (__ARG1), "r" (__ARG2), "I" (ARG3)  ); \
  __RES; \
 })
#define __PKHTB (   ARG1,
  ARG2,
  ARG3 
)
Value:
({                          \
  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \
  if (ARG3 == 0) \
    __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) :  "r" (__ARG1), "r" (__ARG2)  ); \
  else \
    __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) :  "r" (__ARG1), "r" (__ARG2), "I" (ARG3)  ); \
  __RES; \
 })

Function Documentation

__STATIC_INLINE uint32_t __SADD8 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __QADD8 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __SHADD8 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __UADD8 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __UQADD8 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __UHADD8 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __SSUB8 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __QSUB8 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __SHSUB8 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __USUB8 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __UQSUB8 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __UHSUB8 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __SADD16 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __QADD16 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __SHADD16 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __UADD16 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __UQADD16 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __UHADD16 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __SSUB16 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __QSUB16 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __SHSUB16 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __USUB16 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __UQSUB16 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __UHSUB16 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __SASX ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __QASX ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __SHASX ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __UASX ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __UQASX ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __UHASX ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __SSAX ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __QSAX ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __SHSAX ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __USAX ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __UQSAX ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __UHSAX ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __USAD8 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __USADA8 ( uint32_t  op1,
uint32_t  op2,
uint32_t  op3 
)

References __ASM.

__STATIC_INLINE uint32_t __UXTB16 ( uint32_t  op1)

References __ASM.

__STATIC_INLINE uint32_t __UXTAB16 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __SXTB16 ( uint32_t  op1)

References __ASM.

__STATIC_INLINE uint32_t __SXTAB16 ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __SMUAD ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __SMUADX ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __SMLAD ( uint32_t  op1,
uint32_t  op2,
uint32_t  op3 
)

References __ASM.

__STATIC_INLINE uint32_t __SMLADX ( uint32_t  op1,
uint32_t  op2,
uint32_t  op3 
)

References __ASM.

__STATIC_INLINE uint32_t __SMUSD ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __SMUSDX ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __SMLSD ( uint32_t  op1,
uint32_t  op2,
uint32_t  op3 
)

References __ASM.

__STATIC_INLINE uint32_t __SMLSDX ( uint32_t  op1,
uint32_t  op2,
uint32_t  op3 
)

References __ASM.

__STATIC_INLINE uint32_t __SEL ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __QADD ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.

__STATIC_INLINE uint32_t __QSUB ( uint32_t  op1,
uint32_t  op2 
)

References __ASM.