[Mlir-commits] [mlir] [mlir][spirv] Fix UpdateVCEPass to deduce the correct set of capabilities (PR #151108)

Davide Grohmann llvmlistbot at llvm.org
Wed Jul 30 02:50:55 PDT 2025


================
@@ -95,6 +95,21 @@ static LogicalResult checkAndUpdateCapabilityRequirements(
   return success();
 }
 
+static SetVector<spirv::Capability>
+addAllImpliedCapabilities(SetVector<spirv::Capability> &caps) {
+  SetVector<spirv::Capability> allCaps;
+  while (!caps.empty()) {
+    spirv::Capability cap = caps.pop_back_val();
+    allCaps.insert(cap);
+    ArrayRef<spirv::Capability> impliedCaps = getDirectImpliedCapabilities(cap);
+    for (spirv::Capability impliedCap : impliedCaps) {
+      if (!allCaps.contains(impliedCap))
----------------
davidegrohmann wrote:

Yes but in this case the insertion is on `caps` not `allCaps`.

The idea is that caps is the `caps` are the capabilities to be processed and `allCaps` is the end result.

https://github.com/llvm/llvm-project/pull/151108


More information about the Mlir-commits mailing list