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~

Reply via email to