summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMahesh Ravishankar <ravishankarm@google.com>2019-12-06 14:26:34 -0800
committerA. Unique TensorFlower <gardener@tensorflow.org>2019-12-06 14:27:03 -0800
commit883f5557263e5543c2a8cf7621be885760b47d5d (patch)
treeb7a33342475cab1f0906e77d5aa9dabac1f5f5d0
parent3230267d0dbdc908d7be5886e20c2ee5f0e942fe (diff)
downloadbcm5719-llvm-883f5557263e5543c2a8cf7621be885760b47d5d.tar.gz
bcm5719-llvm-883f5557263e5543c2a8cf7621be885760b47d5d.zip
During serialization do a walk of ops in module to find spv.module.
During lowering, spv.module might be within other modules (for example gpu kernel module). Walk the module op to find spirv module to serialize. PiperOrigin-RevId: 284262550
-rw-r--r--mlir/lib/Dialect/SPIRV/Serialization/TranslateRegistration.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/mlir/lib/Dialect/SPIRV/Serialization/TranslateRegistration.cpp b/mlir/lib/Dialect/SPIRV/Serialization/TranslateRegistration.cpp
index ffd62bd9bb9..655f559b765 100644
--- a/mlir/lib/Dialect/SPIRV/Serialization/TranslateRegistration.cpp
+++ b/mlir/lib/Dialect/SPIRV/Serialization/TranslateRegistration.cpp
@@ -86,15 +86,16 @@ LogicalResult serializeModule(ModuleOp module, llvm::raw_ostream &output) {
SmallVector<uint32_t, 0> binary;
- auto spirvModules = module.getOps<spirv::ModuleOp>();
+ SmallVector<spirv::ModuleOp, 1> spirvModules;
+ module.walk([&](spirv::ModuleOp op) { spirvModules.push_back(op); });
- if (spirvModules.begin() == spirvModules.end())
+ if (spirvModules.empty())
return module.emitError("found no 'spv.module' op");
- if (std::next(spirvModules.begin()) != spirvModules.end())
+ if (spirvModules.size() != 1)
return module.emitError("found more than one 'spv.module' op");
- if (failed(spirv::serialize(*spirvModules.begin(), binary)))
+ if (failed(spirv::serialize(spirvModules[0], binary)))
return failure();
output.write(reinterpret_cast<char *>(binary.data()),
OpenPOWER on IntegriCloud