rjmccall added inline comments.

================
Comment at: clang/include/clang/Sema/Sema.h:4708
+  /// conversion.
+  ExprResult tryConvertExprToTy(Expr *E, QualType Ty);
+
----------------
Please spell out "type" in the method name.


================
Comment at: clang/include/clang/Sema/Sema.h:12126
+  ExprResult SemaBuiltinMatrixColumnMajorLoadOverload(CallExpr *TheCall,
+                                                      ExprResult CallResult);
 
----------------
I don't think the word "overload" is doing anything in either of these method 
names.


================
Comment at: clang/lib/Sema/SemaChecking.cpp:15130
+
+    ElementTy.removeLocalConst();
+    if (!ConstantMatrixType::isValidElementType(ElementTy)) {
----------------
fhahn wrote:
> rjmccall wrote:
> > fhahn wrote:
> > > rjmccall wrote:
> > > > It's almost never correct to do "local" qualifier manipulation in Sema. 
> > > >  You want to remove the `const` qualifier, which means removing it 
> > > > through however much type sugar might be wrapping it.
> > > > 
> > > > In reality, though, you actually want to remove *all* qualifiers, not 
> > > > just `const`.  So you should just use `getUnqualifiedType()`.  (And 
> > > > then you need to make sure that the IRGen code works on 
> > > > arbitrarily-qualified pointers.  It should already handle address 
> > > > spaces unless you're doing something very strange.  To handle 
> > > > `volatile`, you just need to be able to pass down a `volatile` flag to 
> > > > your helper function.  The other qualifiers should all either not 
> > > > require special handling or not be allowed on integer/float types.)
> > > > In reality, though, you actually want to remove *all* qualifiers, not 
> > > > just const. So you should just use getUnqualifiedType(). (And then you 
> > > > need to make sure that the IRGen code works on arbitrarily-qualified 
> > > > pointers. It should already handle address spaces unless you're doing 
> > > > something very strange. To handle volatile, you just need to be able to 
> > > > pass down a volatile flag to your helper function. The other qualifiers 
> > > > should all either not require special handling or not be allowed on 
> > > > integer/float types.)
> > > 
> > > Updated. Currently volatile cannot be specified for the 
> > > `@llvm.matrix.columnwise.load/store` builtins. I'll put up an update for 
> > > the intrinsics, for now I added an assertion in IRGen. I recently put up 
> > > a patch that allows adding nuw/nsw info to the multiply builtin using 
> > > operand bundles (D81166). For volatile, we could add another bundle or a 
> > > boolean argument like we have for memcpy intrinsic I think. I am leaning 
> > > towards an operand bundle version for this optional argument. Do you have 
> > > any preference?
> > The only thing I really care about is that it can't be dropped implicitly.  
> > That's not legal with a bundle, but it's maybe a little more likely as an 
> > error of omission.  On the other hand, you do need to pass down an 
> > alignment, and that really shouldn't be an optional argument, so maybe 
> > that's an opportunity to add a `volatile` argument as well.
> I think for alignment we can use the align call attribute, which is what I am 
> using in the latest update.
Is there a reason this intrinsic can't be changed?  You don't need to do it in 
this patch, but using the "align" attribute as call-site attribute that's only 
meaningful on certain initrinsics seems like a really poor representation 
choice, especially for something as semantically important as an alignment 
assumption.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D72781



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

Reply via email to