blob: 54c9166adb23d18da3fa78bcc15493fd45f3c214 [file] [log] [blame]
Chris Lattnerc0c5e0f2018-06-21 09:49:33 -07001//===- Function.cpp - MLIR Function Classes -------------------------------===//
2//
3// Copyright 2019 The MLIR Authors.
4//
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing, software
12// distributed under the License is distributed on an "AS IS" BASIS,
13// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14// See the License for the specific language governing permissions and
15// limitations under the License.
16// =============================================================================
Chris Lattnerc0c5e0f2018-06-21 09:49:33 -070017
18#include "mlir/IR/Function.h"
Chris Lattnerf7e22732018-06-22 22:03:48 -070019#include "mlir/IR/Types.h"
20#include "mlir/Support/STLExtras.h"
Chris Lattnere2259872018-06-21 15:22:42 -070021#include "llvm/Support/raw_ostream.h"
Chris Lattnerc0c5e0f2018-06-21 09:49:33 -070022using namespace mlir;
23
Chris Lattnerf7e22732018-06-22 22:03:48 -070024Function::Function(StringRef name, FunctionType *type)
25 : name(name.str()), type(type) {
Chris Lattnerc0c5e0f2018-06-21 09:49:33 -070026}
27
Chris Lattnere2259872018-06-21 15:22:42 -070028void Function::print(raw_ostream &os) {
Chris Lattnerf7e22732018-06-22 22:03:48 -070029 os << "extfunc @" << name << '(';
30 interleave(type->getInputs(),
31 [&](Type *eltType) { os << *eltType; },
32 [&]() { os << ", "; });
33 os << ')';
34
35 switch (type->getResults().size()) {
36 case 0: break;
37 case 1:
38 os << " -> " << *type->getResults()[0];
39 break;
40 default:
41 os << " -> (";
42 interleave(type->getResults(),
43 [&](Type *eltType) { os << *eltType; },
44 [&]() { os << ", "; });
45 os << ')';
46 break;
47 }
48
49 os << "\n";
Chris Lattnere2259872018-06-21 15:22:42 -070050}
51
52void Function::dump() {
53 print(llvm::errs());
54}