#ifndef CPU_PPC64_GEMM_GEMM_DRIVER_HPP
#define CPU_PPC64_GEMM_GEMM_DRIVER_HPP
#include "common/c_types_map.hpp"
#include "common/dnnl_thread.hpp"
#include "oneapi/dnnl/dnnl_types.h"
#include "cpu/ppc64/gemm/gemm_info.hpp"
#include "cpu/ppc64/gemm/gemm_pack_storage.hpp"
namespace dnnl {
namespace impl {
namespace cpu {
namespace ppc64 {
template <typename a_type, typename b_type, typename c_type>
dnnl_status_t gemm_driver(const char *transA, const char *transB,
const char *offsetC, const dim_t *m, const dim_t *n, const dim_t *k,
const float *alpha, const a_type *a, const dim_t *lda, const a_type *oa,
const b_type *b, const dim_t *ldb, const b_type *ob, const float *beta,
c_type *c, const dim_t *ldc, const c_type *oc,
const bool force_jit_nocopy_gemm, pack_type packing = pack_type::none,
gemm_pack_storage_t *pack_dst = NULL, bool measure_only = false);
void prep_ref_gemm_s8u8s32_pack(
bool do_a, dim_t rows, dim_t cols, gemm_pack_storage_t *pack_dst);
dnnl_status_t ref_gemm_s8u8s32_pack(const void *src, dim_t ld_src, dim_t rows,
dim_t cols, int trans, gemm_pack_storage_t *dst_pack);
} } } } #endif