[clang] [HLSL][SPIR-V] Handle SV_Postion builtin in PS (PR #141759)

Farzon Lotfi via cfe-commits cfe-commits at lists.llvm.org
Fri Jun 6 10:37:36 PDT 2025


================
@@ -1147,6 +1154,26 @@ void SemaHLSL::handleSV_DispatchThreadIDAttr(Decl *D, const ParsedAttr &AL) {
                  HLSLSV_DispatchThreadIDAttr(getASTContext(), AL));
 }
 
+bool SemaHLSL::diagnosePositionType(QualType T, const ParsedAttr &AL) {
+  const auto *VT = T->getAs<VectorType>();
+
+  if (!T->hasFloatingRepresentation() || (VT && VT->getNumElements() > 4)) {
+    Diag(AL.getLoc(), diag::err_hlsl_attr_invalid_type)
+        << AL << "float/float1/float2/float3";
----------------
farzonl wrote:

could we use `VT->getNumElements()` as an argument so we don't have to define each float vector and instead use language to indicate the range.

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


More information about the cfe-commits mailing list