================
@@ -4828,18 +4830,23 @@ Sema::PerformImplicitConversion(Expr *From, QualType 
ToType,
     }
     case ICK_HLSL_Vector_Truncation: {
       // Note: HLSL built-in vectors are ExtVectors. Since this truncates a
-      // vector to a smaller vector, this can only operate on arguments where
-      // the source and destination types are ExtVectors.
-      assert(From->getType()->isExtVectorType() && ToType->isExtVectorType() &&
-             "HLSL vector truncation should only apply to ExtVectors");
+      // vector to a smaller vector or to a scalar, this can only operate on
+      // arguments where the source type is an ExtVector and the destination
+      // type is destination type is either an ExtVectorType or a builtin 
scalar
+      // type.
       auto *FromVec = From->getType()->castAs<VectorType>();
-      auto *ToVec = ToType->castAs<VectorType>();
       QualType ElType = FromVec->getElementType();
-      QualType TruncTy =
-          Context.getExtVectorType(ElType, ToVec->getNumElements());
-      From = ImpCastExprToType(From, TruncTy, CK_HLSLVectorTruncation,
-                               From->getValueKind())
-                 .get();
+      if (auto *ToVec = ToType->getAs<VectorType>()) {
+        QualType TruncTy =
+            Context.getExtVectorType(ElType, ToVec->getNumElements());
+        From = ImpCastExprToType(From, TruncTy, CK_HLSLVectorTruncation,
+                                 From->getValueKind())
+                   .get();
+      } else {
+        From = ImpCastExprToType(From, ElType, CK_HLSLVectorTruncation,
+                                 From->getValueKind())
+                   .get();
+      }
----------------
llvm-beanz wrote:

I changed the naming on this because `ToType` is already used, so this caused 
shadowing, but otherwise I adopted this structure.

https://github.com/llvm/llvm-project/pull/104844
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to