20 #ifndef RAJA_pattern_tensor_ET_TensorMultiplyAddAdd_HPP
21 #define RAJA_pattern_tensor_ET_TensorMultiplyAddAdd_HPP
23 #include "RAJA/config.hpp"
49 template<
typename LEFT_OPERAND_TYPE,
50 typename RIGHT_OPERAND_TYPE,
51 typename ADD_OPERAND_TYPE>
67 using index_type =
typename LEFT_OPERAND_TYPE::index_type;
84 : m_left_operand {left_operand},
85 m_right_operand {right_operand},
86 m_add_operand {add_operand}
89 template<
typename TILE_TYPE>
105 printf(
"MultiplyAdd[");
108 m_left_operand.print_ast();
110 m_right_operand.print_ast();
112 m_add_operand.print_ast();
RAJA header file defining SIMD/SIMT register operations.
RAJA header defining expression template behavior for operator*.
Definition: ExpressionTemplateBase.hpp:72
Definition: TensorMultiplyAdd.hpp:56
ADD_OPERAND_TYPE add_operand_type
Definition: TensorMultiplyAdd.hpp:63
RAJA_INLINE RAJA_HOST_DEVICE auto eval(TILE_TYPE const &tile) const -> decltype(multiply_op::multiply_add(tile, m_left_operand, m_right_operand, m_add_operand))
Definition: TensorMultiplyAdd.hpp:90
typename multiply_op::result_type result_type
Definition: TensorMultiplyAdd.hpp:69
LEFT_OPERAND_TYPE left_operand_type
Definition: TensorMultiplyAdd.hpp:61
RIGHT_OPERAND_TYPE right_operand_type
Definition: TensorMultiplyAdd.hpp:62
RAJA_INLINE RAJA_HOST_DEVICE TensorMultiplyAdd(left_operand_type const &left_operand, right_operand_type const &right_operand, add_operand_type const &add_operand)
Definition: TensorMultiplyAdd.hpp:81
typename LEFT_OPERAND_TYPE::element_type element_type
Definition: TensorMultiplyAdd.hpp:66
static constexpr camp::idx_t s_num_dims
Definition: TensorMultiplyAdd.hpp:70
RAJA_INLINE RAJA_HOST_DEVICE void print_ast() const
Definition: TensorMultiplyAdd.hpp:103
typename LEFT_OPERAND_TYPE::index_type index_type
Definition: TensorMultiplyAdd.hpp:67
Header file for common RAJA internal macro definitions.
#define RAJA_HOST_DEVICE
Definition: macros.hpp:65
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: MultiplyOperator.hpp:48
static constexpr camp::idx_t s_num_dims
Definition: MultiplyOperator.hpp:51
typename LEFT_OPERAND_TYPE::result_type result_type
Definition: MultiplyOperator.hpp:50
RAJA_INLINE static RAJA_HOST_DEVICE void print_ast()
Definition: MultiplyOperator.hpp:56
RAJA_INLINE static RAJA_HOST_DEVICE auto multiply_add(TILE_TYPE const &tile, LEFT_OPERAND_TYPE const &left, RIGHT_OPERAND_TYPE const &right, ADD_OPERAND_TYPE const &add) -> decltype(left.eval(tile).multiply_add(right.eval(tile), add.eval(tile)))
Definition: MultiplyOperator.hpp:89