XCORE SDK
XCORE Software Development Kit
vpu_helper.h
1 // Copyright 2020-2021 XMOS LIMITED.
2 // This Software is subject to the terms of the XMOS Public Licence: Version 1.
3 
4 #ifndef VPU_HELPER_H_
5 #define VPU_HELPER_H_
6 
7 #include "xs3_math.h"
8 #include "xs3_vpu_info.h"
9 
10 
16 #define SAT8(VAL) (((VAL) >= VPU_INT8_MAX )? VPU_INT8_MAX : (((VAL) <= VPU_INT8_MIN )? VPU_INT8_MIN : (VAL)))
17 #define SAT16(VAL) (((VAL) >= VPU_INT16_MAX)? VPU_INT16_MAX : (((VAL) <= VPU_INT16_MIN)? VPU_INT16_MIN : (VAL)))
18 #define SAT32(VAL) (((VAL) >= VPU_INT32_MAX)? VPU_INT32_MAX : (((VAL) <= VPU_INT32_MIN)? VPU_INT32_MIN : (VAL)))
19 
23 #define SAT(BITS) SAT##BITS
24 
30 #define ROUND_SHR(VAL, SHR) (((SHR)<=0)?(VAL) : (((VAL)>>((SHR)-1))+1)>>1)
31 
37 #define SHR(VAL, SHR) ((VAL)>>SHR)
38 
46 #define ASHR8(VAL, SHR_BITS) ( SAT8(((SHR_BITS) >= 0)? SHR((VAL),(SHR_BITS)) : (SAT8( ((int32_t)(VAL))<<(-(SHR_BITS)) ) )))
47 #define ASHR16(VAL, SHR_BITS) (SAT16(((SHR_BITS) >= 0)? SHR((VAL),(SHR_BITS)) : (SAT16( ((int32_t)(VAL))<<(-(SHR_BITS)) ) )))
48 #define ASHR32(VAL, SHR_BITS) (SAT32(((SHR_BITS) >= 0)? SHR((VAL),(SHR_BITS)) : (SAT32( ((int64_t)(VAL))<<(-(SHR_BITS)) ) )))
49 #define ASHR(BITS) ASHR##BITS
50 
54 #define HRMASK_ADD(MASK, V) (MASK|(((V) >= 0)? (V) : (-V)))
55 
56 
57 
58 static inline headroom_t hr_from_mask(unsigned hr_mask){
59  return 0;
60 }
61 
62 #endif //VPU_HELPER_H_
unsigned headroom_t
Headroom of some integer or integer array.
Definition: xs3_math_types.h:86