github.com/johnnyeven/libtools@v0.0.0-20191126065708-61829c1adf46/third_party/mlir/tools/mlir-translate/mlir-translate.cpp (about) 1 //===- mlir-translate.cpp - MLIR Translate Driver -------------------------===// 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 // This is a command line utility that translates a file from/to MLIR using one 19 // of the registered translations. 20 // 21 //===----------------------------------------------------------------------===// 22 23 #include "mlir/IR/MLIRContext.h" 24 #include "mlir/Support/LogicalResult.h" 25 #include "mlir/Support/TranslateClParser.h" 26 #include "llvm/Support/InitLLVM.h" 27 28 using namespace mlir; 29 30 static llvm::cl::opt<std::string> inputFilename(llvm::cl::Positional, 31 llvm::cl::desc("<input file>"), 32 llvm::cl::init("-")); 33 34 static llvm::cl::opt<std::string> 35 outputFilename("o", llvm::cl::desc("Output filename"), 36 llvm::cl::value_desc("filename"), llvm::cl::init("-")); 37 38 int main(int argc, char **argv) { 39 llvm::InitLLVM y(argc, argv); 40 41 // Add flags for all the registered translations. 42 llvm::cl::opt<const TranslateFunction *, false, TranslationParser> 43 translationRequested("", llvm::cl::desc("Translation to perform"), 44 llvm::cl::Required); 45 llvm::cl::ParseCommandLineOptions(argc, argv, "MLIR translation driver\n"); 46 47 MLIRContext context; 48 return failed( 49 (*translationRequested)(inputFilename, outputFilename, &context)); 50 }