//
// Copyright (C) 2022-2026 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//

#pragma once

#include "vpux/compiler/dialect/core/interfaces/type_interfaces.hpp"

#include <mlir/IR/Attributes.h>

namespace vpux::VPU {
enum class MemoryKind : uint64_t;
}  // namespace vpux::VPU

//
// Generated
//

#include <vpux/compiler/dialect/VPURT/enums.hpp.inc>

#define GET_ATTRDEF_CLASSES
#include <vpux/compiler/dialect/VPURT/attributes.hpp.inc>
#undef GET_ATTRDEF_CLASSES

//
// BufferSection/MemoryKind conversion
//

namespace vpux {
namespace VPURT {

VPU::MemoryKind getMemoryKind(BufferSection section);
BufferSection getBufferSection(VPU::MemoryKind memKind);

bool isMemoryCompatible(BufferSection section, vpux::NDTypeInterface ndType);

}  // namespace VPURT
}  // namespace vpux
