Skip to content

Commit d3d8b6a

Browse files
kumasentoivanradanov
authored andcommitted
[README] update matmul example
1 parent 3fa9893 commit d3d8b6a

File tree

1 file changed

+27
-19
lines changed

1 file changed

+27
-19
lines changed

tools/polymer/README.md

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -103,18 +103,18 @@ Optimize MLIR code described in the Affine dialect by Pluto:
103103
```mlir
104104
// File name: matmul.mlir
105105
func @matmul() {
106-
%A = alloc() : memref<64x64xf32>
107-
%B = alloc() : memref<64x64xf32>
108-
%C = alloc() : memref<64x64xf32>
106+
%A = memref.alloc() : memref<64x64xf32>
107+
%B = memref.alloc() : memref<64x64xf32>
108+
%C = memref.alloc() : memref<64x64xf32>
109109
110110
affine.for %i = 0 to 64 {
111111
affine.for %j = 0 to 64 {
112112
affine.for %k = 0 to 64 {
113113
%0 = affine.load %A[%i, %k] : memref<64x64xf32>
114114
%1 = affine.load %B[%k, %j] : memref<64x64xf32>
115-
%2 = mulf %0, %1 : f32
115+
%2 = arith.mulf %0, %1 : f32
116116
%3 = affine.load %C[%i, %j] : memref<64x64xf32>
117-
%4 = addf %2, %3 : f32
117+
%4 = arith.addf %2, %3 : f32
118118
affine.store %4, %C[%i, %j] : memref<64x64xf32>
119119
}
120120
}
@@ -135,21 +135,29 @@ Output:
135135

136136
```mlir
137137
#map0 = affine_map<(d0) -> (d0 * 32)>
138-
#map1 = affine_map<(d0) -> (d0 * 32 + 31)>
138+
#map1 = affine_map<(d0) -> (d0 * 32 + 32)>
139139
module {
140-
func @main(%arg0: memref<?x?xf32>, %arg1: memref<?x?xf32>, %arg2: memref<?x?xf32>) {
141-
affine.for %arg3 = 0 to 1 {
142-
affine.for %arg4 = 0 to 1 {
143-
affine.for %arg5 = 0 to 1 {
144-
affine.for %arg6 = #map0(%arg3) to #map1(%arg3) {
145-
affine.for %arg7 = #map0(%arg5) to #map1(%arg5) {
146-
affine.for %arg8 = #map0(%arg4) to #map1(%arg4) {
147-
%0 = affine.load %arg0[%arg6, %arg8] : memref<?x?xf32>
148-
%1 = affine.load %arg2[%arg7, %arg8] : memref<?x?xf32>
149-
%2 = affine.load %arg1[%arg6, %arg7] : memref<?x?xf32>
150-
%3 = mulf %2, %1 : f32
151-
%4 = addf %3, %0 : f32
152-
affine.store %4, %arg0[%arg6, %arg8] : memref<?x?xf32>
140+
func private @S0(%arg0: index, %arg1: index, %arg2: memref<64x64xf32>, %arg3: index, %arg4: memref<64x64xf32>, %arg5: memref<64x64xf32>) attributes {scop.stmt} {
141+
%0 = affine.load %arg5[symbol(%arg0), symbol(%arg3)] : memref<64x64xf32>
142+
%1 = affine.load %arg4[symbol(%arg3), symbol(%arg1)] : memref<64x64xf32>
143+
%2 = arith.mulf %0, %1 : f32
144+
%3 = affine.load %arg2[symbol(%arg0), symbol(%arg1)] : memref<64x64xf32>
145+
%4 = arith.addf %2, %3 : f32
146+
affine.store %4, %arg2[symbol(%arg0), symbol(%arg1)] : memref<64x64xf32>
147+
return
148+
}
149+
150+
func @matmul() {
151+
%0 = memref.alloc() : memref<64x64xf32>
152+
%1 = memref.alloc() : memref<64x64xf32>
153+
%2 = memref.alloc() : memref<64x64xf32>
154+
affine.for %arg0 = 0 to 2 {
155+
affine.for %arg1 = 0 to 2 {
156+
affine.for %arg2 = 0 to 2 {
157+
affine.for %arg3 = #map0(%arg0) to #map1(%arg0) {
158+
affine.for %arg4 = #map0(%arg2) to #map1(%arg2) {
159+
affine.for %arg5 = #map0(%arg1) to #map1(%arg1) {
160+
call @S0(%arg3, %arg5, %0, %arg4, %1, %2) : (index, index, memref<64x64xf32>, index, memref<64x64xf32>, memref<64x64xf32>) -> ()
153161
}
154162
}
155163
}

0 commit comments

Comments
 (0)