20 #ifndef RAJA_pattern_kernel_For_HPP
21 #define RAJA_pattern_kernel_For_HPP
23 #include "RAJA/config.hpp"
26 #include <type_traits>
43 template<camp::idx_t ArgumentId,
44 typename ExecPolicy = camp::nil,
45 typename... EnclosedStmts>
66 template<camp::idx_t ArgumentId,
69 typename... EnclosedStmts>
77 template<
typename InIndexType>
80 Base::data.template assign_offset<ArgumentId>(i);
90 template<camp::idx_t ArgumentId,
92 typename... EnclosedStmts,
95 statement::For<ArgumentId, ExecPolicy, EnclosedStmts...>,
100 template<
typename Data>
101 static RAJA_INLINE
void exec(Data&& data)
108 ForWrapper<ArgumentId, Data, NewTypes, EnclosedStmts...> for_wrapper(data);
110 auto len = segment_length<ArgumentId>(data);
111 using len_t = decltype(len);
116 RAJA::expt::get_empty_forall_param_pack());
125 template<camp::idx_t ArgumentId,
typename... EnclosedStmts,
typename Types>
131 template<
typename Data>
132 static RAJA_INLINE
void exec(Data&& data)
138 ForWrapper<ArgumentId, Data, NewTypes, EnclosedStmts...> for_wrapper(data);
140 auto len = segment_length<ArgumentId>(data);
141 using len_t = decltype(len);
144 for (decltype(distance_it) i = 0; i < distance_it; ++i)
146 for_wrapper(*(begin_it + i));
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
#define RAJA_EXTRACT_BED_IT(CONTAINER)
Definition: forall.hpp:32
Header file for loop kernel internals.
Segment class representing a contiguous range of typed indices.
Definition: RangeSegment.hpp:100
Definition: LoopData.hpp:48
Definition: LoopData.hpp:58
RAJA_INLINE void operator()(InIndexType i)
Definition: For.hpp:78
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: For.hpp:101
static RAJA_INLINE void exec(Data &&data)
Definition: For.hpp:132
Definition: Statement.hpp:48
Definition: Statement.hpp:35
Definition: IndexSet.hpp:70