ctetreau added a comment.

Perhaps now would be a good time to combine TypeSize and ElementCount into a 
single Polynomial type? We don't have to implement the whole abstraction of 
`c*x^n` (since we currently don't use the exponent, and don't distinguish 
between X's) but if it's ever needed in the future it will be obvious where to 
add it, and it will Just Work.



================
Comment at: llvm/include/llvm/Support/TypeSize.h:56
 
+  friend bool operator>(const ElementCount &LHS, const ElementCount &RHS) {
+    assert(LHS.Scalable == RHS.Scalable &&
----------------
fpetrogalli wrote:
> I think that @ctetreau is right on 
> https://reviews.llvm.org/D85794#inline-793909. We should not overload a 
> comparison operator on this class because the set it represent it cannot be 
> ordered.
> 
> Chris suggests an approach of writing a static function that can be used as a 
> comparison operator,  so that we can make it explicit of what kind of 
> comparison we  are doing. 
In C++, it's common to overload the comparison operators for the purposes of 
being able to std::sort and use ordered sets. Normally, I would be OK with such 
usages. However, since `ElementCount` is basically a numeric type, and they 
only have a partial ordering, I think this is dangerous. I'm concerned that 
this will result in more bugs whereby somebody didn't remember that vectors can 
be scalable.

I don't have a strong opinion what the comparator function should be called, 
but I strongly prefer that it not be a comparison operator.


================
Comment at: llvm/include/llvm/Support/TypeSize.h:290
   static unsigned getHashValue(const ElementCount& EltCnt) {
-    if (EltCnt.Scalable)
-      return (EltCnt.Min * 37U) - 1U;
+    if (EltCnt.isScalable())
+      return (EltCnt.getKnownMinValue() * 37U) - 1U;
----------------
NIT: this can be rewritten without duplicating `EltCnt.getKnownMinValue() * 37U`


================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:3522
+          DAG.getNode(ISD::EXTRACT_SUBVECTOR, Dl,
+                      MemVT.getHalfNumVectorElementsVT(*DAG.getContext()),
+                      StoreNode->getValue(),
----------------
What is this `>>` thing? Some indicator of whitespace change, or is this a hard 
tab?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D86065

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

Reply via email to