Integrate llvm-project @f1595ecfdce5387e41826fd72ff930a1a39ae398 (#18897)
- bump llvm-project to
https://github.com/llvm/llvm-project/commit/f1595ecfdce5387e41826fd72ff930a1a39ae398
- revert
https://github.com/iree-org/llvm-project/commit/1004865f1ca41a9581da8747f34b29862d3ebc3d
due to compiler failures in VectorDistribute. Tracked in
https://github.com/iree-org/iree/issues/18955.
- bump stablehlo to
https://github.com/openxla/stablehlo/commit/c32f7c215d9bed2d4077a7f884781f02e61df292
- bump torch-mlir to
https://github.com/llvm/torch-mlir/commit/8b0bf2e2930cc4ef0c9e1212b31c2c4fad2d9141
- revert
https://github.com/llvm/torch-mlir/commit/55ff110dc29cab7e2495ccdbec9a60512c29c665
due to new onnx failures. Tracked in
https://github.com/iree-org/iree/issues/18961
---------
Signed-off-by: Max Dawkins <max.dawkins@gmail.com>
diff --git a/compiler/plugins/input/StableHLO/Conversion/StableHLOToIREEInputDialects.cpp b/compiler/plugins/input/StableHLO/Conversion/StableHLOToIREEInputDialects.cpp
index 0180abb..5c6b4a0 100644
--- a/compiler/plugins/input/StableHLO/Conversion/StableHLOToIREEInputDialects.cpp
+++ b/compiler/plugins/input/StableHLO/Conversion/StableHLOToIREEInputDialects.cpp
@@ -424,11 +424,11 @@
}
};
-std::optional<Value> scalarToTensor(OpBuilder &builder, Type /*type*/,
- ValueRange inputs, Location loc) {
+Value scalarToTensor(OpBuilder &builder, Type /*type*/, ValueRange inputs,
+ Location loc) {
assert(inputs.size() == 1);
if (isa<ShapedType>(inputs.front().getType())) {
- return std::nullopt;
+ return Value();
}
return builder
.create<tensor::FromElementsOp>(
diff --git a/compiler/plugins/input/StableHLO/Conversion/StableHLOToLinalgExt.cpp b/compiler/plugins/input/StableHLO/Conversion/StableHLOToLinalgExt.cpp
index cc7fa2b..831ca72 100644
--- a/compiler/plugins/input/StableHLO/Conversion/StableHLOToLinalgExt.cpp
+++ b/compiler/plugins/input/StableHLO/Conversion/StableHLOToLinalgExt.cpp
@@ -65,13 +65,13 @@
return shapedType;
}
-std::optional<Value> materializeCast(OpBuilder &builder, Type toType,
- ValueRange inputs, Location loc) {
+Value materializeCast(OpBuilder &builder, Type toType, ValueRange inputs,
+ Location loc) {
assert(inputs.size() == 1 && "too many inputs to type conversion");
Value fromValue = inputs[0];
auto fromType = dyn_cast<RankedTensorType>(fromValue.getType());
if (!fromType)
- return std::nullopt;
+ return Value();
if (auto intFromType = dyn_cast<IntegerType>(fromType.getElementType())) {
Type castType = getElementTypeOrSelf(toType);
diff --git a/compiler/plugins/input/StableHLO/Conversion/TypeConversion.cpp b/compiler/plugins/input/StableHLO/Conversion/TypeConversion.cpp
index 947fcba..62193b0 100644
--- a/compiler/plugins/input/StableHLO/Conversion/TypeConversion.cpp
+++ b/compiler/plugins/input/StableHLO/Conversion/TypeConversion.cpp
@@ -31,36 +31,35 @@
return shapedType;
}
-std::optional<Value> materializeCastFromIllegal(OpBuilder &builder, Type type,
- ValueRange inputs,
- Location loc) {
+Value materializeCastFromIllegal(OpBuilder &builder, Type type,
+ ValueRange inputs, Location loc) {
Type fromType = getElementTypeOrSelf(inputs[0].getType());
Type toType = getElementTypeOrSelf(type);
if ((!fromType.isSignedInteger() && !fromType.isUnsignedInteger()) ||
!toType.isSignlessInteger())
- return std::nullopt;
+ return Value();
// Use unrealized conversion casts to do signful->signless conversions.
return builder.create<UnrealizedConversionCastOp>(loc, type, inputs[0])
->getResult(0);
}
-std::optional<Value> materializeCastToIllegal(OpBuilder &builder, Type type,
- ValueRange inputs, Location loc) {
+Value materializeCastToIllegal(OpBuilder &builder, Type type, ValueRange inputs,
+ Location loc) {
Type fromType = getElementTypeOrSelf(inputs[0].getType());
Type toType = getElementTypeOrSelf(type);
if (!fromType.isSignlessInteger() ||
(!toType.isSignedInteger() && !toType.isUnsignedInteger()))
- return std::nullopt;
+ return Value();
// Use unrealized conversion casts to do signless->signful conversions.
return builder.create<UnrealizedConversionCastOp>(loc, type, inputs[0])
->getResult(0);
}
-std::optional<Value> scalarToTensor(OpBuilder &builder, Type type,
- ValueRange inputs, Location loc) {
+Value scalarToTensor(OpBuilder &builder, Type type, ValueRange inputs,
+ Location loc) {
assert(inputs.size() == 1);
if (llvm::isa<ShapedType>(inputs.front().getType())) {
- return std::nullopt;
+ return Value();
}
auto tensor =
builder
diff --git a/compiler/src/iree/compiler/Codegen/Common/ConvertBf16ToUInt16Buffers.cpp b/compiler/src/iree/compiler/Codegen/Common/ConvertBf16ToUInt16Buffers.cpp
index bc9420f..0efe1fd 100644
--- a/compiler/src/iree/compiler/Codegen/Common/ConvertBf16ToUInt16Buffers.cpp
+++ b/compiler/src/iree/compiler/Codegen/Common/ConvertBf16ToUInt16Buffers.cpp
@@ -229,9 +229,8 @@
// Helper functions
//===----------------------------------------------------------------------===//
-std::optional<Value> materializeArithBitcast(OpBuilder &builder, Type resultTy,
- mlir::ValueRange inputs,
- mlir::Location loc) {
+Value materializeArithBitcast(OpBuilder &builder, Type resultTy,
+ mlir::ValueRange inputs, mlir::Location loc) {
return builder.create<arith::BitcastOp>(loc, resultTy, inputs);
}
diff --git a/compiler/src/iree/compiler/Codegen/Common/test/tile_and_distribute_to_workgroups.mlir b/compiler/src/iree/compiler/Codegen/Common/test/tile_and_distribute_to_workgroups.mlir
index 408885d..71e8351 100644
--- a/compiler/src/iree/compiler/Codegen/Common/test/tile_and_distribute_to_workgroups.mlir
+++ b/compiler/src/iree/compiler/Codegen/Common/test/tile_and_distribute_to_workgroups.mlir
@@ -2088,9 +2088,7 @@
// -----
-#pipeline_layout = #hal.pipeline.layout<constants = 4, bindings = [
- #hal.pipeline.binding<storage_buffer>,
- #hal.pipeline.binding<storage_buffer>,
+#pipeline_layout = #hal.pipeline.layout<constants = 6, bindings = [
#hal.pipeline.binding<storage_buffer>,
#hal.pipeline.binding<storage_buffer>
]>
@@ -2111,10 +2109,14 @@
%cl_1 = hal.interface.constant.load layout(#pipeline_layout) ordinal(1) : i32
%cl_2 = hal.interface.constant.load layout(#pipeline_layout) ordinal(2) : i32
%cl_3 = hal.interface.constant.load layout(#pipeline_layout) ordinal(3) : i32
+ %cl_4 = hal.interface.constant.load layout(#pipeline_layout) ordinal(4) : i32
+ %cl_5 = hal.interface.constant.load layout(#pipeline_layout) ordinal(5) : i32
%0 = arith.index_castui %cl_0 : i32 to index
%1 = arith.index_castui %cl_1 : i32 to index
%2 = arith.index_castui %cl_2 : i32 to index
%3 = arith.index_castui %cl_3 : i32 to index
+ %tile0 = arith.index_castui %cl_3 : i32 to index
+ %tile1 = arith.index_castui %cl_3 : i32 to index
%4 = flow.dispatch.workload.ordinal %0, 0 : index
%5 = flow.dispatch.workload.ordinal %1, 1 : index
%6 = flow.dispatch.workload.ordinal %2, 2 : index
@@ -2123,7 +2125,7 @@
%9 = hal.interface.binding.subspan layout(#pipeline_layout) binding(1) alignment(64) offset(%c131072) : !flow.dispatch.tensor<writeonly:tensor<?x?xi32>>{%6, %7}
%10 = flow.dispatch.tensor.load %8, offsets = [0, 0, 0, 0], sizes = [%4, %5, %c32, %c16], strides = [1, 1, 1, 1] : !flow.dispatch.tensor<readonly:tensor<?x?x?x?xi32>>{%4, %5, %c32, %c16} -> tensor<?x?x?x?xi32>
%11 = tensor.empty(%6, %7) : tensor<?x?xi32>
- %12 = tensor.unpack %10 inner_dims_pos = [0, 1] inner_tiles = [%c32, %c16] into %11
+ %12 = tensor.unpack %10 inner_dims_pos = [0, 1] inner_tiles = [%tile0, %tile1] into %11
{lowering_config = #iree_codegen.lowering_config<tile_sizes = [[64, 64]]>}
: tensor<?x?x?x?xi32> -> tensor<?x?xi32>
flow.dispatch.tensor.store %12, %9, offsets = [0, 0], sizes = [%6, %7], strides = [1, 1] : tensor<?x?xi32> -> !flow.dispatch.tensor<writeonly:tensor<?x?xi32>>{%6, %7}
diff --git a/compiler/src/iree/compiler/Dialect/Stream/Transforms/ConvertToStream.cpp b/compiler/src/iree/compiler/Dialect/Stream/Transforms/ConvertToStream.cpp
index 92a3457..0da7d95 100644
--- a/compiler/src/iree/compiler/Dialect/Stream/Transforms/ConvertToStream.cpp
+++ b/compiler/src/iree/compiler/Dialect/Stream/Transforms/ConvertToStream.cpp
@@ -261,25 +261,24 @@
resultTypes.push_back(indexType);
return success();
});
- typeConverter.addArgumentMaterialization(
- [](OpBuilder &builder, TensorType resultType, ValueRange inputs,
- Location loc) -> std::optional<Value> {
- assert(inputs.size() >= 2);
- auto resourceValue = inputs[0];
- auto resourceSize = inputs[1];
- assert(inputs.size() == 2 &&
- "expecting 2 operands (resource + size)");
- Value cast = builder
- .create<IREE::Stream::AsyncTransferOp>(
- loc, resourceValue.getType(), resourceValue,
- resourceSize, resourceSize,
- /*source_affinity=*/nullptr,
- /*result_affinity=*/nullptr)
- .getResult();
- return builder
- .create<UnrealizedConversionCastOp>(loc, resultType, cast)
- .getResult(0);
- });
+ typeConverter.addArgumentMaterialization([](OpBuilder &builder,
+ TensorType resultType,
+ ValueRange inputs,
+ Location loc) -> Value {
+ assert(inputs.size() >= 2);
+ auto resourceValue = inputs[0];
+ auto resourceSize = inputs[1];
+ assert(inputs.size() == 2 && "expecting 2 operands (resource + size)");
+ Value cast = builder
+ .create<IREE::Stream::AsyncTransferOp>(
+ loc, resourceValue.getType(), resourceValue,
+ resourceSize, resourceSize,
+ /*source_affinity=*/nullptr,
+ /*result_affinity=*/nullptr)
+ .getResult();
+ return builder.create<UnrealizedConversionCastOp>(loc, resultType, cast)
+ .getResult(0);
+ });
populateUtilConversionPatterns(context, conversionTarget, typeConverter,
patterns);
diff --git a/compiler/src/iree/compiler/Dialect/Util/Transforms/TestConversion.cpp b/compiler/src/iree/compiler/Dialect/Util/Transforms/TestConversion.cpp
index 0675cea..c57cca1 100644
--- a/compiler/src/iree/compiler/Dialect/Util/Transforms/TestConversion.cpp
+++ b/compiler/src/iree/compiler/Dialect/Util/Transforms/TestConversion.cpp
@@ -20,10 +20,8 @@
namespace {
-static std::optional<Value> buildUnrealizedConversionCastOp(OpBuilder &builder,
- Type toType,
- ValueRange inputs,
- Location loc) {
+static Value buildUnrealizedConversionCastOp(OpBuilder &builder, Type toType,
+ ValueRange inputs, Location loc) {
return builder.create<UnrealizedConversionCastOp>(loc, toType, inputs)
.getResult(0);
}
diff --git a/tests/external/iree-test-suites/onnx_ops/onnx_ops_cpu_llvm_sync.json b/tests/external/iree-test-suites/onnx_ops/onnx_ops_cpu_llvm_sync.json
index f8ca790..7242c40 100644
--- a/tests/external/iree-test-suites/onnx_ops/onnx_ops_cpu_llvm_sync.json
+++ b/tests/external/iree-test-suites/onnx_ops/onnx_ops_cpu_llvm_sync.json
@@ -149,7 +149,6 @@
"onnx/node/generated/test_lppool_2d_same_lower",
"onnx/node/generated/test_lppool_2d_same_upper",
"onnx/node/generated/test_maxpool_2d_ceil_output_size_reduce_by_one",
- "onnx/node/generated/test_maxpool_2d_precomputed_same_upper",
"onnx/node/generated/test_maxpool_2d_same_lower",
"onnx/node/generated/test_maxpool_2d_same_upper",
"onnx/node/generated/test_maxpool_with_argmax_2d_precomputed_strides",
@@ -380,6 +379,7 @@
"onnx/node/generated/test_sce_none_weights_expanded",
"onnx/node/generated/test_sce_none_weights_log_prob",
"onnx/node/generated/test_sce_none_weights_log_prob_expanded",
+ "onnx/node/generated/test_shape_clip_start",
"onnx/node/generated/test_shape_end_negative_1",
"onnx/node/generated/test_slice",
"onnx/node/generated/test_slice_default_steps",
@@ -438,9 +438,8 @@
"onnx/node/generated/test_reduce_min_empty_set",
"onnx/node/generated/test_reduce_sum_empty_set_non_reduced_axis_zero",
"onnx/node/generated/test_resize_downsample_scales_linear_align_corners",
- "onnx/node/generated/test_scan_sum",
"onnx/node/generated/test_scan9_sum",
- "onnx/node/generated/test_shape_clip_start",
+ "onnx/node/generated/test_scan_sum",
"onnx/node/generated/test_shape_end_1",
"onnx/node/generated/test_shape_start_1",
"onnx/node/generated/test_shape_start_1_end_2",
diff --git a/tests/external/iree-test-suites/onnx_ops/onnx_ops_gpu_rocm_rdna3.json b/tests/external/iree-test-suites/onnx_ops/onnx_ops_gpu_rocm_rdna3.json
index 79cc5a9..a8713b6 100644
--- a/tests/external/iree-test-suites/onnx_ops/onnx_ops_gpu_rocm_rdna3.json
+++ b/tests/external/iree-test-suites/onnx_ops/onnx_ops_gpu_rocm_rdna3.json
@@ -153,7 +153,6 @@
"onnx/node/generated/test_lppool_2d_same_lower",
"onnx/node/generated/test_lppool_2d_same_upper",
"onnx/node/generated/test_maxpool_2d_ceil_output_size_reduce_by_one",
- "onnx/node/generated/test_maxpool_2d_precomputed_same_upper",
"onnx/node/generated/test_maxpool_2d_same_lower",
"onnx/node/generated/test_maxpool_2d_same_upper",
"onnx/node/generated/test_maxpool_with_argmax_2d_precomputed_strides",
@@ -381,6 +380,7 @@
"onnx/node/generated/test_sce_none_weights_expanded",
"onnx/node/generated/test_sce_none_weights_log_prob",
"onnx/node/generated/test_sce_none_weights_log_prob_expanded",
+ "onnx/node/generated/test_shape_clip_start",
"onnx/node/generated/test_shape_end_negative_1",
"onnx/node/generated/test_slice",
"onnx/node/generated/test_slice_default_steps",
@@ -488,11 +488,10 @@
"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_resize_downsample_scales_linear_align_corners",
- "onnx/node/generated/test_scan_sum",
"onnx/node/generated/test_scan9_sum",
+ "onnx/node/generated/test_scan_sum",
"onnx/node/generated/test_shape",
"onnx/node/generated/test_shape_clip_end",
- "onnx/node/generated/test_shape_clip_start",
"onnx/node/generated/test_shape_end_1",
"onnx/node/generated/test_shape_example",
"onnx/node/generated/test_shape_start_1",
diff --git a/tests/external/iree-test-suites/onnx_ops/onnx_ops_gpu_vulkan.json b/tests/external/iree-test-suites/onnx_ops/onnx_ops_gpu_vulkan.json
index 8c31c26..eb2dee2 100644
--- a/tests/external/iree-test-suites/onnx_ops/onnx_ops_gpu_vulkan.json
+++ b/tests/external/iree-test-suites/onnx_ops/onnx_ops_gpu_vulkan.json
@@ -195,9 +195,6 @@
"onnx/node/generated/test_max_uint16",
"onnx/node/generated/test_max_uint8",
"onnx/node/generated/test_maxpool_2d_ceil_output_size_reduce_by_one",
- "onnx/node/generated/test_maxpool_2d_precomputed_same_upper",
- "onnx/node/generated/test_maxpool_2d_same_lower",
- "onnx/node/generated/test_maxpool_2d_same_upper",
"onnx/node/generated/test_maxpool_with_argmax_2d_precomputed_strides",
"onnx/node/generated/test_maxunpool_export_with_output_shape",
"onnx/node/generated/test_maxunpool_export_without_output_shape",
@@ -447,6 +444,7 @@
"onnx/node/generated/test_sce_none_weights_expanded",
"onnx/node/generated/test_sce_none_weights_log_prob",
"onnx/node/generated/test_sce_none_weights_log_prob_expanded",
+ "onnx/node/generated/test_shape_clip_start",
"onnx/node/generated/test_shape_end_negative_1",
"onnx/node/generated/test_slice",
"onnx/node/generated/test_slice_default_steps",
@@ -533,8 +531,8 @@
"onnx/node/generated/test_dynamicquantizelinear_expanded",
"onnx/node/generated/test_einsum_batch_diagonal",
"onnx/node/generated/test_einsum_batch_matmul",
- "onnx/node/generated/test_einsum_transpose",
"onnx/node/generated/test_einsum_sum",
+ "onnx/node/generated/test_einsum_transpose",
"onnx/node/generated/test_eyelike_with_dtype",
"onnx/node/generated/test_isinf_float16",
"onnx/node/generated/test_isnan_float16",
@@ -595,9 +593,8 @@
"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_scan_sum",
"onnx/node/generated/test_scan9_sum",
- "onnx/node/generated/test_shape_clip_start",
+ "onnx/node/generated/test_scan_sum",
"onnx/node/generated/test_shape_end_1",
"onnx/node/generated/test_shape_start_1",
"onnx/node/generated/test_shape_start_1_end_2",
diff --git a/third_party/llvm-project b/third_party/llvm-project
index 864902e..9eee644 160000
--- a/third_party/llvm-project
+++ b/third_party/llvm-project
@@ -1 +1 @@
-Subproject commit 864902e9b4d8bc6d3f0852d5c475e3dc97dd8335
+Subproject commit 9eee6446f367cb35113b3d32545d16eecd1d8f14
diff --git a/third_party/stablehlo b/third_party/stablehlo
index c49487b..c32f7c2 160000
--- a/third_party/stablehlo
+++ b/third_party/stablehlo
@@ -1 +1 @@
-Subproject commit c49487b26835b15ac21508c857df8ecf0ccf23e3
+Subproject commit c32f7c215d9bed2d4077a7f884781f02e61df292
diff --git a/third_party/torch-mlir b/third_party/torch-mlir
index 140cad5..1570c15 160000
--- a/third_party/torch-mlir
+++ b/third_party/torch-mlir
@@ -1 +1 @@
-Subproject commit 140cad5659bb779bb1f5de1888566db5b5d21236
+Subproject commit 1570c151e9491e2ca77687a4fd457ae00491b02e