ARM NEON C++ Cheat Sheet

November 19, 2015

Newer ARM processors have their own flavor of SIMD instructions called NEON. In my little Android application Arashi, NEON is used a lot to speed up the simulation of particles.

Here is a table explaining some of the NEON functions that are used:

C++ NEON functions

Neon Explanation Pseudocode
vdupq_n_f32(a) New NEON value a
vsubq_f32(a, b) Subtract a - b
vaddq_f32(a, b) Add a + b
vmulq_f32(a, b) Multiply a * b
vmlaq_f32(a, b, c) Multiply and add a + (b * c)
vmlsq_f32(a, b, c) Multiply and subtract a - (b * c)
vrsqrteq_f32(a) Reciprocal square root 1 / sqrt(a)
vcgtq_f32(a, b) Compare greater than a > b ? 1 : 0
vcltq_f32(a, b) Compare less than a < b ? 1 : 0
vbslq_f32(mask, a, b) Select by mask mask != 0 ? a : b
vminq_f32(a, b) Get minimum a < b ? a : b
vmaxq_f32(a, b) Get maximum a > b ? a : b

Tags

= [, , , , ]
Comments
Gal Hai - October 8, 2018

Slight Typo:

vcgtq_f32(a, b) Compare less than a < b ? 1 : 0

Guess you meant vcltq_f32.

Kevin - December 15, 2018 > Replying to Gal Hai

You’re right, thanks for letting me know! I’ve updated the post

Leave a comment

// Your email address will not be published.