Skip to content

Commit c2f8602

Browse files
authored
[SPIR-V][Doc] Add JointMatrixWorkItemLengthINTEL instruction to joint matrix extension (#5781)
Signed-off-by: Dmitry Sidorov <[email protected]>
1 parent 4efa820 commit c2f8602

File tree

1 file changed

+45
-13
lines changed

1 file changed

+45
-13
lines changed

sycl/doc/design/spirv-extensions/SPV_INTEL_joint_matrix.asciidoc

Lines changed: 45 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
:OpJointMatrixSUMadINTEL_token: 6128
99
:OpJointMatrixUSMadINTEL_token: 6129
1010
:OpJointMatrixUUMadINTEL_token: 6130
11+
:OpJointMatrixWorkItemLengthINTEL_token: 6410
1112

1213
{extension_name}
1314
================
@@ -52,8 +53,8 @@ please let us know!
5253

5354
[width="40%",cols="25,25"]
5455
|========================================
55-
| Last Modified Date | 2021-12-28
56-
| Revision | 3
56+
| Last Modified Date | 2022-03-10
57+
| Revision | 4
5758
|========================================
5859

5960
== Dependencies
@@ -66,7 +67,7 @@ This extension requires SPIR-V 1.0.
6667
== Overview
6768

6869
This extension adds a type and instructions for joint matrices. Such matrices
69-
are shared among a group of work items and is not private to each work item.
70+
are shared among a group of work-items and is not private to each work-item.
7071
The type introduced with this extension allows to specify memory scope and
7172
layout of the matrix, including layouts optimized for particular hardware(AMX) .
7273
New instructions also allow to specify synchronization scope.
@@ -104,6 +105,7 @@ OpJointMatrixMADINTEL
104105
OpJointMatrixSUMADINTEL
105106
OpJointMatrixUSMADINTEL
106107
OpJointMatrixUUMADINTEL
108+
OpJointMatrixWorkItemLengthINTEL
107109
108110
----
109111

@@ -113,14 +115,15 @@ OpJointMatrixUUMADINTEL
113115
[cols="70%,30%"]
114116
[grid="rows"]
115117
|====
116-
|*{capability_name}* | {capability_token}
117-
|*OpTypeJointMatrixINTEL* | {OpTypeJointMatrixINTEL_token}
118-
|*OpJointMatrixLoadINTEL* | {OpJointMatrixLoadINTEL_token}
119-
|*OpJointMatrixStoreINTEL* | {OpJointMatrixStoreINTEL_token}
120-
|*OpJointMatrixMadINTEL* | {OpJointMatrixMadINTEL_token}
121-
|*OpJointMatrixSUMadINTEL* | {OpJointMatrixSUMadINTEL_token}
122-
|*OpJointMatrixUSMadINTEL* | {OpJointMatrixUSMadINTEL_token}
123-
|*OpJointMatrixUUMadINTEL* | {OpJointMatrixUUMadINTEL_token}
118+
|*{capability_name}* | {capability_token}
119+
|*OpTypeJointMatrixINTEL* | {OpTypeJointMatrixINTEL_token}
120+
|*OpJointMatrixLoadINTEL* | {OpJointMatrixLoadINTEL_token}
121+
|*OpJointMatrixStoreINTEL* | {OpJointMatrixStoreINTEL_token}
122+
|*OpJointMatrixMadINTEL* | {OpJointMatrixMadINTEL_token}
123+
|*OpJointMatrixSUMadINTEL* | {OpJointMatrixSUMadINTEL_token}
124+
|*OpJointMatrixUSMadINTEL* | {OpJointMatrixUSMadINTEL_token}
125+
|*OpJointMatrixUUMadINTEL* | {OpJointMatrixUUMadINTEL_token}
126+
|*OpJointMatrixWorkItemLengthINTEL* | {OpJointMatrixWorkItemLengthINTEL_token}
124127
|====
125128

126129
== Modifications to the SPIR-V Specification, Version 1.5
@@ -207,7 +210,6 @@ result of a constant instruction with scalar 'integer type'. +
207210
'Scope'
208211
|=====
209212

210-
211213
==== 3.37.8. Memory Instructions
212214

213215
[cols="1,1,7*3",width="100%"]
@@ -253,7 +255,6 @@ specifying the <<Memory_Operands,*memory operand*>> *None*. +
253255
'Memory Access'
254256
|=====
255257

256-
257258
[cols="1,1,6*3",width="100%"]
258259
|=====
259260
7+|[[OpJointMatrixStoreINTEL]]*OpJointMatrixStoreINTEL* +
@@ -296,6 +297,36 @@ specifying the <<Memory_Operands,*memory operand*>> *None*. +
296297
'Memory Access'
297298
|=====
298299

300+
==== 3.37.12. Composite Instructions
301+
302+
Modify *OpVectorExtractDynamic* and *OpVectorInsertDynamic* to accept
303+
<<OpTypeJointMatrixINTEL,*OpTypeJointMatrixINTEL*>> as the 'Vector' operand.
304+
In this case the instructions operate on an implicit vector which represents
305+
part of the joint matrix and holds components owned by the current work-item.
306+
If the 'index' operand of these instructions exceeds the value returned by
307+
<<OpJointMatrixWorkItemLengthINTEL,*OpJointMatrixWorkItemLengthINTEL*>>,
308+
behavior is undefined.
309+
310+
[cols="1,1,3*3",width="100%"]
311+
|=====
312+
4+|[[OpJointMatrixWorkItemLengthINTEL]]*OpJointMatrixWorkItemLengthINTEL* +
313+
+
314+
Return number of components owned by the current work-item in a joint matrix. +
315+
+
316+
'Result Type' must be an 32-bit unsigned integer type scalar. +
317+
+
318+
'Matrix' is the <<OpTypeJointMatrixINTEL,*OpTypeJointMatrixINTEL*>> to query the
319+
number of the components. +
320+
321+
1+|Capability: +
322+
*{capability_name}*
323+
1+| 4 | {OpJointMatrixWorkItemLengthINTEL_token}
324+
| '<id>' +
325+
'Result Type'
326+
| 'Result <id>'
327+
| '<id>' +
328+
'Matrix'
329+
|=====
299330

300331
==== 3.37.13. Arithmetic Instructions
301332

@@ -493,4 +524,5 @@ Revision History
493524
|1|2021-02-16|Alexey Sotkin|Initial revision
494525
|2|2021-09-06|Dmitry Sidorov|Split OpJointMatrixMadINTEL instruction into 4
495526
|3|2021-12-28|Dmitry Sidorov|Add Joint Matrix to Composite definition
527+
|4|2022-03-10|Dmitry Sidorov|Add OpJointMatrixWorkItemLengthINTEL instruction
496528
|========================================

0 commit comments

Comments
 (0)