@@ -284,87 +284,6 @@ func.func @matmul_4(%arg0: vector<2x1xf32>, %arg1: vector<1x3xf32>, %arg2: vecto
284
284
return %0 : vector <3 x2 xf32 >
285
285
}
286
286
287
- #matmat_accesses_5 = [
288
- affine_map <(m , n , k ) -> (m , k )>,
289
- affine_map <(m , n , k ) -> (k , n )>,
290
- affine_map <(m , n , k ) -> (n , m )>
291
- ]
292
- #matmat_trait_5 = {
293
- indexing_maps = #matmat_accesses_5 ,
294
- iterator_types = [" parallel" , " parallel" , " reduction" ]
295
- }
296
-
297
- // CHECK-LABEL: func @matmul_5
298
- // CHECK-SAME: %[[A:[a-zA-Z0-9]*]]: vector<2x1xf32>,
299
- // CHECK-SAME: %[[B:[a-zA-Z0-9]*]]: vector<1x3xf32>,
300
- // CHECK-SAME: %[[C:[a-zA-Z0-9]*]]: vector<3x2xf32>
301
- // CHECK: %[[At:.*]] = vector.transpose %[[A]], [1, 0]
302
- // CHECK-DAG: %[[a0:.*]] = vector.extract %[[At]][0] : vector<2xf32> from vector<1x2xf32>
303
- // CHECK-DAG: %[[b0:.*]] = vector.extract %[[B]][0] : vector<3xf32> from vector<1x3xf32>
304
- // CHECK: %[[c0:.*]] = vector.outerproduct %[[b0]], %[[a0]], %[[C]]
305
- // CHECK: return %[[c0]] : vector<3x2xf32>
306
- func.func @matmul_5 (%arg0: vector <2 x1 xf32 >, %arg1: vector <1 x3 xf32 >, %arg2: vector <3 x2 xf32 >)
307
- -> vector <3 x2 xf32 >
308
- {
309
- %0 = vector.contract #matmat_trait_5 %arg0 , %arg1 , %arg2
310
- : vector <2 x1 xf32 >, vector <1 x3 xf32 > into vector <3 x2 xf32 >
311
- return %0 : vector <3 x2 xf32 >
312
- }
313
-
314
- #matmat_accesses_6 = [
315
- affine_map <(m , n , k ) -> (m , k )>,
316
- affine_map <(m , n , k ) -> (k , n )>,
317
- affine_map <(m , n , k ) -> (n , m )>
318
- ]
319
- #matmat_trait_6 = {
320
- indexing_maps = #matmat_accesses_6 ,
321
- iterator_types = [" parallel" , " parallel" , " reduction" ]
322
- }
323
-
324
- // CHECK-LABEL: func @matmul_6
325
- // CHECK-SAME: %[[A:[a-zA-Z0-9]*]]: vector<2x1xf32>,
326
- // CHECK-SAME: %[[B:[a-zA-Z0-9]*]]: vector<1x3xf32>,
327
- // CHECK-SAME: %[[C:[a-zA-Z0-9]*]]: vector<3x2xf32>
328
- // CHECK: %[[At:.*]] = vector.transpose %[[A]], [1, 0]
329
- // CHECK-DAG: %[[a0:.*]] = vector.extract %[[At]][0] : vector<2xf32> from vector<1x2xf32>
330
- // CHECK-DAG: %[[b0:.*]] = vector.extract %[[B]][0] : vector<3xf32> from vector<1x3xf32>
331
- // CHECK: %[[c0:.*]] = vector.outerproduct %[[b0]], %[[a0]], %[[C]]
332
- // CHECK: return %[[c0]] : vector<3x2xf32>
333
- func.func @matmul_6 (%arg0: vector <2 x1 xf32 >, %arg1: vector <1 x3 xf32 >, %arg2: vector <3 x2 xf32 >)
334
- -> vector <3 x2 xf32 >
335
- {
336
- %0 = vector.contract #matmat_trait_6 %arg0 , %arg1 , %arg2
337
- : vector <2 x1 xf32 >, vector <1 x3 xf32 > into vector <3 x2 xf32 >
338
- return %0 : vector <3 x2 xf32 >
339
- }
340
-
341
- #matmat_accesses_7 = [
342
- affine_map <(m , n , k ) -> (m , k )>,
343
- affine_map <(m , n , k ) -> (k , n )>,
344
- affine_map <(m , n , k ) -> (n , m )>
345
- ]
346
- #matmat_trait_7 = {
347
- indexing_maps = #matmat_accesses_7 ,
348
- iterator_types = [" parallel" , " parallel" , " reduction" ]
349
- }
350
-
351
- // CHECK-LABEL: func @matmul_7
352
- // CHECK-SAME: %[[A:[a-zA-Z0-9]*]]: vector<2x1xf32>,
353
- // CHECK-SAME: %[[B:[a-zA-Z0-9]*]]: vector<1x3xf32>,
354
- // CHECK-SAME: %[[C:[a-zA-Z0-9]*]]: vector<3x2xf32>
355
- // CHECK: %[[At:.*]] = vector.transpose %[[A]], [1, 0]
356
- // CHECK-DAG: %[[a0:.*]] = vector.extract %[[At]][0] : vector<2xf32> from vector<1x2xf32>
357
- // CHECK-DAG: %[[b0:.*]] = vector.extract %[[B]][0] : vector<3xf32> from vector<1x3xf32>
358
- // CHECK: %[[c0:.*]] = vector.outerproduct %[[b0]], %[[a0]], %[[C]]
359
- // CHECK: return %[[c0]] : vector<3x2xf32>
360
- func.func @matmul_7 (%arg0: vector <2 x1 xf32 >, %arg1: vector <1 x3 xf32 >, %arg2: vector <3 x2 xf32 >)
361
- -> vector <3 x2 xf32 >
362
- {
363
- %0 = vector.contract #matmat_trait_7 %arg0 , %arg1 , %arg2
364
- : vector <2 x1 xf32 >, vector <1 x3 xf32 > into vector <3 x2 xf32 >
365
- return %0 : vector <3 x2 xf32 >
366
- }
367
-
368
287
// CHECK-LABEL: @masked_matvec_mk_k_m
369
288
// CHECK-SAME: %[[MAT:.+]]: vector<4x2xf32>
370
289
// CHECK-SAME: %[[VEC:.+]]: vector<2xf32>
0 commit comments