20 #ifndef RAJA_pattern_kernel_ForICount_HPP
21 #define RAJA_pattern_kernel_ForICount_HPP
23 #include "RAJA/config.hpp"
26 #include <type_traits>
44 template<camp::idx_t ArgumentId,
46 typename ExecPolicy = camp::nil,
47 typename... EnclosedStmts>
53 static_assert(std::is_base_of<RAJA::expt::detail::ParamBase, ParamId>::value,
54 "Inappropriate ParamId, ParamId must be of type "
55 "RAJA::Statement::Param< # >");
70 template<camp::idx_t ArgumentId,
74 typename... EnclosedStmts>
82 template<
typename InIndexType>
85 Base::data.template assign_offset<ArgumentId>(i);
96 template<camp::idx_t ArgumentId,
99 typename... EnclosedStmts,
102 statement::ForICount<ArgumentId, ParamId, ExecPolicy, EnclosedStmts...>,
107 template<
typename Data>
108 static RAJA_INLINE
void exec(Data&& data)
118 auto len = segment_length<ArgumentId>(data);
119 using len_t = decltype(len);
124 RAJA::expt::get_empty_forall_param_pack());
Header file for kernel conditional templates.
setSegmentType< Types, Segment, camp::at_v< typename camp::decay< Data >::index_types_t, Segment > > setSegmentTypeFromData
Definition: LoopTypes.hpp:95
RAJA_INLINE void forall_impl(MultiPolicy< Selector, Policies... > p, Iterable &&iter, Body &&body)
Definition: MultiPolicy.hpp:96
Definition: AlignedRangeIndexSetBuilders.cpp:35
Header file for loop kernel internals.
Segment class representing a contiguous range of typed indices.
Definition: RangeSegment.hpp:100
Definition: ForICount.hpp:76
RAJA_INLINE void operator()(InIndexType i)
Definition: ForICount.hpp:83
Definition: LoopData.hpp:48
Definition: LoopData.hpp:58
Definition: LoopData.hpp:196
data_t & data
Definition: LoopData.hpp:199
RAJA_INLINE void exec()
Definition: LoopData.hpp:205
Definition: LoopData.hpp:216
static RAJA_INLINE void exec(Data &&data)
Definition: ForICount.hpp:108
Definition: Statement.hpp:48
Definition: Statement.hpp:35
Definition: IndexSet.hpp:70
Definition: resource.hpp:48
Definition: ForICount.hpp:51