[clang] [HLSL] Make memory representation of boolean vectors in HLSL, vectors of i32. Add support for boolean swizzling. (PR #123977)

Finn Plummer via cfe-commits cfe-commits at lists.llvm.org
Mon Feb 3 09:50:40 PST 2025


================
@@ -2016,8 +2016,9 @@ TypeInfo ASTContext::getTypeInfoImpl(const Type *T) const {
   case Type::Vector: {
     const auto *VT = cast<VectorType>(T);
     TypeInfo EltInfo = getTypeInfo(VT->getElementType());
-    Width = VT->isExtVectorBoolType() ? VT->getNumElements()
-                                      : EltInfo.Width * VT->getNumElements();
+    Width = (VT->isExtVectorBoolType() && !getLangOpts().HLSL)
+                ? VT->getNumElements()
+                : EltInfo.Width * VT->getNumElements();
----------------
inbelic wrote:

IIUC, we rely on `EltInfo.Width` being 32 bits here right? If so, why is that always the case?

https://github.com/llvm/llvm-project/pull/123977


More information about the cfe-commits mailing list