* Copyright (c) 2025 Huawei Technologies Co., Ltd.
* This program is free software, you can redistribute it and/or modify it under the terms and conditions of
* CANN Open Software License Agreement Version 2.0 (the "License").
* Please refer to the License for details. You may not use this file except in compliance with the License.
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
* See LICENSE in the root of the software repository for the full text of the License.
*/
#include <cstdint>
#include "kernel_tiling/kernel_tiling.h"
#include "tiling/tiling_api.h"
#include <pybind11/pybind11.h>
namespace py = pybind11;
namespace pybind11 {
namespace asc {
void pyasc_init_enums(py::module& m)
{
using namespace matmul_tiling;
py::enum_<TPosition>(m, "TPosition", py::module_local())
.value("GM", TPosition::GM)
.value("A1", TPosition::A1)
.value("A2", TPosition::A2)
.value("B1", TPosition::B1)
.value("B2", TPosition::B2)
.value("C1", TPosition::C1)
.value("C2", TPosition::C2)
.value("CO1", TPosition::CO1)
.value("CO2", TPosition::CO2)
.value("VECIN", TPosition::VECIN)
.value("VECOUT", TPosition::VECOUT)
.value("VECCALC", TPosition::VECCALC)
.value("LCM", TPosition::LCM)
.value("SPM", TPosition::SPM)
.value("SHM", TPosition::SHM)
.value("TSCM", TPosition::TSCM)
.value("MAX", TPosition::MAX);
py::enum_<CubeFormat>(m, "CubeFormat", py::module_local())
.value("ND", CubeFormat::ND)
.value("NZ", CubeFormat::NZ)
.value("ZN", CubeFormat::ZN)
.value("ZZ", CubeFormat::ZZ)
.value("NN", CubeFormat::NN)
.value("ND_ALIGN", CubeFormat::ND_ALIGN)
.value("SCALAR", CubeFormat::SCALAR)
.value("VECTOR", CubeFormat::VECTOR)
.value("ROW_MAJOR", CubeFormat::ROW_MAJOR)
.value("COLUMN_MAJOR", CubeFormat::COLUMN_MAJOR);
py::enum_<DataType>(m, "DataType", py::module_local())
.value("DT_FLOAT", DataType::DT_FLOAT)
.value("DT_FLOAT16", DataType::DT_FLOAT16)
.value("DT_INT8", DataType::DT_INT8)
.value("DT_INT16", DataType::DT_INT16)
.value("DT_UINT8", DataType::DT_UINT8)
.value("DT_UINT16", DataType::DT_UINT16)
.value("DT_INT64", DataType::DT_INT64)
.value("DT_INT32", DataType::DT_INT32)
.value("DT_UINT64", DataType::DT_UINT64)
.value("DT_UINT32", DataType::DT_UINT32)
.value("DT_BOOL", DataType::DT_BOOL)
.value("DT_STRING", DataType::DT_STRING)
.value("DT_DOUBLE", DataType::DT_DOUBLE)
.value("DT_COMPLEX64", DataType::DT_COMPLEX64)
.value("DT_COMPLEX128", DataType::DT_COMPLEX128)
.value("DT_QINT16", DataType::DT_QINT16)
.value("DT_QINT32", DataType::DT_QINT32)
.value("DT_QINT8", DataType::DT_QINT8)
.value("DT_QUINT8", DataType::DT_QUINT8)
.value("DT_QUINT16", DataType::DT_QUINT16)
.value("DT_STRING_REF", DataType::DT_STRING_REF)
.value("DT_DUAL", DataType::DT_DUAL)
.value("DT_BF16", DataType::DT_BF16)
.value("DT_VARIANT", DataType::DT_VARIANT)
.value("DT_INT4", DataType::DT_INT4)
.value("DT_UNDEFINED", DataType::DT_UNDEFINED)
.value("DT_UINT1", DataType::DT_UINT1)
.value("DT_INT2", DataType::DT_INT2)
.value("DT_BFLOAT16", DataType::DT_BFLOAT16)
.value("DT_MAX", DataType::DT_MAX);
py::enum_<MatrixTraverse>(m, "MatrixTraverse", py::module_local())
.value("NOSET", MatrixTraverse::NOSET)
.value("FIRSTM", MatrixTraverse::FIRSTM)
.value("FIRSTN", MatrixTraverse::FIRSTN);
py::enum_<MatrixMadType>(m, "MatrixMadType", py::module_local())
.value("NORMAL", MatrixMadType::NORMAL)
.value("HF32", MatrixMadType::HF32)
.value("MXMODE", MatrixMadType::MXMODE);
py::enum_<DequantType>(m, "DequantType", py::module_local())
.value("SCALAR", DequantType::SCALAR)
.value("TENSOR", DequantType::TENSOR);
py::enum_<ScheduleType>(m, "ScheduleType", py::module_local())
.value("INNER_PRODUCT", ScheduleType::INNER_PRODUCT)
.value("OUTER_PRODUCT", ScheduleType::OUTER_PRODUCT);
}
}
}