Skip to content

Commit 4fc9c7a

Browse files
committed
Simplify test
1 parent a6970c1 commit 4fc9c7a

File tree

8 files changed

+114
-55
lines changed

8 files changed

+114
-55
lines changed

lib/polygeist/Passes/AffineCFG.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -595,6 +595,30 @@ struct SimplfyIntegerCastMath : public OpRewritePattern<IndexCastOp> {
595595
op.getType()));
596596
return success();
597597
}
598+
if (auto iadd = op.getOperand().getDefiningOp<DivUIOp>()) {
599+
OpBuilder b(rewriter);
600+
setLocationAfter(b, iadd.getOperand(0));
601+
OpBuilder b2(rewriter);
602+
setLocationAfter(b2, iadd.getOperand(1));
603+
rewriter.replaceOpWithNewOp<DivUIOp>(
604+
op,
605+
b.create<IndexCastOp>(op.getLoc(), iadd.getOperand(0), op.getType()),
606+
b2.create<IndexCastOp>(op.getLoc(), iadd.getOperand(1),
607+
op.getType()));
608+
return success();
609+
}
610+
if (auto iadd = op.getOperand().getDefiningOp<DivSIOp>()) {
611+
OpBuilder b(rewriter);
612+
setLocationAfter(b, iadd.getOperand(0));
613+
OpBuilder b2(rewriter);
614+
setLocationAfter(b2, iadd.getOperand(1));
615+
rewriter.replaceOpWithNewOp<DivSIOp>(
616+
op,
617+
b.create<IndexCastOp>(op.getLoc(), iadd.getOperand(0), op.getType()),
618+
b2.create<IndexCastOp>(op.getLoc(), iadd.getOperand(1),
619+
op.getType()));
620+
return success();
621+
}
598622
return failure();
599623
}
600624
};

llvm-project

Submodule llvm-project updated 259 files

