Lines Matching full:b
24 static inline uint16_t add16_sat(uint16_t a, uint16_t b) in add16_sat() argument
28 res = a + b; in add16_sat()
29 if (((res ^ a) & 0x8000) && !((a ^ b) & 0x8000)) { in add16_sat()
40 static inline uint8_t add8_sat(uint8_t a, uint8_t b) in add8_sat() argument
44 res = a + b; in add8_sat()
45 if (((res ^ a) & 0x80) && !((a ^ b) & 0x80)) { in add8_sat()
56 static inline uint16_t sub16_sat(uint16_t a, uint16_t b) in sub16_sat() argument
60 res = a - b; in sub16_sat()
61 if (((res ^ a) & 0x8000) && ((a ^ b) & 0x8000)) { in sub16_sat()
72 static inline uint8_t sub8_sat(uint8_t a, uint8_t b) in sub8_sat() argument
76 res = a - b; in sub8_sat()
77 if (((res ^ a) & 0x80) && ((a ^ b) & 0x80)) { in sub8_sat()
87 #define ADD16(a, b, n) RESULT(add16_sat(a, b), n, 16); argument
88 #define SUB16(a, b, n) RESULT(sub16_sat(a, b), n, 16); argument
89 #define ADD8(a, b, n) RESULT(add8_sat(a, b), n, 8); argument
90 #define SUB8(a, b, n) RESULT(sub8_sat(a, b), n, 8); argument
96 static inline uint16_t add16_usat(uint16_t a, uint16_t b) in add16_usat() argument
99 res = a + b; in add16_usat()
106 static inline uint16_t sub16_usat(uint16_t a, uint16_t b) in sub16_usat() argument
108 if (a > b) { in sub16_usat()
109 return a - b; in sub16_usat()
115 static inline uint8_t add8_usat(uint8_t a, uint8_t b) in add8_usat() argument
118 res = a + b; in add8_usat()
125 static inline uint8_t sub8_usat(uint8_t a, uint8_t b) in sub8_usat() argument
127 if (a > b) { in sub8_usat()
128 return a - b; in sub8_usat()
134 #define ADD16(a, b, n) RESULT(add16_usat(a, b), n, 16); argument
135 #define SUB16(a, b, n) RESULT(sub16_usat(a, b), n, 16); argument
136 #define ADD8(a, b, n) RESULT(add8_usat(a, b), n, 8); argument
137 #define SUB8(a, b, n) RESULT(sub8_usat(a, b), n, 8); argument
143 #define SARITH16(a, b, n, op) do { \ argument
145 sum = (int32_t)(int16_t)(a) op (int32_t)(int16_t)(b); \
151 #define SARITH8(a, b, n, op) do { \ argument
153 sum = (int32_t)(int8_t)(a) op (int32_t)(int8_t)(b); \
160 #define ADD16(a, b, n) SARITH16(a, b, n, +) argument
161 #define SUB16(a, b, n) SARITH16(a, b, n, -) argument
162 #define ADD8(a, b, n) SARITH8(a, b, n, +) argument
163 #define SUB8(a, b, n) SARITH8(a, b, n, -) argument
170 #define ADD16(a, b, n) do { \ argument
172 sum = (uint32_t)(uint16_t)(a) + (uint32_t)(uint16_t)(b); \
178 #define ADD8(a, b, n) do { \ argument
180 sum = (uint32_t)(uint8_t)(a) + (uint32_t)(uint8_t)(b); \
186 #define SUB16(a, b, n) do { \ argument
188 sum = (uint32_t)(uint16_t)(a) - (uint32_t)(uint16_t)(b); \
194 #define SUB8(a, b, n) do { \ argument
196 sum = (uint32_t)(uint8_t)(a) - (uint32_t)(uint8_t)(b); \
208 #define ADD16(a, b, n) \ argument
209 RESULT(((int32_t)(int16_t)(a) + (int32_t)(int16_t)(b)) >> 1, n, 16)
210 #define SUB16(a, b, n) \ argument
211 RESULT(((int32_t)(int16_t)(a) - (int32_t)(int16_t)(b)) >> 1, n, 16)
212 #define ADD8(a, b, n) \ argument
213 RESULT(((int32_t)(int8_t)(a) + (int32_t)(int8_t)(b)) >> 1, n, 8)
214 #define SUB8(a, b, n) \ argument
215 RESULT(((int32_t)(int8_t)(a) - (int32_t)(int8_t)(b)) >> 1, n, 8)
221 #define ADD16(a, b, n) \ argument
222 RESULT(((uint32_t)(uint16_t)(a) + (uint32_t)(uint16_t)(b)) >> 1, n, 16)
223 #define SUB16(a, b, n) \ argument
224 RESULT(((uint32_t)(uint16_t)(a) - (uint32_t)(uint16_t)(b)) >> 1, n, 16)
225 #define ADD8(a, b, n) \ argument
226 RESULT(((uint32_t)(uint8_t)(a) + (uint32_t)(uint8_t)(b)) >> 1, n, 8)
227 #define SUB8(a, b, n) \ argument
228 RESULT(((uint32_t)(uint8_t)(a) - (uint32_t)(uint8_t)(b)) >> 1, n, 8)
233 static inline uint8_t do_usad(uint8_t a, uint8_t b) in do_usad() argument
235 if (a > b) { in do_usad()
236 return a - b; in do_usad()
238 return b - a; in do_usad()
243 uint32_t HELPER(usad8)(uint32_t a, uint32_t b) in HELPER()
246 sum = do_usad(a, b); in HELPER()
247 sum += do_usad(a >> 8, b >> 8); in HELPER()
248 sum += do_usad(a >> 16, b >> 16); in HELPER()
249 sum += do_usad(a >> 24, b >> 24); in HELPER()
254 uint32_t HELPER(sel_flags)(uint32_t flags, uint32_t a, uint32_t b) in HELPER()
271 return (a & mask) | (b & ~mask); in HELPER()