Skip to content

Commit 393eff4

Browse files
authored
[mlir][arith] Adding mul operation regressions (#96975)
Regressions for the mul operation, a part of the original large PR #92272
1 parent 66a2058 commit 393eff4

File tree

1 file changed

+119
-0
lines changed

1 file changed

+119
-0
lines changed
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
// RUN: mlir-opt %s --convert-scf-to-cf --convert-cf-to-llvm --convert-vector-to-llvm \
2+
// RUN: --convert-func-to-llvm --convert-arith-to-llvm | \
3+
// RUN: mlir-cpu-runner -e entry -entry-point-result=void \
4+
// RUN: --shared-libs=%mlir_c_runner_utils | \
5+
// RUN: FileCheck %s --match-full-lines
6+
7+
func.func @mulsi_extended_i1(%v1 : i1, %v2 : i1) {
8+
vector.print str "@mulsi_extended_i1\n"
9+
%low, %high = arith.mulsi_extended %v1, %v2 : i1
10+
vector.print %low : i1
11+
vector.print %high : i1
12+
return
13+
}
14+
15+
func.func @mulsi_extended_i8(%v1 : i8, %v2 : i8) {
16+
vector.print str "@mulsi_extended_i8\n"
17+
%low, %high = arith.mulsi_extended %v1, %v2 : i8
18+
vector.print %low : i8
19+
vector.print %high : i8
20+
return
21+
}
22+
23+
func.func @mulsi_extended() {
24+
// ------------------------------------------------
25+
// Test i1
26+
// ------------------------------------------------
27+
28+
// mulsi_extended on i1, tests for overflow bit
29+
// mulsi_extended 1, 1 : i1 = (1, 0)
30+
%true = arith.constant true
31+
%false = arith.constant false
32+
33+
// CHECK-LABEL: @mulsi_extended_i1
34+
// CHECK-NEXT: 1
35+
// CHECK-NEXT: 0
36+
func.call @mulsi_extended_i1(%true, %true) : (i1, i1) -> ()
37+
38+
// CHECK-LABEL: @mulsi_extended_i1
39+
// CHECK-NEXT: 0
40+
// CHECK-NEXT: 0
41+
func.call @mulsi_extended_i1(%true, %false) : (i1, i1) -> ()
42+
43+
// CHECK-LABEL: @mulsi_extended_i1
44+
// CHECK-NEXT: 0
45+
// CHECK-NEXT: 0
46+
func.call @mulsi_extended_i1(%false, %true) : (i1, i1) -> ()
47+
48+
// CHECK-LABEL: @mulsi_extended_i1
49+
// CHECK-NEXT: 0
50+
// CHECK-NEXT: 0
51+
func.call @mulsi_extended_i1(%false, %false) : (i1, i1) -> ()
52+
53+
// ------------------------------------------------
54+
// Test i8
55+
// ------------------------------------------------
56+
// mulsi extended versions, with overflow
57+
%c_100_i8 = arith.constant -100 : i8
58+
59+
// mulsi_extended -100, -100 : i8 = (16, 39)
60+
// CHECK-LABEL: @mulsi_extended_i8
61+
// CHECK-NEXT: 16
62+
// CHECK-NEXT: 39
63+
func.call @mulsi_extended_i8(%c_100_i8, %c_100_i8) : (i8, i8) -> ()
64+
65+
// ------------------------------------------------
66+
// TODO: Test i16, i32 etc..
67+
// ------------------------------------------------
68+
return
69+
}
70+
71+
func.func @mului_extended_i8(%v1 : i8, %v2 : i8) {
72+
vector.print str "@mului_extended_i8\n"
73+
%low, %high = arith.mului_extended %v1, %v2 : i8
74+
vector.print %low : i8
75+
vector.print %high : i8
76+
return
77+
}
78+
79+
func.func @mului_extended() {
80+
// ------------------------------------------------
81+
// Test i8
82+
// ------------------------------------------------
83+
%c_n100_i8 = arith.constant -100 : i8
84+
%c_156_i8 = arith.constant 156 : i8
85+
86+
// mului_extended -100, -100 : i8 = (16, 95)
87+
// and on equivalent representations (e.g. 156 === -100 (mod 256))
88+
89+
// CHECK-LABEL: @mului_extended_i8
90+
// CHECK-NEXT: 16
91+
// CHECK-NEXT: 95
92+
func.call @mului_extended_i8(%c_n100_i8, %c_n100_i8) : (i8, i8) -> ()
93+
94+
// CHECK-LABEL: @mului_extended_i8
95+
// CHECK-NEXT: 16
96+
// CHECK-NEXT: 95
97+
func.call @mului_extended_i8(%c_n100_i8, %c_156_i8) : (i8, i8) -> ()
98+
99+
// CHECK-LABEL: @mului_extended_i8
100+
// CHECK-NEXT: 16
101+
// CHECK-NEXT: 95
102+
func.call @mului_extended_i8(%c_156_i8, %c_n100_i8) : (i8, i8) -> ()
103+
104+
// CHECK-LABEL: @mului_extended_i8
105+
// CHECK-NEXT: 16
106+
// CHECK-NEXT: 95
107+
func.call @mului_extended_i8(%c_156_i8, %c_156_i8) : (i8, i8) -> ()
108+
109+
// ------------------------------------------------
110+
// TODO: Test i1, i16, i32 etc..
111+
// ------------------------------------------------
112+
return
113+
}
114+
115+
func.func @entry() {
116+
func.call @mulsi_extended() : () -> ()
117+
func.call @mului_extended() : () -> ()
118+
return
119+
}

0 commit comments

Comments
 (0)