6#ifndef JLM_RVSDG_REDUCTION_HELPERS_HPP
7#define JLM_RVSDG_REDUCTION_HELPERS_HPP
22template<
typename Container,
typename ReductionTester>
49template<
typename Container,
typename Reductor>
83template<
typename Container,
typename ReductionTester>
112template<
typename Container,
typename Reductor>
144template<
typename Container,
typename FlattenTester>
153template<
typename FlattenTester>
154std::vector<jlm::rvsdg::Output *>
158 while (
n <
args.size())
Container pairwise_reduce(Container args, const Reductor &reductor)
bool associative_test_flatten(const Container &args, const FlattenTester &flatten_tester)
bool commutative_pairwise_test_reduce(const Container &args, const ReductionTester &reduction_tester) noexcept
std::vector< jlm::rvsdg::Output * > associative_flatten(std::vector< jlm::rvsdg::Output * > args, const FlattenTester &flatten_tester)
Container commutative_pairwise_reduce(Container args, const Reductor &reductor)
bool pairwise_test_reduce(const Container &args, const ReductionTester &reduction_tester) noexcept
static std::vector< jlm::rvsdg::Output * > operands(const Node *node)
NodeType * TryGetOwnerNode(const rvsdg::Input &input) noexcept
Checks if this is an input to a node of specified type.