We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
// 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