E.3.22. Converting vectors

These intrinsics are used to 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

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
Copyright © 2007, 2010 ARM Limited. All rights reserved.ARM DUI 0348A