using __ARM_NEON__ to enable neon optimisation