blob: 01d91bbd62a04bf9ce131862533219cd3f23c844 [file] [log] [blame]
Chris Lattnerff0d5902018-07-05 09:12:11 -07001//===- StandardOps.cpp - Standard MLIR Operations -------------------------===//
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// =============================================================================
17
18#include "mlir/IR/StandardOps.h"
19#include "mlir/IR/OperationSet.h"
20#include "llvm/Support/raw_ostream.h"
21using namespace mlir;
22
23void AddFOp::print(raw_ostream &os) const {
24 os << "addf xx, yy : sometype\n";
25}
26
Chris Lattner21e67f62018-07-06 10:46:19 -070027// Return an error message on failure.
28const char *AddFOp::verify() const {
29 // TODO: Check that the types of the LHS and RHS match.
30 // TODO: This should be a refinement of TwoOperands.
31 // TODO: There should also be a OneResultWhoseTypeMatchesFirstOperand.
32 return nullptr;
33}
34
Chris Lattnerff0d5902018-07-05 09:12:11 -070035void DimOp::print(raw_ostream &os) const {
36 os << "dim xxx, " << getIndex() << " : sometype\n";
37}
38
Chris Lattner21e67f62018-07-06 10:46:19 -070039const char *DimOp::verify() const {
40 // TODO: Check that the operand has tensor or memref type.
41
42 // Check that we have an integer index operand.
43 auto indexAttr = getAttrOfType<IntegerAttr>("index");
44 if (!indexAttr)
45 return "'dim' op requires an integer attribute named 'index'";
46
47 // TODO: Check that the index is in range.
48
49 return nullptr;
50}
51
Chris Lattnerff0d5902018-07-05 09:12:11 -070052/// Install the standard operations in the specified operation set.
53void mlir::registerStandardOperations(OperationSet &opSet) {
54 opSet.addOperations<AddFOp, DimOp>(/*prefix=*/ "");
55}