21 #ifndef RAJA_pattern_tensor_ET_BinaryOperator_HPP
22 #define RAJA_pattern_tensor_ET_BinaryOperator_HPP
38 template<
typename LEFT,
typename RIGHT>
41 -> decltype(left + right)
55 template<
typename LEFT,
typename RIGHT>
58 -> decltype(left - right)
70 template<
typename OPERATOR,
typename LEFT_OPERAND,
typename RIGHT_OPERAND>
71 class TensorBinaryOperator;
73 template<
typename LHS,
typename RHS>
76 template<
typename LHS,
typename RHS>
87 template<
typename LHS_TYPE,
typename RHS_TYPE,
class ENABLE =
void>
92 static constexpr camp::idx_t
s_num_dims = LHS_TYPE::s_num_dims;
102 static int getDimSize(
int dim, LHS_TYPE
const& lhs, RHS_TYPE
const& rhs)
104 return dim == 0 ? lhs.getDimSize(0) : rhs.getDimSize(1);
111 template<
typename LHS_TYPE,
typename RHS_TYPE>
114 typename
std::enable_if<LHS_TYPE::s_num_dims == 0>::type>
118 static constexpr camp::idx_t
s_num_dims = RHS_TYPE::s_num_dims;
128 static int getDimSize(
int dim, LHS_TYPE
const&, RHS_TYPE
const& rhs)
130 return rhs.getDimSize(dim);
137 template<
typename LHS_TYPE,
typename RHS_TYPE>
140 typename
std::enable_if<RHS_TYPE::s_num_dims == 0>::type>
144 static constexpr camp::idx_t
s_num_dims = LHS_TYPE::s_num_dims;
154 static int getDimSize(
int dim, LHS_TYPE
const& lhs, RHS_TYPE
const&)
156 return lhs.getDimSize(dim);
Definition: BinaryOperator.hpp:46
#define RAJA_HOST_DEVICE
Definition: macros.hpp:65
Definition: AlignedRangeIndexSetBuilders.cpp:35
Definition: ListSegment.hpp:416
RAJA_INLINE static RAJA_HOST_DEVICE void print_ast()
Definition: BinaryOperatorTraits.hpp:149
typename LHS_TYPE::result_type result_type
Definition: BinaryOperatorTraits.hpp:143
RAJA_INLINE static RAJA_HOST_DEVICE int getDimSize(int dim, LHS_TYPE const &lhs, RHS_TYPE const &)
Definition: BinaryOperatorTraits.hpp:154
RAJA_INLINE static RAJA_HOST_DEVICE int getDimSize(int dim, LHS_TYPE const &, RHS_TYPE const &rhs)
Definition: BinaryOperatorTraits.hpp:128
typename RHS_TYPE::result_type result_type
Definition: BinaryOperatorTraits.hpp:117
RAJA_INLINE static RAJA_HOST_DEVICE void print_ast()
Definition: BinaryOperatorTraits.hpp:123
Definition: BinaryOperatorTraits.hpp:89
static constexpr camp::idx_t s_num_dims
Definition: BinaryOperatorTraits.hpp:92
RAJA_INLINE static RAJA_HOST_DEVICE void print_ast()
Definition: BinaryOperatorTraits.hpp:97
typename LHS_TYPE::result_type result_type
Definition: BinaryOperatorTraits.hpp:91
RAJA_INLINE static RAJA_HOST_DEVICE int getDimSize(int dim, LHS_TYPE const &lhs, RHS_TYPE const &rhs)
Definition: BinaryOperatorTraits.hpp:102
Definition: BinaryOperatorTraits.hpp:36
RAJA_INLINE static RAJA_HOST_DEVICE void print_ast()
Definition: BinaryOperatorTraits.hpp:49
RAJA_INLINE static RAJA_HOST_DEVICE auto eval(LEFT const &left, RIGHT const &right) -> decltype(left+right)
Definition: BinaryOperatorTraits.hpp:39
Definition: BinaryOperatorTraits.hpp:53
RAJA_INLINE static RAJA_HOST_DEVICE void print_ast()
Definition: BinaryOperatorTraits.hpp:66
RAJA_INLINE static RAJA_HOST_DEVICE auto eval(LEFT const &left, RIGHT const &right) -> decltype(left - right)
Definition: BinaryOperatorTraits.hpp:56