20 #ifndef RAJA_pattern_kernel_Conditional_HPP
21 #define RAJA_pattern_kernel_Conditional_HPP
24 #include "RAJA/config.hpp"
29 #include <type_traits>
41 template<
typename Condition,
typename... EnclosedStmts>
53 template<
typename Data>
64 template<
typename L,
typename R>
68 template<
typename Data>
71 return L::eval(data) == R::eval(data);
79 template<
typename L,
typename R>
83 template<
typename Data>
86 return L::eval(data) != R::eval(data);
94 template<
typename L,
typename R>
98 template<
typename Data>
101 return L::eval(data) || R::eval(data);
109 template<
typename L,
typename R>
113 template<
typename Data>
116 return L::eval(data) && R::eval(data);
124 template<
typename L,
typename R>
128 template<
typename Data>
131 return L::eval(data) < R::eval(data);
139 template<
typename L,
typename R>
143 template<
typename Data>
146 return L::eval(data) <= R::eval(data);
154 template<
typename L,
typename R>
158 template<
typename Data>
161 return L::eval(data) > R::eval(data);
169 template<
typename L,
typename R>
173 template<
typename Data>
176 return L::eval(data) >= R::eval(data);
188 template<
typename Data>
191 return !(L::eval(data));
202 template<
typename Condition,
typename... EnclosedStmts,
typename Types>
207 template<
typename Data>
208 static RAJA_INLINE
void exec(Data&& data)
211 if (Condition::eval(data))
214 std::forward<Data>(data));
#define RAJA_HOST_DEVICE
Definition: macros.hpp:65
RAJA_INLINE void execute_statement_list(Data &&data)
Definition: StatementList.hpp:84
Definition: AlignedRangeIndexSetBuilders.cpp:35
Header file for loop kernel internals.
static RAJA_INLINE void exec(Data &&data)
Definition: Conditional.hpp:208
Definition: Statement.hpp:48
Definition: Statement.hpp:35
Definition: Conditional.hpp:111
RAJA_HOST_DEVICE static RAJA_INLINE bool eval(Data const &data)
Definition: Conditional.hpp:114
Definition: Conditional.hpp:66
RAJA_HOST_DEVICE static RAJA_INLINE bool eval(Data const &data)
Definition: Conditional.hpp:69
Definition: Conditional.hpp:171
RAJA_HOST_DEVICE static RAJA_INLINE bool eval(Data const &data)
Definition: Conditional.hpp:174
Definition: Conditional.hpp:156
RAJA_HOST_DEVICE static RAJA_INLINE bool eval(Data const &data)
Definition: Conditional.hpp:159
Definition: Conditional.hpp:43
Definition: Conditional.hpp:141
RAJA_HOST_DEVICE static RAJA_INLINE bool eval(Data const &data)
Definition: Conditional.hpp:144
Definition: Conditional.hpp:126
RAJA_HOST_DEVICE static RAJA_INLINE bool eval(Data const &data)
Definition: Conditional.hpp:129
Definition: Conditional.hpp:81
RAJA_HOST_DEVICE static RAJA_INLINE bool eval(Data const &data)
Definition: Conditional.hpp:84
Definition: Conditional.hpp:186
RAJA_HOST_DEVICE static RAJA_INLINE bool eval(Data const &data)
Definition: Conditional.hpp:189
Definition: Conditional.hpp:96
RAJA_HOST_DEVICE static RAJA_INLINE bool eval(Data const &data)
Definition: Conditional.hpp:99
Definition: Conditional.hpp:51
RAJA_HOST_DEVICE static RAJA_INLINE long eval(Data const &)
Definition: Conditional.hpp:54