Dependencies
This extension is written against the SPIR-V Specification, Version 1.6 Revision 2.
This extension requires SPIR-V 1.6.
This extension requires SPV_KHR_cooperative_matrix.
Extension Name
To use this extension within a SPIR-V module, the following OpExtension must be present in the module:
OpExtension "SPV_ARM_cooperative_matrix_layouts"
Modifications to the SPIR-V Specification, Version 1.6
Validation Rules
Modify section 2.16.1 Universal Validation Rules:
-
If the MemoryLayout provided to OpCooperativeMatrixLoadKHR or OpCooperativeMatrixStoreKHR is RowBlockedInterleavedARM or ColumnBlockedInterleavedARM then Stride must be present, come from a constant instruction, and be equal to 1, 2, or 4.
-
If the MemoryLayout provided to OpCooperativeMatrixLoadKHR or OpCooperativeMatrixStoreKHR is RowBlockedInterleavedARM then their Result Type, or Object, respectively, must be a cooperative matrix type whose Rows is a multiple of 4 and whose Columns is a multiple of 16 /
sizeof(Component Type) multiplied by the Stride operand to the OpCooperativeMatrixLoadKHR or OpCooperativeMatrixStoreKHR instruction. -
If the MemoryLayout provided to OpCooperativeMatrixLoadKHR or OpCooperativeMatrixStoreKHR is ColumnBlockedInterleavedARM then their Result Type, or Object, respectively, must be a cooperative matrix type whose Rows is a multiple of 4 times the Stride operand to the OpCooperativeMatrixLoadKHR or OpCooperativeMatrixStoreKHR instruction and whose Columns is a multiple of 16 /
sizeof(Component Type).
Capabilities
Modify Section 3.31, "Capability", adding these rows to the Capability table:
| Capability | Implicitly Declares | |
|---|---|---|
4201 |
CooperativeMatrixLayoutsARM |
CooperativeMatrixKHR |
3.X Cooperative Matrix Layout
Add the following to the table introduced by SPV_KHR_cooperative_matrix:
| Cooperative Matrix Layout | Enabling Capabilities | |
|---|---|---|
4202 |
RowBlockedInterleavedARM |
CooperativeMatrixLayoutsARM |
4203 |
ColumnBlockedInterleavedARM |
CooperativeMatrixLayoutsARM |