MLIR  19.0.0git
DialectGPU.cpp
Go to the documentation of this file.
1 //===- DialectGPU.cpp - Pybind module for the GPU passes ------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===---------------------------------------------------------------------===//
8 
9 #include "mlir-c/Dialect/GPU.h"
10 #include "mlir-c/IR.h"
11 #include "mlir-c/Support.h"
13 
14 #include <pybind11/detail/common.h>
15 #include <pybind11/pybind11.h>
16 
17 namespace py = pybind11;
18 using namespace mlir;
19 using namespace mlir::python;
20 using namespace mlir::python::adaptors;
21 
22 // -----------------------------------------------------------------------------
23 // Module initialization.
24 // -----------------------------------------------------------------------------
25 
26 PYBIND11_MODULE(_mlirDialectsGPU, m) {
27  m.doc() = "MLIR GPU Dialect";
28 
29  //===-------------------------------------------------------------------===//
30  // ObjectAttr
31  //===-------------------------------------------------------------------===//
32 
35  "get",
36  [](py::object cls, MlirAttribute target, uint32_t format,
37  py::bytes object, std::optional<MlirAttribute> mlirObjectProps) {
38  py::buffer_info info(py::buffer(object).request());
39  MlirStringRef objectStrRef =
40  mlirStringRefCreate(static_cast<char *>(info.ptr), info.size);
41  return cls(mlirGPUObjectAttrGet(
42  mlirAttributeGetContext(target), target, format, objectStrRef,
43  mlirObjectProps.has_value() ? *mlirObjectProps
44  : MlirAttribute{nullptr}));
45  },
46  "cls"_a, "target"_a, "format"_a, "object"_a,
47  "properties"_a = py::none(), "Gets a gpu.object from parameters.")
48  .def_property_readonly(
49  "target",
50  [](MlirAttribute self) { return mlirGPUObjectAttrGetTarget(self); })
51  .def_property_readonly(
52  "format",
53  [](MlirAttribute self) { return mlirGPUObjectAttrGetFormat(self); })
54  .def_property_readonly(
55  "object",
56  [](MlirAttribute self) {
57  MlirStringRef stringRef = mlirGPUObjectAttrGetObject(self);
58  return py::bytes(stringRef.data, stringRef.length);
59  })
60  .def_property_readonly("properties", [](MlirAttribute self) {
62  return py::cast(mlirGPUObjectAttrGetProperties(self));
63  return py::none().cast<py::object>();
64  });
65 }
PYBIND11_MODULE(_mlirDialectsGPU, m)
Definition: DialectGPU.cpp:26
MLIR_CAPI_EXPORTED MlirAttribute mlirGPUObjectAttrGet(MlirContext mlirCtx, MlirAttribute target, uint32_t format, MlirStringRef objectStrRef, MlirAttribute mlirObjectProps)
Definition: GPU.cpp:26
MLIR_CAPI_EXPORTED bool mlirAttributeIsAGPUObjectAttr(MlirAttribute attr)
Definition: GPU.cpp:22
MLIR_CAPI_EXPORTED MlirAttribute mlirGPUObjectAttrGetTarget(MlirAttribute mlirObjectAttr)
Definition: GPU.cpp:39
MLIR_CAPI_EXPORTED MlirAttribute mlirGPUObjectAttrGetProperties(MlirAttribute mlirObjectAttr)
Definition: GPU.cpp:64
MLIR_CAPI_EXPORTED bool mlirGPUObjectAttrHasProperties(MlirAttribute mlirObjectAttr)
Definition: GPU.cpp:58
MLIR_CAPI_EXPORTED uint32_t mlirGPUObjectAttrGetFormat(MlirAttribute mlirObjectAttr)
Definition: GPU.cpp:45
MLIR_CAPI_EXPORTED MlirStringRef mlirGPUObjectAttrGetObject(MlirAttribute mlirObjectAttr)
Definition: GPU.cpp:51
Creates a custom subclass of mlir.ir.Attribute, implementing a casting constructor and type checking ...
pure_subclass & def_classmethod(const char *name, Func &&f, const Extra &...extra)
MLIR_CAPI_EXPORTED MlirContext mlirAttributeGetContext(MlirAttribute attribute)
Gets the context that an attribute was created with.
Definition: IR.cpp:1076
static MlirStringRef mlirStringRefCreate(const char *str, size_t length)
Constructs a string reference from the pointer and length.
Definition: Support.h:82
Include the generated interface declarations.
A pointer to a sized fragment of a string, not necessarily null-terminated.
Definition: Support.h:73
const char * data
Pointer to the first symbol.
Definition: Support.h:74
size_t length
Length of the fragment.
Definition: Support.h:75