#ifndef GPU_INTEL_JIT_IR_KERNEL_DESC_HPP
#define GPU_INTEL_JIT_IR_KERNEL_DESC_HPP
#include "common/serialization.hpp"
#include "gemmstone/dsl/kernel.hpp"
#include "gpu/intel/compute/utils.hpp"
namespace dnnl {
namespace impl {
namespace gpu {
namespace intel {
struct primitive_t;
namespace compute {
class kernel_t;
}
namespace jit {
namespace dsl = gemmstone::dsl;
class kernel_info_t;
class kernel_params_base_t;
class kernel_desc_base_t {
public:
virtual ~kernel_desc_base_t() = default;
virtual std::string kernel_name() const = 0;
virtual dsl::kernel::options_t options(const impl::engine_t *engine) const
= 0;
virtual compute::range_t local_range() const = 0;
virtual void init_kernel_iface(dsl::kernel::iface_t &kernel_iface) const
= 0;
virtual void init_kernel_info(kernel_info_t &kernel_info,
const kernel_params_base_t ¶ms,
const impl::engine_t *engine) const
= 0;
virtual status_t create_kernel(compute::kernel_t &kernel,
primitive_t *primitive, impl::engine_t *engine) const
= 0;
virtual serialization_stream_t serialize() const = 0;
#if __cplusplus >= 202002L
bool operator==(const kernel_desc_base_t &) const = default;
#endif
};
class kernel_params_base_t {
public:
virtual ~kernel_params_base_t() = default;
};
} } } } }
#endif