20 #ifndef RAJA_pattern_tensor_ET_TensorAdd_HPP
21 #define RAJA_pattern_tensor_ET_TensorAdd_HPP
23 #include "RAJA/config.hpp"
42 template<
typename OPERATOR,
typename LEFT_OPERAND,
typename RIGHT_OPERAND>
45 TensorBinaryOperator<OPERATOR, LEFT_OPERAND, RIGHT_OPERAND>>
71 : m_left_operand {left},
72 m_right_operand {right}
86 template<
typename TILE_TYPE>
88 -> decltype(operator_type::eval(m_left_operand.eval(
tile),
89 m_right_operand.eval(
tile)))
91 return operator_type::eval(m_left_operand.eval(
tile),
92 m_right_operand.eval(
tile));
100 operator_type::print_ast();
102 operator_type::print_ast();
104 m_left_operand.print_ast();
106 m_right_operand.print_ast();
115 template<
typename LEFT_OPERAND,
116 typename RIGHT_OPERAND,
117 typename std::enable_if<std::is_arithmetic<LEFT_OPERAND>::value,
119 typename std::enable_if<std::is_base_of<TensorExpressionConcreteBase,
120 RIGHT_OPERAND>::value,
123 RIGHT_OPERAND
const& right)
136 template<
typename LEFT_OPERAND,
137 typename RIGHT_OPERAND,
138 typename std::enable_if<std::is_arithmetic<LEFT_OPERAND>::value,
140 typename std::enable_if<std::is_base_of<TensorExpressionConcreteBase,
141 RIGHT_OPERAND>::value,
144 RIGHT_OPERAND
const& right)
RAJA header defining expression template behavior for operator*.
RAJA header file defining SIMD/SIMT register operations.
Definition: BinaryOperator.hpp:46
LEFT_OPERAND left_operand_type
Definition: BinaryOperator.hpp:50
RAJA_INLINE RAJA_HOST_DEVICE void print_ast() const
Definition: BinaryOperator.hpp:98
typename LEFT_OPERAND::element_type element_type
Definition: BinaryOperator.hpp:53
RAJA_INLINE RAJA_HOST_DEVICE TensorBinaryOperator(left_operand_type const &left, right_operand_type const &right)
Definition: BinaryOperator.hpp:69
RAJA_INLINE constexpr RAJA_HOST_DEVICE auto getDimSize(camp::idx_t dim) const -> decltype(operator_traits::getDimSize(dim, m_left_operand, m_right_operand))
Definition: BinaryOperator.hpp:78
OPERATOR operator_type
Definition: BinaryOperator.hpp:49
typename operator_traits::result_type result_type
Definition: BinaryOperator.hpp:57
static constexpr camp::idx_t s_num_dims
Definition: BinaryOperator.hpp:59
RAJA_INLINE RAJA_HOST_DEVICE auto eval(TILE_TYPE const &tile) const -> decltype(operator_type::eval(m_left_operand.eval(tile), m_right_operand.eval(tile)))
Definition: BinaryOperator.hpp:87
typename LEFT_OPERAND::index_type index_type
Definition: BinaryOperator.hpp:54
RIGHT_OPERAND right_operand_type
Definition: BinaryOperator.hpp:51
Definition: ExpressionTemplateBase.hpp:72
Header file for common RAJA internal macro definitions.
#define RAJA_HOST_DEVICE
Definition: macros.hpp:65
RAJA_INLINE RAJA_HOST_DEVICE auto operator-(LEFT_OPERAND const &left, RIGHT_OPERAND const &right) -> TensorSubtract< typename NormalizeOperandHelper< LEFT_OPERAND >::return_type, RIGHT_OPERAND >
Definition: BinaryOperator.hpp:143
RAJA_INLINE RAJA_HOST_DEVICE auto operator+(LEFT_OPERAND const &left, RIGHT_OPERAND const &right) -> TensorAdd< typename NormalizeOperandHelper< LEFT_OPERAND >::return_type, RIGHT_OPERAND >
Definition: BinaryOperator.hpp:122
Definition: AlignedRangeIndexSetBuilders.cpp:35
RAJA_HOST_DEVICE RAJA_INLINE void tile(CONTEXT const &ctx, TILE_T tile_size, SEGMENT const &segment, BODY const &body)
Definition: launch_core.hpp:589
Definition: normalizeOperand.hpp:44
Definition: BinaryOperatorTraits.hpp:89
static constexpr camp::idx_t s_num_dims
Definition: BinaryOperatorTraits.hpp:92
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