llvm::IRBuilder<> &builder);
static std::unique_ptr<llvm::Module> prepareLLVMModule(Operation *m);
+ // A helper to look up remapped operands in the value remapping table.
template <typename Range>
- SmallVector<llvm::Value *, 8> lookupValues(Range &&values);
+ SmallVector<llvm::Value *, 8> lookupValues(Range &&values) {
+ SmallVector<llvm::Value *, 8> remapped;
+ remapped.reserve(llvm::size(values));
+ for (Value *v : values) {
+ remapped.push_back(valueMapping.lookup(v));
+ }
+ return remapped;
+ }
private:
/// Check whether the module contains only supported ops directly in its body.
llvm_unreachable("incorrect comparison predicate");
}
-// A helper to look up remapped operands in the value remapping table.
-template <typename Range>
-SmallVector<llvm::Value *, 8> ModuleTranslation::lookupValues(Range &&values) {
- SmallVector<llvm::Value *, 8> remapped;
- remapped.reserve(llvm::size(values));
- for (Value *v : values) {
- remapped.push_back(valueMapping.lookup(v));
- }
- return remapped;
-}
-
// Given a single MLIR operation, create the corresponding LLVM IR operation
// using the `builder`. LLVM IR Builder does not have a generic interface so
// this has to be a long chain of `if`s calling different functions with a