MLIR 23.0.0git
GPU.cpp
Go to the documentation of this file.
1//===- GPU.cpp - C Interface for GPU dialect ------------------------------===//
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
12#include "llvm/Support/Casting.h"
13
14using namespace mlir;
15
16MLIR_DEFINE_CAPI_DIALECT_REGISTRATION(GPU, gpu, gpu::GPUDialect)
17
18//===-------------------------------------------------------------------===//
19// AsyncTokenType
20//===-------------------------------------------------------------------===//
21
23 return isa<gpu::AsyncTokenType>(unwrap(type));
24}
25
26MlirType mlirGPUAsyncTokenTypeGet(MlirContext ctx) {
28}
29
33
34//===---------------------------------------------------------------------===//
35// ObjectAttr
36//===---------------------------------------------------------------------===//
37
38bool mlirAttributeIsAGPUObjectAttr(MlirAttribute attr) {
39 return llvm::isa<gpu::ObjectAttr>(unwrap(attr));
40}
41
42MlirAttribute mlirGPUObjectAttrGet(MlirContext mlirCtx, MlirAttribute target,
43 uint32_t format, MlirStringRef objectStrRef,
44 MlirAttribute mlirObjectProps) {
45 MLIRContext *ctx = unwrap(mlirCtx);
46 llvm::StringRef object = unwrap(objectStrRef);
47 DictionaryAttr objectProps;
48 if (mlirObjectProps.ptr != nullptr)
49 objectProps = llvm::cast<DictionaryAttr>(unwrap(mlirObjectProps));
50 return wrap(gpu::ObjectAttr::get(
51 ctx, unwrap(target), static_cast<gpu::CompilationTarget>(format),
52 StringAttr::get(ctx, object), objectProps, nullptr));
53}
54
56 return wrap(gpu::ObjectAttr::name);
57}
58
59MlirAttribute mlirGPUObjectAttrGetWithKernels(MlirContext mlirCtx,
60 MlirAttribute target,
61 uint32_t format,
62 MlirStringRef objectStrRef,
63 MlirAttribute mlirObjectProps,
64 MlirAttribute mlirKernelsAttr) {
65 MLIRContext *ctx = unwrap(mlirCtx);
66 llvm::StringRef object = unwrap(objectStrRef);
67 DictionaryAttr objectProps;
68 if (mlirObjectProps.ptr != nullptr)
69 objectProps = llvm::cast<DictionaryAttr>(unwrap(mlirObjectProps));
70 gpu::KernelTableAttr kernels;
71 if (mlirKernelsAttr.ptr != nullptr)
72 kernels = llvm::cast<gpu::KernelTableAttr>(unwrap(mlirKernelsAttr));
73 return wrap(gpu::ObjectAttr::get(
74 ctx, unwrap(target), static_cast<gpu::CompilationTarget>(format),
75 StringAttr::get(ctx, object), objectProps, kernels));
76}
77
78MlirAttribute mlirGPUObjectAttrGetTarget(MlirAttribute mlirObjectAttr) {
79 gpu::ObjectAttr objectAttr =
80 llvm::cast<gpu::ObjectAttr>(unwrap(mlirObjectAttr));
81 return wrap(objectAttr.getTarget());
82}
83
84uint32_t mlirGPUObjectAttrGetFormat(MlirAttribute mlirObjectAttr) {
85 gpu::ObjectAttr objectAttr =
86 llvm::cast<gpu::ObjectAttr>(unwrap(mlirObjectAttr));
87 return static_cast<uint32_t>(objectAttr.getFormat());
88}
89
90MlirStringRef mlirGPUObjectAttrGetObject(MlirAttribute mlirObjectAttr) {
91 gpu::ObjectAttr objectAttr =
92 llvm::cast<gpu::ObjectAttr>(unwrap(mlirObjectAttr));
93 llvm::StringRef object = objectAttr.getObject();
94 return mlirStringRefCreate(object.data(), object.size());
95}
96
97bool mlirGPUObjectAttrHasProperties(MlirAttribute mlirObjectAttr) {
98 gpu::ObjectAttr objectAttr =
99 llvm::cast<gpu::ObjectAttr>(unwrap(mlirObjectAttr));
100 return objectAttr.getProperties() != nullptr;
101}
102
103MlirAttribute mlirGPUObjectAttrGetProperties(MlirAttribute mlirObjectAttr) {
104 gpu::ObjectAttr objectAttr =
105 llvm::cast<gpu::ObjectAttr>(unwrap(mlirObjectAttr));
106 return wrap(objectAttr.getProperties());
107}
108
109bool mlirGPUObjectAttrHasKernels(MlirAttribute mlirObjectAttr) {
110 gpu::ObjectAttr objectAttr =
111 llvm::cast<gpu::ObjectAttr>(unwrap(mlirObjectAttr));
112 return objectAttr.getKernels() != nullptr;
113}
114
115MlirAttribute mlirGPUObjectAttrGetKernels(MlirAttribute mlirObjectAttr) {
116 gpu::ObjectAttr objectAttr =
117 llvm::cast<gpu::ObjectAttr>(unwrap(mlirObjectAttr));
118 return wrap(objectAttr.getKernels());
119}
MlirAttribute mlirGPUObjectAttrGetProperties(MlirAttribute mlirObjectAttr)
Definition GPU.cpp:103
MlirAttribute mlirGPUObjectAttrGetTarget(MlirAttribute mlirObjectAttr)
Definition GPU.cpp:78
MlirStringRef mlirGPUAsyncTokenTypeGetName(void)
Definition GPU.cpp:30
bool mlirAttributeIsAGPUObjectAttr(MlirAttribute attr)
Definition GPU.cpp:38
MlirAttribute mlirGPUObjectAttrGetKernels(MlirAttribute mlirObjectAttr)
Definition GPU.cpp:115
MlirAttribute mlirGPUObjectAttrGetWithKernels(MlirContext mlirCtx, MlirAttribute target, uint32_t format, MlirStringRef objectStrRef, MlirAttribute mlirObjectProps, MlirAttribute mlirKernelsAttr)
Definition GPU.cpp:59
MlirAttribute mlirGPUObjectAttrGet(MlirContext mlirCtx, MlirAttribute target, uint32_t format, MlirStringRef objectStrRef, MlirAttribute mlirObjectProps)
Definition GPU.cpp:42
uint32_t mlirGPUObjectAttrGetFormat(MlirAttribute mlirObjectAttr)
Definition GPU.cpp:84
bool mlirGPUObjectAttrHasKernels(MlirAttribute mlirObjectAttr)
Definition GPU.cpp:109
MlirStringRef mlirGPUObjectAttrGetName(void)
Definition GPU.cpp:55
MlirType mlirGPUAsyncTokenTypeGet(MlirContext ctx)
Definition GPU.cpp:26
bool mlirGPUObjectAttrHasProperties(MlirAttribute mlirObjectAttr)
Definition GPU.cpp:97
MlirStringRef mlirGPUObjectAttrGetObject(MlirAttribute mlirObjectAttr)
Definition GPU.cpp:90
MLIR_CAPI_EXPORTED bool mlirTypeIsAGPUAsyncTokenType(MlirType type)
Definition GPU.cpp:22
#define MLIR_DEFINE_CAPI_DIALECT_REGISTRATION(Name, Namespace, ClassName)
MLIRContext is the top-level object for a collection of MLIR operations.
Definition MLIRContext.h:63
static constexpr StringLiteral name
Definition GPUDialect.h:51
MlirDiagnostic wrap(mlir::Diagnostic &diagnostic)
Definition Diagnostics.h:24
mlir::Diagnostic & unwrap(MlirDiagnostic diagnostic)
Definition Diagnostics.h:19
static MlirStringRef mlirStringRefCreate(const char *str, size_t length)
Constructs a string reference from the pointer and length.
Definition Support.h:84
Include the generated interface declarations.
A pointer to a sized fragment of a string, not necessarily null-terminated.
Definition Support.h:75