//===- SideEffects.h - Side Effects classes ---------------------*- C++ -*-===// // // Part of the MLIR 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 // //===----------------------------------------------------------------------===// // // Wrapper around side effect related classes defined in TableGen. // //===----------------------------------------------------------------------===// #ifndef MLIR_TABLEGEN_SIDEEFFECTS_H_ #define MLIR_TABLEGEN_SIDEEFFECTS_H_ #include "mlir/Support/LLVM.h" #include "Operator.h" namespace mlir { namespace tblgen { // This class represents a specific instance of an effect that is being // exhibited. class SideEffect : public Operator::VariableDecorator { public: // Return the name of the C++ effect. StringRef getName() const; // Return the name of the base C++ effect. StringRef getBaseEffectName() const; // Return the name of the Interface that the effect belongs to. std::string getInterfaceTrait() const; // Return the name of the resource class. StringRef getResource() const; static bool classof(const Operator::VariableDecorator *var); }; // This class represents an instance of a side effect interface applied to an // operation. This is a wrapper around an OpInterfaceTrait that also includes // the effects that are applied. class SideEffectTrait : public InterfaceTrait { public: // Return the effects that are attached to the side effect interface. Operator::var_decorator_range getEffects() const; // Return the name of the base C++ effect. StringRef getBaseEffectName() const; static bool classof(const Trait *t); }; } // end namespace tblgen } // end namespace mlir #endif // MLIR_TABLEGEN_SIDEEFFECTS_H_