commit d65dff134f3b40c069cf508c915d2adfec1acb9b
parent ebcbfd26454739f75d9c8c9db0dc08c993ff9ddc
Author: d.levin256@gmail.com <d.levin256@gmail.com>
Date: Tue, 26 Jul 2016 15:16:08 +0300
Small improvements and fixes
Diffstat:
3 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/include/kfr/base/abs.hpp b/include/kfr/base/abs.hpp
@@ -50,10 +50,10 @@ KFR_SINTRIN u16sse abs(u16sse x) { return x; }
KFR_SINTRIN u8sse abs(u8sse x) { return x; }
#if defined CID_ARCH_AVX2
-KFR_SINTRIN i64avx abs(i64avx value) { return select(x >= 0, x, -x); }
-KFR_SINTRIN i32avx abs(i32avx value) { return _mm256_abs_epi32(*value); }
-KFR_SINTRIN i16avx abs(i16avx value) { return _mm256_abs_epi16(*value); }
-KFR_SINTRIN i8avx abs(i8avx value) { return _mm256_abs_epi8(*value); }
+KFR_SINTRIN i64avx abs(i64avx x) { return select(x >= 0, x, -x); }
+KFR_SINTRIN i32avx abs(i32avx x) { return _mm256_abs_epi32(*x); }
+KFR_SINTRIN i16avx abs(i16avx x) { return _mm256_abs_epi16(*x); }
+KFR_SINTRIN i8avx abs(i8avx x) { return _mm256_abs_epi8(*x); }
KFR_SINTRIN u64avx abs(u64avx x) { return x; }
KFR_SINTRIN u32avx abs(u32avx x) { return x; }
KFR_SINTRIN u16avx abs(u16avx x) { return x; }
diff --git a/include/kfr/base/function.hpp b/include/kfr/base/function.hpp
@@ -143,7 +143,7 @@ KFR_SINTRIN vec<T, Nout> expand_simd(vec<T, N> x)
}
#define KFR_HANDLE_SCALAR_1(fn) \
template <typename T, KFR_ENABLE_IF(is_numeric<T>::value)> \
- KFR_SINTRIN T fn(T a) \
+ KFR_SINTRIN auto fn(T a) \
{ \
return fn(make_vector(a))[0]; \
}
@@ -229,7 +229,7 @@ KFR_SINTRIN vec<T, Nout> expand_simd(vec<T, N> x)
}
#define KFR_HANDLE_SCALAR_2(fn) \
template <typename T, KFR_ENABLE_IF(is_numeric<T>::value)> \
- KFR_SINTRIN T fn(T a, T b) \
+ KFR_SINTRIN auto fn(T a, T b) \
{ \
return fn(make_vector(a), make_vector(b))[0]; \
}
@@ -247,7 +247,7 @@ KFR_SINTRIN vec<T, Nout> expand_simd(vec<T, N> x)
}
#define KFR_HANDLE_SCALAR_3(fn) \
template <typename T, KFR_ENABLE_IF(is_numeric<T>::value)> \
- KFR_SINTRIN T fn(T a, T b, T c) \
+ KFR_SINTRIN auto fn(T a, T b, T c) \
{ \
return fn(make_vector(a), make_vector(b), make_vector(c))[0]; \
}
@@ -265,7 +265,7 @@ KFR_SINTRIN vec<T, Nout> expand_simd(vec<T, N> x)
}
#define KFR_HANDLE_SCALAR_4(fn) \
template <typename T, KFR_ENABLE_IF(is_numeric<T>::value)> \
- KFR_SINTRIN T fn(T a, T b, T c, T d) \
+ KFR_SINTRIN auto fn(T a, T b, T c, T d) \
{ \
return fn(make_vector(a), make_vector(b), make_vector(c), make_vector(d))[0]; \
}
diff --git a/include/kfr/base/sqrt.hpp b/include/kfr/base/sqrt.hpp
@@ -47,10 +47,10 @@ KFR_HANDLE_ALL_SIZES_FLT_1(sqrt)
#else
// fallback
-template <typename T, size_t N>
-KFR_SINTRIN vec<T, N> sqrt(vec<T, N> x)
+template <typename T, size_t N, typename Tout = flt_type<T>>
+KFR_SINTRIN vec<Tout, N> sqrt(vec<T, N> x)
{
- return apply([](T x) { return std::sqrt(x); }, x);
+ return apply([](T x) { return std::sqrt(static_cast<Tout>(x)); }, x);
}
#endif
KFR_HANDLE_SCALAR_1(sqrt)