Skip to content

Commit 6052a1d

Browse files
MaheshRavishankarScottToddkrzysz00
authored
## New changes - We're starting to pick up TOSA dialect v1.0 changes llvm/llvm-project@360a03c and llvm/llvm-project@c1d01b2 . These are breaking changes so existing TOSA `.mlir[bc]` files may not work with new compiler versions. These changes will also be propagating to framework exporters/importers like TensorFlow over time, so more breaks are expected. The `iree-import-tflite` tool now reports a warning if a known-incompatible version of tensorflow is installed. ## Reverts RISC-V backend - llvm/llvm-project@169c32e Python related changes - llvm/llvm-project@5cd4274 - llvm/llvm-project@08e2c15 - llvm/llvm-project@b56d1ec - llvm/llvm-project@a0f5bbc NVPTX changes - llvm/llvm-project@29b5c18 - llvm/llvm-project@e7a83fc ## Updates to Torch-MLIR - Fix Conv2D create methods https://github.com/iree-org/torch-mlir/tree/integrate/20250112 (to be upstream to Torch-MLIR) --------- Signed-off-by: MaheshRavishankar <[email protected]> Signed-off-by: Krzysztof Drewniak <[email protected]> Signed-off-by: Scott Todd <[email protected]> Co-authored-by: Scott Todd <[email protected]> Co-authored-by: Krzysztof Drewniak <[email protected]>
1 parent b4c7de6 commit 6052a1d

File tree

14 files changed

+45
-24
lines changed

14 files changed

+45
-24
lines changed

