You copied the Doc URL to your clipboard.

Other single operand arithmetic

These intrinsics provide other single operand arithmetic.

Absolute: vabs{q}_<type>. Vd[i] = |Va[i]|

int8x8_t    vabs_s8(int8x8_t a);       // VABS.S8 d0,d0 
int16x4_t   vabs_s16(int16x4_t a);     // VABS.S16 d0,d0
int32x2_t   vabs_s32(int32x2_t a);     // VABS.S32 d0,d0
float32x2_t vabs_f32(float32x2_t a);   // VABS.F32 d0,d0
int8x16_t   vabsq_s8(int8x16_t a);     // VABS.S8 q0,q0 
int16x8_t   vabsq_s16(int16x8_t a);    // VABS.S16 q0,q0
int32x4_t   vabsq_s32(int32x4_t a);    // VABS.S32 q0,q0
float32x4_t vabsq_f32(float32x4_t a);  // VABS.F32 q0,q0

Saturating absolute: vqabs{q}_<type>. Vd[i] = sat(|Va[i]|)

int8x8_t  vqabs_s8(int8x8_t a);     // VQABS.S8 d0,d0 
int16x4_t vqabs_s16(int16x4_t a);   // VQABS.S16 d0,d0
int32x2_t vqabs_s32(int32x2_t a);   // VQABS.S32 d0,d0
int8x16_t vqabsq_s8(int8x16_t a);   // VQABS.S8 q0,q0 
int16x8_t vqabsq_s16(int16x8_t a);  // VQABS.S16 q0,q0
int32x4_t vqabsq_s32(int32x4_t a);  // VQABS.S32 q0,q0

Negate: vneg{q}_<type>. Vd[i] = - Va[i]

int8x8_t    vneg_s8(int8x8_t a);       // VNEG.S8 d0,d0 
int16x4_t   vneg_s16(int16x4_t a);     // VNEG.S16 d0,d0
int32x2_t   vneg_s32(int32x2_t a);     // VNEG.S32 d0,d0
float32x2_t vneg_f32(float32x2_t a);   // VNEG.F32 d0,d0
int8x16_t   vnegq_s8(int8x16_t a);     // VNEG.S8 q0,q0 
int16x8_t   vnegq_s16(int16x8_t a);    // VNEG.S16 q0,q0
int32x4_t   vnegq_s32(int32x4_t a);    // VNEG.S32 q0,q0
float32x4_t vnegq_f32(float32x4_t a);  // VNEG.F32 q0,q0

Saturating Negate: vqneg{q}_<type>. sat(Vd[i] = - Va[i])

int8x8_t  vqneg_s8(int8x8_t a);     // VQNEG.S8 d0,d0 
int16x4_t vqneg_s16(int16x4_t a);   // VQNEG.S16 d0,d0
int32x2_t vqneg_s32(int32x2_t a);   // VQNEG.S32 d0,d0
int8x16_t vqnegq_s8(int8x16_t a);   // VQNEG.S8 q0,q0 
int16x8_t vqnegq_s16(int16x8_t a);  // VQNEG.S16 q0,q0
int32x4_t vqnegq_s32(int32x4_t a);  // VQNEG.S32 q0,q0

Count leading sign bits

int8x8_t  vcls_s8(int8x8_t a);     // VCLS.S8 d0,d0 
int16x4_t vcls_s16(int16x4_t a);   // VCLS.S16 d0,d0
int32x2_t vcls_s32(int32x2_t a);   // VCLS.S32 d0,d0
int8x16_t vclsq_s8(int8x16_t a);   // VCLS.S8 q0,q0 
int16x8_t vclsq_s16(int16x8_t a);  // VCLS.S16 q0,q0
int32x4_t vclsq_s32(int32x4_t a);  // VCLS.S32 q0,q0

Count leading zeros

int8x8_t   vclz_s8(int8x8_t a);      // VCLZ.I8 d0,d0 
int16x4_t  vclz_s16(int16x4_t a);    // VCLZ.I16 d0,d0
int32x2_t  vclz_s32(int32x2_t a);    // VCLZ.I32 d0,d0
uint8x8_t  vclz_u8(uint8x8_t a);     // VCLZ.I8 d0,d0 
uint16x4_t vclz_u16(uint16x4_t a);   // VCLZ.I16 d0,d0
uint32x2_t vclz_u32(uint32x2_t a);   // VCLZ.I32 d0,d0
int8x16_t  vclzq_s8(int8x16_t a);    // VCLZ.I8 q0,q0 
int16x8_t  vclzq_s16(int16x8_t a);   // VCLZ.I16 q0,q0
int32x4_t  vclzq_s32(int32x4_t a);   // VCLZ.I32 q0,q0
uint8x16_t vclzq_u8(uint8x16_t a);   // VCLZ.I8 q0,q0 
uint16x8_t vclzq_u16(uint16x8_t a);  // VCLZ.I16 q0,q0
uint32x4_t vclzq_u32(uint32x4_t a);  // VCLZ.I32 q0,q0

Count number of set bits

uint8x8_t  vcnt_u8(uint8x8_t a);    // VCNT.8 d0,d0
int8x8_t   vcnt_s8(int8x8_t a);     // VCNT.8 d0,d0
poly8x8_t  vcnt_p8(poly8x8_t a);    // VCNT.8 d0,d0
uint8x16_t vcntq_u8(uint8x16_t a);  // VCNT.8 q0,q0
int8x16_t  vcntq_s8(int8x16_t a);   // VCNT.8 q0,q0
poly8x16_t vcntq_p8(poly8x16_t a);  // VCNT.8 q0,q0

Reciprocal estimate

float32x2_t vrecpe_f32(float32x2_t a);   // VRECPE.F32 d0,d0
uint32x2_t  vrecpe_u32(uint32x2_t a);    // VRECPE.U32 d0,d0
float32x4_t vrecpeq_f32(float32x4_t a);  // VRECPE.F32 q0,q0
uint32x4_t  vrecpeq_u32(uint32x4_t a);   // VRECPE.U32 q0,q0

Reciprocal square root estimate

float32x2_t vrsqrte_f32(float32x2_t a);   // VRSQRTE.F32 d0,d0
uint32x2_t  vrsqrte_u32(uint32x2_t a);    // VRSQRTE.U32 d0,d0
float32x4_t vrsqrteq_f32(float32x4_t a);  // VRSQRTE.F32 q0,q0
uint32x4_t  vrsqrteq_u32(uint32x4_t a);   // VRSQRTE.U32 q0,q0
Was this page helpful? Yes No