E.3.7. Pairwise addition

These intrinsics provide pairwise addition operations.

Pairwise add

int8x8_t    vpadd_s8(int8x8_t a, int8x8_t b);        // VPADD.I8 d0,d0,d0 
int16x4_t   vpadd_s16(int16x4_t a, int16x4_t b);     // VPADD.I16 d0,d0,d0
int32x2_t   vpadd_s32(int32x2_t a, int32x2_t b);     // VPADD.I32 d0,d0,d0
uint8x8_t   vpadd_u8(uint8x8_t a, uint8x8_t b);      // VPADD.I8 d0,d0,d0 
uint16x4_t  vpadd_u16(uint16x4_t a, uint16x4_t b);   // VPADD.I16 d0,d0,d0
uint32x2_t  vpadd_u32(uint32x2_t a, uint32x2_t b);   // VPADD.I32 d0,d0,d0
float32x2_t vpadd_f32(float32x2_t a, float32x2_t b); // VPADD.F32 d0,d0,d0

Long pairwise add

int16x4_t  vpaddl_s8(int8x8_t a);      // VPADDL.S8 d0,d0 
int32x2_t  vpaddl_s16(int16x4_t a);    // VPADDL.S16 d0,d0
int64x1_t  vpaddl_s32(int32x2_t a);    // VPADDL.S32 d0,d0
uint16x4_t vpaddl_u8(uint8x8_t a);     // VPADDL.U8 d0,d0 
uint32x2_t vpaddl_u16(uint16x4_t a);   // VPADDL.U16 d0,d0
uint64x1_t vpaddl_u32(uint32x2_t a);   // VPADDL.U32 d0,d0
int16x8_t  vpaddlq_s8(int8x16_t a);    // VPADDL.S8 q0,q0 
int32x4_t  vpaddlq_s16(int16x8_t a);   // VPADDL.S16 q0,q0
int64x2_t  vpaddlq_s32(int32x4_t a);   // VPADDL.S32 q0,q0
uint16x8_t vpaddlq_u8(uint8x16_t a);   // VPADDL.U8 q0,q0 
uint32x4_t vpaddlq_u16(uint16x8_t a);  // VPADDL.U16 q0,q0
uint64x2_t vpaddlq_u32(uint32x4_t a);  // VPADDL.U32 q0,q0

Long pairwise add and accumulate

int16x4_t  vpadal_s8(int16x4_t a, int8x8_t b);      // VPADAL.S8 d0,d0 
int32x2_t  vpadal_s16(int32x2_t a, int16x4_t b);    // VPADAL.S16 d0,d0
int64x1_t  vpadal_s32(int64x1_t a, int32x2_t b);    // VPADAL.S32 d0,d0
uint16x4_t vpadal_u8(uint16x4_t a, uint8x8_t b);    // VPADAL.U8 d0,d0 
uint32x2_t vpadal_u16(uint32x2_t a, uint16x4_t b);  // VPADAL.U16 d0,d0
uint64x1_t vpadal_u32(uint64x1_t a, uint32x2_t b);  // VPADAL.U32 d0,d0
int16x8_t  vpadalq_s8(int16x8_t a, int8x16_t b);    // VPADAL.S8 q0,q0 
int32x4_t  vpadalq_s16(int32x4_t a, int16x8_t b);   // VPADAL.S16 q0,q0
int64x2_t  vpadalq_s32(int64x2_t a, int32x4_t b);   // VPADAL.S32 q0,q0
uint16x8_t vpadalq_u8(uint16x8_t a, uint8x16_t b);  // VPADAL.U8 q0,q0 
uint32x4_t vpadalq_u16(uint32x4_t a, uint16x8_t b); // VPADAL.U16 q0,q0
uint64x2_t vpadalq_u32(uint64x2_t a, uint32x4_t b); // VPADAL.U32 q0,q0
Copyright © 2007, 2010 ARM Limited. All rights reserved.ARM DUI 0348A
Non-Confidential