63 lines
2.5 KiB
C++
63 lines
2.5 KiB
C++
//===- SPIRVEnums.h - MLIR SPIR-V Enums -------------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file declares the C/C++ enums from SPIR-V spec.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef MLIR_DIALECT_SPIRV_IR_SPIRVENUMS_H_
|
|
#define MLIR_DIALECT_SPIRV_IR_SPIRVENUMS_H_
|
|
|
|
#include "mlir/IR/BuiltinAttributes.h"
|
|
#include "mlir/Support/LLVM.h"
|
|
#include "llvm/ADT/DenseMapInfo.h"
|
|
#include "llvm/ADT/StringRef.h"
|
|
|
|
// Forward declare enum classes related to op availability. Their definitions
|
|
// are in the TableGen'erated SPIRVEnums.h.inc and can be referenced by other
|
|
// declarations in SPIRVEnums.h.inc.
|
|
namespace mlir {
|
|
namespace spirv {
|
|
enum class Version : uint32_t;
|
|
enum class Extension : uint32_t;
|
|
enum class Capability : uint32_t;
|
|
} // namespace spirv
|
|
} // namespace mlir
|
|
|
|
// Pull in all enum type definitions and utility function declarations
|
|
#include "mlir/Dialect/SPIRV/IR/SPIRVEnums.h.inc"
|
|
|
|
// Pull in all enum type availability query function declarations
|
|
#include "mlir/Dialect/SPIRV/IR/SPIRVEnumAvailability.h.inc"
|
|
|
|
namespace mlir {
|
|
namespace spirv {
|
|
/// Returns the implied extensions for the given version. These extensions are
|
|
/// incorporated into the current version so they are implicitly declared when
|
|
/// targeting the given version.
|
|
ArrayRef<Extension> getImpliedExtensions(Version version);
|
|
|
|
/// Returns the directly implied capabilities for the given capability. These
|
|
/// capabilities are implicitly declared by the given capability.
|
|
ArrayRef<Capability> getDirectImpliedCapabilities(Capability cap);
|
|
/// Returns the recursively implied capabilities for the given capability. These
|
|
/// capabilities are implicitly declared by the given capability. Compared to
|
|
/// the above function, this function collects implied capabilities recursively:
|
|
/// if an implicitly declared capability implicitly declares a third one, the
|
|
/// third one will also be returned.
|
|
SmallVector<Capability, 0> getRecursiveImpliedCapabilities(Capability cap);
|
|
|
|
/// Converts a SPIR-V Decoration enum value to its snake_case string
|
|
/// representation for use in MLIR attributes.
|
|
std::string getDecorationString(Decoration decoration);
|
|
|
|
} // namespace spirv
|
|
} // namespace mlir
|
|
|
|
#endif // MLIR_DIALECT_SPIRV_IR_SPIRVENUMS_H_
|