Skip to content

Commit 12b182b

Browse files
committed
Cherry Pick LLVM and StableHLO commit
1 parent 0833dac commit 12b182b

File tree

6 files changed

+49
-35
lines changed

6 files changed

+49
-35
lines changed

docs/BuildOnLinuxOSX.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Firstly, install MLIR (as a part of LLVM-Project):
1515
``` bash
1616
git clone -n https://github.com/llvm/llvm-project.git
1717
# Check out a specific branch that is known to work with ONNX-MLIR.
18-
cd llvm-project && git checkout a4ca07f13b560b4f6fa5459eef7159e4f9ee9a6b && cd ..
18+
cd llvm-project && git checkout 7ac7d418ac2b16fd44789dcf48e2b5d73de3e715 && cd ..
1919
```
2020

2121
[same-as-file]: <> (utils/build-mlir.sh)

docs/BuildOnWindows.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ Install MLIR (as a part of LLVM-Project):
5252
```shell
5353
git clone -n https://github.com/llvm/llvm-project.git
5454
# Check out a specific branch that is known to work with ONNX-MLIR.
55-
cd llvm-project && git checkout a4ca07f13b560b4f6fa5459eef7159e4f9ee9a6b && cd ..
55+
cd llvm-project && git checkout 7ac7d418ac2b16fd44789dcf48e2b5d73de3e715 && cd ..
5656
```
5757

5858
[same-as-file]: <> (utils/build-mlir.cmd)

