On 07/28/2016 12:19 PM, Nikunj A Dadhania wrote:
+ r->element[i] = abs(a->element[i] - b->element[i]); \ + } \ +} + +/* VABSDU - Vector absolute difference unsigned + * name - instruction mnemonic suffix (b: byte, h: halfword, w: word) + * element - element type to access from vector + */ +#define VABSDU(type, element) \ + VABSDU_DO(absdu##type, element) +VABSDU(b, u8) +VABSDU(h, u16) +VABSDU(w, u32)
From whence are you receiving this abs definition, and how do you expect it to work with an unsigned input?
I can only imagine you're getting abs(3), aka int abs(int), from stdlib.h. Which technically does work post-arithmetic promotion for u8 and u16, but it does not for u32.
I think we'd prefer an explicit (a > b ? a - b : b - a). r~