tools/mlir-clang/Test/Verification/loop.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,18 @@ void div_(int* sizes) {
2020
// CHECK-DAG: %c1_i64 = arith.constant 1 : i64
2121
// CHECK-NEXT: %0 = llvm.alloca %c1_i64 x !llvm.array<25 x struct<(i32, f64)>> : (i64) -> !llvm.ptr<array<25 x struct<(i32, f64)>>>
2222
// CHECK-NEXT: %1 = memref.get_global @MAX_DIMS : memref<1xi32>
23-
// CHECK-NEXT: %2 = scf.while (%arg1 = %c0_i32) : (i32) -> i32 {
24-
// CHECK-NEXT: %3 = affine.load %1[0] : memref<1xi32>
25-
// CHECK-NEXT: %4 = arith.cmpi ult, %arg1, %3 : i32
26-
// CHECK-NEXT: scf.condition(%4) %arg1 : i32
23+
// CHECK-NEXT: %2 = llvm.getelementptr %0[%c0_i32, %c0_i32] : (!llvm.ptr<array<25 x struct<(i32, f64)>>>, i32, i32) -> !llvm.ptr<struct<(i32, f64)>>
24+
// CHECK-NEXT: %3 = scf.while (%arg1 = %c0_i32) : (i32) -> i32 {
25+
// CHECK-NEXT: %4 = affine.load %1[0] : memref<1xi32>
26+
// CHECK-NEXT: %5 = arith.cmpi ult, %arg1, %4 : i32
27+
// CHECK-NEXT: scf.condition(%5) %arg1 : i32
2728
// CHECK-NEXT: } do {
2829
// CHECK-NEXT: ^bb0(%arg1: i32): // no predecessors
29-
// CHECK-NEXT: %3 = arith.index_cast %arg1 : i32 to index
30-
// CHECK-NEXT: %4 = arith.index_cast %3 : index to i64
31-
// CHECK-NEXT: %5 = llvm.getelementptr %0[%c0_i32, %c0_i32] : (!llvm.ptr<array<25 x struct<(i32, f64)>>>, i32, i32) -> !llvm.ptr<struct<(i32, f64)>>
32-
// CHECK-NEXT: %6 = llvm.getelementptr %5[%4] : (!llvm.ptr<struct<(i32, f64)>>, i64) -> !llvm.ptr<struct<(i32, f64)>>
30+
// CHECK-NEXT: %4 = arith.index_cast %arg1 : i32 to index
31+
// CHECK-NEXT: %5 = arith.index_cast %4 : index to i64
32+
// CHECK-NEXT: %6 = llvm.getelementptr %2[%5] : (!llvm.ptr<struct<(i32, f64)>>, i64) -> !llvm.ptr<struct<(i32, f64)>>
3333
// CHECK-NEXT: %7 = llvm.getelementptr %6[%c0_i32, %c0_i32] : (!llvm.ptr<struct<(i32, f64)>>, i32, i32) -> !llvm.ptr<i32>
34-
// CHECK-NEXT: %8 = memref.load %arg0[%3] : memref<?xi32>
34+
// CHECK-NEXT: %8 = memref.load %arg0[%4] : memref<?xi32>
3535
// CHECK-NEXT: llvm.store %8, %7 : !llvm.ptr<i32>
3636
// CHECK-NEXT: %9 = arith.addi %arg1, %c1_i32 : i32
3737
// CHECK-NEXT: scf.yield %9 : i32

tools/mlir-clang/Test/Verification/omp.c

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,20 @@ void square(double* x, int sstart, int send, int sinc) {
88
}
99

1010
// CHECK: func @square(%arg0: memref<?xf64>, %arg1: i32, %arg2: i32, %arg3: i32) attributes {llvm.linkage = #llvm.linkage<external>} {
11-
// CHECK-NEXT: %0 = arith.index_cast %arg1 : i32 to index
12-
// CHECK-NEXT: %1 = arith.index_cast %arg2 : i32 to index
13-
// CHECK-NEXT: %2 = arith.index_cast %arg3 : i32 to index
14-
// CHECK-NEXT: scf.parallel (%arg4) = (%0) to (%1) step (%2) {
15-
// CHECK-NEXT: %3 = arith.index_cast %arg4 : index to i32
16-
// CHECK-NEXT: %4 = arith.sitofp %3 : i32 to f64
17-
// CHECK-NEXT: memref.store %4, %arg0[%arg4] : memref<?xf64>
11+
// CHECK-DAG: %c1 = arith.constant 1 : index
12+
// CHECK-DAG: %[[i0:.+]] = arith.index_cast %arg1 : i32 to index
13+
// CHECK-DAG: %[[i1:.+]] = arith.index_cast %arg2 : i32 to index
14+
// CHECK-DAG: %[[i2:.+]] = arith.index_cast %arg3 : i32 to index
15+
// CHECK-NEXT: %[[i3:.+]] = arith.subi %[[i1]], %[[i0]] : index
16+
// CHECK-NEXT: %4 = arith.subi %[[i3]], %c1 : index
17+
// CHECK-NEXT: %5 = arith.addi %4, %[[i2]] : index
18+
// CHECK-NEXT: %6 = arith.divui %5, %[[i2]] : index
19+
// CHECK-NEXT: %7 = arith.muli %6, %[[i2]] : index
20+
// CHECK-NEXT: %8 = arith.addi %[[i0]], %7 : index
21+
// CHECK-NEXT: scf.parallel (%arg4) = (%[[i0]]) to (%8) step (%[[i2]]) {
22+
// CHECK-NEXT: %9 = arith.index_cast %arg4 : index to i32
23+
// CHECK-NEXT: %10 = arith.sitofp %9 : i32 to f64
24+
// CHECK-NEXT: memref.store %10, %arg0[%arg4] : memref<?xf64>
1825
// CHECK-NEXT: scf.yield
1926
// CHECK-NEXT: }
2027
// CHECK-NEXT: return

tools/mlir-clang/Test/Verification/omp2.c

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,32 @@ void square2(double** x, int sstart, int send, int sinc, int tstart, int tend, i
1111

1212

1313
// CHECK: func @square2(%arg0: memref<?xmemref<?xf64>>, %arg1: i32, %arg2: i32, %arg3: i32, %arg4: i32, %arg5: i32, %arg6: i32) attributes {llvm.linkage = #llvm.linkage<external>} {
14-
// CHECK-NEXT: %0 = arith.index_cast %arg1 : i32 to index
15-
// CHECK-NEXT: %1 = arith.index_cast %arg4 : i32 to index
16-
// CHECK-NEXT: %2 = arith.index_cast %arg2 : i32 to index
17-
// CHECK-NEXT: %3 = arith.index_cast %arg5 : i32 to index
18-
// CHECK-NEXT: %4 = arith.index_cast %arg3 : i32 to index
19-
// CHECK-NEXT: %5 = arith.index_cast %arg6 : i32 to index
20-
// CHECK-NEXT: scf.parallel (%arg7, %arg8) = (%0, %1) to (%2, %3) step (%4, %5) {
21-
// CHECK-NEXT: %6 = arith.index_cast %arg7 : index to i64
22-
// CHECK-NEXT: %7 = arith.index_cast %arg8 : index to i64
23-
// CHECK-NEXT: %8 = memref.load %arg0[%arg7] : memref<?xmemref<?xf64>>
24-
// CHECK-NEXT: %9 = arith.addi %6, %7 : i64
25-
// CHECK-NEXT: %10 = arith.sitofp %9 : i64 to f64
26-
// CHECK-NEXT: memref.store %10, %8[%arg8] : memref<?xf64>
14+
// CHECK-NEXT: %c1 = arith.constant 1 : index
15+
// CHECK-DAG: %[[i0:.+]] = arith.index_cast %arg1 : i32 to index
16+
// CHECK-DAG: %[[i1:.+]] = arith.index_cast %arg2 : i32 to index
17+
// CHECK-DAG: %[[i2:.+]] = arith.index_cast %arg3 : i32 to index
18+
// CHECK-DAG: %[[i3:.+]] = arith.index_cast %arg4 : i32 to index
19+
// CHECK-DAG: %[[i4:.+]] = arith.index_cast %arg5 : i32 to index
20+
// CHECK-DAG: %[[i5:.+]] = arith.index_cast %arg6 : i32 to index
21+
// CHECK-DAG: %6 = arith.subi %[[i1]], %[[i0]] : index
22+
// CHECK-NEXT: %7 = arith.subi %6, %c1 : index
23+
// CHECK-NEXT: %8 = arith.addi %7, %[[i2]] : index
24+
// CHECK-NEXT: %9 = arith.divui %8, %[[i2]] : index
25+
// CHECK-NEXT: %10 = arith.muli %9, %[[i2]] : index
26+
// CHECK-NEXT: %11 = arith.addi %[[i0]], %10 : index
27+
// CHECK-NEXT: %12 = arith.subi %[[i4]], %[[i3]] : index
28+
// CHECK-NEXT: %13 = arith.subi %12, %c1 : index
29+
// CHECK-NEXT: %14 = arith.addi %13, %[[i5]] : index
30+
// CHECK-NEXT: %15 = arith.divui %14, %[[i5]] : index
31+
// CHECK-NEXT: %16 = arith.muli %15, %[[i5]] : index
32+
// CHECK-NEXT: %17 = arith.addi %[[i3:.+]], %16 : index
33+
// CHECK-NEXT: scf.parallel (%arg7, %arg8) = (%[[i0]], %[[i3]]) to (%11, %17) step (%[[i2]], %[[i5]]) {
34+
// CHECK-NEXT: %18 = arith.index_cast %arg7 : index to i64
35+
// CHECK-NEXT: %19 = arith.index_cast %arg8 : index to i64
36+
// CHECK-NEXT: %20 = memref.load %arg0[%arg7] : memref<?xmemref<?xf64>>
37+
// CHECK-NEXT: %21 = arith.addi %18, %19 : i64
38+
// CHECK-NEXT: %22 = arith.sitofp %21 : i64 to f64
39+
// CHECK-NEXT: memref.store %22, %20[%arg8] : memref<?xf64>
2740
// CHECK-NEXT: scf.yield
2841
// CHECK-NEXT: }
2942
// CHECK-NEXT: return

tools/mlir-clang/Test/Verification/omp3.c

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,20 @@ void square(double* x) {
1010
}
1111
}
1212

13-
// CHECK: func @square(%arg0: memref<?xf64>, %arg1: i32, %arg2: i32, %arg3: i32) attributes {llvm.linkage = #llvm.linkage<external>} {
14-
// CHECK-NEXT: %0 = arith.index_cast %arg1 : i32 to index
15-
// CHECK-NEXT: %1 = arith.index_cast %arg2 : i32 to index
16-
// CHECK-NEXT: %2 = arith.index_cast %arg3 : i32 to index
17-
// CHECK-NEXT: scf.parallel (%arg4) = (%0) to (%1) step (%2) {
18-
// CHECK-NEXT: %3 = arith.index_cast %arg4 : index to i32
19-
// CHECK-NEXT: %4 = arith.sitofp %3 : i32 to f64
20-
// CHECK-NEXT: memref.store %4, %arg0[%arg4] : memref<?xf64>
13+
// CHECK: func @square(%arg0: memref<?xf64>)
14+
// CHECK-NEXT: %c1 = arith.constant 1 : index
15+
// CHECK-NEXT: %c2 = arith.constant 2 : index
16+
// CHECK-NEXT: %c11 = arith.constant 11 : index
17+
// CHECK-NEXT: %c1_i32 = arith.constant 1 : i32
18+
// CHECK-NEXT: %c3 = arith.constant 3 : index
19+
// CHECK-NEXT: scf.parallel (%arg1) = (%c3) to (%c11) step (%c2) {
20+
// CHECK-NEXT: %0 = arith.index_cast %arg1 : index to i32
21+
// CHECK-NEXT: %1 = arith.sitofp %0 : i32 to f64
22+
// CHECK-NEXT: memref.store %1, %arg0[%arg1] : memref<?xf64>
23+
// CHECK-NEXT: %2 = arith.addi %0, %c1_i32 : i32
24+
// CHECK-NEXT: %3 = arith.addi %arg1, %c1 : index
25+
// CHECK-NEXT: %4 = arith.sitofp %2 : i32 to f64
26+
// CHECK-NEXT: memref.store %4, %arg0[%3] : memref<?xf64>
2127
// CHECK-NEXT: scf.yield
2228
// CHECK-NEXT: }
2329
// CHECK-NEXT: return

tools/mlir-clang/Test/Verification/omp4.c

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,24 @@ void square(double* x, int ss) {
1111
}
1212
}
1313

