ベクタの変換

以下のコンパイラ組み込み関数は、ベクタの変換に使用します。

Show/hide浮動小数点からの変換

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

Show/hide浮動小数点への変換

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

Show/hide浮動小数点間の変換

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

Show/hideベクタ Narrow 整数

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

Show/hideベクタ Long 移動

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

Show/hideベクタサチュレート Narrow 整数

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

Show/hideベクタサチュレート Narrow 整数、符号付きから符号なしへの変換

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 © 2010-2011 ARM. All rights reserved.ARM DUI 0491EJ
Non-ConfidentialID081711