Skip to content

Commit e3a3b87

Browse files
committed
[SYCL][DOC] split OpJointMatrixMadINTEL instruction into 4
To express signees of its operands Signed-off-by: Dmitry Sidorov <dmitry.sidorov@intel.com>
1 parent 07b80a7 commit e3a3b87

File tree

1 file changed

+153
-5
lines changed

1 file changed

+153
-5
lines changed

sycl/doc/extensions/SPIRV/SPV_INTEL_joint_matrix.asciidoc

Lines changed: 153 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
:OpJointMatrixLoadINTEL_token: 6120
66
:OpJointMatrixStoreINTEL_token: 6121
77
:OpJointMatrixMadINTEL_token: 6122
8+
:OpJointMatrixSUMadINTEL_token: 6128
9+
:OpJointMatrixUSMadINTEL_token: 6129
10+
:OpJointMatrixUUMadINTEL_token: 6130
811

912
{extension_name}
1013
================
@@ -25,6 +28,7 @@ https://github.com/intel/llvm
2528
- Alexey Sotkin, Intel +
2629
- Dounia Khaldi, Intel +
2730
- Mateusz, Belicki Intel +
31+
- Dmitry Sidorov, Intel +
2832

2933
== Notice
3034

@@ -97,6 +101,9 @@ OpTypeJointMatrixINTEL
97101
OpJointMatrixLoadINTEL
98102
OpJointMatrixStoreINTEL
99103
OpJointMatrixMADINTEL
104+
OpJointMatrixSUMADINTEL
105+
OpJointMatrixUSMADINTEL
106+
OpJointMatrixUUMADINTEL
100107
101108
----
102109

@@ -107,10 +114,13 @@ OpJointMatrixMADINTEL
107114
[grid="rows"]
108115
|====
109116
|*{capability_name}* | {capability_token}
110-
|*OpTypeJointMatrixINTEL* | {OpTypeJointMatrixINTEL_token}
111-
|*OpJointMatrixLoadINTEL* | {OpJointMatrixLoadINTEL_token}
112-
|*OpJointMatrixStoreINTEL* | {OpJointMatrixStoreINTEL_token}
113-
|*OpJointMatrixMadINTEL* | {OpJointMatrixMadINTEL_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}
114124
|====
115125

116126
== Modifications to the SPIR-V Specification, Version 1.5
@@ -290,13 +300,21 @@ multiplication: `A*B+C`. Here 'A' is a `M x K` matrix, 'B' is a `K x N`
290300
matrix and 'C' is a `M x N` matrix. +
291301
+
292302
Behavior is undefined if sizes of operands do not meet the conditions above.
293-
All operands and the 'Ruslt Type' must be
303+
All operands and the 'Result Type' must be
294304
<<OpTypeJointMatrixINTEL,*OpTypeJointMatrixINTEL*>>. +
295305
+
296306
'A' must be a <<OpTypeJointMatrixINTEL,*OpTypeJointMatrixINTEL*>> with
307+
'Component Type' be a signed 'numerical type' or 16-bit unsigned integer type
308+
(which stands for 'bfloat16' type) in case if 'B' is of 16-bit unsigned integer
309+
<<OpTypeJointMatrixINTEL,*OpTypeJointMatrixINTEL*>> type as well and 'C' is of
310+
'float' <<OpTypeJointMatrixINTEL,*OpTypeJointMatrixINTEL*>> type.
297311
'Rown Count' equals to 'M' and 'Column Count' equals to 'K' +
298312
+
299313
'B' must be a <<OpTypeJointMatrixINTEL,*OpTypeJointMatrixINTEL*>> with
314+
'Component Type' be a signed 'numerical type' or 16-bit unsigned integer type
315+
(which stands for 'bfloat16' type) in case if 'A' is of 16-bit unsigned integer
316+
<<OpTypeJointMatrixINTEL,*OpTypeJointMatrixINTEL*>> type as well and 'C' is of
317+
'float' <<OpTypeJointMatrixINTEL,*OpTypeJointMatrixINTEL*>> type.
300318
'Rown Count' equals to 'K' and 'Column Count' equals to 'N' +
301319
+
302320
'C' and 'Result Type' must be a
@@ -322,6 +340,135 @@ result of a constant instruction with scalar 'integer type'. +
322340
'Scope'
323341
|=====
324342

