diff --git a/mlir/docs/Dialects/Vector.md b/mlir/docs/Dialects/Vector.md --- a/mlir/docs/Dialects/Vector.md +++ b/mlir/docs/Dialects/Vector.md @@ -95,7 +95,9 @@ ### Virtual Vector Ops -Some existing Standard and Vector Dialect on `n-D` `vector` types comprise: ``` +Some existing Standard and Vector Dialect on `n-D` `vector` types comprise: + +```mlir %2 = arith.addf %0, %1 : vector<3x7x8xf32> // -> vector<3x7x8xf32> %2 = arith.mulf %0, %1 : vector<3x7x8xf32> // -> vector<3x7x8xf32> %2 = std.splat %1 : vector<3x7x8xf32> // -> vector<3x7x8xf32> @@ -112,7 +114,8 @@ memref<7x?xf32>, vector<4xf32> vector.transfer_write %f1, %A[%i0, %i1, %i2, %i3] {permutation_map = (d0, d1, -d2, d3) -> (d3, d1, d0)} : vector<5x4x3xf32>, memref ``` +d2, d3) -> (d3, d1, d0)} : vector<5x4x3xf32>, memref +``` The list of Vector is currently undergoing evolutions and is best kept track of by following the evolution of the @@ -342,12 +345,16 @@ is possible over the whole lowered `n-D` vector type. 2. Supports special intrinsics and native operations. -Cons: 1. Requires linearization/delinearization logic everywhere, translations -are complex. 2. Hides away the real HW structure behind dynamic indexing: at the -end of the day, HW vector sizes are generally fixed and multiple vectors will be -needed to hold a vector that is larger than the HW. 3. Unlikely peephole -optimizations will result in good code: arbitrary dynamic accesses, especially -at HW vector boundaries unlikely to result in regular patterns. +Cons: + +1. Requires linearization/delinearization logic everywhere, translations are + complex. +2. Hides away the real HW structure behind dynamic indexing: at the end of the + day, HW vector sizes are generally fixed and multiple vectors will be needed + to hold a vector that is larger than the HW. +3. Unlikely peephole optimizations will result in good code: arbitrary dynamic + accesses, especially at HW vector boundaries unlikely to result in regular + patterns. ### Discussion