| |||
| Home > Using NEON Support > Logical operations | |||
These intrinsics provide bitwise logical operations.
int8x8_t vmvn_s8(int8x8_t a); // VMVN d0,d0 int16x4_t vmvn_s16(int16x4_t a); // VMVN d0,d0 int32x2_t vmvn_s32(int32x2_t a); // VMVN d0,d0 uint8x8_t vmvn_u8(uint8x8_t a); // VMVN d0,d0 uint16x4_t vmvn_u16(uint16x4_t a); // VMVN d0,d0 uint32x2_t vmvn_u32(uint32x2_t a); // VMVN d0,d0 poly8x8_t vmvn_p8(poly8x8_t a); // VMVN d0,d0 int8x16_t vmvnq_s8(int8x16_t a); // VMVN q0,q0 int16x8_t vmvnq_s16(int16x8_t a); // VMVN q0,q0 int32x4_t vmvnq_s32(int32x4_t a); // VMVN q0,q0 uint8x16_t vmvnq_u8(uint8x16_t a); // VMVN q0,q0 uint16x8_t vmvnq_u16(uint16x8_t a); // VMVN q0,q0 uint32x4_t vmvnq_u32(uint32x4_t a); // VMVN q0,q0 poly8x16_t vmvnq_p8(poly8x16_t a); // VMVN q0,q0
int8x8_t vand_s8(int8x8_t a, int8x8_t b); // VAND d0,d0,d0 int16x4_t vand_s16(int16x4_t a, int16x4_t b); // VAND d0,d0,d0 int32x2_t vand_s32(int32x2_t a, int32x2_t b); // VAND d0,d0,d0 int64x1_t vand_s64(int64x1_t a, int64x1_t b); // VAND d0,d0,d0 uint8x8_t vand_u8(uint8x8_t a, uint8x8_t b); // VAND d0,d0,d0 uint16x4_t vand_u16(uint16x4_t a, uint16x4_t b); // VAND d0,d0,d0 uint32x2_t vand_u32(uint32x2_t a, uint32x2_t b); // VAND d0,d0,d0 uint64x1_t vand_u64(uint64x1_t a, uint64x1_t b); // VAND d0,d0,d0 int8x16_t vandq_s8(int8x16_t a, int8x16_t b); // VAND q0,q0,q0 int16x8_t vandq_s16(int16x8_t a, int16x8_t b); // VAND q0,q0,q0 int32x4_t vandq_s32(int32x4_t a, int32x4_t b); // VAND q0,q0,q0 int64x2_t vandq_s64(int64x2_t a, int64x2_t b); // VAND q0,q0,q0 uint8x16_t vandq_u8(uint8x16_t a, uint8x16_t b); // VAND q0,q0,q0 uint16x8_t vandq_u16(uint16x8_t a, uint16x8_t b); // VAND q0,q0,q0 uint32x4_t vandq_u32(uint32x4_t a, uint32x4_t b); // VAND q0,q0,q0 uint64x2_t vandq_u64(uint64x2_t a, uint64x2_t b); // VAND q0,q0,q0
int8x8_t vorr_s8(int8x8_t a, int8x8_t b); // VORR d0,d0,d0 int16x4_t vorr_s16(int16x4_t a, int16x4_t b); // VORR d0,d0,d0 int32x2_t vorr_s32(int32x2_t a, int32x2_t b); // VORR d0,d0,d0 int64x1_t vorr_s64(int64x1_t a, int64x1_t b); // VORR d0,d0,d0 uint8x8_t vorr_u8(uint8x8_t a, uint8x8_t b); // VORR d0,d0,d0 uint16x4_t vorr_u16(uint16x4_t a, uint16x4_t b); // VORR d0,d0,d0 uint32x2_t vorr_u32(uint32x2_t a, uint32x2_t b); // VORR d0,d0,d0 uint64x1_t vorr_u64(uint64x1_t a, uint64x1_t b); // VORR d0,d0,d0 int8x16_t vorrq_s8(int8x16_t a, int8x16_t b); // VORR q0,q0,q0 int16x8_t vorrq_s16(int16x8_t a, int16x8_t b); // VORR q0,q0,q0 int32x4_t vorrq_s32(int32x4_t a, int32x4_t b); // VORR q0,q0,q0 int64x2_t vorrq_s64(int64x2_t a, int64x2_t b); // VORR q0,q0,q0 uint8x16_t vorrq_u8(uint8x16_t a, uint8x16_t b); // VORR q0,q0,q0 uint16x8_t vorrq_u16(uint16x8_t a, uint16x8_t b); // VORR q0,q0,q0 uint32x4_t vorrq_u32(uint32x4_t a, uint32x4_t b); // VORR q0,q0,q0 uint64x2_t vorrq_u64(uint64x2_t a, uint64x2_t b); // VORR q0,q0,q0
int8x8_t veor_s8(int8x8_t a, int8x8_t b); // VEOR d0,d0,d0 int16x4_t veor_s16(int16x4_t a, int16x4_t b); // VEOR d0,d0,d0 int32x2_t veor_s32(int32x2_t a, int32x2_t b); // VEOR d0,d0,d0 int64x1_t veor_s64(int64x1_t a, int64x1_t b); // VEOR d0,d0,d0 uint8x8_t veor_u8(uint8x8_t a, uint8x8_t b); // VEOR d0,d0,d0 uint16x4_t veor_u16(uint16x4_t a, uint16x4_t b); // VEOR d0,d0,d0 uint32x2_t veor_u32(uint32x2_t a, uint32x2_t b); // VEOR d0,d0,d0 uint64x1_t veor_u64(uint64x1_t a, uint64x1_t b); // VEOR d0,d0,d0 int8x16_t veorq_s8(int8x16_t a, int8x16_t b); // VEOR q0,q0,q0 int16x8_t veorq_s16(int16x8_t a, int16x8_t b); // VEOR q0,q0,q0 int32x4_t veorq_s32(int32x4_t a, int32x4_t b); // VEOR q0,q0,q0 int64x2_t veorq_s64(int64x2_t a, int64x2_t b); // VEOR q0,q0,q0 uint8x16_t veorq_u8(uint8x16_t a, uint8x16_t b); // VEOR q0,q0,q0 uint16x8_t veorq_u16(uint16x8_t a, uint16x8_t b); // VEOR q0,q0,q0 uint32x4_t veorq_u32(uint32x4_t a, uint32x4_t b); // VEOR q0,q0,q0 uint64x2_t veorq_u64(uint64x2_t a, uint64x2_t b); // VEOR q0,q0,q0
int8x8_t vbic_s8(int8x8_t a, int8x8_t b); // VBIC d0,d0,d0 int16x4_t vbic_s16(int16x4_t a, int16x4_t b); // VBIC d0,d0,d0 int32x2_t vbic_s32(int32x2_t a, int32x2_t b); // VBIC d0,d0,d0 int64x1_t vbic_s64(int64x1_t a, int64x1_t b); // VBIC d0,d0,d0 uint8x8_t vbic_u8(uint8x8_t a, uint8x8_t b); // VBIC d0,d0,d0 uint16x4_t vbic_u16(uint16x4_t a, uint16x4_t b); // VBIC d0,d0,d0 uint32x2_t vbic_u32(uint32x2_t a, uint32x2_t b); // VBIC d0,d0,d0 uint64x1_t vbic_u64(uint64x1_t a, uint64x1_t b); // VBIC d0,d0,d0 int8x16_t vbicq_s8(int8x16_t a, int8x16_t b); // VBIC q0,q0,q0 int16x8_t vbicq_s16(int16x8_t a, int16x8_t b); // VBIC q0,q0,q0 int32x4_t vbicq_s32(int32x4_t a, int32x4_t b); // VBIC q0,q0,q0 int64x2_t vbicq_s64(int64x2_t a, int64x2_t b); // VBIC q0,q0,q0 uint8x16_t vbicq_u8(uint8x16_t a, uint8x16_t b); // VBIC q0,q0,q0 uint16x8_t vbicq_u16(uint16x8_t a, uint16x8_t b); // VBIC q0,q0,q0 uint32x4_t vbicq_u32(uint32x4_t a, uint32x4_t b); // VBIC q0,q0,q0 uint64x2_t vbicq_u64(uint64x2_t a, uint64x2_t b); // VBIC q0,q0,q0
int8x8_t vorn_s8(int8x8_t a, int8x8_t b); // VORN d0,d0,d0 int16x4_t vorn_s16(int16x4_t a, int16x4_t b); // VORN d0,d0,d0 int32x2_t vorn_s32(int32x2_t a, int32x2_t b); // VORN d0,d0,d0 int64x1_t vorn_s64(int64x1_t a, int64x1_t b); // VORN d0,d0,d0 uint8x8_t vorn_u8(uint8x8_t a, uint8x8_t b); // VORN d0,d0,d0 uint16x4_t vorn_u16(uint16x4_t a, uint16x4_t b); // VORN d0,d0,d0 uint32x2_t vorn_u32(uint32x2_t a, uint32x2_t b); // VORN d0,d0,d0 uint64x1_t vorn_u64(uint64x1_t a, uint64x1_t b); // VORN d0,d0,d0 int8x16_t vornq_s8(int8x16_t a, int8x16_t b); // VORN q0,q0,q0 int16x8_t vornq_s16(int16x8_t a, int16x8_t b); // VORN q0,q0,q0 int32x4_t vornq_s32(int32x4_t a, int32x4_t b); // VORN q0,q0,q0 int64x2_t vornq_s64(int64x2_t a, int64x2_t b); // VORN q0,q0,q0 uint8x16_t vornq_u8(uint8x16_t a, uint8x16_t b); // VORN q0,q0,q0 uint16x8_t vornq_u16(uint16x8_t a, uint16x8_t b); // VORN q0,q0,q0 uint32x4_t vornq_u32(uint32x4_t a, uint32x4_t b); // VORN q0,q0,q0 uint64x2_t vornq_u64(uint64x2_t a, uint64x2_t b); // VORN q0,q0,q0
This intrinsic can compile to any of VBSL/VBIF/VBIT depending
on register allocation.
int8x8_t vbsl_s8(uint8x8_t a, int8x8_t b, int8x8_t c); // VBSL d0,d0,d0 int16x4_t vbsl_s16(uint16x4_t a, int16x4_t b, int16x4_t c); // VBSL d0,d0,d0 int32x2_t vbsl_s32(uint32x2_t a, int32x2_t b, int32x2_t c); // VBSL d0,d0,d0 int64x1_t vbsl_s64(uint64x1_t a, int64x1_t b, int64x1_t c); // VBSL d0,d0,d0 uint8x8_t vbsl_u8(uint8x8_t a, uint8x8_t b, uint8x8_t c); // VBSL d0,d0,d0 uint16x4_t vbsl_u16(uint16x4_t a, uint16x4_t b, uint16x4_t c); // VBSL d0,d0,d0 uint32x2_t vbsl_u32(uint32x2_t a, uint32x2_t b, uint32x2_t c); // VBSL d0,d0,d0 uint64x1_t vbsl_u64(uint64x1_t a, uint64x1_t b, uint64x1_t c); // VBSL d0,d0,d0 float32x2_t vbsl_f32(uint32x2_t a, float32x2_t b, float32x2_t c); // VBSL d0,d0,d0 poly8x8_t vbsl_p8(uint8x8_t a, poly8x8_t b, poly8x8_t c); // VBSL d0,d0,d0 poly16x4_t vbsl_p16(uint16x4_t a, poly16x4_t b, poly16x4_t c); // VBSL d0,d0,d0 int8x16_t vbslq_s8(uint8x16_t a, int8x16_t b, int8x16_t c); // VBSL q0,q0,q0 int16x8_t vbslq_s16(uint16x8_t a, int16x8_t b, int16x8_t c); // VBSL q0,q0,q0 int32x4_t vbslq_s32(uint32x4_t a, int32x4_t b, int32x4_t c); // VBSL q0,q0,q0 int64x2_t vbslq_s64(uint64x2_t a, int64x2_t b, int64x2_t c); // VBSL q0,q0,q0 uint8x16_t vbslq_u8(uint8x16_t a, uint8x16_t b, uint8x16_t c); // VBSL q0,q0,q0 uint16x8_t vbslq_u16(uint16x8_t a, uint16x8_t b, uint16x8_t c); // VBSL q0,q0,q0 uint32x4_t vbslq_u32(uint32x4_t a, uint32x4_t b, uint32x4_t c); // VBSL q0,q0,q0 uint64x2_t vbslq_u64(uint64x2_t a, uint64x2_t b, uint64x2_t c); // VBSL q0,q0,q0 float32x4_t vbslq_f32(uint32x4_t a, float32x4_t b, float32x4_t c); // VBSL q0,q0,q0 poly8x16_t vbslq_p8(uint8x16_t a, poly8x16_t b, poly8x16_t c); // VBSL q0,q0,q0 poly16x8_t vbslq_p16(uint16x8_t a, poly16x8_t b, poly16x8_t c); // VBSL q0,q0,q0