E.3.11. 按有符号变量移位

以下内在函数提供包含按有符号变量移位的运算。

向量左移:Vr[i] := Va[i] << Vb[i](负值右移)


int8x8_t   vshl_s8(int8x8_t a, int8x8_t b);       // VSHL.S8 d0,d0,d0 

int16x4_t  vshl_s16(int16x4_t a, int16x4_t b);    // VSHL.S16 d0,d0,d0

int32x2_t  vshl_s32(int32x2_t a, int32x2_t b);    // VSHL.S32 d0,d0,d0

int64x1_t  vshl_s64(int64x1_t a, int64x1_t b);    // VSHL.S64 d0,d0,d0

uint8x8_t  vshl_u8(uint8x8_t a, int8x8_t b);      // VSHL.U8 d0,d0,d0 

uint16x4_t vshl_u16(uint16x4_t a, int16x4_t b);   // VSHL.U16 d0,d0,d0

uint32x2_t vshl_u32(uint32x2_t a, int32x2_t b);   // VSHL.U32 d0,d0,d0

uint64x1_t vshl_u64(uint64x1_t a, int64x1_t b);   // VSHL.U64 d0,d0,d0

int8x16_t  vshlq_s8(int8x16_t a, int8x16_t b);    // VSHL.S8 q0,q0,q0 

int16x8_t  vshlq_s16(int16x8_t a, int16x8_t b);   // VSHL.S16 q0,q0,q0

int32x4_t  vshlq_s32(int32x4_t a, int32x4_t b);   // VSHL.S32 q0,q0,q0

int64x2_t  vshlq_s64(int64x2_t a, int64x2_t b);   // VSHL.S64 q0,q0,q0

uint8x16_t vshlq_u8(uint8x16_t a, int8x16_t b);   // VSHL.U8 q0,q0,q0 

uint16x8_t vshlq_u16(uint16x8_t a, int16x8_t b);  // VSHL.U16 q0,q0,q0

uint32x4_t vshlq_u32(uint32x4_t a, int32x4_t b);  // VSHL.U32 q0,q0,q0

uint64x2_t vshlq_u64(uint64x2_t a, int64x2_t b);  // VSHL.U64 q0,q0,q0

向量饱和左移:(负值右移)


int8x8_t   vqshl_s8(int8x8_t a, int8x8_t b);      // VQSHL.S8 d0,d0,d0 

int16x4_t  vqshl_s16(int16x4_t a, int16x4_t b);   // VQSHL.S16 d0,d0,d0

int32x2_t  vqshl_s32(int32x2_t a, int32x2_t b);   // VQSHL.S32 d0,d0,d0

int64x1_t  vqshl_s64(int64x1_t a, int64x1_t b);   // VQSHL.S64 d0,d0,d0

uint8x8_t  vqshl_u8(uint8x8_t a, int8x8_t b);     // VQSHL.U8 d0,d0,d0 

uint16x4_t vqshl_u16(uint16x4_t a, int16x4_t b);  // VQSHL.U16 d0,d0,d0

uint32x2_t vqshl_u32(uint32x2_t a, int32x2_t b);  // VQSHL.U32 d0,d0,d0

uint64x1_t vqshl_u64(uint64x1_t a, int64x1_t b);  // VQSHL.U64 d0,d0,d0

int8x16_t  vqshlq_s8(int8x16_t a, int8x16_t b);   // VQSHL.S8 q0,q0,q0 

int16x8_t  vqshlq_s16(int16x8_t a, int16x8_t b);  // VQSHL.S16 q0,q0,q0

int32x4_t  vqshlq_s32(int32x4_t a, int32x4_t b);  // VQSHL.S32 q0,q0,q0

int64x2_t  vqshlq_s64(int64x2_t a, int64x2_t b);  // VQSHL.S64 q0,q0,q0

uint8x16_t vqshlq_u8(uint8x16_t a, int8x16_t b);  // VQSHL.U8 q0,q0,q0 

uint16x8_t vqshlq_u16(uint16x8_t a, int16x8_t b); // VQSHL.U16 q0,q0,q0

uint32x4_t vqshlq_u32(uint32x4_t a, int32x4_t b); // VQSHL.U32 q0,q0,q0

uint64x2_t vqshlq_u64(uint64x2_t a, int64x2_t b); // VQSHL.U64 q0,q0,q0

向量舍入左移:(负值右移)


