Removing unused hal.descriptor_set_layout.lookup op. (#16494)
diff --git a/compiler/src/iree/compiler/Dialect/HAL/IR/HALOps.cpp b/compiler/src/iree/compiler/Dialect/HAL/IR/HALOps.cpp index d370076..cab95ba 100644 --- a/compiler/src/iree/compiler/Dialect/HAL/IR/HALOps.cpp +++ b/compiler/src/iree/compiler/Dialect/HAL/IR/HALOps.cpp
@@ -950,15 +950,6 @@ } //===----------------------------------------------------------------------===// -// hal.descriptor_set_layout.lookup -//===----------------------------------------------------------------------===// - -void DescriptorSetLayoutLookupOp::getAsmResultNames( - function_ref<void(Value, StringRef)> setNameFn) { - setNameFn(getResult(), "descriptor_set_layout"); -} - -//===----------------------------------------------------------------------===// // hal.device.allocator //===----------------------------------------------------------------------===//
diff --git a/compiler/src/iree/compiler/Dialect/HAL/IR/HALOps.td b/compiler/src/iree/compiler/Dialect/HAL/IR/HALOps.td index 9b79a4f..e030399 100644 --- a/compiler/src/iree/compiler/Dialect/HAL/IR/HALOps.td +++ b/compiler/src/iree/compiler/Dialect/HAL/IR/HALOps.td
@@ -1539,33 +1539,6 @@ }]; } -def HAL_DescriptorSetLayoutLookupOp : HAL_PureOp<"descriptor_set_layout.lookup", [ - DeclareOpInterfaceMethods<OpAsmOpInterface, ["getAsmResultNames"]>, - ]> { - let summary = [{descriptor set layout cache lookup pseudo-op}]; - let description = [{ - Used during conversion to provide a placeholder for a globally cached and - possibly lazy-initialized descriptor set layout. - }]; - - let arguments = (ins - HAL_Device:$device, - HAL_DescriptorSetLayoutFlagsAttr:$flags, - HAL_DescriptorSetLayoutBindingArrayAttr:$bindings - ); - let results = (outs - HAL_DescriptorSetLayout:$result - ); - - let assemblyFormat = [{ - `device` `(` $device `:` type($device) `)` - `flags` `(` $flags `)` - `bindings` `(` $bindings `)` - `:` type($result) - attr-dict-with-keyword - }]; -} - } // OpGroupDescriptorSetLayoutOps //===----------------------------------------------------------------------===//
diff --git a/compiler/src/iree/compiler/Dialect/HAL/Transforms/MaterializeResourceCaches.cpp b/compiler/src/iree/compiler/Dialect/HAL/Transforms/MaterializeResourceCaches.cpp index e60747a..9761580 100644 --- a/compiler/src/iree/compiler/Dialect/HAL/Transforms/MaterializeResourceCaches.cpp +++ b/compiler/src/iree/compiler/Dialect/HAL/Transforms/MaterializeResourceCaches.cpp
@@ -41,16 +41,12 @@ // likely it's already been run. We could fix the pass to better support // partial materialization but there's no use cases for that today. auto executableOps = llvm::to_vector<8>(moduleOp.getOps<ExecutableOp>()); - SmallVector<IREE::HAL::DescriptorSetLayoutLookupOp> - descriptorSetLayoutLookupOps; SmallVector<IREE::HAL::PipelineLayoutLookupOp> pipelineLayoutLookupOps; SmallVector<IREE::HAL::ExecutableLookupOp> executableLookupOps; for (auto funcOp : moduleOp.getOps<mlir::FunctionOpInterface>()) { for (auto &block : funcOp.getFunctionBody()) { block.walk([&](Operation *op) { - if (auto lookupOp = dyn_cast<DescriptorSetLayoutLookupOp>(op)) { - descriptorSetLayoutLookupOps.push_back(lookupOp); - } else if (auto lookupOp = dyn_cast<PipelineLayoutLookupOp>(op)) { + if (auto lookupOp = dyn_cast<PipelineLayoutLookupOp>(op)) { pipelineLayoutLookupOps.push_back(lookupOp); } else if (auto lookupOp = dyn_cast<ExecutableLookupOp>(op)) { executableLookupOps.push_back(lookupOp); @@ -58,8 +54,7 @@ }); } } - if (descriptorSetLayoutLookupOps.empty() && - pipelineLayoutLookupOps.empty() && executableLookupOps.empty()) { + if (pipelineLayoutLookupOps.empty() && executableLookupOps.empty()) { return; } @@ -85,9 +80,6 @@ // Generate cached resource singletons and replace lookup ops with direct // loads from variables. - for (auto lookupOp : descriptorSetLayoutLookupOps) { - replaceDescriptorSetLayoutLookupOp(lookupOp); - } for (auto lookupOp : pipelineLayoutLookupOps) { replacePipelineLayoutLookupOp(lookupOp); } @@ -312,17 +304,6 @@ [](OpResult result) -> Value { return result; }); } - void - replaceDescriptorSetLayoutLookupOp(DescriptorSetLayoutLookupOp &lookupOp) { - OpBuilder builder(lookupOp); - auto globalOp = defineDescriptorSetLayoutOp( - lookupOp.getLoc(), lookupOp.getBindings(), lookupOp.getFlags()); - auto loadedValue = globalOp.createLoadOp(lookupOp.getLoc(), builder) - .getLoadedGlobalValue(); - lookupOp.replaceAllUsesWith(loadedValue); - lookupOp.erase(); - } - void replacePipelineLayoutLookupOp(PipelineLayoutLookupOp &lookupOp) { OpBuilder builder(lookupOp); auto globalOp =
diff --git a/compiler/src/iree/compiler/Dialect/HAL/Transforms/test/materialize_resource_caches.mlir b/compiler/src/iree/compiler/Dialect/HAL/Transforms/test/materialize_resource_caches.mlir index 1b18c2c..287822a 100644 --- a/compiler/src/iree/compiler/Dialect/HAL/Transforms/test/materialize_resource_caches.mlir +++ b/compiler/src/iree/compiler/Dialect/HAL/Transforms/test/materialize_resource_caches.mlir
@@ -1,32 +1,5 @@ // RUN: iree-opt --split-input-file --iree-hal-materialize-resource-caches %s | FileCheck %s -// CHECK: util.global private @_descriptor_set_layout_0 : !hal.descriptor_set_layout -// CHECK-NEXT: util.initializer { -// CHECK: %[[DEVICE:.+]] = hal.devices.get %{{.+}} -// CHECK-NEXT: %[[LAYOUT:.+]] = hal.descriptor_set_layout.create -// CHECK-SAME: device(%[[DEVICE]] : !hal.device) -// CHECK-SAME: flags("None") -// CHECK-SAME: bindings([ -// CHECK-SAME: #hal.descriptor_set.binding<0, storage_buffer>, -// CHECK-SAME: #hal.descriptor_set.binding<1, storage_buffer> -// CHECK-SAME: ]) : !hal.descriptor_set_layout -// CHECK-NEXT: util.global.store %[[LAYOUT]], @_descriptor_set_layout_0 : !hal.descriptor_set_layout - -// CHECK-LABEL: @descriptorSetLayoutLookup -util.func public @descriptorSetLayoutLookup(%device : !hal.device) -> !hal.descriptor_set_layout { - // CHECK-NEXT: %[[LAYOUT:.+]] = util.global.load @_descriptor_set_layout_0 : !hal.descriptor_set_layout - %0 = hal.descriptor_set_layout.lookup device(%device : !hal.device) - flags("None") - bindings([ - #hal.descriptor_set.binding<0, storage_buffer>, - #hal.descriptor_set.binding<1, storage_buffer> - ]) : !hal.descriptor_set_layout - // CHECK-NEXT: util.return %[[LAYOUT]] - util.return %0 : !hal.descriptor_set_layout -} - -// ----- - // CHECK: util.global private @_descriptor_set_layout_0 : !hal.descriptor_set_layout // CHECK: util.global private @_pipeline_layout_0 : !hal.pipeline_layout @@ -55,53 +28,6 @@ // ----- -// CHECK: util.global private @_descriptor_set_layout_0 -// CHECK: util.global private @_descriptor_set_layout_1 - -// CHECK: util.global private @_pipeline_layout_0 : !hal.pipeline_layout -// CHECK-NEXT: util.initializer { -// CHECK-DAG: %[[SET0:.+]] = util.global.load @_descriptor_set_layout_0 : !hal.descriptor_set_layout -// CHECK-DAG: %[[SET1:.+]] = util.global.load @_descriptor_set_layout_1 : !hal.descriptor_set_layout -// CHECK-DAG: %[[DEVICE:.+]] = hal.devices.get %{{.+}} -// CHECK-NEXT: %[[LAYOUT:.+]] = hal.pipeline_layout.create -// CHECK-SAME: device(%[[DEVICE]] : !hal.device) -// CHECK-SAME: push_constants(1) -// CHECK-SAME: layouts([%[[SET0]], %[[SET1]]]) : !hal.pipeline_layout -// CHECK-NEXT: util.global.store %[[LAYOUT]], @_pipeline_layout_0 : !hal.pipeline_layout - -// CHECK-LABEL: @sharedLayoutLookup -util.func public @sharedLayoutLookup(%device : !hal.device) -> !hal.pipeline_layout { - // CHECK: %[[LAYOUT:.+]] = util.global.load @_pipeline_layout_0 : !hal.pipeline_layout - %0 = hal.pipeline_layout.lookup device(%device : !hal.device) - layout(#hal.pipeline.layout<push_constants = 1, sets = [ - #hal.descriptor_set.layout<0, bindings = [ - #hal.descriptor_set.binding<0, storage_buffer>, - #hal.descriptor_set.binding<1, storage_buffer> - ]>, - #hal.descriptor_set.layout<1, bindings = [ - #hal.descriptor_set.binding<0, uniform_buffer>, - #hal.descriptor_set.binding<1, uniform_buffer> - ]> - ]>) : !hal.pipeline_layout - // CHECK-NEXT: util.return %[[LAYOUT]] - util.return %0 : !hal.pipeline_layout -} - -// CHECK: @otherDescriptorSetLayoutLookup -util.func public @otherDescriptorSetLayoutLookup(%device : !hal.device) -> !hal.descriptor_set_layout { - // CHECK: %[[LAYOUT:.+]] = util.global.load @_descriptor_set_layout_0 : !hal.descriptor_set_layout - %0 = hal.descriptor_set_layout.lookup device(%device : !hal.device) - flags(None) - bindings([ - #hal.descriptor_set.binding<0, storage_buffer>, - #hal.descriptor_set.binding<1, storage_buffer> - ]) : !hal.descriptor_set_layout - // CHECK-NEXT: util.return %[[LAYOUT]] - util.return %0 : !hal.descriptor_set_layout -} - -// ----- - #pipeline_layout_0 = #hal.pipeline.layout<push_constants = 0, sets = [ #hal.descriptor_set.layout<0, bindings = [ #hal.descriptor_set.binding<0, storage_buffer>,