14-
// CHECK: func @square(%arg0: memref<?xf64>, %arg1: i32, %arg2: i32, %arg3: i32) attributes {llvm.linkage = #llvm.linkage<external>} {
15-
// CHECK-NEXT: %0 = arith.index_cast %arg1 : i32 to index
16-
// CHECK-NEXT: %1 = arith.index_cast %arg2 : i32 to index
17-
// CHECK-NEXT: %2 = arith.index_cast %arg3 : i32 to index
18-
// CHECK-NEXT: scf.parallel (%arg4) = (%0) to (%1) step (%2) {
19-
// CHECK-NEXT: %3 = arith.index_cast %arg4 : index to i32
20-
// CHECK-NEXT: %4 = arith.sitofp %3 : i32 to f64
21-
// CHECK-NEXT: memref.store %4, %arg0[%arg4] : memref<?xf64>
14+
// CHECK: func @square(%arg0: memref<?xf64>, %arg1: i32)
15+
// CHECK-NEXT: %c1 = arith.constant 1 : index
16+
// CHECK-NEXT: %c11 = arith.constant 11 : index
17+
// CHECK-NEXT: %c2 = arith.constant 2 : index
18+
// CHECK-NEXT: %c1_i32 = arith.constant 1 : i32
19+
// CHECK-NEXT: %0 = call @get(%arg1) : (i32) -> i32
20+
// CHECK-NEXT: %1 = arith.index_cast %0 : i32 to index
21+
// CHECK-NEXT: %2 = arith.subi %c11, %1 : index
22+
// CHECK-NEXT: %3 = arith.divui %2, %c2 : index
23+
// CHECK-NEXT: %4 = arith.muli %3, %c2 : index
24+
// CHECK-NEXT: %5 = arith.addi %1, %4 : index
25+
// CHECK-NEXT: scf.parallel (%arg2) = (%1) to (%5) step (%c2) {
26+
// CHECK-NEXT: %6 = arith.index_cast %arg2 : index to i32
27+
// CHECK-NEXT: %7 = arith.sitofp %6 : i32 to f64
28+
// CHECK-NEXT: memref.store %7, %arg0[%arg2] : memref<?xf64>
29+
// CHECK-NEXT: %8 = arith.addi %6, %c1_i32 : i32
30+
// CHECK-NEXT: %9 = arith.addi %arg2, %c1 : index
31+
// CHECK-NEXT: %10 = arith.sitofp %8 : i32 to f64
32+
// CHECK-NEXT: memref.store %10, %arg0[%9] : memref<?xf64>
2233
// CHECK-NEXT: scf.yield
2334
// CHECK-NEXT: }
24-
// CHECK-NEXT: return
25-
// CHECK-NEXT: }

