/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|*                                                                            *|
|* Dialect Declarations                                                       *|
|*                                                                            *|
|* Automatically generated file, do not edit!                                 *|
|* From: FIRDialect.td                                                        *|
|*                                                                            *|
\*===----------------------------------------------------------------------===*/

namespace fir {


class FIROpsDialect : public ::mlir::Dialect {
  explicit FIROpsDialect(::mlir::MLIRContext *context);

  void initialize();
  friend class ::mlir::MLIRContext;
public:
  ~FIROpsDialect() override;
  static constexpr ::llvm::StringLiteral getDialectNamespace() {
    return ::llvm::StringLiteral("fir");
  }

  private:
    // Register the builtin Attributes.
    void registerAttributes();
    // Register the builtin Types.
    void registerTypes();
    // Register external interfaces on operations of
    // this dialect.
    void registerOpExternalInterfaces();
  public:
    mlir::Type parseType(mlir::DialectAsmParser &parser) const override;
    void printType(mlir::Type ty, mlir::DialectAsmPrinter &p) const override;
 
    mlir::Attribute parseAttribute(mlir::DialectAsmParser &parser,
                                   mlir::Type type) const override;
    void printAttribute(mlir::Attribute attr,
                        mlir::DialectAsmPrinter &p) const override;

    // Return string name of fir.runtime attribute.
    static constexpr llvm::StringRef getFirRuntimeAttrName() {
      return "fir.runtime";
    }
    // Return string name of fir.memory attributes.
    // It is attached to fir.call operations to convey
    // llvm.memory attributes to LLVM IR.
    // Its value is intended to be mlir::LLVM::MemoryEffectsAttr.
    // TODO: we should probably make it an inherent attribute
    // of fir.call, though, it is supposed to be a short-lived
    // attribute that appears right before CodeGen and only
    // meaningful for LLVM, so it is unclear if embedding
    // it into fir.call makes sense.
    static constexpr llvm::StringRef getFirCallMemoryAttrName() {
      return "fir.llvm_memory";
    }
  };

} // namespace fir
MLIR_DECLARE_EXPLICIT_TYPE_ID(::fir::FIROpsDialect)
