#ifndef CPU_AARCH64_UKERNEL_ATTR_PARAMS_HPP
#define CPU_AARCH64_UKERNEL_ATTR_PARAMS_HPP
#include "common/nstl.hpp"
#include "cpu/ukernel/c_types_map.hpp"
#ifdef DNNL_EXPERIMENTAL_UKERNEL
struct dnnl_ukernel_attr_params : public dnnl::impl::c_compatible {
dnnl_ukernel_attr_params() = default;
dnnl::impl::status_t set_post_ops_args(const void **post_ops_args);
const void *get_post_ops_args() const { return post_ops_args_; }
dnnl::impl::status_t set_scales(const void *scales, int arg);
const void *get_scales(int arg) const;
private:
const void *post_ops_args_;
const void *a_scales_;
const void *b_scales_;
const void *d_scales_;
};
namespace dnnl {
namespace impl {
namespace cpu {
namespace aarch64 {
namespace ukernel {
status_t dnnl_ukernel_attr_params_create(
dnnl_ukernel_attr_params **attr_params);
status_t dnnl_ukernel_attr_params_set_post_ops_args(
dnnl_ukernel_attr_params *attr_params, const void **post_ops_args);
status_t dnnl_ukernel_attr_params_set_A_scales(
dnnl_ukernel_attr_params *attr_params, const void *a_scales);
status_t dnnl_ukernel_attr_params_set_B_scales(
dnnl_ukernel_attr_params *attr_params, const void *b_scales);
status_t dnnl_ukernel_attr_params_set_D_scales(
dnnl_ukernel_attr_params *attr_params, const void *d_scales);
status_t dnnl_ukernel_attr_params_destroy(
dnnl_ukernel_attr_params *attr_params);
} } } } }
#endif
#endif