@@ -243,6 +243,24 @@ namespace xsimd
243243 #endif
244244 }
245245
246+ static batch_type sadd (const batch_type &lhs, const batch_type &rhs)
247+ {
248+ #if defined(XSIMD_AVX512BW_AVAILABLE)
249+ return _mm512_adds_epi16 (lhs, rhs);
250+ #else
251+ XSIMD_APPLY_AVX2_FUNCTION_INT16 (sadd, lhs, rhs);
252+ #endif
253+ }
254+
255+ static batch_type ssub (const batch_type &lhs, const batch_type &rhs)
256+ {
257+ #if defined(XSIMD_AVX512BW_AVAILABLE)
258+ return _mm512_subs_epi16 (lhs, rhs);
259+ #else
260+ XSIMD_APPLY_AVX2_FUNCTION_INT16 (ssub, lhs, rhs);
261+ #endif
262+ }
263+
246264 static batch_type mul (const batch_type& lhs, const batch_type& rhs)
247265 {
248266 #if defined(XSIMD_AVX512BW_AVAILABLE)
@@ -477,6 +495,24 @@ namespace xsimd
477495 XSIMD_APPLY_AVX2_FUNCTION_INT16 (lte, lhs, rhs);
478496 #endif
479497 }
498+
499+ static batch_type sadd (const batch_type &lhs, const batch_type &rhs)
500+ {
501+ #if defined(XSIMD_AVX512BW_AVAILABLE)
502+ return _mm512_adds_epu16 (lhs, rhs);
503+ #else
504+ XSIMD_APPLY_AVX2_FUNCTION_UINT16 (sadd, lhs, rhs);
505+ #endif
506+ }
507+
508+ static batch_type ssub (const batch_type &lhs, const batch_type &rhs)
509+ {
510+ #if defined(XSIMD_AVX512BW_AVAILABLE)
511+ return _mm512_subs_epu16 (lhs, rhs);
512+ #else
513+ XSIMD_APPLY_AVX2_FUNCTION_UINT16 (ssub, lhs, rhs);
514+ #endif
515+ }
480516 };
481517 }
482518
0 commit comments