// RUN: mlir-tblgen -gen-op-defs -I %S/../../include %s | FileCheck %s include "mlir/Interfaces/SideEffectInterfaces.td" def TEST_Dialect : Dialect { let name = "test"; } class TEST_Op traits = []> : Op; def CustomResource : Resource<"CustomResource">; def SideEffectOpA : TEST_Op<"side_effect_op_a"> { let arguments = (ins Arg, "", [MemRead]>, Arg:$symbol, Arg:$flat_symbol, Arg, "", [MemRead]>:$optional_symbol ); let results = (outs Res]>); } def SideEffectOpB : TEST_Op<"side_effect_op_b", [MemoryEffects<[MemWrite]>]>; // CHECK: void SideEffectOpA::getEffects // CHECK: for (::mlir::Value value : getODSOperands(0)) // CHECK: effects.emplace_back(MemoryEffects::Read::get(), value, ::mlir::SideEffects::DefaultResource::get()); // CHECK: effects.emplace_back(MemoryEffects::Read::get(), symbol(), ::mlir::SideEffects::DefaultResource::get()); // CHECK: effects.emplace_back(MemoryEffects::Write::get(), flat_symbol(), ::mlir::SideEffects::DefaultResource::get()); // CHECK: if (auto symbolRef = optional_symbolAttr()) // CHECK: effects.emplace_back(MemoryEffects::Read::get(), symbolRef, ::mlir::SideEffects::DefaultResource::get()); // CHECK: for (::mlir::Value value : getODSResults(0)) // CHECK: effects.emplace_back(MemoryEffects::Allocate::get(), value, CustomResource::get()); // CHECK: void SideEffectOpB::getEffects // CHECK: effects.emplace_back(MemoryEffects::Write::get(), CustomResource::get());