Skip to content

Commit 56ac9da

Browse files
authored
fix arith cmpi (#119)
1 parent 4d77301 commit 56ac9da

File tree

4 files changed

+30
-29
lines changed

4 files changed

+30
-29
lines changed

mlir/extras/dialects/ext/arith.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -367,9 +367,10 @@ def _binary_op(
367367
if signedness is not None:
368368
predicate = signedness + predicate
369369
else:
370-
if lhs.dtype.is_signed:
370+
if lhs.dtype.is_signed or lhs.dtype.is_signless:
371371
predicate = "s" + predicate
372372
else:
373+
assert lhs.dtype.is_unsigned
373374
predicate = "u" + predicate
374375
return lhs.__class__(op(predicate, lhs, rhs, loc=loc), dtype=lhs.dtype)
375376
else:

tests/test_operator_overloading.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,10 @@ def test_arith_cmp(ctx: MLIRContext):
148148
module {
149149
%c1_i32 = arith.constant 1 : i32
150150
%c2_i32 = arith.constant 2 : i32
151-
%0 = arith.cmpi ult, %c1_i32, %c2_i32 : i32
152-
%1 = arith.cmpi ule, %c1_i32, %c2_i32 : i32
153-
%2 = arith.cmpi ugt, %c1_i32, %c2_i32 : i32
154-
%3 = arith.cmpi uge, %c1_i32, %c2_i32 : i32
151+
%0 = arith.cmpi slt, %c1_i32, %c2_i32 : i32
152+
%1 = arith.cmpi sle, %c1_i32, %c2_i32 : i32
153+
%2 = arith.cmpi sgt, %c1_i32, %c2_i32 : i32
154+
%3 = arith.cmpi sge, %c1_i32, %c2_i32 : i32
155155
%4 = arith.cmpi eq, %c1_i32, %c2_i32 : i32
156156
%5 = arith.cmpi ne, %c1_i32, %c2_i32 : i32
157157
%6 = arith.andi %c1_i32, %c2_i32 : i32

tests/test_regions.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ def foo1():
405405
^bb1: // no predecessors
406406
%c2_i32 = arith.constant 2 : i32
407407
%c3_i32 = arith.constant 3 : i32
408-
%0 = arith.cmpi ult, %c2_i32, %c3_i32 : i32
408+
%0 = arith.cmpi slt, %c2_i32, %c3_i32 : i32
409409
cf.cond_br %0, ^bb2, ^bb3
410410
^bb2: // pred: ^bb1
411411
%c4_i32 = arith.constant 4 : i32
@@ -448,7 +448,7 @@ def foo1():
448448
^bb1: // no predecessors
449449
%c2_i32 = arith.constant 2 : i32
450450
%c3_i32 = arith.constant 3 : i32
451-
%0 = arith.cmpi ult, %c2_i32, %c3_i32 : i32
451+
%0 = arith.cmpi slt, %c2_i32, %c3_i32 : i32
452452
cf.cond_br %0, ^bb2(%c2_i32, %c3_i32 : i32, i32), ^bb3(%c2_i32, %c3_i32 : i32, i32)
453453
^bb2(%1: i32, %2: i32): // pred: ^bb1
454454
%c4_i32 = arith.constant 4 : i32
@@ -583,7 +583,7 @@ def foo1():
583583
^bb1: // no predecessors
584584
%c2_i32 = arith.constant 2 : i32
585585
%c3_i32 = arith.constant 3 : i32
586-
%0 = arith.cmpi ult, %c2_i32, %c3_i32 : i32
586+
%0 = arith.cmpi slt, %c2_i32, %c3_i32 : i32
587587
cf.cond_br %0, ^bb2, ^bb3
588588
^bb2: // pred: ^bb1
589589
%c4_i32 = arith.constant 4 : i32

tests/test_scf.py

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2685,7 +2685,7 @@ def test_while_2(ctx: MLIRContext):
26852685
%c1_i32 = arith.constant 1 : i32
26862686
%c2_i32 = arith.constant 2 : i32
26872687
%0:2 = scf.while (%arg0 = %c1_i32, %arg1 = %c2_i32) : (i32, i32) -> (i32, i32) {
2688-
%1 = arith.cmpi ult, %c1_i32, %c2_i32 : i32
2688+
%1 = arith.cmpi slt, %c1_i32, %c2_i32 : i32
26892689
scf.condition(%1) %arg0, %arg1 : i32, i32
26902690
} do {
26912691
^bb0(%arg0: i32, %arg1: i32):
@@ -2715,7 +2715,7 @@ def foo():
27152715
%c1_i32 = arith.constant 1 : i32
27162716
%c2_i32 = arith.constant 2 : i32
27172717
%0:2 = scf.while (%arg0 = %c1_i32, %arg1 = %c2_i32) : (i32, i32) -> (i32, i32) {
2718-
%1 = arith.cmpi ult, %c1_i32, %c2_i32 : i32
2718+
%1 = arith.cmpi slt, %c1_i32, %c2_i32 : i32
27192719
scf.condition(%1) %arg0, %arg1 : i32, i32
27202720
} do {
27212721
^bb0(%arg0: i32, %arg1: i32):
@@ -2745,7 +2745,7 @@ def foo():
27452745
%c1_i32 = arith.constant 1 : i32
27462746
%c2_i32 = arith.constant 2 : i32
27472747
%0:2 = scf.while (%arg0 = %c1_i32, %arg1 = %c2_i32) : (i32, i32) -> (i32, i32) {
2748-
%1 = arith.cmpi ult, %c1_i32, %c2_i32 : i32
2748+
%1 = arith.cmpi slt, %c1_i32, %c2_i32 : i32
27492749
scf.condition(%1) %arg0, %arg1 : i32, i32
27502750
} do {
27512751
^bb0(%arg0: i32, %arg1: i32):
@@ -2775,10 +2775,10 @@ def foo():
27752775
module {
27762776
%c1_i32 = arith.constant 1 : i32
27772777
%c2_i32 = arith.constant 2 : i32
2778-
%0 = arith.cmpi ult, %c1_i32, %c2_i32 : i32
2778+
%0 = arith.cmpi slt, %c1_i32, %c2_i32 : i32
27792779
scf.if %0 {
27802780
%1:2 = scf.while (%arg0 = %c1_i32, %arg1 = %c2_i32) : (i32, i32) -> (i32, i32) {
2781-
%2 = arith.cmpi ult, %c1_i32, %c2_i32 : i32
2781+
%2 = arith.cmpi slt, %c1_i32, %c2_i32 : i32
27822782
scf.condition(%2) %arg0, %arg1 : i32, i32
27832783
} do {
27842784
^bb0(%arg0: i32, %arg1: i32):
@@ -2815,28 +2815,28 @@ def foo():
28152815
module {
28162816
%c1_i32 = arith.constant 1 : i32
28172817
%c2_i32 = arith.constant 2 : i32
2818-
%0 = arith.cmpi ult, %c1_i32, %c2_i32 : i32
2818+
%0 = arith.cmpi slt, %c1_i32, %c2_i32 : i32
28192819
scf.if %0 {
28202820
%1:2 = scf.while (%arg0 = %c1_i32, %arg1 = %c2_i32) : (i32, i32) -> (i32, i32) {
2821-
%2 = arith.cmpi ult, %c1_i32, %c2_i32 : i32
2821+
%2 = arith.cmpi slt, %c1_i32, %c2_i32 : i32
28222822
scf.condition(%2) %arg0, %arg1 : i32, i32
28232823
} do {
28242824
^bb0(%arg0: i32, %arg1: i32):
28252825
scf.yield %c1_i32, %c2_i32 : i32, i32
28262826
}
28272827
} else {
2828-
%1 = arith.cmpi ult, %c1_i32, %c2_i32 : i32
2828+
%1 = arith.cmpi slt, %c1_i32, %c2_i32 : i32
28292829
scf.if %1 {
28302830
%2:2 = scf.while (%arg0 = %c1_i32, %arg1 = %c2_i32) : (i32, i32) -> (i32, i32) {
2831-
%3 = arith.cmpi ult, %c1_i32, %c2_i32 : i32
2831+
%3 = arith.cmpi slt, %c1_i32, %c2_i32 : i32
28322832
scf.condition(%3) %arg0, %arg1 : i32, i32
28332833
} do {
28342834
^bb0(%arg0: i32, %arg1: i32):
28352835
scf.yield %c1_i32, %c2_i32 : i32, i32
28362836
}
28372837
} else {
28382838
%2:2 = scf.while (%arg0 = %c1_i32, %arg1 = %c2_i32) : (i32, i32) -> (i32, i32) {
2839-
%3 = arith.cmpi ult, %c1_i32, %c2_i32 : i32
2839+
%3 = arith.cmpi slt, %c1_i32, %c2_i32 : i32
28402840
scf.condition(%3) %arg0, %arg1 : i32, i32
28412841
} do {
28422842
^bb0(%arg0: i32, %arg1: i32):
@@ -2873,10 +2873,10 @@ def foo():
28732873
module {
28742874
%c1_i32 = arith.constant 1 : i32
28752875
%c2_i32 = arith.constant 2 : i32
2876-
%0 = arith.cmpi ult, %c1_i32, %c2_i32 : i32
2876+
%0 = arith.cmpi slt, %c1_i32, %c2_i32 : i32
28772877
%1:2 = scf.if %0 -> (i32, i32) {
28782878
%2:2 = scf.while (%arg0 = %c1_i32, %arg1 = %c2_i32) : (i32, i32) -> (i32, i32) {
2879-
%3 = arith.cmpi ult, %c1_i32, %c2_i32 : i32
2879+
%3 = arith.cmpi slt, %c1_i32, %c2_i32 : i32
28802880
scf.condition(%3) %arg0, %arg1 : i32, i32
28812881
} do {
28822882
^bb0(%arg0: i32, %arg1: i32):
@@ -2885,7 +2885,7 @@ def foo():
28852885
scf.yield %2#0, %2#1 : i32, i32
28862886
} else {
28872887
%2:2 = scf.while (%arg0 = %c1_i32, %arg1 = %c2_i32) : (i32, i32) -> (i32, i32) {
2888-
%3 = arith.cmpi ult, %c1_i32, %c2_i32 : i32
2888+
%3 = arith.cmpi slt, %c1_i32, %c2_i32 : i32
28892889
scf.condition(%3) %arg0, %arg1 : i32, i32
28902890
} do {
28912891
^bb0(%arg0: i32, %arg1: i32):
@@ -2922,10 +2922,10 @@ def foo():
29222922
module {
29232923
%c1_i32 = arith.constant 1 : i32
29242924
%c2_i32 = arith.constant 2 : i32
2925-
%0 = arith.cmpi ult, %c1_i32, %c2_i32 : i32
2925+
%0 = arith.cmpi slt, %c1_i32, %c2_i32 : i32
29262926
%1:2 = scf.if %0 -> (i32, i32) {
29272927
%2:2 = scf.while (%arg0 = %c1_i32, %arg1 = %c2_i32) : (i32, i32) -> (i32, i32) {
2928-
%3 = arith.cmpi ult, %c1_i32, %c2_i32 : i32
2928+
%3 = arith.cmpi slt, %c1_i32, %c2_i32 : i32
29292929
scf.condition(%3) %arg0, %arg1 : i32, i32
29302930
} do {
29312931
^bb0(%arg0: i32, %arg1: i32):
@@ -2934,7 +2934,7 @@ def foo():
29342934
scf.yield %2#0, %2#1 : i32, i32
29352935
} else {
29362936
%2:2 = scf.while (%arg0 = %c1_i32, %arg1 = %c2_i32) : (i32, i32) -> (i32, i32) {
2937-
%3 = arith.cmpi ult, %c1_i32, %c2_i32 : i32
2937+
%3 = arith.cmpi slt, %c1_i32, %c2_i32 : i32
29382938
scf.condition(%3) %arg0, %arg1 : i32, i32
29392939
} do {
29402940
^bb0(%arg0: i32, %arg1: i32):
@@ -2971,10 +2971,10 @@ def foo():
29712971
module {
29722972
%c1_i32 = arith.constant 1 : i32
29732973
%c2_i32 = arith.constant 2 : i32
2974-
%0 = arith.cmpi ult, %c1_i32, %c2_i32 : i32
2974+
%0 = arith.cmpi slt, %c1_i32, %c2_i32 : i32
29752975
%1:2 = scf.if %0 -> (i32, i32) {
29762976
%2:2 = scf.while (%arg0 = %c1_i32, %arg1 = %c2_i32) : (i32, i32) -> (i32, i32) {
2977-
%3 = arith.cmpi ult, %c1_i32, %c2_i32 : i32
2977+
%3 = arith.cmpi slt, %c1_i32, %c2_i32 : i32
29782978
scf.condition(%3) %arg0, %arg1 : i32, i32
29792979
} do {
29802980
^bb0(%arg0: i32, %arg1: i32):
@@ -2983,7 +2983,7 @@ def foo():
29832983
scf.yield %2#0, %2#1 : i32, i32
29842984
} else {
29852985
%2:2 = scf.while (%arg0 = %c1_i32, %arg1 = %c2_i32) : (i32, i32) -> (i32, i32) {
2986-
%3 = arith.cmpi ult, %c1_i32, %c2_i32 : i32
2986+
%3 = arith.cmpi slt, %c1_i32, %c2_i32 : i32
29872987
scf.condition(%3) %arg0, %arg1 : i32, i32
29882988
} do {
29892989
^bb0(%arg0: i32, %arg1: i32):
@@ -3017,11 +3017,11 @@ def foo():
30173017
%c1_i32 = arith.constant 1 : i32
30183018
%c2_i32 = arith.constant 2 : i32
30193019
%0:2 = scf.while (%arg0 = %c1_i32, %arg1 = %c2_i32) : (i32, i32) -> (i32, i32) {
3020-
%1 = arith.cmpi ult, %c1_i32, %c2_i32 : i32
3020+
%1 = arith.cmpi slt, %c1_i32, %c2_i32 : i32
30213021
scf.condition(%1) %arg0, %arg1 : i32, i32
30223022
} do {
30233023
^bb0(%arg0: i32, %arg1: i32):
3024-
%1 = arith.cmpi ult, %c1_i32, %c2_i32 : i32
3024+
%1 = arith.cmpi slt, %c1_i32, %c2_i32 : i32
30253025
scf.if %1 {
30263026
%c3_i32 = arith.constant 3 : i32
30273027
}

0 commit comments

Comments
 (0)