1 //===- SideEffects.cpp - SideEffect classes -------------------------------===//
2 //
3 // Part of the MLIR Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #include "mlir/TableGen/SideEffects.h"
10 #include "llvm/TableGen/Record.h"
11 
12 using namespace mlir;
13 using namespace mlir::tblgen;
14 
15 //===----------------------------------------------------------------------===//
16 // SideEffect
17 //===----------------------------------------------------------------------===//
18 
19 StringRef SideEffect::getName() const {
20   return def->getValueAsString("effect");
21 }
22 
23 StringRef SideEffect::getBaseEffectName() const {
24   return def->getValueAsString("baseEffectName");
25 }
26 
27 StringRef SideEffect::getInterfaceTrait() const {
28   return def->getValueAsString("interfaceTrait");
29 }
30 
31 StringRef SideEffect::getResource() const {
32   return def->getValueAsString("resource");
33 }
34 
35 bool SideEffect::classof(const Operator::VariableDecorator *var) {
36   return var->getDef().isSubClassOf("SideEffect");
37 }
38 
39 //===----------------------------------------------------------------------===//
40 // SideEffectsTrait
41 //===----------------------------------------------------------------------===//
42 
43 Operator::var_decorator_range SideEffectTrait::getEffects() const {
44   auto *listInit = dyn_cast<llvm::ListInit>(def->getValueInit("effects"));
45   return {listInit->begin(), listInit->end()};
46 }
47 
48 StringRef SideEffectTrait::getBaseEffectName() const {
49   return def->getValueAsString("baseEffectName");
50 }
51 
52 bool SideEffectTrait::classof(const OpTrait *t) {
53   return t->getDef().isSubClassOf("SideEffectsTraitBase");
54 }
55