rjmccall added a comment.

Reading through the rest of the spec.



================
Comment at: clang/docs/LanguageExtensions.rst:500
+Clang provides a matrix extension, which is currently being implemented. See
+:ref:`matrixsupport` for more details.
+
----------------
rjmccall wrote:
> This should include just a bit more detail about the extension.  I would 
> suggest:
> 
> > Clang supports matrix types as an experimental extension.  See 
> > :`ref`matrices` for more details.
If we're calling the extension "matrix types", that should be reflected in this 
section name and in the file name.


================
Comment at: clang/docs/MatrixSupport.rst:28
+includes storage for ``rows * columns`` values of the *element type*. The
+internal layout, overall size and alignment are implementation-defined.
+
----------------
No need to italicize "element type" the second time.

The italics introduce a term, so consider italicizing "rows" and "columns" as 
well in the first sentence.


================
Comment at: clang/docs/MatrixSupport.rst:39
+
+Future Work: Initialization syntax.
+
----------------
Maybe break the TODOs here into their own sections, which would come much later.


================
Comment at: clang/docs/MatrixSupport.rst:70
+between the original and resulting type, the program is ill-formed. Otherwise
+the resulting value is as follows:
+
----------------
I don't think you need to list out the kinds of promotion and conversion here, 
and it doesn't make sense to define the "resulting type" this way when it's 
really a parameter.  I'd just say:

> A value of matrix type can be converted to another matrix type if the number 
> of rows and columns are the size and the value's elements can be converted to 
> the element type of the result type.  The result is a matrix where each 
> element is the converted corresponding element.

> A value of non-matrix type can be converted to a matrix type if it can be 
> converted to the element type of the matrix.  The result is a matrix where 
> all elements are the converted original value.


================
Comment at: clang/docs/MatrixSupport.rst:126
+The operands of ``+``, ``-`` and ``*`` shall have either matrix type, 
arithmetic or
+unscoped enumeration type. At least one of the operands shall be of matrix 
type.
+
----------------
I don't think this paragraph adds anything, and the restriction is kindof weird 
— it's just a restriction on when to consider applying these rules, rather than 
a restriction with absolute significance.

Also, "arithmetic type" includes unscoped enumeration types in both C and C++.


================
Comment at: clang/docs/MatrixSupport.rst:129
+For ``BIN_OP`` in ``+``, ``-``, ``*`` given the expression ``M1 BIN_OP M2`` 
where, for
+``*``, one of M1 or M2 is of arithmetic type:
+
----------------
Here I think you can say "where at least one of M1 or M2 is of matrix type and, 
for `*`, the other is of arithmetic type".

I think you'll need to separately describe the restrictions on `+=`, `-=`, and 
`*=`, but you should be able to say that the semantics are as if for the 
expansion.


================
Comment at: clang/docs/MatrixSupport.rst:176
+
+Matrix Type builtin Operations
+------------------------------
----------------
"builtin" should be capitalized here.


================
Comment at: clang/docs/MatrixSupport.rst:211
+
+``M __builtin_matrix_column_load(T *ptr, int row, int col, int stride)``
+
----------------
This name sounds like it's loading a column, when I think you're saying that 
the memory has to be in column-major order.

I would call `stride` something like `columnStride` to make it clear that it's 
the stride between columns, as opposed to a stride between the elements within 
a column, which is also something that's theoretically interesting.

Should `stride` be an optional argument to make it easier to write the (I 
expect) common case where the matrix is dense?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D76612/new/

https://reviews.llvm.org/D76612



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to