24 #ifndef ARM_COMPUTE_WRAPPER_BSL_H
25 #define ARM_COMPUTE_WRAPPER_BSL_H
33 #define VBSL_IMPL(stype, vtype, ctype, prefix, postfix) \
34 inline vtype vbsl(const ctype &a, const vtype &b, const vtype &c) \
36 return prefix##_##postfix(a, b, c); \
46 #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
48 #endif // __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
50 VBSL_IMPL(uint8_t, uint8x16_t, uint8x16_t, vbslq, u8)
52 VBSL_IMPL(uint16_t, uint16x8_t, uint16x8_t, vbslq, u16)
53 VBSL_IMPL(int16_t, int16x8_t, uint16x8_t, vbslq, s16)
54 VBSL_IMPL(uint32_t, uint32x4_t, uint32x4_t, vbslq, u32)
55 VBSL_IMPL(int32_t, int32x4_t, uint32x4_t, vbslq, s32)
56 VBSL_IMPL(float32x4_t, float32x4_t, uint32x4_t, vbslq, f32)
57 #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
58 VBSL_IMPL(float16x8_t, float16x8_t, uint16x8_t, vbslq, f16)
59 #endif // __ARM_FEATURE_FP16_VECTOR_ARITHMETIC