8
8
:OpJointMatrixSUMadINTEL_token: 6128
9
9
:OpJointMatrixUSMadINTEL_token: 6129
10
10
:OpJointMatrixUUMadINTEL_token: 6130
11
+ :OpJointMatrixWorkItemLengthINTEL_token: 6410
11
12
12
13
{extension_name}
13
14
================
@@ -52,8 +53,8 @@ please let us know!
52
53
53
54
[width="40%",cols="25,25"]
54
55
|========================================
55
- | Last Modified Date | 2021-12-28
56
- | Revision | 3
56
+ | Last Modified Date | 2022-03-10
57
+ | Revision | 4
57
58
|========================================
58
59
59
60
== Dependencies
@@ -66,7 +67,7 @@ This extension requires SPIR-V 1.0.
66
67
== Overview
67
68
68
69
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.
70
71
The type introduced with this extension allows to specify memory scope and
71
72
layout of the matrix, including layouts optimized for particular hardware(AMX) .
72
73
New instructions also allow to specify synchronization scope.
@@ -104,6 +105,7 @@ OpJointMatrixMADINTEL
104
105
OpJointMatrixSUMADINTEL
105
106
OpJointMatrixUSMADINTEL
106
107
OpJointMatrixUUMADINTEL
108
+ OpJointMatrixWorkItemLengthINTEL
107
109
108
110
----
109
111
@@ -113,14 +115,15 @@ OpJointMatrixUUMADINTEL
113
115
[cols="70%,30%"]
114
116
[grid="rows"]
115
117
|====
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}
124
127
|====
125
128
126
129
== Modifications to the SPIR-V Specification, Version 1.5
@@ -207,7 +210,6 @@ result of a constant instruction with scalar 'integer type'. +
207
210
'Scope'
208
211
|=====
209
212
210
-
211
213
==== 3.37.8. Memory Instructions
212
214
213
215
[cols="1,1,7*3",width="100%"]
@@ -253,7 +255,6 @@ specifying the <<Memory_Operands,*memory operand*>> *None*. +
253
255
'Memory Access'
254
256
|=====
255
257
256
-
257
258
[cols="1,1,6*3",width="100%"]
258
259
|=====
259
260
7+|[[OpJointMatrixStoreINTEL]]*OpJointMatrixStoreINTEL* +
@@ -296,6 +297,36 @@ specifying the <<Memory_Operands,*memory operand*>> *None*. +
296
297
'Memory Access'
297
298
|=====
298
299
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
+ |=====
299
330
300
331
==== 3.37.13. Arithmetic Instructions
301
332
@@ -493,4 +524,5 @@ Revision History
493
524
|1|2021-02-16|Alexey Sotkin|Initial revision
494
525
|2|2021-09-06|Dmitry Sidorov|Split OpJointMatrixMadINTEL instruction into 4
495
526
|3|2021-12-28|Dmitry Sidorov|Add Joint Matrix to Composite definition
527
+ |4|2022-03-10|Dmitry Sidorov|Add OpJointMatrixWorkItemLengthINTEL instruction
496
528
|========================================
0 commit comments