compiler/src/iree/compiler/Codegen/Interfaces/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ iree_compiler_cc_library(
6262
"@llvm-project//mlir:AMDGPUDialect",
6363
"@llvm-project//mlir:ArithValueBoundsOpInterfaceImpl",
6464
"@llvm-project//mlir:BufferizationTransformOps",
65+
"@llvm-project//mlir:GPUDialect",
6566
"@llvm-project//mlir:GPUTransformOps",
6667
"@llvm-project//mlir:LinalgDialect",
6768
"@llvm-project//mlir:LinalgTransformOps",

compiler/src/iree/compiler/Codegen/Interfaces/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ iree_cc_library(
2828
MLIRAffineTransformOps
2929
MLIRArithValueBoundsOpInterfaceImpl
3030
MLIRBufferizationTransformOps
31+
MLIRGPUDialect
3132
MLIRGPUTransformOps
3233
MLIRIR
3334
MLIRLinalgDialect

compiler/src/iree/compiler/Codegen/Interfaces/Interfaces.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include "mlir/Dialect/Affine/TransformOps/AffineTransformOps.h"
2424
#include "mlir/Dialect/Arith/IR/ValueBoundsOpInterfaceImpl.h"
2525
#include "mlir/Dialect/Bufferization/TransformOps/BufferizationTransformOps.h"
26+
#include "mlir/Dialect/GPU/IR/ValueBoundsOpInterfaceImpl.h"
2627
#include "mlir/Dialect/GPU/TransformOps/GPUTransformOps.h"
2728
#include "mlir/Dialect/Linalg/IR/ValueBoundsOpInterfaceImpl.h"
2829
#include "mlir/Dialect/Linalg/TransformOps/DialectExtension.h"
@@ -64,6 +65,7 @@ void registerCodegenInterfaces(DialectRegistry &registry) {
6465
arith::registerValueBoundsOpInterfaceExternalModels(registry);
6566
bufferization::registerTransformDialectExtension(registry);
6667
gpu::registerTransformDialectExtension(registry);
68+
gpu::registerValueBoundsOpInterfaceExternalModels(registry);
6769
linalg::registerTransformDialectExtension(registry);
6870
linalg::registerValueBoundsOpInterfaceExternalModels(registry);
6971
linalg::registerSubsetOpInterfaceExternalModels(registry);

compiler/src/iree/compiler/Codegen/SPIRV/test/pipeline_matvec.mlir

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,18 +76,18 @@ hal.executable @i4_dequant_unit_matmul_f16 {
7676

7777
// CHECK-DAG: %[[CSTVEC4XI32_255:.+]] = spirv.Constant dense<255> : vector<4xi32>
7878
// CHECK-DAG: %[[CSTVEC4XI32_0:.+]] = spirv.Constant dense<0> : vector<4xi32>
79-
// CHECK-DAG: %[[CSTVEC2XI32_4:.+]] = spirv.Constant dense<4> : vector<2xi32>
80-
// CHECK-DAG: %[[CSTVEC2XI32_15:.+]] = spirv.Constant dense<15> : vector<2xi32>
79+
// CHECK-DAG: %[[CSTVEC4XI32_0_4:.+]] = spirv.Constant dense<[0, 4, 0, 4]> : vector<4xi32>
80+
// CHECK-DAG: %[[CSTVEC4XI32_15__16:.+]] = spirv.Constant dense<[15, -16, 15, -16]> : vector<4xi32>
8181

8282
// CHECK: spirv.mlir.loop
8383

8484
// Load the quantized weight and get 8xi4 out of it.
8585
// CHECK: %[[LOAD:.+]] = spirv.Load "StorageBuffer" %{{.+}} : vector<4xi32>
8686
// CHECK: %[[SHUF01:.+]] = spirv.VectorShuffle [0 : i32, 1 : i32] %[[LOAD]], %[[LOAD]] : vector<4xi32>, vector<4xi32> -> vector<2xi32>
87-
// CHECK: %[[LOW4:.+]] = spirv.BitwiseAnd %[[SHUF01]], %[[CSTVEC2XI32_15]] : vector<2xi32>
88-
// CHECK: %[[HIGH4:.+]] = spirv.ShiftRightLogical %[[SHUF01]], %[[CSTVEC2XI32_4]] : vector<2xi32>, vector<2xi32>
89-
// CHECK: %[[LOW4HIGH4:.+]] = spirv.VectorShuffle [0 : i32, 2 : i32, 1 : i32, 3 : i32] %[[LOW4]], %[[HIGH4]] : vector<2xi32>, {{.*}} -> vector<4xi32>
90-
// CHECK: %[[LOW4HIGH4_ZEROUPPER:.+]] = spirv.BitwiseAnd %[[LOW4HIGH4]], %[[CSTVEC4XI32_255]] : vector<4xi32>
87+
// CHECK: %[[SHUF0011:.+]] = spirv.VectorShuffle [0 : i32, 0 : i32, 1 : i32, 1 : i32] %[[SHUF01]], %[[SHUF01]] : vector<2xi32>, vector<2xi32> -> vector<4xi32>
88+
// CHECK: %[[MASKED:.+]] = spirv.BitwiseAnd %[[SHUF0011]], %[[CSTVEC4XI32_15__16]] : vector<4xi32>
89+
// CHECK: %[[SHIFTED:.+]] = spirv.ShiftRightLogical %[[MASKED]], %[[CSTVEC4XI32_0_4]] : vector<4xi32>, vector<4xi32>
90+
// CHECK: %[[LOW4HIGH4_ZEROUPPER:.+]] = spirv.BitwiseAnd %[[SHIFTED]], %[[CSTVEC4XI32_255]] : vector<4xi32>
9191

9292
// CHECK: %[[SHUF23:.+]] = spirv.VectorShuffle [2 : i32, 3 : i32] %[[LOAD:.+]], %[[LOAD:.+]] : vector<4xi32>, vector<4xi32> -> vector<2xi32>
9393

@@ -186,8 +186,8 @@ hal.executable @i4_dequant_matvec_f16_subgroup_64 {
186186
// CHECK-DAG: %[[C0:.+]] = spirv.Constant 0 : i32
187187
// CHECK-DAG: %[[CSTVEC4XF16_1:.+]] = spirv.Constant dense<1.000000e+00> : vector<4xf16>
188188
// CHECK-DAG: %[[CSTVEC4XI32_255:.+]] = spirv.Constant dense<255> : vector<4xi32>
189-
// CHECK-DAG: %[[CSTVEC2XI32_4:.+]] = spirv.Constant dense<4> : vector<2xi32>
190-
// CHECK-DAG: %[[CSTVEC2XI32_15:.+]] = spirv.Constant dense<15> : vector<2xi32>
189+
// CHECK-DAG: %[[CSTVEC2XI32_1:.+]] = spirv.Constant dense<[0, 4, 0, 4]> : vector<4xi32>
190+
// CHECK-DAG: %[[CSTVEC2XI32_2:.+]] = spirv.Constant dense<[15, -16, 15, -16]> : vector<4xi32>
191191

192192
// CHECK: %[[WIDX:.+]] = spirv.CompositeExtract %{{.*}}[0 : i32] : vector<3xi32>
193193
// CHECK: %[[PCPTR:.+]] = spirv.AccessChain %{{.*}}[{{.*}}, %[[C0]]] : !spirv.ptr<!spirv.struct<(!spirv.array<5 x i32, stride=4> [0])>, PushConstant>, i32, i32
@@ -209,8 +209,7 @@ hal.executable @i4_dequant_matvec_f16_subgroup_64 {
209209
// CHECK: %[[ACCESS:.+]] = spirv.AccessChain %[[RADDR]][{{.*}}, %[[OFFSET]]] : !spirv.ptr<!spirv.struct<(!spirv.rtarray<i32, stride=4> [0])>, StorageBuffer>, i32, i32
210210
// CHECK: spirv.Load "StorageBuffer" %[[ACCESS]] : i32
211211

212-
// CHECK: spirv.ShiftRightLogical %{{.*}}, %[[CSTVEC2XI32_4]] : vector<2xi32>, vector<2xi32>
213-
// CHECK: spirv.VectorShuffle [0 : i32, 2 : i32, 1 : i32, 3 : i32] %{{.*}} : vector<2xi32>, vector<2xi32> -> vector<4xi32>
212+
// CHECK: spirv.ShiftRightLogical %{{.*}}, %[[CSTVEC2XI32_1]] : vector<4xi32>, vector<4xi32>
214213
// CHECK: spirv.BitwiseAnd %{{.*}}, %[[CSTVEC4XI32_255]] : vector<4xi32>
215214

216215
// CHECK: spirv.ConvertUToF %{{.+}} : vector<4xi32> to vector<4xf16>

compiler/src/iree/compiler/Codegen/SPIRV/test/pipeline_sub_byte_dequant.mlir

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,13 @@ hal.executable @i4_dequant {
4444

4545
// CHECK-LABEL: spirv.func @i4_dequant()
4646

47-
// CHECK: spirv.VectorShuffle [0 : i32, 1 : i32] {{.*}} : vector<4xi32>, vector<4xi32> -> vector<2xi32>
48-
// CHECK: spirv.BitwiseAnd
49-
// CHECK: spirv.ShiftRightLogical
50-
// CHECK: spirv.VectorShuffle [0 : i32, 2 : i32, 1 : i32, 3 : i32]
51-
// CHECK: spirv.BitwiseAnd
47+
// CHECK: %[[BYTE1:.+]] = spirv.VectorShuffle [0 : i32, 1 : i32] {{.*}} : vector<4xi32>, vector<4xi32> -> vector<2xi32>
48+
// CHECK: %[[COPIED:.+]] = spirv.VectorShuffle [0 : i32, 0 : i32, 1 : i32, 1 : i32] %[[BYTE1]], %[[BYTE1]] : vector<2xi32>, vector<2xi32> -> vector<4xi32>
49+
// CHECK: %[[MASKED:.+]] = spirv.BitwiseAnd %[[COPIED]]
50+
// CHECK: %[[SHIFTED:.+]] = spirv.ShiftRightLogical %[[MASKED]]
51+
// CHECK: %[[ZEROUPPER:.+]] = spirv.BitwiseAnd %[[SHIFTED]]
5252
// CHECK: spirv.VectorShuffle [2 : i32, 3 : i32] {{.*}} : vector<4xi32>, vector<4xi32> -> vector<2xi32>
53-
// CHECK-COUNT-3: spirv.VectorShuffle [0 : i32, 2 : i32, 1 : i32, 3 : i32]
53+
// CHECK-COUNT-3: spirv.VectorShuffle [0 : i32, 0 : i32, 1 : i32, 1 : i32]
5454

5555
// CHECK-COUNT-4: spirv.ConvertUToF {{.+}} : vector<4xi32> to vector<4xf32>
5656
// CHECK-COUNT-4: spirv.FSub

compiler/src/iree/compiler/ExternalInterfaces/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ iree_compiler_cc_library(
3737
"//compiler/src/iree/compiler/Dialect/Stream/IR",
3838
"//compiler/src/iree/compiler/Dialect/Util/IR",
3939
"@llvm-project//mlir:ArithDialect",
40+
"@llvm-project//mlir:GPUDialect",
4041
"@llvm-project//mlir:IR",
4142
"@llvm-project//mlir:LinalgDialect",
4243
"@llvm-project//mlir:LinalgOpsIncGen",

compiler/src/iree/compiler/ExternalInterfaces/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ iree_cc_library(
2727
"UtilExternalModels.cpp"
2828
DEPS
2929
MLIRArithDialect
30+
MLIRGPUDialect
3031
MLIRIR
3132
MLIRLinalgDialect
3233
MLIRLinalgOpsIncGenLib

integrations/tensorflow/python_projects/iree_tflite/iree/tools/tflite/scripts/iree_import_tflite/__main__.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,19 @@ def main():
5151
if args.output_format != "mlir-bytecode":
5252
logging.warning("output-format option is deprecated, emitting MLIR bytecode")
5353

54+
# Log compatibility warnings for some known issues.
55+
try:
56+
from packaging import version
57+
from tensorflow import __version__ as tf_version
58+
59+
# https://discourse.llvm.org/t/rfc-tosa-dialect-increment-to-v1-0/83708
60+
if version.parse(tf_version) <= version.parse("2.18.0"):
61+
logging.warning(
62+
f"Found tensorflow version {tf_version}. Versions of tensorflow<=2.18.0 have known compatibility issues with TOSA v1.0. Consider using a newer tensorflow version or iree-base-compiler<=3.1.0"
63+
)
64+
except:
65+
pass
66+
5467
tflite_to_tosa(
5568
flatbuffer=args.flatbuffer,
5669
bytecode=args.output_path,
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
# RUN: %PYTHON -m iree_tfl_tests.gpt2_test --artifacts_dir=%t
2+
# XFAIL: *
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
# RUN: %PYTHON -m iree_tfl_tests.person_detect_test --artifacts_dir=%t
2+
# XFAIL: *

0 commit comments

Comments
 (0)