91 lines
4.1 KiB
C++
91 lines
4.1 KiB
C++
/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|
|
|* *|
|
|
|* Dialect Declarations *|
|
|
|* *|
|
|
|* Automatically generated file, do not edit! *|
|
|
|* From: SPIRVOps.td *|
|
|
|* *|
|
|
\*===----------------------------------------------------------------------===*/
|
|
|
|
namespace mlir::spirv {
|
|
|
|
/// The SPIR-V dialect in MLIR.
|
|
/// SPIR-V is a binary intermediate language for representing graphical-shader
|
|
/// stages and compute kernels for multiple Khronos APIs, including OpenCL,
|
|
/// OpenGL, and Vulkan.
|
|
/// See https://www.khronos.org/registry/spir-v for more details regarding
|
|
/// SPIR-V itself.
|
|
///
|
|
/// The SPIR-V dialect aims to be a proper compiler intermediate representation
|
|
/// to facilitate transformations. Ops in this dialect stay at the same semantic
|
|
/// level as the SPIR-V specification and try to have one-to-one mapping to the
|
|
/// corresponding SPIR-V instructions; but they may deviate representationally
|
|
/// to utilize MLIR mechanisms if it results in better representation and thus
|
|
/// benefits transformations. The dialect also aims to maintain straightforward
|
|
/// serialization into and deserialization from the SPIR-V binary format.
|
|
/// See https://mlir.llvm.org/docs/Dialects/SPIR-V/ for more details regarding
|
|
/// high-level designs and implementation structures of the SPIR-V dialect.
|
|
class SPIRVDialect : public ::mlir::Dialect {
|
|
explicit SPIRVDialect(::mlir::MLIRContext *context);
|
|
|
|
void initialize();
|
|
friend class ::mlir::MLIRContext;
|
|
public:
|
|
~SPIRVDialect() override;
|
|
static constexpr ::llvm::StringLiteral getDialectNamespace() {
|
|
return ::llvm::StringLiteral("spirv");
|
|
}
|
|
|
|
/// Parse a type registered to this dialect.
|
|
::mlir::Type parseType(::mlir::DialectAsmParser &parser) const override;
|
|
|
|
/// Print a type registered to this dialect.
|
|
void printType(::mlir::Type type,
|
|
::mlir::DialectAsmPrinter &os) const override;
|
|
|
|
/// Materialize a single constant operation from a given attribute value with
|
|
/// the desired resultant type.
|
|
::mlir::Operation *materializeConstant(::mlir::OpBuilder &builder,
|
|
::mlir::Attribute value,
|
|
::mlir::Type type,
|
|
::mlir::Location loc) override;
|
|
|
|
/// Provides a hook for verifying dialect attributes attached to the given
|
|
/// op.
|
|
::llvm::LogicalResult verifyOperationAttribute(
|
|
::mlir::Operation *op, ::mlir::NamedAttribute attribute) override;
|
|
|
|
/// Provides a hook for verifying dialect attributes attached to the given
|
|
/// op's region argument.
|
|
::llvm::LogicalResult verifyRegionArgAttribute(
|
|
::mlir::Operation *op, unsigned regionIndex, unsigned argIndex,
|
|
::mlir::NamedAttribute attribute) override;
|
|
|
|
/// Provides a hook for verifying dialect attributes attached to the given
|
|
/// op's region result.
|
|
::llvm::LogicalResult verifyRegionResultAttribute(
|
|
::mlir::Operation *op, unsigned regionIndex, unsigned resultIndex,
|
|
::mlir::NamedAttribute attribute) override;
|
|
|
|
void registerAttributes();
|
|
void registerTypes();
|
|
|
|
//===------------------------------------------------------------------===//
|
|
// Attribute
|
|
//===------------------------------------------------------------------===//
|
|
|
|
/// Returns the attribute name to use when specifying decorations on results
|
|
/// of operations.
|
|
static std::string getAttributeName(Decoration decoration);
|
|
|
|
/// Dialect attribute parsing hook.
|
|
Attribute parseAttribute(
|
|
DialectAsmParser &parser, Type type) const override;
|
|
/// Dialect attribute printing hook.
|
|
void printAttribute(
|
|
Attribute attr, DialectAsmPrinter &printer) const override;
|
|
};
|
|
|
|
} // namespace mlir::spirv
|
|
MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::spirv::SPIRVDialect)
|