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)