10 #ifndef RAJA_PARAMS_BASE
11 #define RAJA_PARAMS_BASE
18 template<
typename T,
typename IndexType = RAJA::Index_type>
64 template<
typename T,
template<
typename,
typename,
typename>
class Op>
82 std::is_same<U, RAJA::operators::minimum<T, T, T>>::value>* =
nullptr>
95 std::is_same<U, RAJA::operators::maximum<T, T, T>>::value>* =
nullptr>
108 std::is_same<U, RAJA::operators::plus<T, T, T>>::value>* =
nullptr>
118 std::is_same<U, RAJA::operators::bit_and<T, T, T>>::value>* =
nullptr>
128 std::is_same<U, RAJA::operators::bit_or<T, T, T>>::value>* =
nullptr>
138 std::is_same<U, RAJA::operators::bit_and<T, T, T>>::value>* =
nullptr>
148 std::is_same<U, RAJA::operators::bit_or<T, T, T>>::value>* =
nullptr>
172 template<
typename,
typename,
typename>
class Op>
177 using op_type = Op<value_type, value_type, value_type>;
195 std::enable_if_t<std::is_same<
209 std::enable_if_t<std::is_same<
223 std::enable_if_t<std::is_same<
234 std::enable_if_t<std::is_same<
259 template<
typename,
typename,
typename>
class Op>
290 template<
typename ParamType,
typename Enable =
void>
296 template<
typename ParamType>
299 std::enable_if_t<std::is_base_of<ParamBase, ParamType>::value>>
301 using type =
typename ParamType::ARG_T;
304 template<
typename...
Params>
307 using type = camp::tuple<typename GetArgType<Params>::type...>;
312 std::is_base_of<ParamBase, T>::value,
313 std::add_lvalue_reference_t<typename T::ARG_T>>
316 return *Param.get_lambda_arg();
321 std::add_lvalue_reference_t<T>>
#define RAJA_HOST_DEVICE
Definition: macros.hpp:65
RAJA_HOST_DEVICE std::enable_if_t< std::is_base_of< ParamBase, T >::value, std::add_lvalue_reference_t< typename T::ARG_T > > get_lambda_arg(T &Param)
Definition: params_base.hpp:314
Definition: AlignedRangeIndexSetBuilders.cpp:35
camp::list< internal::LambdaArg< internal::lambda_arg_param_t, args >... > Params
Definition: Lambda.hpp:95
Definition: ListSegment.hpp:416
Definition: params_base.hpp:20
constexpr RAJA_HOST_DEVICE ValLoc(value_type v)
Definition: params_base.hpp:26
ValLoc & operator=(ValLoc &&)=default
constexpr RAJA_HOST_DEVICE ValLoc(value_type v, index_type l)
Definition: params_base.hpp:28
IndexType index_type
Definition: params_base.hpp:21
index_type loc
Definition: params_base.hpp:61
ValLoc & operator=(ValLoc const &)=default
constexpr RAJA_HOST_DEVICE bool operator>(const ValLoc &rhs) const
Definition: params_base.hpp:41
value_type val
Definition: params_base.hpp:60
RAJA_HOST_DEVICE void setVal(T inval)
Definition: params_base.hpp:56
constexpr RAJA_HOST_DEVICE const value_type & getVal() const
Definition: params_base.hpp:46
ValLoc(ValLoc &&)=default
T value_type
Definition: params_base.hpp:22
RAJA_HOST_DEVICE void setLoc(IndexType inindex)
Definition: params_base.hpp:58
constexpr RAJA_HOST_DEVICE const index_type & getLoc() const
Definition: params_base.hpp:48
ValLoc(ValLoc const &)=default
constexpr RAJA_HOST_DEVICE bool operator<(const ValLoc &rhs) const
Definition: params_base.hpp:36
RAJA_HOST_DEVICE void set(T inval, IndexType inindex)
Definition: params_base.hpp:50
Definition: params_base.hpp:174
constexpr RAJA_HOST_DEVICE ValOp(value_type v)
Definition: params_base.hpp:183
IndexType index_type
Definition: params_base.hpp:175
typename value_type::value_type valloc_value_type
Definition: params_base.hpp:178
typename value_type::index_type valloc_index_type
Definition: params_base.hpp:179
constexpr RAJA_HOST_DEVICE ValOp & max(value_type v)
Definition: params_base.hpp:213
ValOp & operator=(ValOp &&)=default
constexpr RAJA_HOST_DEVICE ValOp(valloc_value_type v, valloc_index_type l)
Definition: params_base.hpp:185
Op< value_type, value_type, value_type > op_type
Definition: params_base.hpp:177
constexpr RAJA_HOST_DEVICE bool operator>(const ValOp &rhs) const
Definition: params_base.hpp:249
constexpr RAJA_HOST_DEVICE bool operator<(const ValOp &rhs) const
Definition: params_base.hpp:244
constexpr RAJA_HOST_DEVICE ValOp & minloc(valloc_value_type v, valloc_index_type l)
Definition: params_base.hpp:227
ValOp & operator=(ValOp const &)=default
ValOp(ValOp const &)=default
constexpr RAJA_HOST_DEVICE ValOp & min(value_type v)
Definition: params_base.hpp:199
constexpr RAJA_HOST_DEVICE ValOp & maxloc(valloc_value_type v, valloc_index_type l)
Definition: params_base.hpp:238
Definition: params_base.hpp:66
constexpr RAJA_HOST_DEVICE ValOp & operator&=(const value_type &rhs)
Definition: params_base.hpp:119
constexpr RAJA_HOST_DEVICE bool operator<(const ValOp &rhs) const
Definition: params_base.hpp:155
constexpr RAJA_HOST_DEVICE ValOp & max(value_type v)
Definition: params_base.hpp:96
constexpr RAJA_HOST_DEVICE ValOp(value_type v)
Definition: params_base.hpp:72
ValOp(ValOp const &)=default
constexpr RAJA_HOST_DEVICE ValOp & operator|=(const value_type &rhs)
Definition: params_base.hpp:129
RAJA_HOST_DEVICE ValOp & operator|=(value_type &rhs)
Definition: params_base.hpp:149
ValOp & operator=(ValOp &&)=default
T value_type
Definition: params_base.hpp:67
Op< T, T, T > op_type
Definition: params_base.hpp:68
ValOp & operator=(ValOp const &)=default
constexpr RAJA_HOST_DEVICE ValOp & min(value_type v)
Definition: params_base.hpp:83
RAJA_HOST_DEVICE ValOp & operator&=(value_type &rhs)
Definition: params_base.hpp:139
value_type val
Definition: params_base.hpp:167
constexpr RAJA_HOST_DEVICE bool operator>(const ValOp &rhs) const
Definition: params_base.hpp:161
constexpr RAJA_HOST_DEVICE ValOp & operator+=(const value_type &rhs)
Definition: params_base.hpp:109
Definition: params_base.hpp:282
typename ParamType::ARG_T type
Definition: params_base.hpp:301
Definition: params_base.hpp:292
ParamType type
Definition: params_base.hpp:293
Definition: params_base.hpp:266
camp::tuple<> ARG_TUP_T
Definition: params_base.hpp:270
RAJA_HOST_DEVICE ARG_T * get_lambda_arg()
Definition: params_base.hpp:276
RAJA_HOST_DEVICE ARG_TUP_T get_lambda_arg_tup()
Definition: params_base.hpp:274
typename ARG_TUP_T::TList ARG_LIST_T
Definition: params_base.hpp:272
static constexpr size_t num_lambda_args
Definition: params_base.hpp:278
camp::tuple< typename GetArgType< Params >::type... > type
Definition: params_base.hpp:307
Definition: params_base.hpp:288
Definition: Operators.hpp:580
Definition: Operators.hpp:559