Files
gps/tools/local/circt/include/mlir/IR/OpAsmSupport.h
T
2026-07-12 11:01:51 +03:00

53 lines
1.9 KiB
C++

//===- OpAsmSupport.h - OpAsm Interface Utilities ---------------*- 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 defines various classes and utilites for
// OpAsm{Dialect,Type,Attr,Op}Interface
//
//===----------------------------------------------------------------------===//
#ifndef MLIR_IR_OPASMSUPPORT_H_
#define MLIR_IR_OPASMSUPPORT_H_
#include "mlir/IR/Block.h"
#include "mlir/IR/Value.h"
namespace mlir {
//===--------------------------------------------------------------------===//
// Utilities used by OpAsm{Dialect,Op,Type,Attr}Interface.
//===--------------------------------------------------------------------===//
/// A functor used to set the name of the result. See 'getAsmResultNames' below
/// for more details.
using OpAsmSetNameFn = function_ref<void(StringRef)>;
/// A functor used to set the name of the start of a result group of an
/// operation. See 'getAsmResultNames' below for more details.
using OpAsmSetValueNameFn = function_ref<void(Value, StringRef)>;
/// A functor used to set the name of blocks in regions directly nested under
/// an operation.
using OpAsmSetBlockNameFn = function_ref<void(Block *, StringRef)>;
/// Holds the result of `OpAsm{Dialect,Attr,Type}Interface::getAlias` hook call.
enum class OpAsmAliasResult {
/// The object (type or attribute) is not supported by the hook
/// and an alias was not provided.
NoAlias,
/// An alias was provided, but it might be overriden by other hook.
OverridableAlias,
/// An alias was provided and it should be used
/// (no other hooks will be checked).
FinalAlias
};
} // namespace mlir
#endif // MLIR_IR_OPASMSUPPORT_H_