/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|*                                                                            *|
|* SPIR-V Enum Availability Declarations                                      *|
|*                                                                            *|
|* Automatically generated file, do not edit!                                 *|
|* From: SPIRVBase.td                                                         *|
|*                                                                            *|
\*===----------------------------------------------------------------------===*/

namespace mlir::spirv {


} // namespace mlir::spirv
namespace mlir::spirv {


} // namespace mlir::spirv
namespace mlir::spirv {


} // namespace mlir::spirv
namespace mlir::spirv {


} // namespace mlir::spirv
namespace mlir::spirv {


} // namespace mlir::spirv
namespace mlir::spirv {

std::optional<::llvm::ArrayRef<::mlir::spirv::Extension>> getExtensions(Capability value);
std::optional<::mlir::spirv::Version> getMinVersion(Capability value);

} // namespace mlir::spirv
namespace mlir::spirv {

std::optional<::llvm::ArrayRef<::mlir::spirv::Capability>> getCapabilities(AddressingModel value);
std::optional<::llvm::ArrayRef<::mlir::spirv::Extension>> getExtensions(AddressingModel value);

} // namespace mlir::spirv
namespace mlir::spirv {

std::optional<::llvm::ArrayRef<::mlir::spirv::Capability>> getCapabilities(BuiltIn value);
std::optional<::mlir::spirv::Version> getMinVersion(BuiltIn value);
std::optional<::llvm::ArrayRef<::mlir::spirv::Extension>> getExtensions(BuiltIn value);

} // namespace mlir::spirv
namespace mlir::spirv {

std::optional<::llvm::ArrayRef<::mlir::spirv::Capability>> getCapabilities(Decoration value);
std::optional<::mlir::spirv::Version> getMaxVersion(Decoration value);
std::optional<::mlir::spirv::Version> getMinVersion(Decoration value);
std::optional<::llvm::ArrayRef<::mlir::spirv::Extension>> getExtensions(Decoration value);

} // namespace mlir::spirv
namespace mlir::spirv {

std::optional<::llvm::ArrayRef<::mlir::spirv::Capability>> getCapabilities(Dim value);

} // namespace mlir::spirv
namespace mlir::spirv {

std::optional<::llvm::ArrayRef<::mlir::spirv::Capability>> getCapabilities(ExecutionMode value);
std::optional<::mlir::spirv::Version> getMinVersion(ExecutionMode value);
std::optional<::llvm::ArrayRef<::mlir::spirv::Extension>> getExtensions(ExecutionMode value);

} // namespace mlir::spirv
namespace mlir::spirv {

std::optional<::llvm::ArrayRef<::mlir::spirv::Capability>> getCapabilities(ExecutionModel value);

} // namespace mlir::spirv
namespace mlir::spirv {

std::optional<::llvm::ArrayRef<::mlir::spirv::Capability>> getCapabilities(FPEncoding value);

} // namespace mlir::spirv
namespace mlir::spirv {


} // namespace mlir::spirv
namespace mlir::spirv {

std::optional<::llvm::ArrayRef<::mlir::spirv::Capability>> getCapabilities(FunctionControl value);

} // namespace mlir::spirv
namespace mlir::spirv {

std::optional<::llvm::ArrayRef<::mlir::spirv::Capability>> getCapabilities(GroupOperation value);
std::optional<::mlir::spirv::Version> getMinVersion(GroupOperation value);
std::optional<::llvm::ArrayRef<::mlir::spirv::Extension>> getExtensions(GroupOperation value);

} // namespace mlir::spirv
namespace mlir::spirv {

std::optional<::llvm::ArrayRef<::mlir::spirv::Capability>> getCapabilities(ImageFormat value);

} // namespace mlir::spirv
namespace mlir::spirv {

std::optional<::llvm::ArrayRef<::mlir::spirv::Capability>> getCapabilities(ImageOperands value);
std::optional<::mlir::spirv::Version> getMinVersion(ImageOperands value);

} // namespace mlir::spirv
namespace mlir::spirv {

std::optional<::llvm::ArrayRef<::mlir::spirv::Capability>> getCapabilities(LinkageType value);
std::optional<::llvm::ArrayRef<::mlir::spirv::Extension>> getExtensions(LinkageType value);

} // namespace mlir::spirv
namespace mlir::spirv {

std::optional<::mlir::spirv::Version> getMinVersion(LoopControl value);
std::optional<::llvm::ArrayRef<::mlir::spirv::Extension>> getExtensions(LoopControl value);
std::optional<::llvm::ArrayRef<::mlir::spirv::Capability>> getCapabilities(LoopControl value);

} // namespace mlir::spirv
namespace mlir::spirv {

std::optional<::mlir::spirv::Version> getMinVersion(MemoryAccess value);
std::optional<::llvm::ArrayRef<::mlir::spirv::Capability>> getCapabilities(MemoryAccess value);
std::optional<::llvm::ArrayRef<::mlir::spirv::Extension>> getExtensions(MemoryAccess value);

} // namespace mlir::spirv
namespace mlir::spirv {

std::optional<::llvm::ArrayRef<::mlir::spirv::Capability>> getCapabilities(MemoryModel value);
std::optional<::llvm::ArrayRef<::mlir::spirv::Extension>> getExtensions(MemoryModel value);

} // namespace mlir::spirv
namespace mlir::spirv {

std::optional<::llvm::ArrayRef<::mlir::spirv::Capability>> getCapabilities(MemorySemantics value);
std::optional<::mlir::spirv::Version> getMinVersion(MemorySemantics value);
std::optional<::llvm::ArrayRef<::mlir::spirv::Extension>> getExtensions(MemorySemantics value);

} // namespace mlir::spirv
namespace mlir::spirv {

std::optional<::mlir::spirv::Version> getMinVersion(Scope value);
std::optional<::llvm::ArrayRef<::mlir::spirv::Capability>> getCapabilities(Scope value);

} // namespace mlir::spirv
namespace mlir::spirv {


} // namespace mlir::spirv
namespace mlir::spirv {

std::optional<::llvm::ArrayRef<::mlir::spirv::Capability>> getCapabilities(StorageClass value);
std::optional<::llvm::ArrayRef<::mlir::spirv::Extension>> getExtensions(StorageClass value);
std::optional<::mlir::spirv::Version> getMinVersion(StorageClass value);

} // namespace mlir::spirv
namespace mlir::spirv {

std::optional<::mlir::spirv::Version> getMinVersion(PackedVectorFormat value);
std::optional<::llvm::ArrayRef<::mlir::spirv::Extension>> getExtensions(PackedVectorFormat value);

} // namespace mlir::spirv
namespace mlir::spirv {


} // namespace mlir::spirv
namespace mlir::spirv {


} // namespace mlir::spirv
namespace mlir::spirv {


} // namespace mlir::spirv
namespace mlir::spirv {


} // namespace mlir::spirv
namespace mlir::spirv {


} // namespace mlir::spirv
namespace mlir::spirv {


} // namespace mlir::spirv
namespace mlir::spirv {


} // namespace mlir::spirv
namespace mlir::spirv {


} // namespace mlir::spirv
namespace mlir::spirv {


} // namespace mlir::spirv
namespace mlir::spirv {


} // namespace mlir::spirv
namespace mlir::spirv {


} // namespace mlir::spirv
namespace mlir::spirv {

std::optional<::llvm::ArrayRef<::mlir::spirv::Capability>> getCapabilities(FPFastMathMode value);

} // namespace mlir::spirv
