#ifndef GRAPH_BACKEND_DNNL_PASSES_INSERT_OPS_HPP
#define GRAPH_BACKEND_DNNL_PASSES_INSERT_OPS_HPP
#include <memory>
#include <vector>
#include "graph/interface/c_types_map.hpp"
#include "graph/backend/dnnl/subgraph.hpp"
namespace dnnl {
namespace impl {
namespace graph {
namespace dnnl_impl {
status_t insert_permute_for_conv_or_deconv(std::shared_ptr<subgraph_t> &sg);
status_t insert_permute_for_op_only_require_data_format(
std::shared_ptr<subgraph_t> &sg);
status_t insert_permute_for_shuffle(std::shared_ptr<subgraph_t> &sg);
status_t insert_to_group_for_conv_or_deconv(std::shared_ptr<subgraph_t> &sg);
status_t insert_to_group_for_reorder(std::shared_ptr<subgraph_t> &sg);
status_t insert_permute_for_dynamic_mul_scale_sub_zp(
std::shared_ptr<subgraph_t> &sg);
status_t insert_permute_for_matmul(std::shared_ptr<subgraph_t> &sg);
status_t insert_reshape_for_ndx2d_matmul(std::shared_ptr<subgraph_t> &sg);
status_t insert_reshape_for_sdpa(std::shared_ptr<subgraph_t> &sg);
status_t insert_reshape_for_sdpa_bwd(std::shared_ptr<subgraph_t> &sg);
status_t insert_permute_for_sdpa_bwd(std::shared_ptr<subgraph_t> &sg);
status_t insert_unsqueeze_and_squeeze_for_matmul(
std::shared_ptr<subgraph_t> &sg);
status_t insert_u8_to_s8_for_matmul(std::shared_ptr<subgraph_t> &sg);
status_t insert_runtime_u8_to_s8_for_matmul(std::shared_ptr<subgraph_t> &sg);
status_t insert_unsqueeze_for_prelu(std::shared_ptr<subgraph_t> &sg);
status_t insert_unsqueeze_and_squeeze_for_prelu_bwd(
std::shared_ptr<subgraph_t> &sg);
status_t insert_unsqueeze_and_squeeze_for_reduction(
std::shared_ptr<subgraph_t> &sg);
status_t insert_host_scalar(std::shared_ptr<subgraph_t> &sg);
} } } }
#endif