#ifndef CPU_AARCH64_REORDER_JIT_BLK_REORDER_HPP
#define CPU_AARCH64_REORDER_JIT_BLK_REORDER_HPP
#include <cassert>
#include "common/c_types_map.hpp"
#include "cpu/aarch64/reorder/jit_uni_reorder_kernel.hpp"
#include "cpu/aarch64/reorder/jit_uni_reorder_utils.hpp"
#include "cpu/reorder/cpu_reorder_pd.hpp"
namespace dnnl {
namespace impl {
namespace cpu {
namespace aarch64 {
struct jit_blk_reorder_t : public primitive_t {
using primitive_t::primitive_t;
struct pd_t : public cpu_reorder_pd_t {
using cpu_reorder_pd_t::cpu_reorder_pd_t;
DECLARE_COMMON_PD_T("jit:blk", jit_blk_reorder_t);
tr::prb_t prb_;
private:
static status_t create(reorder_pd_t **reorder_pd, engine_t *engine,
const primitive_attr_t *attr, engine_t *src_engine,
const memory_desc_t *src_md, engine_t *dst_engine,
const memory_desc_t *dst_md);
static void prb_tile_normalize(tr::prb_t &p);
friend dnnl::impl::impl_list_item_t;
};
status_t init(engine_t *engine) override;
status_t execute(const exec_ctx_t &ctx) const override;
jit_blk_reorder_t(const pd_t *apd);
~jit_blk_reorder_t() override;
private:
const pd_t *pd() const { return (const pd_t *)primitive_t::pd().get(); }
std::unique_ptr<tr::jit_single_blk_kernel_t> kernel_;
};
} } } }
#endif