simoll added inline comments.

================
Comment at: clang/docs/LanguageExtensions.rst:488-489
+
+The memory representation of a dense boolean vector is the smallest fitting
+integer.  The alignment is the number of bits rounded up to the next
+power-of-two but at most the maximum vector alignment of the target.  This
----------------
rsmith wrote:
> Given that we support `ExtInt(n)` integer types for arbitrary `n`, I don't 
> think this is clear. Perhaps "is the same as that of the lowest-rank standard 
> integer type of at least the specified width" or some less wordy way of 
> saying the same thing?
> 
> What happens if you ask for more vector elements than the bit width of 
> `unsigned long long`?
> 
> Is the rule "The size and alignment are both the number of bits rounded up to 
> the next power of two, but the alignment is at most the maximum vector 
> alignment of the target." ?
> Is the rule "The size and alignment are both the number of bits rounded up to 
> the next power of two, but the alignment is at most the maximum vector 
> alignment of the target." ?

Yes and i like your description better.


================
Comment at: clang/lib/AST/TypePrinter.cpp:654
+    OS << "__attribute__((__vector_size__(" << NumVectorElems;
+    if (!T->isExtVectorBoolean()) {
+      OS << " * sizeof(";
----------------
rsmith wrote:
> If it's an `ext_vector_type`, we shouldn't be printing it as 
> `__vector_size__`. `ExtVectorBoolean` isn't really a special case here; we 
> should be distinguishing `ExtVectorType` from regular `VectorType` in general.
Undid this change. There is a separate function for `printExtVectorBefore` that 
works fine as is.


================
Comment at: clang/lib/CodeGen/CGExpr.cpp:2084-2085
                                             Dst.isVolatileQualified());
+      auto *IRStoreTy = dyn_cast<llvm::IntegerType>(Vec->getType());
+      if (IRStoreTy) {
+        auto *IRVecTy = llvm::FixedVectorType::get(
----------------
majnemer wrote:
> `if (auto *IRStoreTy = dyn_cast<llvm::IntegerType>(Vec->getType()))`
`IRStoreTy` is used here and below


================
Comment at: clang/lib/CodeGen/CGExprScalar.cpp:2055-2057
+      auto *PlainIntTy = llvm::VectorType::get(Builder.getIntNTy(DstElemBits),
+                                               VecSrcTy->getElementCount());
+      Src = Builder.CreateSExt(Src, PlainIntTy);
----------------
rsmith wrote:
> I don't think we should represent widening a vector of booleans to a mask 
> vector of 0/-1 integers as a `CK_BitCast`. `CK_BitCast` is intended for cases 
> where the bit-pattern is reinterpreted, not where it's modified.
> 
> Can we add a new cast kind for this instead?
The ext_vector_type does not support casting and we do not need it for the bool 
vector type - i've removed this code path.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D88905

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

Reply via email to