tools/mlir-clang/Test/Verification/omp5.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ void square(double* x, int sstart, int send, int sinc) {
88
}
99

1010
// CHECK: func @square(%arg0: memref<?xf64>, %arg1: i32, %arg2: i32, %arg3: i32) attributes {llvm.linkage = #llvm.linkage<external>} {
11-
// CHECK-NEXT: %0 = arith.index_cast %arg1 : i32 to index
12-
// CHECK-NEXT: %1 = arith.index_cast %arg2 : i32 to index
13-
// CHECK-NEXT: %2 = arith.index_cast %arg3 : i32 to index
14-
// CHECK-NEXT: scf.parallel (%arg4) = (%0) to (%1) step (%2) {
15-
// CHECK-NEXT: %3 = arith.index_cast %arg4 : index to i32
16-
// CHECK-NEXT: %4 = arith.sitofp %3 : i32 to f64
17-
// CHECK-NEXT: memref.store %4, %arg0[%arg4] : memref<?xf64>
11+
// CHECK-NEXT: %c1 = arith.constant 1 : index
12+
// CHECK-DAG: %[[i0:.+]] = arith.index_cast %arg1 : i32 to index
13+
// CHECK-DAG: %[[i1:.+]] = arith.index_cast %arg2 : i32 to index
14+
// CHECK-NEXT: scf.parallel (%arg4) = (%[[i0]]) to (%[[i1]]) step (%c1) {
15+
// CHECK-NEXT: %2 = arith.index_cast %arg4 : index to i32
16+
// CHECK-NEXT: %3 = arith.sitofp %2 : i32 to f64
17+
// CHECK-NEXT: memref.store %3, %arg0[%arg4] : memref<?xf64>
1818
// CHECK-NEXT: scf.yield
1919
// CHECK-NEXT: }
2020
// CHECK-NEXT: return

0 commit comments

Comments
 (0)