src/Conversion/KrnlToLLVM/ConvertKrnlToLLVM.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
//====------ ConvertKrnlToLLVM.cpp - Krnl Dialect Lowering ---------------===//
66
//
7-
// Copyright 2019-2022 The IBM Research Authors.
7+
// Copyright 2019-2024 The IBM Research Authors.
88
//
99
// =============================================================================
1010
//
@@ -875,7 +875,7 @@ void ConvertKrnlToLLVMPass::runOnOperation() {
875875
customizeTypeConverter(typeConverter);
876876

877877
// omp::ParallelOp can only be legalized when its region is legal
878-
target.addDynamicallyLegalOp<omp::ParallelOp, omp::WsLoopOp>(
878+
target.addDynamicallyLegalOp<omp::ParallelOp, omp::WsloopOp>(
879879
[&](Operation *op) { return typeConverter.isLegal(&op->getRegion(0)); });
880880
// Currently, only minimum required OpenMP Ops are marked as legal, in the
881881
// future integration of OpenMP, probably more OpenMP Ops are required to be

test/mlir/conversion/onnx_to_krnl/Sequence/Sequence_with_dealloc.mlir

+43-29
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: onnx-mlir-opt -O3 --shape-inference --convert-onnx-to-krnl --buffer-deallocation-pipeline %s -split-input-file | FileCheck %s
1+
// RUN: onnx-mlir-opt -O3 --shape-inference --convert-onnx-to-krnl --buffer-deallocation %s -split-input-file | FileCheck %s
22

33
// -----
44

@@ -12,54 +12,68 @@ func.func @test_sequence_erase(%arg0: !onnx.Seq<tensor<?x4x5xf32>>) -> tensor<3x
1212

1313
// mlir2FileCheck.py
1414
// CHECK-DAG: [[MAP_0_:#.+]] = affine_map<()[s0] -> (s0 - 1)>
15-
// CHECK-DAG: [[MAP_1_:#.+]] = affine_map<()[s0, s1] -> (s0 + s1)>
15+
// CHECK-DAG: [[MAP_1_:#.+]] = affine_map<()[s0, s1] -> (s1 + s0)>
1616
// CHECK-DAG: [[MAP_2_:#.+]] = affine_map<()[s0, s1] -> (s0)>
17+
// CHECK-DAG: [[MAP_3_:#.+]] = affine_map<()[s0, s1] -> (s0 + s1)>
1718
// CHECK-LABEL: func.func @test_sequence_erase
1819
// CHECK-SAME: ([[PARAM_0_:%.+]]: memref<?xmemref<?x4x5xf32>>) -> memref<3xi64> {
19-
// CHECK-DAG: [[CST_5_:%.+]] = arith.constant 5 : i64
20-
// CHECK-DAG: [[CST_4_:%.+]] = arith.constant 4 : i64
21-
// CHECK-DAG: [[CST_2_:%.+]] = arith.constant 2 : index
22-
// CHECK-DAG: [[CST_1_:%.+]] = arith.constant 1 : index
23-
// CHECK-DAG: [[CST_0_:%.+]] = arith.constant 0 : index
2420
// CHECK-DAG: [[VAR_0_:%.+]] = "krnl.global"() {name = "constant_{{[0-9]+}}", shape = [], value = dense<0> : tensor<i64>} : () -> memref<i64>
25-
// CHECK: [[VAR_dim_:%.+]] = memref.dim [[PARAM_0_]], [[CST_0_]] : memref<?xmemref<?x4x5xf32>>
21+
// CHECK-DAG: [[CST_0_:%.+]] = arith.constant 0 : index
22+
// CHECK-NOT: separator of consecutive DAGs
23+
// CHECK-DAG: [[VAR_dim_:%.+]] = memref.dim [[PARAM_0_]], [[CST_0_]] : memref<?xmemref<?x4x5xf32>>
24+
// CHECK-DAG: [[CST_1_:%.+]] = arith.constant 1 : index
2625
// CHECK: [[VAR_1_:%.+]] = affine.apply [[MAP_0_]](){{.}}[[VAR_dim_]]{{.}}
2726
// CHECK-DAG: [[VAR_2_:%.+]] = "krnl.seqalloc"([[VAR_1_]]) : (index) -> memref<?xmemref<?x4x5xf32>>
2827
// CHECK-DAG: [[LOAD_VAR_0_MEM_:%.+]] = krnl.load [[VAR_0_]][] : memref<i64>
2928
// CHECK: [[VAR_4_:%.+]] = arith.index_cast [[LOAD_VAR_0_MEM_]] : i64 to index
3029
// CHECK-DAG: [[VAR_5_:%.+]] = affine.apply [[MAP_1_]](){{.}}[[VAR_dim_]], [[VAR_4_]]{{.}}
31-
// CHECK-DAG: [[VAR_6_:%.+]] = arith.cmpi slt, [[VAR_4_]], [[CST_0_]] : index
32-
// CHECK-NOT: separator of consecutive DAGs
30+
// CHECK-DAG: [[CST_0_1_:%.+]] = arith.constant 0 : index
31+
// CHECK: [[VAR_6_:%.+]] = arith.cmpi slt, [[VAR_4_]], [[CST_0_1_]] : index
3332
// CHECK-DAG: [[VAR_7_:%.+]] = arith.select [[VAR_6_]], [[VAR_5_]], [[VAR_4_]] : index
33+
// CHECK-DAG: [[CST_0_2_:%.+]] = arith.constant 0 : index
3434
// CHECK-DAG: [[LOOP_0_:%.+]] = krnl.define_loops 1
3535
// CHECK: krnl.iterate([[LOOP_0_]]) with ([[LOOP_0_]] -> [[I_0_:%.+]] = 0 to [[VAR_7_]]){
36-
// CHECK: [[VAR_18_:%.+]] = krnl.get_induction_var_value([[LOOP_0_]]) : (!krnl.loop) -> index
37-
// CHECK: [[LOAD_PARAM_0_MEM_:%.+]] = krnl.load [[PARAM_0_]]{{.}}[[VAR_18_]]{{.}} : memref<?xmemref<?x4x5xf32>>
36+
// CHECK: [[VAR_20_:%.+]] = krnl.get_induction_var_value([[LOOP_0_]]) : (!krnl.loop) -> index
37+
// CHECK: [[LOAD_PARAM_0_MEM_:%.+]] = krnl.load [[PARAM_0_]]{{.}}[[VAR_20_]]{{.}} : memref<?xmemref<?x4x5xf32>>
3838
// CHECK: "krnl.seqstore"([[LOAD_PARAM_0_MEM_]], [[VAR_2_]], [[VAR_7_]]) : (memref<?x4x5xf32>, memref<?xmemref<?x4x5xf32>>, index) -> ()
3939
// CHECK: }
40-
// CHECK-DAG: [[VAR_9_:%.+]] = arith.addi [[VAR_7_]], [[CST_1_]] : index
41-
// CHECK: krnl.iterate([[LOOP_0_]]) with ([[LOOP_0_]] -> [[I_1_:%.+]] = [[VAR_9_]] to [[MAP_2_]](){{.}}[[VAR_dim_]], [[VAR_4_]]{{.}}){
42-
// CHECK: [[VAR_18_1_:%.+]] = krnl.get_induction_var_value([[LOOP_0_]]) : (!krnl.loop) -> index
43-
// CHECK-DAG: [[LOAD_PARAM_0_MEM_1_:%.+]] = krnl.load [[PARAM_0_]]{{.}}[[VAR_18_1_]]{{.}} : memref<?xmemref<?x4x5xf32>>
44-
// CHECK-DAG: [[VAR_20_:%.+]] = arith.subi [[VAR_18_1_]], [[CST_1_]] : index
45-
// CHECK: "krnl.seqstore"([[LOAD_PARAM_0_MEM_1_]], [[VAR_2_]], [[VAR_20_]]) : (memref<?x4x5xf32>, memref<?xmemref<?x4x5xf32>>, index) -> ()
40+
// CHECK: [[CST_1_1_:%.+]] = arith.constant 1 : index
41+
// CHECK-DAG: [[VAR_9_:%.+]] = arith.addi [[VAR_7_]], [[CST_1_1_]] : index
42+
// CHECK-DAG: [[LOOP_1_:%.+]] = krnl.define_loops 1
43+
// CHECK: krnl.iterate([[LOOP_1_]]) with ([[LOOP_1_]] -> [[I_1_:%.+]] = [[VAR_9_]] to [[MAP_2_]](){{.}}[[VAR_dim_]], [[VAR_4_]]{{.}}){
44+
// CHECK: [[VAR_20_1_:%.+]] = krnl.get_induction_var_value([[LOOP_1_]]) : (!krnl.loop) -> index
45+
// CHECK-DAG: [[LOAD_PARAM_0_MEM_1_:%.+]] = krnl.load [[PARAM_0_]]{{.}}[[VAR_20_1_]]{{.}} : memref<?xmemref<?x4x5xf32>>
46+
// CHECK-DAG: [[CST_1_2_:%.+]] = arith.constant 1 : index
47+
// CHECK: [[VAR_22_:%.+]] = arith.subi [[VAR_20_1_]], [[CST_1_2_]] : index
48+
// CHECK: "krnl.seqstore"([[LOAD_PARAM_0_MEM_1_]], [[VAR_2_]], [[VAR_2_]]2) : (memref<?x4x5xf32>, memref<?xmemref<?x4x5xf32>>, index) -> ()
4649
// CHECK: }
47-
// CHECK-DAG: [[VAR_dim_0_:%.+]] = memref.dim [[VAR_2_]], [[CST_0_]] : memref<?xmemref<?x4x5xf32>>
50+
// CHECK: [[CST_0_3_:%.+]] = arith.constant 0 : index
51+
// CHECK-DAG: [[VAR_dim_4_:%.+]] = memref.dim [[VAR_2_]], [[CST_0_3_]] : memref<?xmemref<?x4x5xf32>>
4852
// CHECK-DAG: [[LOAD_VAR_0_MEM_1_:%.+]] = krnl.load [[VAR_0_]][] : memref<i64>
49-
// CHECK: [[VAR_12_:%.+]] = arith.index_cast [[LOAD_VAR_0_MEM_1_]] : i64 to index
50-
// CHECK-DAG: [[VAR_13_:%.+]] = arith.cmpi slt, [[VAR_12_]], [[CST_0_]] : index
51-
// CHECK-DAG: [[VAR_14_:%.+]] = affine.apply [[MAP_1_]](){{.}}{{%.*}}, {{%.*}}{{.}}
53+
// CHECK-NOT: separator of consecutive DAGs
54+
// CHECK-DAG: [[VAR_12_:%.+]] = arith.index_cast [[LOAD_VAR_0_MEM_1_]] : i64 to index
55+
// CHECK-DAG: [[CST_0_4_:%.+]] = arith.constant 0 : index
56+
// CHECK-NOT: separator of consecutive DAGs
57+
// CHECK-DAG: [[VAR_13_:%.+]] = arith.cmpi slt, [[VAR_12_]], [[CST_0_4_]] : index
58+
// CHECK-DAG: [[VAR_14_:%.+]] = affine.apply [[MAP_3_]](){{.}}[[VAR_12_]], [[VAR_dim_4_]]{{.}}
5259
// CHECK: [[VAR_15_:%.+]] = arith.select [[VAR_13_]], [[VAR_14_]], [[VAR_12_]] : index
5360
// CHECK-DAG: [[VAR_16_:%.+]] = "krnl.seqextract"([[VAR_2_]], [[VAR_15_]]) {copy = 1 : ui1} : (memref<?xmemref<?x4x5xf32>>, index) -> memref<?x4x5xf32>
61+
// CHECK-DAG: [[CST_3_:%.+]] = arith.constant 3 : index
5462
// CHECK-DAG: [[RES_:%.+]] = memref.alloc() {{.*}}: memref<3xi64>
55-
// CHECK: [[VAR_dim_1_:%.+]] = memref.dim [[VAR_16_]], [[CST_0_]] : memref<?x4x5xf32>
56-
// CHECK: [[VAR_17_:%.+]] = arith.index_cast [[VAR_dim_1_]] : index to i64
57-
// CHECK: krnl.store [[VAR_17_]], [[RES_]]{{.}}[[CST_0_]]{{.}} : memref<3xi64>
58-
// CHECK: krnl.store [[CST_4_]], [[RES_]]{{.}}[[CST_1_]]{{.}} : memref<3xi64>
59-
// CHECK: krnl.store [[CST_5_]], [[RES_]]{{.}}[[CST_2_]]{{.}} : memref<3xi64>
60-
// CHECK: memref.dealloc [[VAR_2_]] : memref<?xmemref<?x4x5xf32>>
63+
// CHECK-DAG: [[CST_0_5_:%.+]] = arith.constant 0 : index
64+
// CHECK: [[VAR_dim_7_:%.+]] = memref.dim [[VAR_16_]], [[CST_0_5_]] : memref<?x4x5xf32>
6165
// CHECK: memref.dealloc [[VAR_16_]] : memref<?x4x5xf32>
66+
// CHECK-DAG: [[CST_4_:%.+]] = arith.constant 4 : index
67+
// CHECK-DAG: [[CST_5_:%.+]] = arith.constant 5 : index
68+
// CHECK-DAG: [[VAR_17_:%.+]] = arith.index_cast [[VAR_dim_7_]] : index to i64
69+
// CHECK-DAG: [[CST_0_6_:%.+]] = arith.constant 0 : index
70+
// CHECK: krnl.store [[VAR_17_]], [[RES_]]{{.}}[[CST_0_6_]]{{.}} : memref<3xi64>
71+
// CHECK-DAG: [[VAR_18_:%.+]] = arith.index_cast [[CST_4_]] : index to i64
72+
// CHECK-DAG: [[CST_1_3_:%.+]] = arith.constant 1 : index
73+
// CHECK: krnl.store [[VAR_18_]], [[RES_]]{{.}}[[CST_1_3_]]{{.}} : memref<3xi64>
74+
// CHECK-DAG: [[VAR_19_:%.+]] = arith.index_cast [[CST_5_]] : index to i64
75+
// CHECK-DAG: [[CST_2_:%.+]] = arith.constant 2 : index
76+
// CHECK: krnl.store [[VAR_19_]], [[RES_]]{{.}}[[CST_2_]]{{.}} : memref<3xi64>
6277
// CHECK: return [[RES_]] : memref<3xi64>
6378
// CHECK: }
6479
}
65-

utils/clone-mlir.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
git clone -n https://github.com/llvm/llvm-project.git
22
# Check out a specific branch that is known to work with ONNX-MLIR.
3-
cd llvm-project && git checkout a4ca07f13b560b4f6fa5459eef7159e4f9ee9a6b && cd ..
3+
cd llvm-project && git checkout 7ac7d418ac2b16fd44789dcf48e2b5d73de3e715 && cd ..

0 commit comments

Comments
 (0)