7#ifndef KERNEL_LAFEM_ARCH_SLIP_FILTER_HPP 
    8#define KERNEL_LAFEM_ARCH_SLIP_FILTER_HPP 1 
   12#include <kernel/backend.hpp> 
   23        template <
int BlockSize_, 
typename DT_, 
typename IT_>
 
   24        static void filter_rhs(DT_ * v, 
const DT_ * 
const nu_elements, 
const IT_ * 
const sv_indices, 
const Index ue)
 
   26          filter_rhs_generic<BlockSize_, DT_, IT_>(v, nu_elements, sv_indices, ue);
 
   29        template <
int BlockSize_>
 
   30        static void filter_rhs(
float * v, 
const float * 
const nu_elements, 
const std::uint64_t * 
const sv_indices, 
const Index ue)
 
   32          BACKEND_SKELETON_VOID_T1(BlockSize_, filter_rhs_cuda, filter_rhs_generic, filter_rhs_generic, v, nu_elements, sv_indices, ue)
 
   35        template <
int BlockSize_>
 
   36        static void filter_rhs(
double * v, 
const double * 
const nu_elements, 
const std::uint64_t * 
const sv_indices, 
const Index ue)
 
   38          BACKEND_SKELETON_VOID_T1(BlockSize_, filter_rhs_cuda, filter_rhs_generic, filter_rhs_generic, v, nu_elements, sv_indices, ue)
 
   41        template <
int BlockSize_>
 
   42        static void filter_rhs(
float * v, 
const float * 
const nu_elements, 
const std::uint32_t * 
const sv_indices, 
const Index ue)
 
   44          BACKEND_SKELETON_VOID_T1(BlockSize_, filter_rhs_cuda, filter_rhs_generic, filter_rhs_generic, v, nu_elements, sv_indices, ue)
 
   47        template <
int BlockSize_>
 
   48        static void filter_rhs(
double * v, 
const double * 
const nu_elements, 
const std::uint32_t * 
const sv_indices, 
const Index ue)
 
   50          BACKEND_SKELETON_VOID_T1(BlockSize_, filter_rhs_cuda, filter_rhs_generic, filter_rhs_generic, v, nu_elements, sv_indices, ue)
 
   53        template <
int BlockSize_, 
typename DT_, 
typename IT_>
 
   54        static void filter_def(DT_ * v, 
const DT_ * 
const nu_elements, 
const IT_ * 
const sv_indices, 
const Index ue)
 
   56          filter_def_generic<BlockSize_, DT_, IT_>(v, nu_elements, sv_indices, ue);
 
   59        template <
int BlockSize_>
 
   60        static void filter_def(
float * v, 
const float * 
const nu_elements, 
const std::uint64_t * 
const sv_indices, 
const Index ue)
 
   62          BACKEND_SKELETON_VOID_T1(BlockSize_, filter_def_cuda, filter_def_generic, filter_def_generic, v, nu_elements, sv_indices, ue)
 
   65        template <
int BlockSize_>
 
   66        static void filter_def(
double * v, 
const double * 
const nu_elements, 
const std::uint64_t * 
const sv_indices, 
const Index ue)
 
   68          BACKEND_SKELETON_VOID_T1(BlockSize_, filter_def_cuda, filter_def_generic, filter_def_generic, v, nu_elements, sv_indices, ue)
 
   71        template <
int BlockSize_>
 
   72        static void filter_def(
float * v, 
const float * 
const nu_elements, 
const std::uint32_t * 
const sv_indices, 
const Index ue)
 
   74          BACKEND_SKELETON_VOID_T1(BlockSize_, filter_def_cuda, filter_def_generic, filter_def_generic, v, nu_elements, sv_indices, ue)
 
   77        template <
int BlockSize_>
 
   78        static void filter_def(
double * v, 
const double * 
const nu_elements, 
const std::uint32_t * 
const sv_indices, 
const Index ue)
 
   80          BACKEND_SKELETON_VOID_T1(BlockSize_, filter_def_cuda, filter_def_generic, filter_def_generic, v, nu_elements, sv_indices, ue)
 
   83        template <
int BlockSize_, 
typename DT_, 
typename IT_>
 
   84        static void filter_rhs_generic(DT_ * v, 
const DT_ * 
const nu_elements, 
const IT_ * 
const sv_indices, 
const Index ue);
 
   86        template <
