Skip to content

Commit f4b5447

Browse files
committed
more tests
1 parent c67b426 commit f4b5447

File tree

1 file changed

+54
-10
lines changed

1 file changed

+54
-10
lines changed

mlir/test/Dialect/Arith/canonicalize.mlir

Lines changed: 54 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2060,23 +2060,67 @@ func.func @test_divf1(%arg0 : f32, %arg1 : f32) -> (f32) {
20602060

20612061
// -----
20622062

2063-
// CHECK-LABEL: @test_divui_mul
2064-
// CHECK-SAME: (%[[ARG:.*]]: index, %{{.*}}: index)
2065-
// CHECK: return %[[ARG]]
2066-
func.func @test_divui_mul(%arg0: index, %arg1: index) -> index {
2067-
%0 = arith.muli %arg0, %arg1 overflow<nuw> : index
2063+
func.func @fold_divui_of_muli_0(%arg0 : index, %arg1 : index) -> index {
2064+
%0 = arith.muli %arg0, %arg1 overflow<nuw> : index
2065+
%1 = arith.divui %0, %arg0 : index
2066+
return %1 : index
2067+
}
2068+
// CHECK-LABEL: func @fold_divui_of_muli_0(
2069+
// CHECK-SAME: %[[ARG0:.+]]: index,
2070+
// CHECK-SAME: %[[ARG1:.+]]: index)
2071+
// CHECK: return %[[ARG1]]
2072+
2073+
func.func @fold_divui_of_muli_1(%arg0 : index, %arg1 : index) -> index {
2074+
%0 = arith.muli %arg0, %arg1 overflow<nuw> : index
20682075
%1 = arith.divui %0, %arg1 : index
20692076
return %1 : index
20702077
}
2078+
// CHECK-LABEL: func @fold_divui_of_muli_1(
2079+
// CHECK-SAME: %[[ARG0:.+]]: index,
2080+
// CHECK-SAME: %[[ARG1:.+]]: index)
2081+
// CHECK: return %[[ARG0]]
2082+
2083+
func.func @fold_divsi_of_muli_0(%arg0 : index, %arg1 : index) -> index {
2084+
%0 = arith.muli %arg0, %arg1 overflow<nsw> : index
2085+
%1 = arith.divsi %0, %arg0 : index
2086+
return %1 : index
2087+
}
2088+
// CHECK-LABEL: func @fold_divsi_of_muli_0(
2089+
// CHECK-SAME: %[[ARG0:.+]]: index,
2090+
// CHECK-SAME: %[[ARG1:.+]]: index)
2091+
// CHECK: return %[[ARG1]]
20712092

2072-
// CHECK-LABEL: @test_divsi_mul
2073-
// CHECK-SAME: (%[[ARG:.*]]: index, %{{.*}}: index)
2074-
// CHECK: return %[[ARG]]
2075-
func.func @test_divsi_mul(%arg0: index, %arg1: index) -> index {
2076-
%0 = arith.muli %arg1, %arg0 overflow<nsw> : index
2093+
func.func @fold_divsi_of_muli_1(%arg0 : index, %arg1 : index) -> index {
2094+
%0 = arith.muli %arg0, %arg1 overflow<nsw> : index
20772095
%1 = arith.divsi %0, %arg1 : index
20782096
return %1 : index
20792097
}
2098+
// CHECK-LABEL: func @fold_divsi_of_muli_1(
2099+
// CHECK-SAME: %[[ARG0:.+]]: index,
2100+
// CHECK-SAME: %[[ARG1:.+]]: index)
2101+
// CHECK: return %[[ARG0]]
2102+
2103+
// Do not fold divui(mul(a, v), v) -> a with nuw attribute.
2104+
func.func @no_fold_divui_of_muli(%arg0 : index, %arg1 : index) -> index {
2105+
%0 = arith.muli %arg0, %arg1 : index
2106+
%1 = arith.divui %0, %arg0 : index
2107+
return %1 : index
2108+
}
2109+
// CHECK-LABEL: func @no_fold_divui_of_muli
2110+
// CHECK: %[[T0:.+]] = arith.muli
2111+
// CHECK: %[[T1:.+]] = arith.divui %[[T0]],
2112+
// CHECK: return %[[T1]]
2113+
2114+
// Do not fold divsi(mul(a, v), v) -> a with nuw attribute.
2115+
func.func @no_fold_divsi_of_muli(%arg0 : index, %arg1 : index) -> index {
2116+
%0 = arith.muli %arg0, %arg1 : index
2117+
%1 = arith.divsi %0, %arg0 : index
2118+
return %1 : index
2119+
}
2120+
// CHECK-LABEL: func @no_fold_divsi_of_muli
2121+
// CHECK: %[[T0:.+]] = arith.muli
2122+
// CHECK: %[[T1:.+]] = arith.divsi %[[T0]],
2123+
// CHECK: return %[[T1]]
20802124

20812125
// -----
20822126

0 commit comments

Comments
 (0)