fhahn added inline comments.

================
Comment at: clang/docs/MatrixSupport.rst:39
+
+Future Work: Initialization syntax.
+
----------------
rjmccall wrote:
> Maybe break the TODOs here into their own sections, which would come much 
> later.
Done, I've moved the TODOs to a TODO section just after the builtins section.


================
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:
+
----------------
rjmccall wrote:
> 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.
I've kept the first paragraph (including the exclusion of assignment) and 
replaced the second with your suggestion.


================
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:
+
----------------
rjmccall wrote:
> 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.
I added the following at the end of the section

> For the ``+=``, ``-=`` and ``*=`` operators the semantics match their 
> expanded variants.



================
Comment at: clang/docs/MatrixSupport.rst:211
+
+``M __builtin_matrix_column_load(T *ptr, int row, int col, int stride)``
+
----------------
rjmccall wrote:
> 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?
> 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.

Yes that is correct. Maybe __builtin_matrix_columnwise_load would be slightly 
better?

> Should stride be an optional argument to make it easier to write the (I 
> expect) common case where the matrix is dense?
Yes that would be very convenient, especially now that casting between element 
wise pointers and matrixes is not allowed. I've added a sentence to the remarks 
for both the load and store builtins.


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