MLIR: include/mlir/Dialect/SPIRV/IR/SPIRVAttributes.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13 #ifndef MLIR_DIALECT_SPIRV_IR_SPIRVATTRIBUTES_H
14 #define MLIR_DIALECT_SPIRV_IR_SPIRVATTRIBUTES_H
15
19
20 namespace mlir {
21 namespace spirv {
22 class VerCapExtAttr;
23 }
24 }
25
26
27 #define GET_ATTRDEF_CLASSES
28 #include "mlir/Dialect/SPIRV/IR/SPIRVAttributes.h.inc"
29
30 namespace mlir {
31 namespace spirv {
32 enum class Capability : uint32_t;
33 enum class DeviceType : uint32_t;
34 enum class Extension : uint32_t;
35 enum class Vendor : uint32_t;
36 enum class Version : uint32_t;
37
38 namespace detail {
42 }
43
44
45
46
47
48
49
50 #include "mlir/Dialect/SPIRV/IR/SPIRVAttrUtils.inc"
51
52
53
56 detail::InterfaceVarABIAttributeStorage> {
57 public:
59
60
62 std::optional storageClass,
65 IntegerAttr storageClass);
66
67
69
70
72
73
75
76
78
79 static LogicalResult
81 IntegerAttr descriptorSet, IntegerAttr binding,
82 IntegerAttr storageClass);
83
84 static constexpr StringLiteral name = "spirv.interface_var_abi";
85 };
86
87
88
91 detail::VerCapExtAttributeStorage> {
92 public:
94
95
99 static VerCapExtAttr get(IntegerAttr version, ArrayAttr capabilities,
100 ArrayAttr extensions);
101
102
104
105
107
109 : public llvm::mapped_iterator<ArrayAttr::iterator,
110 Extension (*)(Attribute)> {
111 explicit ext_iterator(ArrayAttr::iterator it);
112 };
114
115
117
119
121 : public llvm::mapped_iterator<ArrayAttr::iterator,
122 Capability (*)(Attribute)> {
123 explicit cap_iterator(ArrayAttr::iterator it);
124 };
126
127
129
131
132 static LogicalResult
134 IntegerAttr version, ArrayAttr capabilities,
135 ArrayAttr extensions);
136
137 static constexpr StringLiteral name = "spirv.ver_cap_ext";
138 };
139
140
141
142
145 detail::TargetEnvAttributeStorage> {
146 public:
147
149
151
152
154 ClientAPI clientAPI = ClientAPI::Unknown,
155 Vendor vendorID = Vendor::Unknown,
156 DeviceType deviceType = DeviceType::Unknown,
158
159
161
162
164
165
167
168
170
172
173
175
177
178
180
181
183
184
186
187
189
190
192
193 static constexpr StringLiteral name = "spirv.target_env";
194 };
195 }
196 }
197
198 #endif
This class represents a diagnostic that is inflight and set to be reported.
MLIRContext is the top-level object for a collection of MLIR operations.
Utility class for implementing users of storage classes uniqued by a StorageUniquer.
An attribute that specifies the information regarding the interface variable: descriptor set,...
uint32_t getBinding()
Returns binding.
static StringRef getKindName()
Returns the attribute kind's name (without the 'spirv.' prefix).
static constexpr StringLiteral name
uint32_t getDescriptorSet()
Returns descriptor set.
static InterfaceVarABIAttr get(uint32_t descriptorSet, uint32_t binding, std::optional< StorageClass > storageClass, MLIRContext *context)
Gets a InterfaceVarABIAttr.
static LogicalResult verifyInvariants(function_ref< InFlightDiagnostic()> emitError, IntegerAttr descriptorSet, IntegerAttr binding, IntegerAttr storageClass)
std::optional< StorageClass > getStorageClass()
Returns spirv::StorageClass.
An attribute that specifies the target version, allowed extensions and capabilities,...
Version getVersion() const
Returns the target version.
VerCapExtAttr::cap_range getCapabilities()
Returns the target capabilities.
ResourceLimitsAttr getResourceLimits() const
Returns the target resource limits.
static StringRef getKindName()
Returns the attribute kind's name (without the 'spirv.' prefix).
VerCapExtAttr getTripleAttr() const
Returns the (version, capabilities, extensions) triple attribute.
ArrayAttr getCapabilitiesAttr()
Returns the target capabilities as an integer array attribute.
VerCapExtAttr::ext_range getExtensions()
Returns the target extensions.
static constexpr StringLiteral name
Vendor getVendorID() const
Returns the vendor ID.
DeviceType getDeviceType() const
Returns the device type.
ClientAPI getClientAPI() const
Returns the client API.
ArrayAttr getExtensionsAttr()
Returns the target extensions as a string array attribute.
uint32_t getDeviceID() const
Returns the device ID.
static constexpr uint32_t kUnknownDeviceID
ID for unknown devices.
static TargetEnvAttr get(VerCapExtAttr triple, ResourceLimitsAttr limits, ClientAPI clientAPI=ClientAPI::Unknown, Vendor vendorID=Vendor::Unknown, DeviceType deviceType=DeviceType::Unknown, uint32_t deviceId=kUnknownDeviceID)
Gets a TargetEnvAttr instance.
An attribute that specifies the SPIR-V (version, capabilities, extensions) triple.
cap_range getCapabilities()
Returns the capabilities.
static LogicalResult verifyInvariants(function_ref< InFlightDiagnostic()> emitError, IntegerAttr version, ArrayAttr capabilities, ArrayAttr extensions)
Version getVersion()
Returns the version.
static StringRef getKindName()
Returns the attribute kind's name (without the 'spirv.' prefix).
static VerCapExtAttr get(Version version, ArrayRef< Capability > capabilities, ArrayRef< Extension > extensions, MLIRContext *context)
Gets a VerCapExtAttr instance.
ArrayAttr getCapabilitiesAttr()
Returns the capabilities as an integer array attribute.
static constexpr StringLiteral name
ext_range getExtensions()
Returns the extensions.
ArrayAttr getExtensionsAttr()
Returns the extensions as a string array attribute.
Include the generated interface declarations.
InFlightDiagnostic emitError(Location loc)
Utility method to emit an error message using this location.
cap_iterator(ArrayAttr::iterator it)
ext_iterator(ArrayAttr::iterator it)