Commit 53ef0cbc authored by Evan Nemerson's avatar Evan Nemerson

neon/orn: add AVX-512VL (ternarylogic) implementations

parent c27abf50
...@@ -258,6 +258,8 @@ simde_vornq_s8(simde_int8x16_t a, simde_int8x16_t b) { ...@@ -258,6 +258,8 @@ simde_vornq_s8(simde_int8x16_t a, simde_int8x16_t b) {
return vornq_s8(a, b); return vornq_s8(a, b);
#elif defined(SIMDE_POWER_ALTIVEC_P8_NATIVE) #elif defined(SIMDE_POWER_ALTIVEC_P8_NATIVE)
return vec_orc(a, b); return vec_orc(a, b);
#elif defined(SIMDE_X86_AVX512VL_NATIVE)
return _mm_ternarylogic_epi32(a, b, a, 0xf3);
#else #else
simde_int8x16_private simde_int8x16_private
a_ = simde_int8x16_to_private(a), a_ = simde_int8x16_to_private(a),
...@@ -287,6 +289,8 @@ simde_vornq_s16(simde_int16x8_t a, simde_int16x8_t b) { ...@@ -287,6 +289,8 @@ simde_vornq_s16(simde_int16x8_t a, simde_int16x8_t b) {
return vornq_s16(a, b); return vornq_s16(a, b);
#elif defined(SIMDE_POWER_ALTIVEC_P8_NATIVE) #elif defined(SIMDE_POWER_ALTIVEC_P8_NATIVE)
return vec_orc(a, b); return vec_orc(a, b);
#elif defined(SIMDE_X86_AVX512VL_NATIVE)
return _mm_ternarylogic_epi32(a, b, a, 0xf3);
#else #else
simde_int16x8_private simde_int16x8_private
a_ = simde_int16x8_to_private(a), a_ = simde_int16x8_to_private(a),
...@@ -316,6 +320,8 @@ simde_vornq_s32(simde_int32x4_t a, simde_int32x4_t b) { ...@@ -316,6 +320,8 @@ simde_vornq_s32(simde_int32x4_t a, simde_int32x4_t b) {
return vornq_s32(a, b); return vornq_s32(a, b);
#elif defined(SIMDE_POWER_ALTIVEC_P8_NATIVE) #elif defined(SIMDE_POWER_ALTIVEC_P8_NATIVE)
return vec_orc(a, b); return vec_orc(a, b);
#elif defined(SIMDE_X86_AVX512VL_NATIVE)
return _mm_ternarylogic_epi32(a, b, a, 0xf3);
#else #else
simde_int32x4_private simde_int32x4_private
a_ = simde_int32x4_to_private(a), a_ = simde_int32x4_to_private(a),
...@@ -345,6 +351,8 @@ simde_vornq_s64(simde_int64x2_t a, simde_int64x2_t b) { ...@@ -345,6 +351,8 @@ simde_vornq_s64(simde_int64x2_t a, simde_int64x2_t b) {
return vornq_s64(a, b); return vornq_s64(a, b);
#elif defined(SIMDE_POWER_ALTIVEC_P8_NATIVE) #elif defined(SIMDE_POWER_ALTIVEC_P8_NATIVE)
return vec_orc(a, b); return vec_orc(a, b);
#elif defined(SIMDE_X86_AVX512VL_NATIVE)
return _mm_ternarylogic_epi64(a, b, a, 0xf3);
#else #else
simde_int64x2_private simde_int64x2_private
a_ = simde_int64x2_to_private(a), a_ = simde_int64x2_to_private(a),
...@@ -374,6 +382,8 @@ simde_vornq_u8(simde_uint8x16_t a, simde_uint8x16_t b) { ...@@ -374,6 +382,8 @@ simde_vornq_u8(simde_uint8x16_t a, simde_uint8x16_t b) {
return vornq_u8(a, b); return vornq_u8(a, b);
#elif defined(SIMDE_POWER_ALTIVEC_P8_NATIVE) #elif defined(SIMDE_POWER_ALTIVEC_P8_NATIVE)
return vec_orc(a, b); return vec_orc(a, b);
#elif defined(SIMDE_X86_AVX512VL_NATIVE)
return _mm_ternarylogic_epi32(a, b, a, 0xf3);
#else #else
simde_uint8x16_private simde_uint8x16_private
a_ = simde_uint8x16_to_private(a), a_ = simde_uint8x16_to_private(a),
...@@ -403,6 +413,8 @@ simde_vornq_u16(simde_uint16x8_t a, simde_uint16x8_t b) { ...@@ -403,6 +413,8 @@ simde_vornq_u16(simde_uint16x8_t a, simde_uint16x8_t b) {
return vornq_u16(a, b); return vornq_u16(a, b);
#elif defined(SIMDE_POWER_ALTIVEC_P8_NATIVE) #elif defined(SIMDE_POWER_ALTIVEC_P8_NATIVE)
return vec_orc(a, b); return vec_orc(a, b);
#elif defined(SIMDE_X86_AVX512VL_NATIVE)
return _mm_ternarylogic_epi32(a, b, a, 0xf3);
#else #else
simde_uint16x8_private simde_uint16x8_private
a_ = simde_uint16x8_to_private(a), a_ = simde_uint16x8_to_private(a),
...@@ -432,6 +444,8 @@ simde_vornq_u32(simde_uint32x4_t a, simde_uint32x4_t b) { ...@@ -432,6 +444,8 @@ simde_vornq_u32(simde_uint32x4_t a, simde_uint32x4_t b) {
return vornq_u32(a, b); return vornq_u32(a, b);
#elif defined(SIMDE_POWER_ALTIVEC_P8_NATIVE) #elif defined(SIMDE_POWER_ALTIVEC_P8_NATIVE)
return vec_orc(a, b); return vec_orc(a, b);
#elif defined(SIMDE_X86_AVX512VL_NATIVE)
return _mm_ternarylogic_epi32(a, b, a, 0xf3);
#else #else
simde_uint32x4_private simde_uint32x4_private
a_ = simde_uint32x4_to_private(a), a_ = simde_uint32x4_to_private(a),
...@@ -461,6 +475,8 @@ simde_vornq_u64(simde_uint64x2_t a, simde_uint64x2_t b) { ...@@ -461,6 +475,8 @@ simde_vornq_u64(simde_uint64x2_t a, simde_uint64x2_t b) {
return vornq_u64(a, b); return vornq_u64(a, b);
#elif defined(SIMDE_POWER_ALTIVEC_P8_NATIVE) #elif defined(SIMDE_POWER_ALTIVEC_P8_NATIVE)
return vec_orc(a, b); return vec_orc(a, b);
#elif defined(SIMDE_X86_AVX512VL_NATIVE)
return _mm_ternarylogic_epi64(a, b, a, 0xf3);
#else #else
simde_uint64x2_private simde_uint64x2_private
a_ = simde_uint64x2_to_private(a), a_ = simde_uint64x2_to_private(a),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment