#ifndef GEMMSTONE_DSL_IR_PASS_SIMPLIFY_HPP
#define GEMMSTONE_DSL_IR_PASS_SIMPLIFY_HPP
#include "gemmstone/../../dsl/ir/ir.hpp"
GEMMSTONE_NAMESPACE_START
namespace dsl {
namespace ir {
int64_t get_max_const_factor(const expr_t &e, const constraint_set_t &cset);
expr_t simplify_rewrite(const expr_t &e);
object_t simplify(const object_t &obj, const constraint_set_t &cset = {});
expr_t simplify_rewrite_with_ternary(const expr_t &e, bool recursive = true);
expr_t simplify_cmp_move_const_to_rhs(const expr_t &e);
expr_t simplify_64_bit_add(const expr_t &e);
expr_t simplify_cmp_reduce_lhs_rhs(const expr_t &e);
expr_t simplify_propagate_shuffle(const expr_t &e);
stmt_t simplify(const stmt_t &s, ir_context_t &ir_ctx);
} } GEMMSTONE_NAMESPACE_END
#endif