#ifndef MLIR_DIALECT_SPIRV_IR_ATTR_UTILS_H_
#define MLIR_DIALECT_SPIRV_IR_ATTR_UTILS_H_
template <typename EnumClass> inline constexpr StringRef attributeName();
template <> inline StringRef attributeName<Version>() { … }
template <> inline StringRef attributeName<DeviceType>() { … }
template <> inline StringRef attributeName<Vendor>() { … }
template <> inline StringRef attributeName<ClientAPI>() { … }
template <> inline StringRef attributeName<Extension>() { … }
template <> inline StringRef attributeName<Capability>() { … }
template <> inline StringRef attributeName<AddressingModel>() { … }
template <> inline StringRef attributeName<BuiltIn>() { … }
template <> inline StringRef attributeName<Decoration>() { … }
template <> inline StringRef attributeName<Dim>() { … }
template <> inline StringRef attributeName<ExecutionMode>() { … }
template <> inline StringRef attributeName<ExecutionModel>() { … }
template <> inline StringRef attributeName<FPRoundingMode>() { … }
template <> inline StringRef attributeName<FunctionControl>() { … }
template <> inline StringRef attributeName<GroupOperation>() { … }
template <> inline StringRef attributeName<ImageFormat>() { … }
template <> inline StringRef attributeName<ImageOperands>() { … }
template <> inline StringRef attributeName<LinkageType>() { … }
template <> inline StringRef attributeName<LoopControl>() { … }
template <> inline StringRef attributeName<MemoryAccess>() { … }
template <> inline StringRef attributeName<MemoryModel>() { … }
template <> inline StringRef attributeName<MemorySemantics>() { … }
template <> inline StringRef attributeName<Scope>() { … }
template <> inline StringRef attributeName<SelectionControl>() { … }
template <> inline StringRef attributeName<StorageClass>() { … }
template <> inline StringRef attributeName<PackedVectorFormat>() { … }
template <> inline StringRef attributeName<ImageDepthInfo>() { … }
template <> inline StringRef attributeName<ImageArrayedInfo>() { … }
template <> inline StringRef attributeName<ImageSamplingInfo>() { … }
template <> inline StringRef attributeName<ImageSamplerUseInfo>() { … }
template <> inline StringRef attributeName<MatrixLayout>() { … }
template <> inline StringRef attributeName<CooperativeMatrixUseKHR>() { … }
template <> inline StringRef attributeName<CooperativeMatrixLayoutKHR>() { … }
template <> inline StringRef attributeName<CooperativeMatrixOperandsKHR>() { … }
template <> inline StringRef attributeName<Opcode>() { … }
template <> inline StringRef attributeName<FPFastMathMode>() { … }
#endif