[GlobalOptimization] Fold empty-set reductions to their init operand. (#24949)
Reductions over a zero-sized dimension (e.g. input shape 2x0x4 -> 2x1x4)
lower to a linalg.generic with a 0-extent input, which crashes codegen
tiling (computeAllSliceParameters assertion).
When the reduced dimension has size 0, no input element is ever
combined,
so the result of the reduction is exactly its init operand. This adds a
pattern in RemoveZeroExtentTensors that replaces such a reduction with
its
existing init operand, so the 0-extent generic never reaches codegen.
Forwarding the init (instead of synthesizing a linalg.fill of the
reduction
identity) preserves the semantics of any initial accumulator value,
including
non-identity ones, and avoids materializing a new fill. For ONNX
empty-set
reductions the init already carries the identity (sum -> 0, prod -> 1),
so the observable result is unchanged.
Adds lit coverage for the rewrite:
- a reduction with a non-identity initial accumulator (init preserved),
- dynamic output dimensions.
Fixes 8 onnx_ops *_empty_set cases:
test_reduce_sum_empty_set
test_reduce_sum_square_empty_set
test_reduce_sum_square_empty_set_expanded
test_reduce_l1_empty_set
test_reduce_l1_empty_set_expanded
test_reduce_l2_empty_set
test_reduce_log_sum_empty_set
test_reduce_log_sum_exp_empty_set
Related to iree-org/iree#24378
Assisted-by: Claude Code, Doubao, DeepSeek
Signed-off-by: Yalong <yalong@multicorewareinc.com>
diff --git a/compiler/src/iree/compiler/GlobalOptimization/RemoveZeroExtentTensors.cpp b/compiler/src/iree/compiler/GlobalOptimization/RemoveZeroExtentTensors.cpp
index 71bc4e7..3e0bf74 100644
--- a/compiler/src/iree/compiler/GlobalOptimization/RemoveZeroExtentTensors.cpp
+++ b/compiler/src/iree/compiler/GlobalOptimization/RemoveZeroExtentTensors.cpp
@@ -5,6 +5,7 @@
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#include "iree/compiler/GlobalOptimization/Passes.h"
+#include "mlir/Dialect/Linalg/IR/Linalg.h"
#include "mlir/Dialect/MemRef/Transforms/Transforms.h"
#include "mlir/Dialect/Tensor/IR/Tensor.h"
#include "mlir/Interfaces/FunctionInterfaces.h"
@@ -76,12 +77,60 @@
}
};
+struct FoldZeroExtentReduction : OpRewritePattern<linalg::GenericOp> {
+ using OpRewritePattern<linalg::GenericOp>::OpRewritePattern;
+
+ LogicalResult matchAndRewrite(linalg::GenericOp genericOp,
+ PatternRewriter &rewriter) const override {
+ // Must be a single-result reduction on tensors.
+ if (genericOp.getNumReductionLoops() == 0) {
+ return failure();
+ }
+ if (genericOp.getNumDpsInits() != 1) {
+ return failure();
+ }
+ if (!genericOp.hasPureTensorSemantics()) {
+ return failure();
+ }
+
+ auto resultType = dyn_cast<RankedTensorType>(genericOp.getResultTypes()[0]);
+ if (!resultType) {
+ return failure();
+ }
+
+ // Output must be non-empty; the zero-sized dim is on the (reduced) input.
+ if (isZeroExtent(resultType)) {
+ return failure();
+ }
+
+ // Require at least one zero-extent input operand.
+ bool hasZeroExtentInput = false;
+ for (Value in : genericOp.getDpsInputs()) {
+ if (isZeroExtent(in.getType())) {
+ hasZeroExtentInput = true;
+ break;
+ }
+ }
+ if (!hasZeroExtentInput) {
+ return failure();
+ }
+
+ // With a zero-sized reduction dimension, no input element is combined,
+ // so the result equals the init operand. Forward it directly; this
+ // preserves the semantics of any initial accumulator value (identity or
+ // not) without materializing a new fill.
+ Value init = genericOp.getDpsInitOperand(0)->get();
+ rewriter.replaceOp(genericOp, init);
+ return success();
+ }
+};
+
namespace {
struct RemoveZeroExtentTensorsPass
: impl::RemoveZeroExtentTensorsPassBase<RemoveZeroExtentTensorsPass> {
void getDependentDialects(DialectRegistry ®istry) const override {
- registry.insert<tensor::TensorDialect>();
+ registry.insert<tensor::TensorDialect, linalg::LinalgDialect>();
}
void runOnOperation() override;
};
@@ -91,11 +140,10 @@
void RemoveZeroExtentTensorsPass::runOnOperation() {
mlir::FunctionOpInterface funcOp = getOperation();
MLIRContext *context = &getContext();
- SmallVector<Operation *> opWithZeroExtentTensorOperands;
- SmallVector<tensor::InsertSliceOp> insertSliceOps;
RewritePatternSet patterns(context);
- patterns.insert<FoldZeroExtentInserts, ReplaceZeroExtentOperands>(context);
+ patterns.insert<FoldZeroExtentReduction, FoldZeroExtentInserts,
+ ReplaceZeroExtentOperands>(context);
memref::populateResolveRankedShapedTypeResultDimsPatterns(patterns);
if (failed(applyPatternsGreedily(funcOp, std::move(patterns)))) {
funcOp->emitOpError("failed to run canonicalizations (proxy for DCE)");
diff --git a/compiler/src/iree/compiler/GlobalOptimization/test/remove_zero_extent_tensors.mlir b/compiler/src/iree/compiler/GlobalOptimization/test/remove_zero_extent_tensors.mlir
index 4495870..50f3bbe 100644
--- a/compiler/src/iree/compiler/GlobalOptimization/test/remove_zero_extent_tensors.mlir
+++ b/compiler/src/iree/compiler/GlobalOptimization/test/remove_zero_extent_tensors.mlir
@@ -25,3 +25,62 @@
}
// CHECK: util.func public @zero_sized_tensor_insert(%[[ARG0:.+]]: tensor<?x?xf32>
// CHECK: util.return %[[ARG0]]
+
+// -----
+
+// A reduction over a zero-sized dimension (2x0x4 -> 2x1x4) has no input
+// elements combined, so the result is exactly the init operand. Here the init
+// is a *non-identity* accumulator (filled with 5.0), so folding must forward
+// the init and preserve that value -- it must NOT synthesize a fresh
+// identity-filled tensor.
+#map0 = affine_map<(d0, d1, d2) -> (d0, d1, d2)>
+#map1 = affine_map<(d0, d1, d2) -> (d0, 0, d2)>
+util.func public @zero_extent_reduction_non_identity_init(
+ %arg0 : tensor<2x0x4xf32>) -> tensor<2x1x4xf32> {
+ %cst = arith.constant 5.000000e+00 : f32
+ %empty = tensor.empty() : tensor<2x1x4xf32>
+ %init = linalg.fill ins(%cst : f32) outs(%empty : tensor<2x1x4xf32>) -> tensor<2x1x4xf32>
+ %0 = linalg.generic {
+ indexing_maps = [#map0, #map1],
+ iterator_types = ["parallel", "reduction", "parallel"]}
+ ins(%arg0 : tensor<2x0x4xf32>)
+ outs(%init : tensor<2x1x4xf32>) {
+ ^bb0(%in: f32, %out: f32):
+ %1 = arith.addf %in, %out : f32
+ linalg.yield %1 : f32
+ } -> tensor<2x1x4xf32>
+ util.return %0 : tensor<2x1x4xf32>
+}
+// CHECK: util.func public @zero_extent_reduction_non_identity_init
+// CHECK-DAG: %[[CST:.+]] = arith.constant 5.000000e+00 : f32
+// CHECK-DAG: %[[EMPTY:.+]] = tensor.empty() : tensor<2x1x4xf32>
+// CHECK: %[[INIT:.+]] = linalg.fill ins(%[[CST]]{{.*}} outs(%[[EMPTY]]
+// CHECK-NOT: linalg.generic
+// CHECK: util.return %[[INIT]]
+
+// -----
+
+// Same fold with dynamic output dimensions: the reduced input dim is zero
+// (?x0x4 -> ?x1x4) and the init carries the dynamic size. Folding forwards the
+// init directly; no linalg.generic and no new fill are introduced.
+#map0 = affine_map<(d0, d1, d2) -> (d0, d1, d2)>
+#map1 = affine_map<(d0, d1, d2) -> (d0, 0, d2)>
+util.func public @zero_extent_reduction_dynamic(
+ %arg0 : tensor<?x0x4xf32>, %init : tensor<?x1x4xf32>) -> tensor<?x1x4xf32> {
+ %0 = linalg.generic {
+ indexing_maps = [#map0, #map1],
+ iterator_types = ["parallel", "reduction", "parallel"]}
+ ins(%arg0 : tensor<?x0x4xf32>)
+ outs(%init : tensor<?x1x4xf32>) {
+ ^bb0(%in: f32, %out: f32):
+ %1 = arith.addf %in, %out : f32
+ linalg.yield %1 : f32
+ } -> tensor<?x1x4xf32>
+ util.return %0 : tensor<?x1x4xf32>
+}
+// CHECK: util.func public @zero_extent_reduction_dynamic
+// CHECK-SAME: %[[ARG0:.+]]: tensor<?x0x4xf32>
+// CHECK-SAME: %[[INIT:.+]]: tensor<?x1x4xf32>
+// CHECK-NOT: linalg.generic
+// CHECK-NOT: linalg.fill
+// CHECK: util.return %[[INIT]]
diff --git a/tests/external/iree-test-suites/onnx_ops/onnx_ops_cpu_llvm_sync_O0.json b/tests/external/iree-test-suites/onnx_ops/onnx_ops_cpu_llvm_sync_O0.json
index c8d9bf1..18c51a6 100644
--- a/tests/external/iree-test-suites/onnx_ops/onnx_ops_cpu_llvm_sync_O0.json
+++ b/tests/external/iree-test-suites/onnx_ops/onnx_ops_cpu_llvm_sync_O0.json
@@ -115,8 +115,6 @@
"onnx/node/generated/test_reduce_l1_do_not_keepdims_example_expanded",
"onnx/node/generated/test_reduce_l1_do_not_keepdims_random",
"onnx/node/generated/test_reduce_l1_do_not_keepdims_random_expanded",
- "onnx/node/generated/test_reduce_l1_empty_set",
- "onnx/node/generated/test_reduce_l1_empty_set_expanded",
"onnx/node/generated/test_reduce_l1_keep_dims_example",
"onnx/node/generated/test_reduce_l1_keep_dims_example_expanded",
"onnx/node/generated/test_reduce_l1_keep_dims_random",
@@ -131,7 +129,6 @@
"onnx/node/generated/test_reduce_l2_do_not_keepdims_example_expanded",
"onnx/node/generated/test_reduce_l2_do_not_keepdims_random",
"onnx/node/generated/test_reduce_l2_do_not_keepdims_random_expanded",
- "onnx/node/generated/test_reduce_l2_empty_set",
"onnx/node/generated/test_reduce_l2_empty_set_expanded",
"onnx/node/generated/test_reduce_l2_keep_dims_example",
"onnx/node/generated/test_reduce_l2_keep_dims_example_expanded",
@@ -144,7 +141,6 @@
"onnx/node/generated/test_reduce_log_sum_asc_axes_expanded",
"onnx/node/generated/test_reduce_log_sum_default_expanded",
"onnx/node/generated/test_reduce_log_sum_desc_axes_expanded",
- "onnx/node/generated/test_reduce_log_sum_empty_set",
"onnx/node/generated/test_reduce_log_sum_empty_set_expanded",
"onnx/node/generated/test_reduce_log_sum_exp_default_axes_keepdims_example_expanded",
"onnx/node/generated/test_reduce_log_sum_exp_default_axes_keepdims_random_expanded",
@@ -152,7 +148,6 @@
"onnx/node/generated/test_reduce_log_sum_exp_do_not_keepdims_example_expanded",
"onnx/node/generated/test_reduce_log_sum_exp_do_not_keepdims_random",
"onnx/node/generated/test_reduce_log_sum_exp_do_not_keepdims_random_expanded",
- "onnx/node/generated/test_reduce_log_sum_exp_empty_set",
"onnx/node/generated/test_reduce_log_sum_exp_empty_set_expanded",
"onnx/node/generated/test_reduce_log_sum_exp_keepdims_example",
"onnx/node/generated/test_reduce_log_sum_exp_keepdims_example_expanded",
@@ -190,7 +185,6 @@
"onnx/node/generated/test_reduce_prod_negative_axes_keepdims_random",
"onnx/node/generated/test_reduce_sum_do_not_keepdims_example",
"onnx/node/generated/test_reduce_sum_do_not_keepdims_random",
- "onnx/node/generated/test_reduce_sum_empty_set",
"onnx/node/generated/test_reduce_sum_keepdims_example",
"onnx/node/generated/test_reduce_sum_keepdims_random",
"onnx/node/generated/test_reduce_sum_negative_axes_keepdims_example",
@@ -199,8 +193,6 @@
"onnx/node/generated/test_reduce_sum_square_do_not_keepdims_example_expanded",
"onnx/node/generated/test_reduce_sum_square_do_not_keepdims_random",
"onnx/node/generated/test_reduce_sum_square_do_not_keepdims_random_expanded",
- "onnx/node/generated/test_reduce_sum_square_empty_set",
- "onnx/node/generated/test_reduce_sum_square_empty_set_expanded",
"onnx/node/generated/test_reduce_sum_square_keepdims_example",
"onnx/node/generated/test_reduce_sum_square_keepdims_example_expanded",
"onnx/node/generated/test_reduce_sum_square_keepdims_random",
diff --git a/tests/external/iree-test-suites/onnx_ops/onnx_ops_cpu_llvm_sync_O2.json b/tests/external/iree-test-suites/onnx_ops/onnx_ops_cpu_llvm_sync_O2.json
index 7b15527..0ee8b70 100644
--- a/tests/external/iree-test-suites/onnx_ops/onnx_ops_cpu_llvm_sync_O2.json
+++ b/tests/external/iree-test-suites/onnx_ops/onnx_ops_cpu_llvm_sync_O2.json
@@ -116,8 +116,6 @@
"onnx/node/generated/test_reduce_l1_do_not_keepdims_example_expanded",
"onnx/node/generated/test_reduce_l1_do_not_keepdims_random",
"onnx/node/generated/test_reduce_l1_do_not_keepdims_random_expanded",
- "onnx/node/generated/test_reduce_l1_empty_set",
- "onnx/node/generated/test_reduce_l1_empty_set_expanded",
"onnx/node/generated/test_reduce_l1_keep_dims_example",
"onnx/node/generated/test_reduce_l1_keep_dims_example_expanded",
"onnx/node/generated/test_reduce_l1_keep_dims_random",
@@ -132,7 +130,6 @@
"onnx/node/generated/test_reduce_l2_do_not_keepdims_example_expanded",
"onnx/node/generated/test_reduce_l2_do_not_keepdims_random",
"onnx/node/generated/test_reduce_l2_do_not_keepdims_random_expanded",
- "onnx/node/generated/test_reduce_l2_empty_set",
"onnx/node/generated/test_reduce_l2_empty_set_expanded",
"onnx/node/generated/test_reduce_l2_keep_dims_example",
"onnx/node/generated/test_reduce_l2_keep_dims_example_expanded",
@@ -145,7 +142,6 @@
"onnx/node/generated/test_reduce_log_sum_asc_axes_expanded",
"onnx/node/generated/test_reduce_log_sum_default_expanded",
"onnx/node/generated/test_reduce_log_sum_desc_axes_expanded",
- "onnx/node/generated/test_reduce_log_sum_empty_set",
"onnx/node/generated/test_reduce_log_sum_empty_set_expanded",
"onnx/node/generated/test_reduce_log_sum_exp_default_axes_keepdims_example_expanded",
"onnx/node/generated/test_reduce_log_sum_exp_default_axes_keepdims_random_expanded",
@@ -153,7 +149,6 @@
"onnx/node/generated/test_reduce_log_sum_exp_do_not_keepdims_example_expanded",
"onnx/node/generated/test_reduce_log_sum_exp_do_not_keepdims_random",
"onnx/node/generated/test_reduce_log_sum_exp_do_not_keepdims_random_expanded",
- "onnx/node/generated/test_reduce_log_sum_exp_empty_set",
"onnx/node/generated/test_reduce_log_sum_exp_empty_set_expanded",
"onnx/node/generated/test_reduce_log_sum_exp_keepdims_example",
"onnx/node/generated/test_reduce_log_sum_exp_keepdims_example_expanded",
@@ -191,7 +186,6 @@
"onnx/node/generated/test_reduce_prod_negative_axes_keepdims_random",
"onnx/node/generated/test_reduce_sum_do_not_keepdims_example",
"onnx/node/generated/test_reduce_sum_do_not_keepdims_random",
- "onnx/node/generated/test_reduce_sum_empty_set",
"onnx/node/generated/test_reduce_sum_keepdims_example",
"onnx/node/generated/test_reduce_sum_keepdims_random",
"onnx/node/generated/test_reduce_sum_negative_axes_keepdims_example",
@@ -200,8 +194,6 @@
"onnx/node/generated/test_reduce_sum_square_do_not_keepdims_example_expanded",
"onnx/node/generated/test_reduce_sum_square_do_not_keepdims_random",
"onnx/node/generated/test_reduce_sum_square_do_not_keepdims_random_expanded",
- "onnx/node/generated/test_reduce_sum_square_empty_set",
- "onnx/node/generated/test_reduce_sum_square_empty_set_expanded",
"onnx/node/generated/test_reduce_sum_square_keepdims_example",
"onnx/node/generated/test_reduce_sum_square_keepdims_example_expanded",
"onnx/node/generated/test_reduce_sum_square_keepdims_random",
diff --git a/tests/external/iree-test-suites/onnx_ops/onnx_ops_gpu_hip_rdna3_O3.json b/tests/external/iree-test-suites/onnx_ops/onnx_ops_gpu_hip_rdna3_O3.json
index d517418..9842fd1 100644
--- a/tests/external/iree-test-suites/onnx_ops/onnx_ops_gpu_hip_rdna3_O3.json
+++ b/tests/external/iree-test-suites/onnx_ops/onnx_ops_gpu_hip_rdna3_O3.json
@@ -125,8 +125,6 @@
"onnx/node/generated/test_reduce_l1_do_not_keepdims_example_expanded",
"onnx/node/generated/test_reduce_l1_do_not_keepdims_random",
"onnx/node/generated/test_reduce_l1_do_not_keepdims_random_expanded",
- "onnx/node/generated/test_reduce_l1_empty_set",
- "onnx/node/generated/test_reduce_l1_empty_set_expanded",
"onnx/node/generated/test_reduce_l1_keep_dims_example",
"onnx/node/generated/test_reduce_l1_keep_dims_example_expanded",
"onnx/node/generated/test_reduce_l1_keep_dims_random",
@@ -141,7 +139,6 @@
"onnx/node/generated/test_reduce_l2_do_not_keepdims_example_expanded",
"onnx/node/generated/test_reduce_l2_do_not_keepdims_random",
"onnx/node/generated/test_reduce_l2_do_not_keepdims_random_expanded",
- "onnx/node/generated/test_reduce_l2_empty_set",
"onnx/node/generated/test_reduce_l2_empty_set_expanded",
"onnx/node/generated/test_reduce_l2_keep_dims_example",
"onnx/node/generated/test_reduce_l2_keep_dims_example_expanded",
@@ -154,7 +151,6 @@
"onnx/node/generated/test_reduce_log_sum_asc_axes_expanded",
"onnx/node/generated/test_reduce_log_sum_default_expanded",
"onnx/node/generated/test_reduce_log_sum_desc_axes_expanded",
- "onnx/node/generated/test_reduce_log_sum_empty_set",
"onnx/node/generated/test_reduce_log_sum_empty_set_expanded",
"onnx/node/generated/test_reduce_log_sum_exp_default_axes_keepdims_example_expanded",
"onnx/node/generated/test_reduce_log_sum_exp_default_axes_keepdims_random_expanded",
@@ -162,7 +158,6 @@
"onnx/node/generated/test_reduce_log_sum_exp_do_not_keepdims_example_expanded",
"onnx/node/generated/test_reduce_log_sum_exp_do_not_keepdims_random",
"onnx/node/generated/test_reduce_log_sum_exp_do_not_keepdims_random_expanded",
- "onnx/node/generated/test_reduce_log_sum_exp_empty_set",
"onnx/node/generated/test_reduce_log_sum_exp_empty_set_expanded",
"onnx/node/generated/test_reduce_log_sum_exp_keepdims_example",
"onnx/node/generated/test_reduce_log_sum_exp_keepdims_example_expanded",
@@ -200,7 +195,6 @@
"onnx/node/generated/test_reduce_prod_negative_axes_keepdims_random",
"onnx/node/generated/test_reduce_sum_do_not_keepdims_example",
"onnx/node/generated/test_reduce_sum_do_not_keepdims_random",
- "onnx/node/generated/test_reduce_sum_empty_set",
"onnx/node/generated/test_reduce_sum_keepdims_example",
"onnx/node/generated/test_reduce_sum_keepdims_random",
"onnx/node/generated/test_reduce_sum_negative_axes_keepdims_example",
@@ -209,8 +203,6 @@
"onnx/node/generated/test_reduce_sum_square_do_not_keepdims_example_expanded",
"onnx/node/generated/test_reduce_sum_square_do_not_keepdims_random",
"onnx/node/generated/test_reduce_sum_square_do_not_keepdims_random_expanded",
- "onnx/node/generated/test_reduce_sum_square_empty_set",
- "onnx/node/generated/test_reduce_sum_square_empty_set_expanded",
"onnx/node/generated/test_reduce_sum_square_keepdims_example",
"onnx/node/generated/test_reduce_sum_square_keepdims_example_expanded",
"onnx/node/generated/test_reduce_sum_square_keepdims_random",
@@ -323,11 +315,16 @@
"onnx/node/generated/test_reduce_l1_default_axes_keepdims_example_expanded",
"onnx/node/generated/test_reduce_l1_default_axes_keepdims_random",
"onnx/node/generated/test_reduce_l1_default_axes_keepdims_random_expanded",
+ "onnx/node/generated/test_reduce_l1_empty_set",
+ "onnx/node/generated/test_reduce_l1_empty_set_expanded",
"onnx/node/generated/test_reduce_l2_default_axes_keepdims_example",
"onnx/node/generated/test_reduce_l2_default_axes_keepdims_random",
+ "onnx/node/generated/test_reduce_l2_empty_set",
"onnx/node/generated/test_reduce_log_sum_default",
+ "onnx/node/generated/test_reduce_log_sum_empty_set",
"onnx/node/generated/test_reduce_log_sum_exp_default_axes_keepdims_example",
"onnx/node/generated/test_reduce_log_sum_exp_default_axes_keepdims_random",
+ "onnx/node/generated/test_reduce_log_sum_exp_empty_set",
"onnx/node/generated/test_reduce_max_empty_set",
"onnx/node/generated/test_reduce_mean_default_axes_keepdims_example",
"onnx/node/generated/test_reduce_mean_default_axes_keepdims_random",
@@ -336,11 +333,14 @@
"onnx/node/generated/test_reduce_sum_default_axes_keepdims_random",
"onnx/node/generated/test_reduce_sum_empty_axes_input_noop",
"onnx/node/generated/test_reduce_sum_empty_axes_input_noop_example",
+ "onnx/node/generated/test_reduce_sum_empty_set",
"onnx/node/generated/test_reduce_sum_empty_set_non_reduced_axis_zero",
"onnx/node/generated/test_reduce_sum_square_default_axes_keepdims_example",
"onnx/node/generated/test_reduce_sum_square_default_axes_keepdims_example_expanded",
"onnx/node/generated/test_reduce_sum_square_default_axes_keepdims_random",
"onnx/node/generated/test_reduce_sum_square_default_axes_keepdims_random_expanded",
+ "onnx/node/generated/test_reduce_sum_square_empty_set",
+ "onnx/node/generated/test_reduce_sum_square_empty_set_expanded",
"onnx/node/generated/test_resize_downsample_scales_cubic_align_corners",
"onnx/node/generated/test_resize_downsample_scales_linear_align_corners",
"onnx/node/generated/test_scan_sum",
diff --git a/tests/external/iree-test-suites/onnx_ops/onnx_ops_gpu_hip_rdna4_O3.json b/tests/external/iree-test-suites/onnx_ops/onnx_ops_gpu_hip_rdna4_O3.json
index 0238939..e379796 100644
--- a/tests/external/iree-test-suites/onnx_ops/onnx_ops_gpu_hip_rdna4_O3.json
+++ b/tests/external/iree-test-suites/onnx_ops/onnx_ops_gpu_hip_rdna4_O3.json
@@ -125,8 +125,6 @@
"onnx/node/generated/test_reduce_l1_do_not_keepdims_example_expanded",
"onnx/node/generated/test_reduce_l1_do_not_keepdims_random",
"onnx/node/generated/test_reduce_l1_do_not_keepdims_random_expanded",
- "onnx/node/generated/test_reduce_l1_empty_set",
- "onnx/node/generated/test_reduce_l1_empty_set_expanded",
"onnx/node/generated/test_reduce_l1_keep_dims_example",
"onnx/node/generated/test_reduce_l1_keep_dims_example_expanded",
"onnx/node/generated/test_reduce_l1_keep_dims_random",
@@ -141,7 +139,6 @@
"onnx/node/generated/test_reduce_l2_do_not_keepdims_example_expanded",
"onnx/node/generated/test_reduce_l2_do_not_keepdims_random",
"onnx/node/generated/test_reduce_l2_do_not_keepdims_random_expanded",
- "onnx/node/generated/test_reduce_l2_empty_set",
"onnx/node/generated/test_reduce_l2_empty_set_expanded",
"onnx/node/generated/test_reduce_l2_keep_dims_example",
"onnx/node/generated/test_reduce_l2_keep_dims_example_expanded",
@@ -154,7 +151,6 @@
"onnx/node/generated/test_reduce_log_sum_asc_axes_expanded",
"onnx/node/generated/test_reduce_log_sum_default_expanded",
"onnx/node/generated/test_reduce_log_sum_desc_axes_expanded",
- "onnx/node/generated/test_reduce_log_sum_empty_set",
"onnx/node/generated/test_reduce_log_sum_empty_set_expanded",
"onnx/node/generated/test_reduce_log_sum_exp_default_axes_keepdims_example_expanded",
"onnx/node/generated/test_reduce_log_sum_exp_default_axes_keepdims_random_expanded",
@@ -162,7 +158,6 @@
"onnx/node/generated/test_reduce_log_sum_exp_do_not_keepdims_example_expanded",
"onnx/node/generated/test_reduce_log_sum_exp_do_not_keepdims_random",
"onnx/node/generated/test_reduce_log_sum_exp_do_not_keepdims_random_expanded",
- "onnx/node/generated/test_reduce_log_sum_exp_empty_set",
"onnx/node/generated/test_reduce_log_sum_exp_empty_set_expanded",
"onnx/node/generated/test_reduce_log_sum_exp_keepdims_example",
"onnx/node/generated/test_reduce_log_sum_exp_keepdims_example_expanded",
@@ -200,7 +195,6 @@
"onnx/node/generated/test_reduce_prod_negative_axes_keepdims_random",
"onnx/node/generated/test_reduce_sum_do_not_keepdims_example",
"onnx/node/generated/test_reduce_sum_do_not_keepdims_random",
- "onnx/node/generated/test_reduce_sum_empty_set",
"onnx/node/generated/test_reduce_sum_keepdims_example",
"onnx/node/generated/test_reduce_sum_keepdims_random",
"onnx/node/generated/test_reduce_sum_negative_axes_keepdims_example",
@@ -209,8 +203,6 @@
"onnx/node/generated/test_reduce_sum_square_do_not_keepdims_example_expanded",
"onnx/node/generated/test_reduce_sum_square_do_not_keepdims_random",
"onnx/node/generated/test_reduce_sum_square_do_not_keepdims_random_expanded",
- "onnx/node/generated/test_reduce_sum_square_empty_set",
- "onnx/node/generated/test_reduce_sum_square_empty_set_expanded",
"onnx/node/generated/test_reduce_sum_square_keepdims_example",
"onnx/node/generated/test_reduce_sum_square_keepdims_example_expanded",
"onnx/node/generated/test_reduce_sum_square_keepdims_random",
@@ -322,11 +314,16 @@
"onnx/node/generated/test_reduce_l1_default_axes_keepdims_example_expanded",
"onnx/node/generated/test_reduce_l1_default_axes_keepdims_random",
"onnx/node/generated/test_reduce_l1_default_axes_keepdims_random_expanded",
+ "onnx/node/generated/test_reduce_l1_empty_set",
+ "onnx/node/generated/test_reduce_l1_empty_set_expanded",
"onnx/node/generated/test_reduce_l2_default_axes_keepdims_example",
"onnx/node/generated/test_reduce_l2_default_axes_keepdims_random",
+ "onnx/node/generated/test_reduce_l2_empty_set",
"onnx/node/generated/test_reduce_log_sum_default",
+ "onnx/node/generated/test_reduce_log_sum_empty_set",
"onnx/node/generated/test_reduce_log_sum_exp_default_axes_keepdims_example",
"onnx/node/generated/test_reduce_log_sum_exp_default_axes_keepdims_random",
+ "onnx/node/generated/test_reduce_log_sum_exp_empty_set",
"onnx/node/generated/test_reduce_max_empty_set",
"onnx/node/generated/test_reduce_mean_default_axes_keepdims_example",
"onnx/node/generated/test_reduce_mean_default_axes_keepdims_random",
@@ -335,11 +332,14 @@
"onnx/node/generated/test_reduce_sum_default_axes_keepdims_random",
"onnx/node/generated/test_reduce_sum_empty_axes_input_noop",
"onnx/node/generated/test_reduce_sum_empty_axes_input_noop_example",
+ "onnx/node/generated/test_reduce_sum_empty_set",
"onnx/node/generated/test_reduce_sum_empty_set_non_reduced_axis_zero",
"onnx/node/generated/test_reduce_sum_square_default_axes_keepdims_example",
"onnx/node/generated/test_reduce_sum_square_default_axes_keepdims_example_expanded",
"onnx/node/generated/test_reduce_sum_square_default_axes_keepdims_random",
"onnx/node/generated/test_reduce_sum_square_default_axes_keepdims_random_expanded",
+ "onnx/node/generated/test_reduce_sum_square_empty_set",
+ "onnx/node/generated/test_reduce_sum_square_empty_set_expanded",
"onnx/node/generated/test_resize_downsample_scales_cubic_align_corners",
"onnx/node/generated/test_resize_downsample_scales_linear_align_corners",
"onnx/node/generated/test_scan_sum",
diff --git a/tests/external/iree-test-suites/onnx_ops/onnx_ops_gpu_vulkan_rdna3_O0.json b/tests/external/iree-test-suites/onnx_ops/onnx_ops_gpu_vulkan_rdna3_O0.json
index 26a6f9b..0397b35 100644
--- a/tests/external/iree-test-suites/onnx_ops/onnx_ops_gpu_vulkan_rdna3_O0.json
+++ b/tests/external/iree-test-suites/onnx_ops/onnx_ops_gpu_vulkan_rdna3_O0.json
@@ -128,8 +128,6 @@
"onnx/node/generated/test_reduce_l1_do_not_keepdims_example_expanded",
"onnx/node/generated/test_reduce_l1_do_not_keepdims_random",
"onnx/node/generated/test_reduce_l1_do_not_keepdims_random_expanded",
- "onnx/node/generated/test_reduce_l1_empty_set",
- "onnx/node/generated/test_reduce_l1_empty_set_expanded",
"onnx/node/generated/test_reduce_l1_keep_dims_example",
"onnx/node/generated/test_reduce_l1_keep_dims_example_expanded",
"onnx/node/generated/test_reduce_l1_keep_dims_random",
@@ -144,7 +142,6 @@
"onnx/node/generated/test_reduce_l2_do_not_keepdims_example_expanded",
"onnx/node/generated/test_reduce_l2_do_not_keepdims_random",
"onnx/node/generated/test_reduce_l2_do_not_keepdims_random_expanded",
- "onnx/node/generated/test_reduce_l2_empty_set",
"onnx/node/generated/test_reduce_l2_empty_set_expanded",
"onnx/node/generated/test_reduce_l2_keep_dims_example",
"onnx/node/generated/test_reduce_l2_keep_dims_example_expanded",
@@ -157,7 +154,6 @@
"onnx/node/generated/test_reduce_log_sum_asc_axes_expanded",
"onnx/node/generated/test_reduce_log_sum_default_expanded",
"onnx/node/generated/test_reduce_log_sum_desc_axes_expanded",
- "onnx/node/generated/test_reduce_log_sum_empty_set",
"onnx/node/generated/test_reduce_log_sum_empty_set_expanded",
"onnx/node/generated/test_reduce_log_sum_exp_default_axes_keepdims_example_expanded",
"onnx/node/generated/test_reduce_log_sum_exp_default_axes_keepdims_random_expanded",
@@ -165,7 +161,6 @@
"onnx/node/generated/test_reduce_log_sum_exp_do_not_keepdims_example_expanded",
"onnx/node/generated/test_reduce_log_sum_exp_do_not_keepdims_random",
"onnx/node/generated/test_reduce_log_sum_exp_do_not_keepdims_random_expanded",
- "onnx/node/generated/test_reduce_log_sum_exp_empty_set",
"onnx/node/generated/test_reduce_log_sum_exp_empty_set_expanded",
"onnx/node/generated/test_reduce_log_sum_exp_keepdims_example",
"onnx/node/generated/test_reduce_log_sum_exp_keepdims_example_expanded",
@@ -203,7 +198,6 @@
"onnx/node/generated/test_reduce_prod_negative_axes_keepdims_random",
"onnx/node/generated/test_reduce_sum_do_not_keepdims_example",
"onnx/node/generated/test_reduce_sum_do_not_keepdims_random",
- "onnx/node/generated/test_reduce_sum_empty_set",
"onnx/node/generated/test_reduce_sum_keepdims_example",
"onnx/node/generated/test_reduce_sum_keepdims_random",
"onnx/node/generated/test_reduce_sum_negative_axes_keepdims_example",
@@ -212,8 +206,6 @@
"onnx/node/generated/test_reduce_sum_square_do_not_keepdims_example_expanded",
"onnx/node/generated/test_reduce_sum_square_do_not_keepdims_random",
"onnx/node/generated/test_reduce_sum_square_do_not_keepdims_random_expanded",
- "onnx/node/generated/test_reduce_sum_square_empty_set",
- "onnx/node/generated/test_reduce_sum_square_empty_set_expanded",
"onnx/node/generated/test_reduce_sum_square_keepdims_example",
"onnx/node/generated/test_reduce_sum_square_keepdims_example_expanded",
"onnx/node/generated/test_reduce_sum_square_keepdims_random",