Skip to content

Commit 966ee90

Browse files
Jezurkoxlauko
authored andcommitted
[MLIR][mlir-link] Import tests from llvm-link.
1 parent 0c45484 commit 966ee90

40 files changed

+742
-0
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// RUN: echo "module {}" > %t.tmp.mlir
2+
// RUN: mlir-link %t.tmp.mlir %s
3+
module {
4+
llvm.mlir.global external constant @X(5 : i32) {addr_space = 0 : i32} : i32
5+
llvm.mlir.global internal @Y() {addr_space = 0 : i32, dso_local} : !llvm.array<2 x ptr> {
6+
%0 = llvm.mlir.addressof @X : !llvm.ptr
7+
%1 = llvm.mlir.undef : !llvm.array<2 x ptr>
8+
%2 = llvm.insertvalue %0, %1[0] : !llvm.array<2 x ptr>
9+
%3 = llvm.insertvalue %0, %2[1] : !llvm.array<2 x ptr>
10+
llvm.return %3 : !llvm.array<2 x ptr>
11+
}
12+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// RUN: echo "module {}" > %t1.mlir
2+
// RUN: mlir-link %t1.mlir %s
3+
4+
module {
5+
llvm.mlir.global external @work() {addr_space = 0 : i32} : !llvm.ptr {
6+
%0 = llvm.mlir.addressof @zip : !llvm.ptr
7+
llvm.return %0 : !llvm.ptr
8+
}
9+
llvm.func @zip(i32, i32) -> i32
10+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// RUN: echo "module {}" > %t.LinkTest.mlir
2+
// RUN: mlir-link %t.LinkTest.mlir %s
3+
4+
module {
5+
llvm.mlir.global external @work(4 : i32) {addr_space = 0 : i32} : i32
6+
llvm.mlir.global external @test() {addr_space = 0 : i32} : !llvm.ptr {
7+
%0 = llvm.mlir.constant(1 : i64) : i64
8+
%1 = llvm.mlir.addressof @work : !llvm.ptr
9+
%2 = llvm.getelementptr %1[%0] : (!llvm.ptr, i64) -> !llvm.ptr, i32
10+
llvm.return %2 : !llvm.ptr
11+
}
12+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// RUN: mlir-link %S/Inputs/2003-01-30-LinkerRename.mlir %s | FileCheck %s
2+
3+
// internal function not resolved properly
4+
// XFAIL: *
5+
6+
// CHECK: llvm.mlir.global external @bar() {addr_space = 0 : i32} : !llvm.ptr {
7+
// CHECK-NEXT: %0 = llvm.mlir.addressof @foo.2 : !llvm.ptr
8+
// CHECK-NEXT: llvm.return %0 : !llvm.ptr
9+
// CHECK-NEXT: }
10+
11+
// CHECK: llvm.func internal @foo.2() -> i32 attributes {dso_local} {
12+
// CHECK-NEXT: %0 = llvm.mlir.constant(7 : i32) : i32
13+
// CHECK-NEXT: llvm.return %0 : i32
14+
// CHECK-NEXT: }
15+
16+
// CHECK: llvm.func @foo() -> i32 {
17+
// CHECK-NEXT: %0 = llvm.mlir.constant(0 : i32) : i32
18+
// CHECK-NEXT: llvm.return %0 : i32
19+
// CHECK-NEXT: }
20+
21+
module {
22+
llvm.func @foo() -> i32 {
23+
%0 = llvm.mlir.constant(0 : i32) : i32
24+
llvm.return %0 : i32
25+
}
26+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// RUN: mlir-link %S/Inputs/2003-05-31-LinkerRename.mlir %s -o - | FileCheck %s
2+
3+
// internal function not properly resolved
4+
// XFAIL: *
5+
6+
// CHECK: llvm.mlir.global external @bar() {addr_space = 0 : i32} : !llvm.ptr {
7+
// CHECK-NEXT: %0 = llvm.mlir.addressof @foo.2 : !llvm.ptr
8+
// CHECK-NEXT: llvm.return %0 : !llvm.ptr
9+
// CHECK-NEXT: }
10+
11+
// CHECK: llvm.func internal @foo.2() -> i32 attributes {dso_local} {
12+
// CHECK-NEXT: %0 = llvm.mlir.constant(7 : i32) : i32
13+
// CHECK-NEXT: llvm.return %0 : i32
14+
// CHECK-NEXT: }
15+
16+
// CHECK: llvm.func @test() -> i32 {
17+
// CHECK-NEXT: %0 = llvm.call @foo() : () -> i32
18+
// CHECK-NEXT: llvm.return %0 : i32
19+
// CHECK-NEXT: }
20+
21+
// CHECK: llvm.func @foo() -> i32
22+
23+
24+
module {
25+
llvm.func @foo() -> i32
26+
llvm.func @test() -> i32 {
27+
%0 = llvm.call @foo() : () -> i32
28+
llvm.return %0 : i32
29+
}
30+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// RUN: echo "module { llvm.mlir.global appending @X(dense<8> : tensor<1xi32>) {addr_space = 0 : i32} : !llvm.array<1 x i32> }" > %t.tmp.mlir
2+
// RUN: mlir-link %s %t.tmp.mlir | FileCheck %s
3+
4+
// appending linkage not implemeneted
5+
// XFAIL: *
6+
7+
// CHECK: dense<[7, 4, 8]>
8+
9+
module {
10+
llvm.mlir.global appending @X(dense<[7, 4]> : tensor<2xi32>) {addr_space = 0 : i32} : !llvm.array<2 x i32>
11+
llvm.mlir.global external @Y() {addr_space = 0 : i32} : !llvm.ptr {
12+
%0 = llvm.mlir.addressof @X : !llvm.ptr
13+
llvm.return %0 : !llvm.ptr
14+
}
15+
llvm.func @foo(%arg0: i64) {
16+
%0 = llvm.mlir.addressof @X : !llvm.ptr
17+
%1 = llvm.mlir.constant(0 : i64) : i64
18+
%2 = llvm.getelementptr %0[%1, %arg0] : (!llvm.ptr, i64, i64) -> !llvm.ptr, !llvm.array<2 x i32>
19+
llvm.return
20+
}
21+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// RUN: echo "module { llvm.mlir.global appending @X(dense<8> : tensor<1xi32>) {addr_space = 0 : i32} : !llvm.array<1 x i32> }" > %t.tmp.mlir
2+
// RUN: mlir-link %s %t.tmp.mlir | FileCheck %s
3+
4+
// appending linkage not yet implemented
5+
// XFAIL: *
6+
7+
// CHECK: dense<[7, 8]>
8+
9+
module {
10+
llvm.mlir.global appending @X(dense<7> : tensor<1xi32>) {addr_space = 0 : i32} : !llvm.array<1 x i32>
11+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// RUN: mlir-link %s %S/Inputs/ConstantGlobals.mlir -o -| FileCheck %s
2+
// RUN: mlir-link %S/Inputs/ConstantGlobals.mlir %s -o - | FileCheck %s
3+
4+
module {
5+
// CHECK-DAG: llvm.mlir.global external constant @X(dense<8> : tensor<1xi32>)
6+
llvm.mlir.global external @X() {addr_space = 0 : i32} : !llvm.array<1 x i32>
7+
// CHECK-DAG: llvm.mlir.global external @Y() {addr_space = 0 : i32} : !llvm.array<1 x i32>
8+
llvm.mlir.global external @Y() {addr_space = 0 : i32} : !llvm.array<1 x i32>
9+
llvm.func @"use-Y"() -> !llvm.ptr {
10+
%0 = llvm.mlir.addressof @Y : !llvm.ptr
11+
llvm.return %0 : !llvm.ptr
12+
}
13+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
module {
2+
llvm.mlir.global external @bar() {addr_space = 0 : i32} : !llvm.ptr {
3+
%0 = llvm.mlir.addressof @foo : !llvm.ptr
4+
llvm.return %0 : !llvm.ptr
5+
}
6+
llvm.func internal @foo() -> i32 attributes {dso_local} {
7+
%0 = llvm.mlir.constant(7 : i32) : i32
8+
llvm.return %0 : i32
9+
}
10+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
module {
2+
llvm.mlir.global external @bar() {addr_space = 0 : i32} : !llvm.ptr {
3+
%0 = llvm.mlir.addressof @foo : !llvm.ptr
4+
llvm.return %0 : !llvm.ptr
5+
}
6+
llvm.func internal @foo() -> i32 attributes {dso_local} {
7+
%0 = llvm.mlir.constant(7 : i32) : i32
8+
llvm.return %0 : i32
9+
}
10+
}

0 commit comments

Comments
 (0)