343+
[cols="1,1,6*3",width="100%"]
344+
|=====
345+
7+|[[OpJointMatrixSUMadINTEL]]*OpJointMatrixSUMadINTEL* +
346+
+
347+
Multiply matrix 'A' by matrix 'B' and add matrix 'C' to the result of the
348+
multiplication: `A*B+C`. Here 'A' is a `M x K` matrix, 'B' is a `K x N`
349+
matrix and 'C' is a `M x N` matrix. +
350+
+
351+
Behavior is undefined if sizes of operands do not meet the conditions above.
352+
All operands and the 'Result Type' must be
353+
<<OpTypeJointMatrixINTEL,*OpTypeJointMatrixINTEL*>>. +
354+
+
355+
'A' must be a <<OpTypeJointMatrixINTEL,*OpTypeJointMatrixINTEL*>> with
356+
'Component Type' be a signed 'numerical type', 'Rown Count' equals to 'M' and
357+
'Column Count' equals to 'K' +
358+
+
359+
'B' must be a <<OpTypeJointMatrixINTEL,*OpTypeJointMatrixINTEL*>> with
360+
'Component Type' be an unsigned 'numerical type', 'Rown Count' equals to 'K' and
361+
'Column Count' equals to 'N' +
362+
+
363+
'C' and 'Result Type' must be a
364+
<<OpTypeJointMatrixINTEL,*OpTypeJointMatrixINTEL*>> with 'Rown Count' equals to
365+
'M' and 'Column Count' equals to 'N' +
366+
+
367+
'Scope' is syncronization scope for operation on the matrix. It must be the
368+
result of a constant instruction with scalar 'integer type'. +
369+
370+
1+|Capability: +
371+
*{capability_name}*
372+
1+| 7 | {OpJointMatrixSUMadINTEL_token}
373+
| '<id>' +
374+
'Result Type'
375+
|'Result <id>'
376+
| '<id>' +
377+
'A'
378+
| '<id>' +
379+
'B'
380+
| '<id>' +
381+
'C'
382+
| '<id>' +
383+
'Scope'
384+
|=====
385+
386+
[cols="1,1,6*3",width="100%"]
387+
|=====
388+
7+|[[OpJointMatrixUSMadINTEL]]*OpJointMatrixUSMadINTEL* +
389+
+
390+
Multiply matrix 'A' by matrix 'B' and add matrix 'C' to the result of the
391+
multiplication: `A*B+C`. Here 'A' is a `M x K` matrix, 'B' is a `K x N`
392+
matrix and 'C' is a `M x N` matrix. +
393+
+
394+
Behavior is undefined if sizes of operands do not meet the conditions above.
395+
All operands and the 'Result Type' must be
396+
<<OpTypeJointMatrixINTEL,*OpTypeJointMatrixINTEL*>>. +
397+
+
398+
'A' must be a <<OpTypeJointMatrixINTEL,*OpTypeJointMatrixINTEL*>> with
399+
'Component Type' be an unsigned 'numerical type', 'Rown Count' equals to 'M' and
400+
'Column Count' equals to 'K' +
401+
+
402+
'B' must be a <<OpTypeJointMatrixINTEL,*OpTypeJointMatrixINTEL*>> with
403+
'Component Type' be a signed 'numerical type', 'Rown Count' equals to 'K' and
404+
'Column Count' equals to 'N' +
405+
+
406+
'C' and 'Result Type' must be a
407+
<<OpTypeJointMatrixINTEL,*OpTypeJointMatrixINTEL*>> with 'Rown Count' equals to
408+
'M' and 'Column Count' equals to 'N' +
409+
+
410+
'Scope' is syncronization scope for operation on the matrix. It must be the
411+
result of a constant instruction with scalar 'integer type'. +
412+
413+
1+|Capability: +
414+
*{capability_name}*
415+
1+| 7 | {OpJointMatrixUSMadINTEL_token}
416+
| '<id>' +
417+
'Result Type'
418+
|'Result <id>'
419+
| '<id>' +
420+
'A'
421+
| '<id>' +
422+
'B'
423+
| '<id>' +
424+
'C'
425+
| '<id>' +
426+
'Scope'
427+
|=====
428+
429+
[cols="1,1,6*3",width="100%"]
430+
|=====
431+
7+|[[OpJointMatrixUUMadINTEL]]*OpJointMatrixUUMadINTEL* +
432+
+
433+
Multiply matrix 'A' by matrix 'B' and add matrix 'C' to the result of the
434+
multiplication: `A*B+C`. Here 'A' is a `M x K` matrix, 'B' is a `K x N`
435+
matrix and 'C' is a `M x N` matrix. +
436+
+
437+
Behavior is undefined if sizes of operands do not meet the conditions above.
438+
All operands and the 'Result Type' must be
439+
<<OpTypeJointMatrixINTEL,*OpTypeJointMatrixINTEL*>>. +
440+
+
441+
'A' must be a <<OpTypeJointMatrixINTEL,*OpTypeJointMatrixINTEL*>> with
442+
'Component Type' be an unsigned 'numerical type', 'Rown Count' equals to 'M' and
443+
'Column Count' equals to 'K' +
444+
+
445+
'B' must be a <<OpTypeJointMatrixINTEL,*OpTypeJointMatrixINTEL*>> with
446+
'Component Type' be an unsigned 'numerical type', 'Rown Count' equals to 'K' and
447+
'Column Count' equals to 'N' +
448+
+
449+
'C' and 'Result Type' must be a
450+
<<OpTypeJointMatrixINTEL,*OpTypeJointMatrixINTEL*>> with 'Rown Count' equals to
451+
'M' and 'Column Count' equals to 'N' +
452+
+
453+
'Scope' is syncronization scope for operation on the matrix. It must be the
454+
result of a constant instruction with scalar 'integer type'. +
455+
456+
1+|Capability: +
457+
*{capability_name}*
458+
1+| 7 | {OpJointMatrixUUMadINTEL_token}
459+
| '<id>' +
460+
'Result Type'
461+
|'Result <id>'
462+
| '<id>' +
463+
'A'
464+
| '<id>' +
465+
'B'
466+
| '<id>' +
467+
'C'
468+
| '<id>' +
469+
'Scope'
470+
|=====
471+
325472
=== Issues
326473

327474
None
@@ -335,4 +482,5 @@ Revision History
335482
|========================================
336483
|Rev|Date|Author|Changes
337484
|1|2021-02-16|Alexey Sotkin|Initial revision
485+
|1|2021-09-06|Dmitry Sidorov|Split OpJointMatrixMadINTEL instruction into 4
338486
|========================================

0 commit comments

Comments
 (0)