// 8x16-bit signed inputs are in q0// Elements in q1 are 0xFFFF for negative values, 0x0000 for positive (or zero) valuesvclt.s16 q1, q0, #0// Make negative values positivevabs.s16 q0, q0// ... Division performed here, results in q0 ...// Negate values that were negative. This is done by observing that neg(x) = not(x) + 1.// For values that were negative the field in q1 was 0xFFFF, therefore we get ((x ^ 0xFFFF) - 0xFFFF) which is not(x) + 1.// For values that were positive the field in q1 was 0x0000, therefore we get (x ^ 0x0000) - 0x0000 which is just x.// If you can, put some other operation between these two instructions to avoid a stall.veor.s16 q0, q0, q1vsub.s16 q0, q0, q1