int BlockSize_, 
typename DT_, 
typename IT_>
 
   87        static void filter_def_generic(DT_ * v, 
const DT_ * 
const nu_elements, 
const IT_ * 
const sv_indices, 
const Index ue);
 
   89        template <
int BlockSize_, 
typename DT_, 
typename IT_>
 
   90        static void filter_rhs_cuda(DT_ * v, 
const DT_ * 
const nu_elements, 
const IT_ * 
const sv_indices, 
const Index ue);
 
   92        template <
int BlockSize_, 
typename DT_, 
typename IT_>
 
   93        static void filter_def_cuda(DT_ * v, 
const DT_ * 
const nu_elements, 
const IT_ * 
const sv_indices, 
const Index ue);
 
   99      extern template void SlipFilter::filter_rhs_generic<2, float, std::uint64_t>(
float * v, 
const float * 
const nu_elements, 
const std::uint64_t * 
const sv_indices, 
const Index ue);
 
  100      extern template void SlipFilter::filter_rhs_generic<2, double, std::uint64_t>(
double * v, 
const double * 
const nu_elements, 
const std::uint64_t * 
const sv_indices, 
const Index ue);
 
  101      extern template void SlipFilter::filter_rhs_generic<2, float, std::uint32_t>(
float * v, 
const float * 
const nu_elements, 
const std::uint32_t * 
const sv_indices, 
const Index ue);
 
  102      extern template void SlipFilter::filter_rhs_generic<2, double, std::uint32_t>(
double * v, 
const double * 
const nu_elements, 
const std::uint32_t * 
const sv_indices, 
const Index ue);
 
  104      extern template void SlipFilter::filter_def_generic<2, float, std::uint64_t>(
float * v, 
const float * 
const nu_elements, 
const std::uint64_t * 
const sv_indices, 
const Index ue);
 
  105      extern template void SlipFilter::filter_def_generic<2, double, std::uint64_t>(
double * v, 
const double * 
const nu_elements, 
const std::uint64_t * 
const sv_indices, 
const Index ue);
 
  106      extern template void SlipFilter::filter_def_generic<2, float, std::uint32_t>(
float * v, 
const float * 
const nu_elements, 
const std::uint32_t * 
const sv_indices, 
const Index ue);
 
  107      extern template void SlipFilter::filter_def_generic<2, double, std::uint32_t>(
double * v, 
const double * 
const nu_elements, 
const std::uint32_t * 
const sv_indices, 
const Index ue);
 
  109      extern template void SlipFilter::filter_rhs_generic<3, float, std::uint64_t>(
float * v, 
const float * 
const nu_elements, 
const std::uint64_t * 
const sv_indices, 
const Index ue);
 
  110      extern template void SlipFilter::filter_rhs_generic<3, double, std::uint64_t>(
double * v, 
const double * 
const nu_elements, 
const std::uint64_t * 
const sv_indices, 
const Index ue);
 
  111      extern template void SlipFilter::filter_rhs_generic<3, float, std::uint32_t>(
float * v, 
const float * 
const nu_elements, 
const std::uint32_t * 
const sv_indices, 
const Index ue);
 
  112      extern template void SlipFilter::filter_rhs_generic<3, double, std::uint32_t>(
double * v, 
const double * 
const nu_elements, 
const std::uint32_t * 
const sv_indices, 
const Index ue);
 
  114      extern template void SlipFilter::filter_def_generic<3, float, std::uint64_t>(
float * v, 
const float * 
const nu_elements, 
const std::uint64_t * 
const sv_indices, 
const Index ue);
 
  115      extern template void SlipFilter::filter_def_generic<3, double, std::uint64_t>(
double * v, 
const double * 
const nu_elements, 
const std::uint64_t * 
const sv_indices, 
const Index ue);
 
  116      extern template void SlipFilter::filter_def_generic<3, float, std::uint32_t>(
float * v, 
const float * 
const nu_elements, 
const std::uint32_t * 
const sv_indices, 
const Index ue);
 
  117      extern template void SlipFilter::filter_def_generic<3, double, std::uint32_t>(
double * v, 
const double * 
const nu_elements, 
const std::uint32_t * 
const sv_indices, 
const Index ue);
 
  125#include <kernel/lafem/arch/slip_filter_generic.hpp> 
std::uint64_t Index
Index data type.