1*a7215a90SAlex Zinenko //===- OperationSupport.cpp -----------------------------------------------===// 2*a7215a90SAlex Zinenko // 3*a7215a90SAlex Zinenko // Copyright 2019 The MLIR Authors. 4*a7215a90SAlex Zinenko // 5*a7215a90SAlex Zinenko // Licensed under the Apache License, Version 2.0 (the "License"); 6*a7215a90SAlex Zinenko // you may not use this file except in compliance with the License. 7*a7215a90SAlex Zinenko // You may obtain a copy of the License at 8*a7215a90SAlex Zinenko // 9*a7215a90SAlex Zinenko // http://www.apache.org/licenses/LICENSE-2.0 10*a7215a90SAlex Zinenko // 11*a7215a90SAlex Zinenko // Unless required by applicable law or agreed to in writing, software 12*a7215a90SAlex Zinenko // distributed under the License is distributed on an "AS IS" BASIS, 13*a7215a90SAlex Zinenko // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*a7215a90SAlex Zinenko // See the License for the specific language governing permissions and 15*a7215a90SAlex Zinenko // limitations under the License. 16*a7215a90SAlex Zinenko // ============================================================================= 17*a7215a90SAlex Zinenko // 18*a7215a90SAlex Zinenko // This file contains out-of-line implementations of the support types that 19*a7215a90SAlex Zinenko // Instruction and related classes build on top of. 20*a7215a90SAlex Zinenko // 21*a7215a90SAlex Zinenko //===----------------------------------------------------------------------===// 22*a7215a90SAlex Zinenko 23*a7215a90SAlex Zinenko #include "mlir/IR/OperationSupport.h" 24*a7215a90SAlex Zinenko #include "mlir/IR/Block.h" 25*a7215a90SAlex Zinenko 26*a7215a90SAlex Zinenko namespace mlir { 27*a7215a90SAlex Zinenko 28*a7215a90SAlex Zinenko OperationState::OperationState(MLIRContext *context, Location location, 29*a7215a90SAlex Zinenko StringRef name) 30*a7215a90SAlex Zinenko : context(context), location(location), name(name, context) {} 31*a7215a90SAlex Zinenko 32*a7215a90SAlex Zinenko OperationState::OperationState(MLIRContext *context, Location location, 33*a7215a90SAlex Zinenko OperationName name) 34*a7215a90SAlex Zinenko : context(context), location(location), name(name) {} 35*a7215a90SAlex Zinenko 36*a7215a90SAlex Zinenko OperationState::OperationState(MLIRContext *context, Location location, 37*a7215a90SAlex Zinenko StringRef name, ArrayRef<Value *> operands, 38*a7215a90SAlex Zinenko ArrayRef<Type> types, 39*a7215a90SAlex Zinenko ArrayRef<NamedAttribute> attributes, 40*a7215a90SAlex Zinenko ArrayRef<Block *> successors, 41*a7215a90SAlex Zinenko MutableArrayRef<std::unique_ptr<Region>> regions, 42*a7215a90SAlex Zinenko bool resizableOperandList) 43*a7215a90SAlex Zinenko : context(context), location(location), name(name, context), 44*a7215a90SAlex Zinenko operands(operands.begin(), operands.end()), 45*a7215a90SAlex Zinenko types(types.begin(), types.end()), 46*a7215a90SAlex Zinenko attributes(attributes.begin(), attributes.end()), 47*a7215a90SAlex Zinenko successors(successors.begin(), successors.end()) { 48*a7215a90SAlex Zinenko for (std::unique_ptr<Region> &r : regions) { 49*a7215a90SAlex Zinenko this->regions.push_back(std::move(r)); 50*a7215a90SAlex Zinenko } 51*a7215a90SAlex Zinenko } 52*a7215a90SAlex Zinenko 53*a7215a90SAlex Zinenko Region *OperationState::addRegion() { 54*a7215a90SAlex Zinenko regions.emplace_back(new Region); 55*a7215a90SAlex Zinenko return regions.back().get(); 56*a7215a90SAlex Zinenko } 57*a7215a90SAlex Zinenko 58*a7215a90SAlex Zinenko void OperationState::addRegion(std::unique_ptr<Region> &®ion) { 59*a7215a90SAlex Zinenko regions.push_back(std::move(region)); 60*a7215a90SAlex Zinenko } 61*a7215a90SAlex Zinenko 62*a7215a90SAlex Zinenko } // end namespace mlir 63