[PATCH] D99037: [Matrix] Implement C-style explicit type conversions for matrix types
Florian Hahn via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Apr 8 02:42:21 PDT 2021
fhahn added a comment.
Thanks for the latest update! This basically looks good to me, with a few final nits!
================
Comment at: clang/include/clang/Basic/DiagnosticSemaKinds.td:8584
+def err_invalid_conversion_between_matrixes : Error<
+ "conversion between matrix type%diff{ $ and $|}0,1 of different size is not allowed">;
+
----------------
nit: `matrix types`?
================
Comment at: clang/include/clang/Basic/DiagnosticSemaKinds.td:8586
+
+def err_invalid_conversion_between_matrix_and_type : Error<
+ "conversion between matrix type %0 and type %1 is not allowed">;
----------------
nit: `_and_incompatible_type`?
================
Comment at: clang/include/clang/Sema/Sema.h:11718
+ // invalid.
+ bool CheckMatrixCast(SourceRange R, QualType MatrixTy, QualType Tr,
+ CastKind &Kind);
----------------
Can the name for `Tr` be improved? Perhaps `ToTy` or `TargetTy`?
================
Comment at: clang/lib/CodeGen/CGExprScalar.cpp:1219
+ } else {
+ assert(!SrcType->isMatrixType() && !DstType->isMatrixType());
+ SrcElementTy = SrcTy;
----------------
Thanks! Can you also add a message to the assert , like `&& "cannot cast between matrix and non-matrix types")`
================
Comment at: clang/lib/Sema/SemaCast.cpp:2932
+ if (DestType->getAs<MatrixType>() || SrcType->getAs<MatrixType>()) {
+ if (Self.CheckMatrixCast(OpRange, DestType, SrcType, Kind)) {
+ SrcExpr = ExprError();
----------------
nit: no braces.
================
Comment at: clang/lib/Sema/SemaExpr.cpp:7357
+
+ return (matSrcType->getNumRows() == matDestType->getNumRows() &&
+ matSrcType->getNumColumns() == matDestType->getNumColumns());
----------------
nit: No `( ...... )` required here.
================
Comment at: clang/test/CodeGen/matrix-cast.c:82
+
+void cast_unsigned_short_int_to_unsigned_int(unsigned_short_int_5x5 s, unsigned_int_5x5 i) {
+ // CHECK-LABEL: define{{.*}} void @cast_unsigned_short_int_to_unsigned_int(<25 x i16> %s, <25 x i32> %i)
----------------
I think this is still missing a test from unsigned to signed?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D99037/new/
https://reviews.llvm.org/D99037
More information about the cfe-commits
mailing list