@@ -66,8 +66,6 @@ namespace xsimd
6666 template <class A, class T>
6767 XSIMD_INLINE batch<T, A> avgr(batch<T, A> const&, batch<T, A> const&, requires_arch<common>) noexcept;
6868#endif
69- template <class A , class T >
70- XSIMD_INLINE batch<T, A> ssub (batch<T, A> const &, batch<T, A> const &, requires_arch<common>) noexcept ;
7169
7270 // abs
7371 template <class A >
@@ -98,7 +96,7 @@ namespace xsimd
9896 }
9997
10098 // avgr
101- template <class A , class T , class = typename std::enable_if<std::is_scalar <T>::value, void >::type>
99+ template <class A , class T , class = typename std::enable_if<std::is_integral <T>::value, void >::type>
102100 XSIMD_INLINE batch<T, A> avgr (batch<T, A> const & self, batch<T, A> const & other, requires_arch<altivec>) noexcept
103101 {
104102 return vec_avg (self.data , other.data );
@@ -112,11 +110,6 @@ namespace xsimd
112110 auto adj = ((self ^ other) << nbit) >> nbit;
113111 return avgr (self.data , other.data , A {}) - adj;
114112 }
115- template <class A >
116- XSIMD_INLINE batch<float , A> avg (batch<float , A> const & self, batch<float , A> const & other, requires_arch<altivec>) noexcept
117- {
118- return vec_avg (self.data , other.data );
119- }
120113
121114 // batch_bool_cast
122115 template <class A , class T_out , class T_in >
@@ -812,17 +805,10 @@ namespace xsimd
812805
813806 // ssub
814807
815- template <class A , class T , class = typename std::enable_if<std::is_scalar<T>::value, void >::type>
808+ template <class A , class T , class = typename std::enable_if<std::is_scalar<T>::value && sizeof (T) == 1 , void >::type>
816809 XSIMD_INLINE batch<T, A> ssub (batch<T, A> const & self, batch<T, A> const & other, requires_arch<altivec>) noexcept
817810 {
818- XSIMD_IF_CONSTEXPR (sizeof (T) == 1 )
819- {
820- return vec_subs (self.data , other.data );
821- }
822- else
823- {
824- return ssub (self, other, common {});
825- }
811+ return vec_subs (self.data , other.data );
826812 }
827813
828814 // store_aligned
0 commit comments