rjmccall added inline comments.

================
Comment at: clang/docs/MatrixTypes.rst:79
+  floating point type, convert the integer or floating point operand to the
+  underlying element type of the operand of matrix type.
+
----------------
fhahn wrote:
> rjmccall wrote:
> > You should standardize on one term and then be clear what you mean by it.  
> > Here you're saying "integer or floating point type", but elsewhere you use 
> > "arithmetic type".  Unfortunately, the standard terms mean somewhat 
> > different things in different standards: "integer" includes enums in C but 
> > not in C++, "arithmetic" doesn't include complex types in C++ (although it 
> > does by extension in Clang), etc.  I think for operands you probably want 
> > arithmetic types in the real domain (which in Clang is `isRealType()`).  
> > However, you'll want to use a narrower term for the restriction on element 
> > types because Clang does support fixed-point types, but you probably don't 
> > want to support matrices of them quite yet (and you may not want to allow 
> > matrices of bools, either).
> > 
> > Also, your description of the scalar conversions no longer promotes them to 
> > matrix type.
> > You should standardize on one term and then be clear what you mean by it. 
> > Here you're saying "integer or floating point type", but elsewhere you use 
> > "arithmetic type". Unfortunately, the standard terms mean somewhat 
> > different things in different standards: "integer" includes enums in C but 
> > not in C++, "arithmetic" doesn't include complex types in C++ (although it 
> > does by extension in Clang), etc. I think for operands you probably want 
> > arithmetic types in the real domain (which in Clang is isRealType()). 
> > However, you'll want to use a narrower term for the restriction on element 
> > types because Clang does support fixed-point types, but you probably don't 
> > want to support matrices of them quite yet (and you may not want to allow 
> > matrices of bools, either).
> 
> I've added the following to the Matrix Type section:
> ` A *matrix element type* must be a real type (as in C99 6.2.5p17) excluding 
> enumeration types or an implementation-defined half-precision floating point 
> type, otherwise the program is ill-formed.`
> 
> Other places are updated to use `a valid matrix element type` instead.
> 
> I think we explicitly want to allow half-precision types (like __fp16 and 
> Float16 in Clang). I think by referring to real type as in the C99 spec, we 
> naturally exclude Clang's fixed-point types and bool, right? 
> 
> > Also, your description of the scalar conversions no longer promotes them to 
> > matrix type.
> 
> Right, I think we can just refer to the standard conversion rules here, as in
> 
> `If one operand is of matrix type and the other operand is of a valid matrix 
> element type, convert the non-matrix type operand to the matrix type 
> according to the standard conversion rules.`
> I think we explicitly want to allow half-precision types (like __fp16 and 
> Float16 in Clang). I think by referring to real type as in the C99 spec, we 
> naturally exclude Clang's fixed-point types and bool, right?

C says:

> The integer and real floating types are collectively called *real types*.

> The type `char`, the signed and unsigned integer types, and the enumerated 
> types are collectively called *integer types*.

> The standard and extended unsigned integer types are collectively called 
> *unsigned integer types*.

> The type `_Bool` and the unsigned integer types that correspond to the 
> standard signed integer types are the *standard unsigned integer types*.

Embedded C (TR 18037) says:

> Clause 6.2.5 - Types, paragraph 17: change last sentence as follows.
>
> Integer, fixed-point and real floating types are collectively called *real 
> types*.

So you'll have to explicitly exclude enumerated types, `_Bool`, and the 
fixed-point types.


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