You copied the Doc URL to your clipboard.

NEON intrinsics for converting vectors

These intrinsics convert vectors.

Convert from float

int32x2_t  vcvt_s32_f32(float32x2_t a);                  // VCVT.S32.F32 d0, d0     
uint32x2_t vcvt_u32_f32(float32x2_t a);                  // VCVT.U32.F32 d0, d0     
int32x4_t  vcvtq_s32_f32(float32x4_t a);                 // VCVT.S32.F32 q0, q0     
uint32x4_t vcvtq_u32_f32(float32x4_t a);                 // VCVT.U32.F32 q0, q0     
int32x2_t  vcvt_n_s32_f32(float32x2_t a, __constrange(1,32) int b);  
                                                         // VCVT.S32.F32 d0, d0, #32
uint32x2_t vcvt_n_u32_f32(float32x2_t a, __constrange(1,32) int b);    
                                                         // VCVT.U32.F32 d0, d0, #32
int32x4_t  vcvtq_n_s32_f32(float32x4_t a, __constrange(1,32) int b);   
                                                         // VCVT.S32.F32 q0, q0, #32
uint32x4_t vcvtq_n_u32_f32(float32x4_t a, __constrange(1,32) int b);   
                                                         // VCVT.U32.F32 q0, q0, #32

Convert to float

float32x2_t vcvt_f32_s32(int32x2_t a);                   // VCVT.F32.S32 d0, d0     
float32x2_t vcvt_f32_u32(uint32x2_t a);                  // VCVT.F32.U32 d0, d0     
float32x4_t vcvtq_f32_s32(int32x4_t a);                  // VCVT.F32.S32 q0, q0     
float32x4_t vcvtq_f32_u32(uint32x4_t a);                 // VCVT.F32.U32 q0, q0     
float32x2_t vcvt_n_f32_s32(int32x2_t a, __constrange(1,32) int b);     
                                                         // VCVT.F32.S32 d0, d0, #32
float32x2_t vcvt_n_f32_u32(uint32x2_t a, __constrange(1,32) int b);    
                                                         // VCVT.F32.U32 d0, d0, #32
float32x4_t vcvtq_n_f32_s32(int32x4_t a, __constrange(1,32) int b);    
                                                         // VCVT.F32.S32 q0, q0, #32
float32x4_t vcvtq_n_f32_u32(uint32x4_t a, __constrange(1,32) int b);   
                                                         // VCVT.F32.U32 q0, q0, #32

Convert between floats

float16x4_t vcvt_f16_f32(float32x4_t a);                 // VCVT.F16.F32 d0, q0
float32x4_t vcvt_f32_f16(float16x4_t a);                 // VCVT.F32.F16 q0, d0

Vector narrow integer

int8x8_t   vmovn_s16(int16x8_t a);                       // VMOVN.I16 d0,q0
int16x4_t  vmovn_s32(int32x4_t a);                       // VMOVN.I32 d0,q0
int32x2_t  vmovn_s64(int64x2_t a);                       // VMOVN.I64 d0,q0
uint8x8_t  vmovn_u16(uint16x8_t a);                      // VMOVN.I16 d0,q0
uint16x4_t vmovn_u32(uint32x4_t a);                      // VMOVN.I32 d0,q0
uint32x2_t vmovn_u64(uint64x2_t a);                      // VMOVN.I64 d0,q0

Vector long move

int16x8_t  vmovl_s8(int8x8_t a);                         // VMOVL.S8 q0,d0 
int32x4_t  vmovl_s16(int16x4_t a);                       // VMOVL.S16 q0,d0
int64x2_t  vmovl_s32(int32x2_t a);                       // VMOVL.S32 q0,d0
uint16x8_t vmovl_u8(uint8x8_t a);                        // VMOVL.U8 q0,d0 
uint32x4_t vmovl_u16(uint16x4_t a);                      // VMOVL.U16 q0,d0
uint64x2_t vmovl_u32(uint32x2_t a);                      // VMOVL.U32 q0,d0

Vector saturating narrow integer

int8x8_t   vqmovn_s16(int16x8_t a);                      // VQMOVN.S16 d0,q0
int16x4_t  vqmovn_s32(int32x4_t a);                      // VQMOVN.S32 d0,q0
int32x2_t  vqmovn_s64(int64x2_t a);                      // VQMOVN.S64 d0,q0
uint8x8_t  vqmovn_u16(uint16x8_t a);                     // VQMOVN.U16 d0,q0
uint16x4_t vqmovn_u32(uint32x4_t a);                     // VQMOVN.U32 d0,q0
uint32x2_t vqmovn_u64(uint64x2_t a);                     // VQMOVN.U64 d0,q0

Vector saturating narrow integer signed->unsigned

uint8x8_t  vqmovun_s16(int16x8_t a);                     // VQMOVUN.S16 d0,q0
uint16x4_t vqmovun_s32(int32x4_t a);                     // VQMOVUN.S32 d0,q0
uint32x2_t vqmovun_s64(int64x2_t a);                     // VQMOVUN.S64 d0,q0