int8x8_t   vrshl_s8(int8x8_t a, int8x8_t b);      // VRSHL.S8 d0,d0,d0 

int16x4_t  vrshl_s16(int16x4_t a, int16x4_t b);   // VRSHL.S16 d0,d0,d0

int32x2_t  vrshl_s32(int32x2_t a, int32x2_t b);   // VRSHL.S32 d0,d0,d0

int64x1_t  vrshl_s64(int64x1_t a, int64x1_t b);   // VRSHL.S64 d0,d0,d0

uint8x8_t  vrshl_u8(uint8x8_t a, int8x8_t b);     // VRSHL.U8 d0,d0,d0 

uint16x4_t vrshl_u16(uint16x4_t a, int16x4_t b);  // VRSHL.U16 d0,d0,d0

uint32x2_t vrshl_u32(uint32x2_t a, int32x2_t b);  // VRSHL.U32 d0,d0,d0

uint64x1_t vrshl_u64(uint64x1_t a, int64x1_t b);  // VRSHL.U64 d0,d0,d0

int8x16_t  vrshlq_s8(int8x16_t a, int8x16_t b);   // VRSHL.S8 q0,q0,q0 

int16x8_t  vrshlq_s16(int16x8_t a, int16x8_t b);  // VRSHL.S16 q0,q0,q0

int32x4_t  vrshlq_s32(int32x4_t a, int32x4_t b);  // VRSHL.S32 q0,q0,q0

int64x2_t  vrshlq_s64(int64x2_t a, int64x2_t b);  // VRSHL.S64 q0,q0,q0

uint8x16_t vrshlq_u8(uint8x16_t a, int8x16_t b);  // VRSHL.U8 q0,q0,q0 

uint16x8_t vrshlq_u16(uint16x8_t a, int16x8_t b); // VRSHL.U16 q0,q0,q0

uint32x4_t vrshlq_u32(uint32x4_t a, int32x4_t b); // VRSHL.U32 q0,q0,q0

uint64x2_t vrshlq_u64(uint64x2_t a, int64x2_t b); // VRSHL.U64 q0,q0,q0

向量饱和舍入左移:(负值右移)


int8x8_t   vqrshl_s8(int8x8_t a, int8x8_t b);      // VQRSHL.S8 d0,d0,d0 

int16x4_t  vqrshl_s16(int16x4_t a, int16x4_t b);   // VQRSHL.S16 d0,d0,d0

int32x2_t  vqrshl_s32(int32x2_t a, int32x2_t b);   // VQRSHL.S32 d0,d0,d0

int64x1_t  vqrshl_s64(int64x1_t a, int64x1_t b);   // VQRSHL.S64 d0,d0,d0

uint8x8_t  vqrshl_u8(uint8x8_t a, int8x8_t b);     // VQRSHL.U8 d0,d0,d0 

uint16x4_t vqrshl_u16(uint16x4_t a, int16x4_t b);  // VQRSHL.U16 d0,d0,d0

uint32x2_t vqrshl_u32(uint32x2_t a, int32x2_t b);  // VQRSHL.U32 d0,d0,d0

uint64x1_t vqrshl_u64(uint64x1_t a, int64x1_t b);  // VQRSHL.U64 d0,d0,d0

int8x16_t  vqrshlq_s8(int8x16_t a, int8x16_t b);   // VQRSHL.S8 q0,q0,q0 

int16x8_t  vqrshlq_s16(int16x8_t a, int16x8_t b);  // VQRSHL.S16 q0,q0,q0

int32x4_t  vqrshlq_s32(int32x4_t a, int32x4_t b);  // VQRSHL.S32 q0,q0,q0

int64x2_t  vqrshlq_s64(int64x2_t a, int64x2_t b);  // VQRSHL.S64 q0,q0,q0

uint8x16_t vqrshlq_u8(uint8x16_t a, int8x16_t b);  // VQRSHL.U8 q0,q0,q0 

uint16x8_t vqrshlq_u16(uint16x8_t a, int16x8_t b); // VQRSHL.U16 q0,q0,q0

uint32x4_t vqrshlq_u32(uint32x4_t a, int32x4_t b); // VQRSHL.U32 q0,q0,q0

uint64x2_t vqrshlq_u64(uint64x2_t a, int64x2_t b); // VQRSHL.U64 q0,q0,q0

Copyright © 2007 ARM Limited. All rights reserved. ARM DUI 0348AC
Non-Confidential