| func.func @test_mmt4d() { |
| %lhs = util.unfoldable_constant |
| dense< |
| [ |
| [ |
| [ |
| [1.0], |
| [2.0], |
| [3.0], |
| [4.0], |
| [5.0], |
| [6.0], |
| [7.0], |
| [8.0] |
| ] |
| ] |
| ]> : tensor<1x1x8x1xf32> |
| %rhs = util.unfoldable_constant |
| dense< |
| [ |
| [ |
| [ |
| [1.0e-1], |
| [1.0e-2], |
| [1.0e-3], |
| [1.0e-4], |
| [1.0e-5], |
| [1.0e-6], |
| [1.0e-7], |
| [1.0e-8] |
| ] |
| ] |
| ]> : tensor<1x1x8x1xf32> |
| %init_acc = util.unfoldable_constant |
| dense< |
| [ |
| [ |
| [ |
| [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], |
| [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], |
| [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], |
| [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], |
| [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], |
| [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], |
| [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], |
| [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0] |
| ] |
| ] |
| ]> : tensor<1x1x8x8xf32> |
| |
| %result = linalg.mmt4d ins(%lhs, %rhs : tensor<1x1x8x1xf32>, tensor<1x1x8x1xf32>) |
| outs(%init_acc : tensor<1x1x8x8xf32>) -> tensor<1x1x8x8xf32> |
| |
| check.expect_almost_eq_const(%result, dense< |
| [ |
| [ |
| [ |
| [1.0e-1, 1.0e-2, 1.0e-3, 1.0e-4, 1.0e-5, 1.0e-6, 1.0e-7, 1.0e-8], |
| [2.0e-1, 2.0e-2, 2.0e-3, 2.0e-4, 2.0e-5, 2.0e-6, 2.0e-7, 2.0e-8], |
| [3.0e-1, 3.0e-2, 3.0e-3, 3.0e-4, 3.0e-5, 3.0e-6, 3.0e-7, 3.0e-8], |
| [4.0e-1, 4.0e-2, 4.0e-3, 4.0e-4, 4.0e-5, 4.0e-6, 4.0e-7, 3.0e-8], |
| [5.0e-1, 5.0e-2, 5.0e-3, 5.0e-4, 5.0e-5, 5.0e-6, 5.0e-7, 4.0e-8], |
| [6.0e-1, 6.0e-2, 6.0e-3, 6.0e-4, 6.0e-5, 6.0e-6, 6.0e-7, 5.0e-8], |
| [7.0e-1, 7.0e-2, 7.0e-3, 7.0e-4, 7.0e-5, 7.0e-6, 7.0e-7, 6.0e-8], |
| [8.0e-1, 8.0e-2, 8.0e-3, 8.0e-4, 8.0e-5, 8.0e-6, 8.0e-7, 1.0] |
| ] |
| ] |
| ]> : tensor<1x1x8x8xf32>) : tensor<1x1x8x8xf32> |
| |
| return |
| } |