1/***************************************************************************
2 * Copyright (c) Johan Mabille, Sylvain Corlay, Wolf Vollprecht and *
3 * Martin Renou *
4 * Copyright (c) QuantStack *
5 * Copyright (c) Serge Guelton *
6 * *
7 * Distributed under the terms of the BSD 3-Clause License. *
8 * *
9 * The full license is in the file LICENSE, distributed with this software. *
10 ****************************************************************************/
11
12#ifndef XSIMD_GENERIC_FWD_HPP
13#define XSIMD_GENERIC_FWD_HPP
14
15#include "../types/xsimd_batch_constant.hpp"
16
17#include <type_traits>
18
19namespace xsimd
20{
21 namespace kernel
22 {
23 // forward declaration
24 template <class A, class T, class = typename std::enable_if<std::is_integral<T>::value, void>::type>
25 inline batch<T, A> abs(batch<T, A> const& self, requires_arch<generic>) noexcept;
26 template <class A, class T, class = typename std::enable_if<std::is_integral<T>::value, void>::type>
27 inline batch<T, A> bitwise_lshift(batch<T, A> const& self, batch<T, A> const& other, requires_arch<generic>) noexcept;
28 template <class A, class T, class = typename std::enable_if<std::is_integral<T>::value, void>::type>
29 inline batch<T, A> bitwise_rshift(batch<T, A> const& self, batch<T, A> const& other, requires_arch<generic>) noexcept;
30 template <class A, class T>
31 inline batch_bool<T, A> gt(batch<T, A> const& self, batch<T, A> const& other, requires_arch<generic>) noexcept;
32 template <class A, class T, class = typename std::enable_if<std::is_integral<T>::value, void>::type>
33 inline batch<T, A> mul(batch<T, A> const& self, batch<T, A> const& other, requires_arch<generic>) noexcept;
34
35 }
36}
37
38#endif
39