@@ -201,25 +201,25 @@ def XeVM_BlockLoad2dOp
201
201
let description = [{
202
202
The `xevm.blockload2d` operation loads a two dimensional matrix tile
203
203
from a base matrix residing in global memory. The parameters are:
204
- $ ptr - the base address of the base matrix containing the tile to load
205
- $ base_width - the width of the base matrix in number of bytes.
206
- $ base_height - the number of rows in the base matrix
207
- $ base_pitch - the physical stride between the first columns of the current
208
- row and the subsequent row in number of bytes.
209
- $x, $y, $ tile_width, $ tile_height - the starting offsets and shape of
210
- the tile to load in number of elements.
211
- $ elem_size_in_bits - the size in bits of the matrix element type
204
+ * ` ptr` - the base address of the base matrix containing the tile to load
205
+ * ` base_width` - the width of the base matrix in number of bytes.
206
+ * ` base_height` - the number of rows in the base matrix
207
+ * ` base_pitch` - the physical stride between the first columns of the current
208
+ row and the subsequent row in number of bytes.
209
+ * `x`, `y`, ` tile_width`, ` tile_height` - the starting offsets and shape of
210
+ the tile to load in number of elements.
211
+ * ` elem_size_in_bits` - the size in bits of the matrix element type
212
212
- 32 for f32, tf32
213
213
- 16 for f16, int16, bf16
214
214
- 8 for int8
215
- $ v_blocks - number of consecutive tiles in innermost dimension direction to load
216
- $ transpose - transpose the tile in registers (useful for 32 bit element type)
217
- $ pack_register - pack element types narrower than register bit width.
215
+ * ` v_blocks` - number of consecutive tiles in innermost dimension direction to load
216
+ * ` transpose` - transpose the tile in registers (useful for 32 bit element type)
217
+ * ` pack_register` - pack element types narrower than register bit width.
218
218
[M, N] => [M/factor, N, factor] where factor is register_size_in_bits / elem_size_in_bits
219
- $ cache_control - an enumerator that sets the cache behaviour
219
+ * ` cache_control` - an enumerator that sets the cache behaviour
220
220
221
221
Notes:
222
- - the $ transpose and $ pack_register parameters are mutual exclusive
222
+ - the ` transpose` and ` pack_register` parameters are mutual exclusive
223
223
- transposing the tile loaded is used for A matrix in backward path or used for the B matrix operand
224
224
(D = C + A * B), where A has row-major layout and B should have column-major layout in memory.
225
225
- if the tile loaded contains out of bound elements of the matrix, they are filled with 0.
@@ -262,19 +262,19 @@ def XeVM_BlockStore2dOp
262
262
let description = [{
263
263
The `xevm.blockstore2d` operation stores a two dimensional tile into a
264
264
larger matrix residing in global memory. The parameters are:
265
- $ ptr - the base address of the target matrix where to store the tile
266
- $ base_width - the width of the base matrix in number of bytes.
267
- $ base_height - the number of rows in the base matrix
268
- $ base_pitch - the physical stride between the first columns of the current
269
- row and the subsequent row in number of bytes.
270
- $x, $y, $ tile_width, $ tile_height - the starting offsets and shape of the tile to store
265
+ * ` ptr` - the base address of the target matrix where to store the tile
266
+ * ` base_width` - the width of the base matrix in number of bytes.
267
+ * ` base_height` - the number of rows in the base matrix
268
+ * ` base_pitch` - the physical stride between the first columns of the current
269
+ row and the subsequent row in number of bytes.
270
+ * `x`, `y`, ` tile_width`, ` tile_height` - the starting offsets and shape of the tile to store
271
271
in number of elements.
272
- $ elem_size_in_bits - the size in bits of the matrix element
272
+ * ` elem_size_in_bits` - the size in bits of the matrix element
273
273
- 32 for f32, tf32
274
274
- 16 for f16, int16, bf16
275
275
- 8 for int8
276
- $ cache_control - an enumerator that sets the cache behaviour
277
- $ stored_val - the tile to store
276
+ * ` cache_control` - an enumerator that sets the cache behaviour
277
+ * ` stored_val` - the tile to store
278
278
279
279
Example:
280
280
```mlir
@@ -351,10 +351,10 @@ def XeVM_MemfenceOp
351
351
This operation ensures that all prior memory accesses of this
352
352
work-item to `addrspace` are visible to all other work-items in `scope`.
353
353
Parameters description:
354
- $ scope - specify the memory scope at which all other work-items should observe
355
- memory operations prior to the fence.
356
- $ addrspace - specify the address space of work-item's memory accesses
357
- to be affected by the fence.
354
+ * ` scope` - specify the memory scope at which all other work-items should observe
355
+ memory operations prior to the fence.
356
+ * ` addrspace` - specify the address space of work-item's memory accesses
357
+ to be affected by the fence.
358
358
}];
359
359
let assemblyFormat = [{prop-dict attr-dict}];
360
360
@@ -370,9 +370,9 @@ def XeVM_PrefetchOp
370
370
let summary = "Prefetch data into a cache subsystem.";
371
371
let description = [{
372
372
Work-item issues a prefetch from global memory to cache:
373
- $ ptr - LLVM pointer with address space. Address space must be 1 (global)
374
- or 4 (generic)
375
- $ cache_control - specify caching options
373
+ * ` ptr` - LLVM pointer with address space. Address space must be 1 (global)
374
+ or 4 (generic)
375
+ * ` cache_control` - specify caching options
376
376
}];
377
377
let assemblyFormat = [{
378
378
operands prop-dict attr-dict `:` `(` type(operands) `)`
@@ -395,19 +395,19 @@ def XeVM_BlockPrefetch2dOp
395
395
let description = [{
396
396
The `xevm.blockprefetch2d` operation prefetches a two dimensional tile
397
397
from a larger base matrix residing in global memory. The parameters are:
398
- $ ptr - the base address of the base matrix containing the tile to prefetch
399
- $ base_width - the width of the base matrix in number of bytes.
400
- $ base_height - the number of rows in the base matrix
401
- $ base_pitch - the physical stride between the first columns of the current
402
- row and the subsequent row in number of bytes.
403
- $x, $y, $ tile_width, $ tile_height - the starting offsets and shape of tile
404
- to prefetch in number of elements.
405
- $ elem_size_in_bits - the size in bits of the matrix element
406
- - 32 for f32, bf32
407
- - 16 for f16, int16, bf16
408
- - 8 for int8, int4, int2
409
- $ v_blocks - number of tiles in innermost dimension direction to prefetch
410
- $ cache_control - an enumerator that sets the cache behaviour
398
+ * ` ptr` - the base address of the base matrix containing the tile to prefetch
399
+ * ` base_width` - the width of the base matrix in number of bytes.
400
+ * ` base_height` - the number of rows in the base matrix
401
+ * ` base_pitch` - the physical stride between the first columns of the current
402
+ row and the subsequent row in number of bytes.
403
+ * `x`, `y`, ` tile_width`, ` tile_height` - the starting offsets and shape of tile
404
+ to prefetch in number of elements.
405
+ * ` elem_size_in_bits` - the size in bits of the matrix element
406
+ - 32 for f32, bf32
407
+ - 16 for f16, int16, bf16
408
+ - 8 for int8, int4, int2
409
+ * ` v_blocks` - number of tiles in innermost dimension direction to prefetch
410
+ * ` cache_control` - an enumerator that sets the cache behaviour
411
411
412
412
Example:
413
413
```mlir
@@ -452,9 +452,9 @@ def XeVM_ElemTypeAttr : I32EnumAttr<"ElemType", "XeVM element type",
452
452
def XeVM_MMAShapeAttr : XeVM_Attr<"MMAShape", "mma_shape"> {
453
453
let description = [{
454
454
MMA operation is represented as D=AxB+C, where
455
- A has the shape MxK.
456
- B has the shape KxN.
457
- D and C have the shape MxN.
455
+ - A has the shape MxK.
456
+ - B has the shape KxN.
457
+ - D and C have the shape MxN.
458
458
This attribute encodes the shape of all matrices that participate in MMA.
459
459
}];
460
460
let parameters = (ins "int":$m, "int":$n, "int":$k);
@@ -484,17 +484,17 @@ def XeVM_MMAOp
484
484
D = C + A x B
485
485
486
486
where the A, B, C input matrices and the result D have shapes:
487
- D : MxN
488
- C : MxN
489
- A : MxK
490
- B : KxN
487
+ - D : MxN
488
+ - C : MxN
489
+ - A : MxK
490
+ - B : KxN
491
491
492
492
Parameters:
493
- `a` - vector of matrix A elements.
494
- `b` - vector of matrix B elements.
495
- `c` - (optional) vector of matrix C elements.
496
- `shape` - the shape of the matrices, specified as `M`, `N`, and `K` values.
497
- `types` - the data types of the matrices, specified as `D`, `A`, `B`, and optionally `C`.
493
+ * `a` - vector of matrix A elements.
494
+ * `b` - vector of matrix B elements.
495
+ * `c` - (optional) vector of matrix C elements.
496
+ * `shape` - the shape of the matrices, specified as `M`, `N`, and `K` values.
497
+ * `types` - the data types of the matrices, specified as `D`, `A`, `B`, and optionally `C`.
498
498
499
499
Example:
500
500
```mlir
0 commit comments