1 //===- OpGenHelpers.h - MLIR operation generator helpers --------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 // 9 // This file defines helpers used in the op generators. 10 // 11 //===----------------------------------------------------------------------===// 12 13 #ifndef MLIR_TOOLS_MLIRTBLGEN_OPGENHELPERS_H_ 14 #define MLIR_TOOLS_MLIRTBLGEN_OPGENHELPERS_H_ 15 16 #include "mlir/Support/LLVM.h" 17 #include "llvm/TableGen/Record.h" 18 #include <vector> 19 20 namespace mlir { 21 namespace tblgen { 22 23 /// Returns all the op definitions filtered by the user. The filtering is via 24 /// command-line option "op-include-regex" and "op-exclude-regex". 25 std::vector<const llvm::Record *> 26 getRequestedOpDefinitions(const llvm::RecordKeeper &records); 27 28 /// Checks whether `str` is a Python keyword or would shadow builtin function. 29 /// Regenerate using python -c"print(set(sorted(__import__('keyword').kwlist)))" 30 bool isPythonReserved(llvm::StringRef str); 31 32 /// Shard the op defintions into the number of shards set by "op-shard-count". 33 void shardOpDefinitions( 34 ArrayRef<const llvm::Record *> defs, 35 SmallVectorImpl<ArrayRef<const llvm::Record *>> &shardedDefs); 36 37 } // namespace tblgen 38 } // namespace mlir 39 40 #endif // MLIR_TOOLS_MLIRTBLGEN_OPGENHELPERS_H_ 41