6#ifndef _NRF_DSP_C_INTRINSICS_H_
7#define _NRF_DSP_C_INTRINSICS_H_
16#define __NRF_DSP_CLZ __CLZ
17#define __NRF_DSP_SSAT __SSAT
18#define __NRF_DSP_USAT __USAT
19#define __NRF_DSP_ROR __ROR
26__NRF_DSP_STATIC_FORCEINLINE uint8_t __CLZ(uint32_t data)
28 if (data == 0U) {
return 32U; }
31 uint32_t mask = 0x80000000U;
33 while ((data & mask) == 0U)
48__NRF_DSP_STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat)
50 if ((sat >= 1U) && (sat <= 32U))
52 const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);
53 const int32_t min = -1 - max;
57 }
else if (val < min) {
67#define __SSAT16(x) CLIP_MINMAX((x), NRF_DSP_INT16_MIN, NRF_DSP_INT16_MAX)
76__NRF_DSP_STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat)
80 const uint32_t max = ((1U << sat) - 1U);
82 if (val > (int32_t)max) {
98__NRF_DSP_STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2)
101 return (op2 == 0U) ? op1 : ((op1 >> op2) | (op1 << (32U - op2)));
111 return ((int32_t)(x >> 32) != ((int32_t)x >> 31)) ? ((0x7FFFFFFF ^ ((int32_t)(x >> 63)))) :
123 return ((int32_t)(x >> 32) != ((int32_t)x >> 31)) ? ((0x7FFF ^ ((int16_t)(x >> 63)))) :
133{
return ((int32_t)(x >> 24) != ((int32_t)x >> 23)) ? ((0x7F ^ ((int8_t)(x >> 31)))) : (int8_t)x; }
142 return ((int32_t)(x >> 16) != ((int32_t)x >> 15)) ? ((0x7FFF ^ ((int16_t)(x >> 31)))) :
__NRF_DSP_STATIC_FORCEINLINE int16_t clip_q31_to_q15(int32_t x)
Clips a Q31 value to Q15 range.
Definition nrf_dsp_c_intrinsics.h:140
__NRF_DSP_STATIC_FORCEINLINE int8_t clip_q31_to_q7(int32_t x)
Clips a Q31 value to Q7 range.
Definition nrf_dsp_c_intrinsics.h:132
__NRF_DSP_STATIC_FORCEINLINE int32_t clip_q63_to_q31(int64_t x)
Clips a Q63 value to Q31 range.
Definition nrf_dsp_c_intrinsics.h:109
__NRF_DSP_STATIC_FORCEINLINE int16_t clip_q63_to_q15(int64_t x)
Clips a Q63 value to Q15 range.
Definition nrf_dsp_c_intrinsics.h:121