commit 12ea4daa750544e56a433c30bdc48e43728b468a
parent 3f18315816e8ab2c72fbed448beb2051878aa5e4
Author: d.levin256@gmail.com <d.levin256@gmail.com>
Date: Thu, 3 Nov 2016 07:49:25 +0300
Forward declaration for low/high
Diffstat:
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/include/kfr/base/vec.hpp b/include/kfr/base/vec.hpp
@@ -28,6 +28,17 @@
#include "kfr.h"
#include "constants.hpp"
+#include "types.hpp"
+
+namespace kfr
+{
+
+template <typename T, size_t N, size_t Nout = prev_poweroftwo(N - 1)>
+CMT_INLINE vec<T, Nout> low(const vec<T, N>& x);
+template <typename T, size_t N, size_t Nout = N - prev_poweroftwo(N - 1)>
+CMT_INLINE vec<T, Nout> high(const vec<T, N>& x);
+}
+
#ifdef CMT_COMPILER_CLANG
#include "simd_clang.hpp"
#else
@@ -36,7 +47,6 @@
#include "simd_x86.hpp"
#endif
#endif
-#include "types.hpp"
CMT_PRAGMA_GNU(GCC diagnostic push)
CMT_PRAGMA_GNU(GCC diagnostic ignored "-Wpragmas")
@@ -1002,7 +1012,7 @@ constexpr CMT_INLINE vec<T, N> undefinedvector(vec_t<T, N>)
}
KFR_FN(undefinedvector)
-template <typename T, size_t N, size_t Nout = prev_poweroftwo(N - 1)>
+template <typename T, size_t N, size_t Nout /*= prev_poweroftwo(N - 1)*/>
CMT_INLINE vec<T, Nout> low(const vec<T, N>& x)
{
return x.shuffle(csizeseq_t<Nout>());
@@ -1014,7 +1024,7 @@ CMT_INLINE vec_t<T, Nout> low(vec_t<T, N>)
return {};
}
-template <typename T, size_t N, size_t Nout = N - prev_poweroftwo(N - 1)>
+template <typename T, size_t N, size_t Nout /*= N - prev_poweroftwo(N - 1)*/>
CMT_INLINE vec<T, Nout> high(const vec<T, N>& x)
{
return x.shuffle(csizeseq_t<Nout, prev_poweroftwo(N - 1)>());
@@ -1029,7 +1039,6 @@ KFR_FN(low)
KFR_FN(high)
}
-
namespace cometa
{