================
@@ -1483,6 +1483,53 @@ See the OpenCL documentation for some more complete 
examples.
   }];
 }
 
+def CoopMatrixTypeDocs : Documentation {
+  let Category = DocCatType;
+  let Heading = "coop_mat";
+  let Content = [{
+The `coop_mat` attribute declares an OpenCL cooperative matrix type. 
Cooperative
+matrix operations are distributed across a set of invocations, such as a
+subgroup, allowing the implementation to optimize matrix multiply operations.
+
+The attribute is applied to a scalar numerical component type and takes four
+arguments:
+
+```c
+__attribute__((coop_mat(scope, rows, columns, use)))
+```
+- scope specifies the memory scope of the cooperative matrix.
+  It must be one of the supported OpenCL memory scopes, such as 
CLK_COOPERATIVE_MATRIX_SCOPE_SUBGROUP.
+- rows specifies the number of rows in the matrix. It must be a constant 
expression.
+- columns specifies the number of columns in the matrix. It must be a constant 
expression.
+- use specifies the operand role of the matrix in coop_mat_muladd. It must be 
one of:
+  CLK_COOPERATIVE_MATRIX_A
+  CLK_COOPERATIVE_MATRIX_B
+  CLK_COOPERATIVE_MATRIX_ACCUMULATOR
+
+The coop_mat attribute can be used to declare local variables, function 
parameters, and function return values. Cooperative matrix types must not be 
used as kernel arguments.
----------------
MrSidims wrote:

```suggestion
The coop_mat attribute can be used only to declare local variables, function 
parameters, and function return values. Cooperative matrix types must not be 
used as kernel arguments.
```

https://github.com/llvm/llvm-project/pull/221328
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to