From 5390e544089a5f6186fb75d238c33e5a9e95a9fd Mon Sep 17 00:00:00 2001 From: Helena Kotas Date: Thu, 22 Jan 2026 12:46:30 -0800 Subject: [PATCH 1/8] [SM6.10] Add built-in type for LinAlg Matrix handle Adds a built-in type `__builtin_LinAlg_Matrix` that will be used in LinAlg Matrix implementation. --- tools/clang/include/clang/AST/ASTContext.h | 2 +- .../clang/include/clang/AST/BuiltinTypes.def | 3 ++ tools/clang/include/clang/AST/Type.h | 8 ++++ .../include/clang/Serialization/ASTBitCodes.h | 4 +- tools/clang/lib/AST/ASTContext.cpp | 6 +++ tools/clang/lib/AST/ItaniumMangle.cpp | 1 + tools/clang/lib/AST/MicrosoftMangle.cpp | 3 ++ tools/clang/lib/AST/Type.cpp | 2 + tools/clang/lib/AST/TypeLoc.cpp | 1 + tools/clang/lib/CodeGen/CGDebugInfo.cpp | 4 ++ tools/clang/lib/CodeGen/CodeGenTypes.cpp | 8 +++- tools/clang/lib/CodeGen/ItaniumCXXABI.cpp | 1 + tools/clang/lib/Sema/Sema.cpp | 4 ++ tools/clang/lib/Serialization/ASTCommon.cpp | 1 + tools/clang/lib/Serialization/ASTReader.cpp | 1 + .../builtin-matrix-handle-type-ast.hlsl | 28 +++++++++++ .../builtins/builtin-matrix-handle-type.hlsl | 47 +++++++++++++++++++ tools/clang/tools/libclang/CIndex.cpp | 1 + 18 files changed, 122 insertions(+), 3 deletions(-) create mode 100644 tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type-ast.hlsl create mode 100644 tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type.hlsl diff --git a/tools/clang/include/clang/AST/ASTContext.h b/tools/clang/include/clang/AST/ASTContext.h index ab0e33513b..94093a2733 100644 --- a/tools/clang/include/clang/AST/ASTContext.h +++ b/tools/clang/include/clang/AST/ASTContext.h @@ -844,7 +844,7 @@ class ASTContext : public RefCountedBase { CanQualType HalfFloatTy, Min16FloatTy, Min16IntTy, Min16UIntTy; CanQualType HLSLStringTy; CanQualType Int8_4PackedTy, UInt8_4PackedTy; - + CanQualType LinAlgMatrixTy; // HLSL Changes end // Types for deductions in C++0x [stmt.ranged]'s desugaring. Built on demand. diff --git a/tools/clang/include/clang/AST/BuiltinTypes.def b/tools/clang/include/clang/AST/BuiltinTypes.def index 0887f9a319..53986bffd6 100644 --- a/tools/clang/include/clang/AST/BuiltinTypes.def +++ b/tools/clang/include/clang/AST/BuiltinTypes.def @@ -198,6 +198,9 @@ BUILTIN_TYPE(OCLSampler, OCLSamplerTy) // OpenCL event_t. BUILTIN_TYPE(OCLEvent, OCLEventTy) +// HLSL Change - __builtin_LinAlg_Matrix type +BUILTIN_TYPE(LinAlgMatrix, LinAlgMatrixTy) + // This represents the type of an expression whose type is // totally unknown, e.g. 'T::foo'. It is permitted for this to // appear in situations where the structure of the type is diff --git a/tools/clang/include/clang/AST/Type.h b/tools/clang/include/clang/AST/Type.h index 2c96bbc295..1e70e8580e 100644 --- a/tools/clang/include/clang/AST/Type.h +++ b/tools/clang/include/clang/AST/Type.h @@ -1699,6 +1699,8 @@ class Type : public ExtQualsTypeCommonBase { bool isOpenCLSpecificType() const; // Any OpenCL specific type + bool isLinAlgMatrixType() const; // HLSL __builtin_LinAlg_Matrix + /// Determines if this type, which must satisfy /// isObjCLifetimeType(), is implicitly __unsafe_unretained rather /// than implicitly __strong. @@ -5420,6 +5422,12 @@ inline bool Type::isEventT() const { return isSpecificBuiltinType(BuiltinType::OCLEvent); } +// HLSL Change Starts +inline bool Type::isLinAlgMatrixType() const { + return isSpecificBuiltinType(BuiltinType::LinAlgMatrix); +} +// HLSL Change Ends + inline bool Type::isImageType() const { return isImage3dT() || isImage2dT() || isImage2dArrayT() || diff --git a/tools/clang/include/clang/Serialization/ASTBitCodes.h b/tools/clang/include/clang/Serialization/ASTBitCodes.h index b80b94e8d3..ff83cd4eea 100644 --- a/tools/clang/include/clang/Serialization/ASTBitCodes.h +++ b/tools/clang/include/clang/Serialization/ASTBitCodes.h @@ -777,7 +777,9 @@ namespace clang { /// \brief OpenCL event type. PREDEF_TYPE_EVENT_ID = 44, /// \brief OpenCL sampler type. - PREDEF_TYPE_SAMPLER_ID = 45 + PREDEF_TYPE_SAMPLER_ID = 45, + /// \brief HLSL LinAlg Matrix type. + PREDEF_TYPE_LINALG_MATRIX_ID = 46 }; /// \brief The number of predefined type IDs that are reserved for diff --git a/tools/clang/lib/AST/ASTContext.cpp b/tools/clang/lib/AST/ASTContext.cpp index e86874d119..a3a362cfea 100644 --- a/tools/clang/lib/AST/ASTContext.cpp +++ b/tools/clang/lib/AST/ASTContext.cpp @@ -1106,6 +1106,7 @@ void ASTContext::InitBuiltinTypes(const TargetInfo &Target) { InitBuiltinType(LitFloatTy, BuiltinType::LitFloat); InitBuiltinType(Int8_4PackedTy, BuiltinType::Int8_4Packed); InitBuiltinType(UInt8_4PackedTy, BuiltinType::UInt8_4Packed); + InitBuiltinType(LinAlgMatrixTy, BuiltinType::LinAlgMatrix); HLSLStringTy = this->getPointerType(CharTy); @@ -1697,6 +1698,11 @@ TypeInfo ASTContext::getTypeInfoImpl(const Type *T) const { Width = 64; Align = 64; break; + case BuiltinType::LinAlgMatrix: + // Model it as a pointer an to opaque type + Width = Target->getPointerWidth(0); + Align = Target->getPointerAlign(0); + break; // HLSL Change Ends case BuiltinType::LongDouble: Width = Target->getLongDoubleWidth(); diff --git a/tools/clang/lib/AST/ItaniumMangle.cpp b/tools/clang/lib/AST/ItaniumMangle.cpp index 8da491871b..dbc1af71e6 100644 --- a/tools/clang/lib/AST/ItaniumMangle.cpp +++ b/tools/clang/lib/AST/ItaniumMangle.cpp @@ -2050,6 +2050,7 @@ void CXXNameMangler::mangleType(const BuiltinType *T) { case BuiltinType::HalfFloat: Out << "half_float"; break; case BuiltinType::Int8_4Packed: Out << "int8_t4_packed"; break; case BuiltinType::UInt8_4Packed: Out << "uint8_t4_packed"; break; + case BuiltinType::LinAlgMatrix: Out << "23__builtin_LinAlg_Matrix"; break; // HLSL Change ends } } diff --git a/tools/clang/lib/AST/MicrosoftMangle.cpp b/tools/clang/lib/AST/MicrosoftMangle.cpp index 35cbb7cd46..cf7f0bc2b3 100644 --- a/tools/clang/lib/AST/MicrosoftMangle.cpp +++ b/tools/clang/lib/AST/MicrosoftMangle.cpp @@ -1623,6 +1623,9 @@ void MicrosoftCXXNameMangler::mangleType(const BuiltinType *T, Qualifiers, case BuiltinType::UInt8_4Packed: Out << "$ui8_4pk@"; break; + case BuiltinType::LinAlgMatrix: + Out << "$linalg_matrix@"; + break; // HLSL Change Ends } } diff --git a/tools/clang/lib/AST/Type.cpp b/tools/clang/lib/AST/Type.cpp index 51c20218cc..22188262cc 100644 --- a/tools/clang/lib/AST/Type.cpp +++ b/tools/clang/lib/AST/Type.cpp @@ -2548,6 +2548,7 @@ StringRef BuiltinType::getName(const PrintingPolicy &Policy) const { case LitInt: return "literal int"; case Int8_4Packed: return "int8_t4_packed"; case UInt8_4Packed: return "uint8_t4_packed"; + case LinAlgMatrix: return "__builtin_LinAlg Matrix"; // HLSL Change Ends } @@ -3504,6 +3505,7 @@ bool Type::canHaveNullability() const { case BuiltinType::OCLImage3d: case BuiltinType::OCLSampler: case BuiltinType::OCLEvent: + case BuiltinType::LinAlgMatrix: case BuiltinType::BuiltinFn: case BuiltinType::NullPtr: return false; diff --git a/tools/clang/lib/AST/TypeLoc.cpp b/tools/clang/lib/AST/TypeLoc.cpp index e21b4b76fd..efd6a4c967 100644 --- a/tools/clang/lib/AST/TypeLoc.cpp +++ b/tools/clang/lib/AST/TypeLoc.cpp @@ -353,6 +353,7 @@ TypeSpecifierType BuiltinTypeLoc::getWrittenTypeSpec() const { case BuiltinType::OCLImage3d: case BuiltinType::OCLSampler: case BuiltinType::OCLEvent: + case BuiltinType::LinAlgMatrix: case BuiltinType::BuiltinFn: return TST_unspecified; } diff --git a/tools/clang/lib/CodeGen/CGDebugInfo.cpp b/tools/clang/lib/CodeGen/CGDebugInfo.cpp index d947887d62..92760fbd03 100644 --- a/tools/clang/lib/CodeGen/CGDebugInfo.cpp +++ b/tools/clang/lib/CodeGen/CGDebugInfo.cpp @@ -520,6 +520,10 @@ llvm::DIType *CGDebugInfo::CreateType(const BuiltinType *BT) { case BuiltinType::LitFloat: Encoding = llvm::dwarf::DW_ATE_float; break; + // HLSL Change Starts + case BuiltinType::LinAlgMatrix: + llvm_unreachable("LinAlgMatrix debug info not yet supported."); + // HLSL Change Ends } switch (BT->getKind()) { diff --git a/tools/clang/lib/CodeGen/CodeGenTypes.cpp b/tools/clang/lib/CodeGen/CodeGenTypes.cpp index 82328c8fb5..bcd08f69db 100644 --- a/tools/clang/lib/CodeGen/CodeGenTypes.cpp +++ b/tools/clang/lib/CodeGen/CodeGenTypes.cpp @@ -480,7 +480,13 @@ llvm::Type *CodeGenTypes::ConvertType(QualType T) { case BuiltinType::OCLEvent: ResultType = CGM.getOpenCLRuntime().convertOpenCLSpecificType(Ty); break; - + + // HLSL Change Starts + case BuiltinType::LinAlgMatrix: + llvm_unreachable("LinAlgMatrix codegen is not supported yet"); + break; + // HLSL Change Ends + case BuiltinType::Dependent: #define BUILTIN_TYPE(Id, SingletonId) #define PLACEHOLDER_TYPE(Id, SingletonId) \ diff --git a/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp b/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp index f39ec6d497..d1ac099950 100644 --- a/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp +++ b/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp @@ -2378,6 +2378,7 @@ static bool TypeInfoIsInStandardLibrary(const BuiltinType *Ty) { case BuiltinType::LitFloat: case BuiltinType::Int8_4Packed: case BuiltinType::UInt8_4Packed: + case BuiltinType::LinAlgMatrix: llvm_unreachable("FIXME: HLSL types are unsupported!"); break; } diff --git a/tools/clang/lib/Sema/Sema.cpp b/tools/clang/lib/Sema/Sema.cpp index ab2d023dbb..e299a9687e 100644 --- a/tools/clang/lib/Sema/Sema.cpp +++ b/tools/clang/lib/Sema/Sema.cpp @@ -242,6 +242,10 @@ void Sema::Initialize() { } } + // HLSL Change - '__builtin_LinAlg_Matrix' + if (PP.getLangOpts().HLSL) + addImplicitTypedef("__builtin_LinAlg_Matrix", Context.LinAlgMatrixTy); + DeclarationName BuiltinVaList = &Context.Idents.get("__builtin_va_list"); if (IdResolver.begin(BuiltinVaList) == IdResolver.end()) PushOnScopeChains(Context.getBuiltinVaListDecl(), TUScope); diff --git a/tools/clang/lib/Serialization/ASTCommon.cpp b/tools/clang/lib/Serialization/ASTCommon.cpp index b1bf4a6bff..e81ae85383 100644 --- a/tools/clang/lib/Serialization/ASTCommon.cpp +++ b/tools/clang/lib/Serialization/ASTCommon.cpp @@ -70,6 +70,7 @@ serialization::TypeIdxFromBuiltin(const BuiltinType *BT) { case BuiltinType::OCLImage3d: ID = PREDEF_TYPE_IMAGE3D_ID; break; case BuiltinType::OCLSampler: ID = PREDEF_TYPE_SAMPLER_ID; break; case BuiltinType::OCLEvent: ID = PREDEF_TYPE_EVENT_ID; break; + case BuiltinType::LinAlgMatrix: ID = PREDEF_TYPE_LINALG_MATRIX_ID;break; case BuiltinType::BuiltinFn: ID = PREDEF_TYPE_BUILTIN_FN; break; diff --git a/tools/clang/lib/Serialization/ASTReader.cpp b/tools/clang/lib/Serialization/ASTReader.cpp index 7f9bb26734..0c665204c3 100644 --- a/tools/clang/lib/Serialization/ASTReader.cpp +++ b/tools/clang/lib/Serialization/ASTReader.cpp @@ -5755,6 +5755,7 @@ QualType ASTReader::GetType(TypeID ID) { case PREDEF_TYPE_IMAGE3D_ID: T = Context.OCLImage3dTy; break; case PREDEF_TYPE_SAMPLER_ID: T = Context.OCLSamplerTy; break; case PREDEF_TYPE_EVENT_ID: T = Context.OCLEventTy; break; + case PREDEF_TYPE_LINALG_MATRIX_ID: T = Context.LinAlgMatrixTy; break; case PREDEF_TYPE_AUTO_DEDUCT: T = Context.getAutoDeductType(); break; case PREDEF_TYPE_AUTO_RREF_DEDUCT: diff --git a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type-ast.hlsl b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type-ast.hlsl new file mode 100644 index 0000000000..10e2f9de43 --- /dev/null +++ b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type-ast.hlsl @@ -0,0 +1,28 @@ +// REQUIRES: dxil-1-10 +// RUN: %dxc -T lib_6_10 -ast-dump %s | FileCheck %s + +// CHECK: CXXRecordDecl {{.*}} struct S definition +// CHECK: FieldDecl {{.*}} handle '__builtin_LinAlg_Matrix':'__builtin_LinAlg Matrix' +struct S { + __builtin_LinAlg_Matrix handle; +}; + +// CHECK: VarDecl {{.*}} global_handle '__builtin_LinAlg_Matrix':'__builtin_LinAlg Matrix' +__builtin_LinAlg_Matrix global_handle; + +// CHECK: FunctionDecl {{.*}} f1 'void (__builtin_LinAlg_Matrix)' +// CHECK: ParmVarDecl {{.*}} m '__builtin_LinAlg_Matrix':'__builtin_LinAlg Matrix' +void f1(__builtin_LinAlg_Matrix m); + +// CHECK: FunctionDecl {{.*}} f2 '__builtin_LinAlg_Matrix ()' +__builtin_LinAlg_Matrix f2(); + +// CHECK: FunctionDecl {{.*}} main 'void ()' +// CHECK-NEXT: CompoundStmt +// CHECK-NEXT: DeclStmt +// CHECK-NEXT: VarDecl {{.*}} m '__builtin_LinAlg_Matrix':'__builtin_LinAlg Matrix' +[shader("compute")] +[numthreads(4,1,1)] +void main() { + __builtin_LinAlg_Matrix m; +} diff --git a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type.hlsl b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type.hlsl new file mode 100644 index 0000000000..18fc652258 --- /dev/null +++ b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type.hlsl @@ -0,0 +1,47 @@ +// REQUIRES: dxil-1-10 +// RUN: %dxc -T lib_6_10 -verify %s + +__builtin_LinAlg_Matrix global_handle; + +static __builtin_LinAlg_Matrix static_handle; + +groupshared __builtin_LinAlg_Matrix gs_handle; + +__builtin_LinAlg_Matrix array[2]; + +cbuffer CB { + __builtin_LinAlg_Matrix cb_handle; +}; + +struct S { + __builtin_LinAlg_Matrix handle; +}; + +S s; + +void f1(__builtin_LinAlg_Matrix m); + +__builtin_LinAlg_Matrix f2(); + +// expected-error@+1 {{typedef redefinition with different types ('int' vs '__builtin_LinAlg Matrix')}} +typedef int __builtin_LinAlg_Matrix; + +[shader("compute")] +[numthreads(4,1,1)] +void main() { + __builtin_LinAlg_Matrix m; + + m = s.handle; + + f1(m); + m = f2(); + + // expected-error@+1 {{numeric type expected}} + m++; + + // expected-error@+1 {{numeric type expected}} + m = m * 2; + + // expected-error@+1 {{numeric type expected}} + bool a = m && s.handle; +} diff --git a/tools/clang/tools/libclang/CIndex.cpp b/tools/clang/tools/libclang/CIndex.cpp index be1414bab1..f308848c98 100644 --- a/tools/clang/tools/libclang/CIndex.cpp +++ b/tools/clang/tools/libclang/CIndex.cpp @@ -1465,6 +1465,7 @@ bool CursorVisitor::VisitBuiltinTypeLoc(BuiltinTypeLoc TL) { case BuiltinType::OCLImage3d: case BuiltinType::OCLSampler: case BuiltinType::OCLEvent: + case BuiltinType::LinAlgMatrix: #define BUILTIN_TYPE(Id, SingletonId) #define SIGNED_TYPE(Id, SingletonId) case BuiltinType::Id: #define UNSIGNED_TYPE(Id, SingletonId) case BuiltinType::Id: From be693b2661a6dafb438aadbf67f499a28a68e1ea Mon Sep 17 00:00:00 2001 From: Helena Kotas Date: Mon, 26 Jan 2026 17:29:28 -0800 Subject: [PATCH 2/8] Fallback to default debug infor handling --- tools/clang/lib/CodeGen/CGDebugInfo.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tools/clang/lib/CodeGen/CGDebugInfo.cpp b/tools/clang/lib/CodeGen/CGDebugInfo.cpp index 92760fbd03..d947887d62 100644 --- a/tools/clang/lib/CodeGen/CGDebugInfo.cpp +++ b/tools/clang/lib/CodeGen/CGDebugInfo.cpp @@ -520,10 +520,6 @@ llvm::DIType *CGDebugInfo::CreateType(const BuiltinType *BT) { case BuiltinType::LitFloat: Encoding = llvm::dwarf::DW_ATE_float; break; - // HLSL Change Starts - case BuiltinType::LinAlgMatrix: - llvm_unreachable("LinAlgMatrix debug info not yet supported."); - // HLSL Change Ends } switch (BT->getKind()) { From ed855c62c804e4e099ed298795209d512acaa92f Mon Sep 17 00:00:00 2001 From: Helena Kotas Date: Wed, 28 Jan 2026 10:23:37 -0800 Subject: [PATCH 3/8] Fix type name string --- tools/clang/lib/AST/Type.cpp | 2 +- .../linalg/builtins/builtin-matrix-handle-type-ast.hlsl | 8 ++++---- .../hlsl/linalg/builtins/builtin-matrix-handle-type.hlsl | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/clang/lib/AST/Type.cpp b/tools/clang/lib/AST/Type.cpp index 22188262cc..84fff71606 100644 --- a/tools/clang/lib/AST/Type.cpp +++ b/tools/clang/lib/AST/Type.cpp @@ -2548,7 +2548,7 @@ StringRef BuiltinType::getName(const PrintingPolicy &Policy) const { case LitInt: return "literal int"; case Int8_4Packed: return "int8_t4_packed"; case UInt8_4Packed: return "uint8_t4_packed"; - case LinAlgMatrix: return "__builtin_LinAlg Matrix"; + case LinAlgMatrix: return "__builtin_LinAlg_Matrix"; // HLSL Change Ends } diff --git a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type-ast.hlsl b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type-ast.hlsl index 10e2f9de43..3403f63d37 100644 --- a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type-ast.hlsl +++ b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type-ast.hlsl @@ -2,16 +2,16 @@ // RUN: %dxc -T lib_6_10 -ast-dump %s | FileCheck %s // CHECK: CXXRecordDecl {{.*}} struct S definition -// CHECK: FieldDecl {{.*}} handle '__builtin_LinAlg_Matrix':'__builtin_LinAlg Matrix' +// CHECK: FieldDecl {{.*}} handle '__builtin_LinAlg_Matrix':'__builtin_LinAlg_Matrix' struct S { __builtin_LinAlg_Matrix handle; }; -// CHECK: VarDecl {{.*}} global_handle '__builtin_LinAlg_Matrix':'__builtin_LinAlg Matrix' +// CHECK: VarDecl {{.*}} global_handle '__builtin_LinAlg_Matrix':'__builtin_LinAlg_Matrix' __builtin_LinAlg_Matrix global_handle; // CHECK: FunctionDecl {{.*}} f1 'void (__builtin_LinAlg_Matrix)' -// CHECK: ParmVarDecl {{.*}} m '__builtin_LinAlg_Matrix':'__builtin_LinAlg Matrix' +// CHECK: ParmVarDecl {{.*}} m '__builtin_LinAlg_Matrix':'__builtin_LinAlg_Matrix' void f1(__builtin_LinAlg_Matrix m); // CHECK: FunctionDecl {{.*}} f2 '__builtin_LinAlg_Matrix ()' @@ -20,7 +20,7 @@ __builtin_LinAlg_Matrix f2(); // CHECK: FunctionDecl {{.*}} main 'void ()' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: DeclStmt -// CHECK-NEXT: VarDecl {{.*}} m '__builtin_LinAlg_Matrix':'__builtin_LinAlg Matrix' +// CHECK-NEXT: VarDecl {{.*}} m '__builtin_LinAlg_Matrix':'__builtin_LinAlg_Matrix' [shader("compute")] [numthreads(4,1,1)] void main() { diff --git a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type.hlsl b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type.hlsl index 18fc652258..19e9a88694 100644 --- a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type.hlsl +++ b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type.hlsl @@ -23,7 +23,7 @@ void f1(__builtin_LinAlg_Matrix m); __builtin_LinAlg_Matrix f2(); -// expected-error@+1 {{typedef redefinition with different types ('int' vs '__builtin_LinAlg Matrix')}} +// expected-error@+1 {{typedef redefinition with different types ('int' vs '__builtin_LinAlg_Matrix')}} typedef int __builtin_LinAlg_Matrix; [shader("compute")] From 9b6f7a7a89201b3469f858fdbfc4d31f0313085f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 29 Jan 2026 18:27:59 +0000 Subject: [PATCH 4/8] chore: autopublish 2026-01-29T18:27:59Z --- tools/clang/include/clang/AST/Type.h | 2 +- .../include/clang/Serialization/ASTBitCodes.h | 74 +++++++++---------- tools/clang/lib/AST/ItaniumMangle.cpp | 4 +- tools/clang/lib/AST/Type.cpp | 5 +- tools/clang/lib/CodeGen/CodeGenTypes.cpp | 2 +- tools/clang/lib/Serialization/ASTCommon.cpp | 4 +- tools/clang/lib/Serialization/ASTReader.cpp | 4 +- 7 files changed, 51 insertions(+), 44 deletions(-) diff --git a/tools/clang/include/clang/AST/Type.h b/tools/clang/include/clang/AST/Type.h index 1e70e8580e..5da576a723 100644 --- a/tools/clang/include/clang/AST/Type.h +++ b/tools/clang/include/clang/AST/Type.h @@ -1699,7 +1699,7 @@ class Type : public ExtQualsTypeCommonBase { bool isOpenCLSpecificType() const; // Any OpenCL specific type - bool isLinAlgMatrixType() const; // HLSL __builtin_LinAlg_Matrix + bool isLinAlgMatrixType() const; // HLSL __builtin_LinAlg_Matrix /// Determines if this type, which must satisfy /// isObjCLifetimeType(), is implicitly __unsafe_unretained rather diff --git a/tools/clang/include/clang/Serialization/ASTBitCodes.h b/tools/clang/include/clang/Serialization/ASTBitCodes.h index ff83cd4eea..a3d3050077 100644 --- a/tools/clang/include/clang/Serialization/ASTBitCodes.h +++ b/tools/clang/include/clang/Serialization/ASTBitCodes.h @@ -687,73 +687,73 @@ namespace clang { /// by the AST context when it is created. enum PredefinedTypeIDs { /// \brief The NULL type. - PREDEF_TYPE_NULL_ID = 0, + PREDEF_TYPE_NULL_ID = 0, /// \brief The void type. - PREDEF_TYPE_VOID_ID = 1, + PREDEF_TYPE_VOID_ID = 1, /// \brief The 'bool' or '_Bool' type. - PREDEF_TYPE_BOOL_ID = 2, + PREDEF_TYPE_BOOL_ID = 2, /// \brief The 'char' type, when it is unsigned. - PREDEF_TYPE_CHAR_U_ID = 3, + PREDEF_TYPE_CHAR_U_ID = 3, /// \brief The 'unsigned char' type. - PREDEF_TYPE_UCHAR_ID = 4, + PREDEF_TYPE_UCHAR_ID = 4, /// \brief The 'unsigned short' type. - PREDEF_TYPE_USHORT_ID = 5, + PREDEF_TYPE_USHORT_ID = 5, /// \brief The 'unsigned int' type. - PREDEF_TYPE_UINT_ID = 6, + PREDEF_TYPE_UINT_ID = 6, /// \brief The 'unsigned long' type. - PREDEF_TYPE_ULONG_ID = 7, + PREDEF_TYPE_ULONG_ID = 7, /// \brief The 'unsigned long long' type. - PREDEF_TYPE_ULONGLONG_ID = 8, + PREDEF_TYPE_ULONGLONG_ID = 8, /// \brief The 'char' type, when it is signed. - PREDEF_TYPE_CHAR_S_ID = 9, + PREDEF_TYPE_CHAR_S_ID = 9, /// \brief The 'signed char' type. - PREDEF_TYPE_SCHAR_ID = 10, + PREDEF_TYPE_SCHAR_ID = 10, /// \brief The C++ 'wchar_t' type. - PREDEF_TYPE_WCHAR_ID = 11, + PREDEF_TYPE_WCHAR_ID = 11, /// \brief The (signed) 'short' type. - PREDEF_TYPE_SHORT_ID = 12, + PREDEF_TYPE_SHORT_ID = 12, /// \brief The (signed) 'int' type. - PREDEF_TYPE_INT_ID = 13, + PREDEF_TYPE_INT_ID = 13, /// \brief The (signed) 'long' type. - PREDEF_TYPE_LONG_ID = 14, + PREDEF_TYPE_LONG_ID = 14, /// \brief The (signed) 'long long' type. - PREDEF_TYPE_LONGLONG_ID = 15, + PREDEF_TYPE_LONGLONG_ID = 15, /// \brief The 'float' type. - PREDEF_TYPE_FLOAT_ID = 16, + PREDEF_TYPE_FLOAT_ID = 16, /// \brief The 'double' type. - PREDEF_TYPE_DOUBLE_ID = 17, + PREDEF_TYPE_DOUBLE_ID = 17, /// \brief The 'long double' type. PREDEF_TYPE_LONGDOUBLE_ID = 18, /// \brief The placeholder type for overloaded function sets. - PREDEF_TYPE_OVERLOAD_ID = 19, + PREDEF_TYPE_OVERLOAD_ID = 19, /// \brief The placeholder type for dependent types. - PREDEF_TYPE_DEPENDENT_ID = 20, + PREDEF_TYPE_DEPENDENT_ID = 20, /// \brief The '__uint128_t' type. - PREDEF_TYPE_UINT128_ID = 21, + PREDEF_TYPE_UINT128_ID = 21, /// \brief The '__int128_t' type. - PREDEF_TYPE_INT128_ID = 22, + PREDEF_TYPE_INT128_ID = 22, /// \brief The type of 'nullptr'. - PREDEF_TYPE_NULLPTR_ID = 23, + PREDEF_TYPE_NULLPTR_ID = 23, /// \brief The C++ 'char16_t' type. - PREDEF_TYPE_CHAR16_ID = 24, + PREDEF_TYPE_CHAR16_ID = 24, /// \brief The C++ 'char32_t' type. - PREDEF_TYPE_CHAR32_ID = 25, + PREDEF_TYPE_CHAR32_ID = 25, /// \brief The ObjC 'id' type. - PREDEF_TYPE_OBJC_ID = 26, + PREDEF_TYPE_OBJC_ID = 26, /// \brief The ObjC 'Class' type. - PREDEF_TYPE_OBJC_CLASS = 27, + PREDEF_TYPE_OBJC_CLASS = 27, /// \brief The ObjC 'SEL' type. - PREDEF_TYPE_OBJC_SEL = 28, + PREDEF_TYPE_OBJC_SEL = 28, /// \brief The 'unknown any' placeholder type. - PREDEF_TYPE_UNKNOWN_ANY = 29, + PREDEF_TYPE_UNKNOWN_ANY = 29, /// \brief The placeholder type for bound member functions. - PREDEF_TYPE_BOUND_MEMBER = 30, + PREDEF_TYPE_BOUND_MEMBER = 30, /// \brief The "auto" deduction type. - PREDEF_TYPE_AUTO_DEDUCT = 31, + PREDEF_TYPE_AUTO_DEDUCT = 31, /// \brief The "auto &&" deduction type. PREDEF_TYPE_AUTO_RREF_DEDUCT = 32, /// \brief The OpenCL 'half' / ARM NEON __fp16 type. - PREDEF_TYPE_HALF_ID = 33, + PREDEF_TYPE_HALF_ID = 33, /// \brief ARC's unbridged-cast placeholder type. PREDEF_TYPE_ARC_UNBRIDGED_CAST = 34, /// \brief The pseudo-object placeholder type. @@ -763,21 +763,21 @@ namespace clang { /// \brief The placeholder type for builtin functions. PREDEF_TYPE_BUILTIN_FN = 37, /// \brief OpenCL 1d image type. - PREDEF_TYPE_IMAGE1D_ID = 38, + PREDEF_TYPE_IMAGE1D_ID = 38, /// \brief OpenCL 1d image array type. PREDEF_TYPE_IMAGE1D_ARR_ID = 39, /// \brief OpenCL 1d image buffer type. PREDEF_TYPE_IMAGE1D_BUFF_ID = 40, /// \brief OpenCL 2d image type. - PREDEF_TYPE_IMAGE2D_ID = 41, + PREDEF_TYPE_IMAGE2D_ID = 41, /// \brief OpenCL 2d image array type. PREDEF_TYPE_IMAGE2D_ARR_ID = 42, /// \brief OpenCL 3d image type. - PREDEF_TYPE_IMAGE3D_ID = 43, + PREDEF_TYPE_IMAGE3D_ID = 43, /// \brief OpenCL event type. - PREDEF_TYPE_EVENT_ID = 44, + PREDEF_TYPE_EVENT_ID = 44, /// \brief OpenCL sampler type. - PREDEF_TYPE_SAMPLER_ID = 45, + PREDEF_TYPE_SAMPLER_ID = 45, /// \brief HLSL LinAlg Matrix type. PREDEF_TYPE_LINALG_MATRIX_ID = 46 }; diff --git a/tools/clang/lib/AST/ItaniumMangle.cpp b/tools/clang/lib/AST/ItaniumMangle.cpp index dbc1af71e6..1c41a9b5ae 100644 --- a/tools/clang/lib/AST/ItaniumMangle.cpp +++ b/tools/clang/lib/AST/ItaniumMangle.cpp @@ -2050,7 +2050,9 @@ void CXXNameMangler::mangleType(const BuiltinType *T) { case BuiltinType::HalfFloat: Out << "half_float"; break; case BuiltinType::Int8_4Packed: Out << "int8_t4_packed"; break; case BuiltinType::UInt8_4Packed: Out << "uint8_t4_packed"; break; - case BuiltinType::LinAlgMatrix: Out << "23__builtin_LinAlg_Matrix"; break; + case BuiltinType::LinAlgMatrix: + Out << "23__builtin_LinAlg_Matrix"; + break; // HLSL Change ends } } diff --git a/tools/clang/lib/AST/Type.cpp b/tools/clang/lib/AST/Type.cpp index 84fff71606..e527cd480c 100644 --- a/tools/clang/lib/AST/Type.cpp +++ b/tools/clang/lib/AST/Type.cpp @@ -2548,8 +2548,9 @@ StringRef BuiltinType::getName(const PrintingPolicy &Policy) const { case LitInt: return "literal int"; case Int8_4Packed: return "int8_t4_packed"; case UInt8_4Packed: return "uint8_t4_packed"; - case LinAlgMatrix: return "__builtin_LinAlg_Matrix"; - // HLSL Change Ends + case LinAlgMatrix: + return "__builtin_LinAlg_Matrix"; + // HLSL Change Ends } llvm_unreachable("Invalid builtin type."); diff --git a/tools/clang/lib/CodeGen/CodeGenTypes.cpp b/tools/clang/lib/CodeGen/CodeGenTypes.cpp index bcd08f69db..3c3680c69c 100644 --- a/tools/clang/lib/CodeGen/CodeGenTypes.cpp +++ b/tools/clang/lib/CodeGen/CodeGenTypes.cpp @@ -485,7 +485,7 @@ llvm::Type *CodeGenTypes::ConvertType(QualType T) { case BuiltinType::LinAlgMatrix: llvm_unreachable("LinAlgMatrix codegen is not supported yet"); break; - // HLSL Change Ends + // HLSL Change Ends case BuiltinType::Dependent: #define BUILTIN_TYPE(Id, SingletonId) diff --git a/tools/clang/lib/Serialization/ASTCommon.cpp b/tools/clang/lib/Serialization/ASTCommon.cpp index e81ae85383..dca4c3fc53 100644 --- a/tools/clang/lib/Serialization/ASTCommon.cpp +++ b/tools/clang/lib/Serialization/ASTCommon.cpp @@ -70,7 +70,9 @@ serialization::TypeIdxFromBuiltin(const BuiltinType *BT) { case BuiltinType::OCLImage3d: ID = PREDEF_TYPE_IMAGE3D_ID; break; case BuiltinType::OCLSampler: ID = PREDEF_TYPE_SAMPLER_ID; break; case BuiltinType::OCLEvent: ID = PREDEF_TYPE_EVENT_ID; break; - case BuiltinType::LinAlgMatrix: ID = PREDEF_TYPE_LINALG_MATRIX_ID;break; + case BuiltinType::LinAlgMatrix: + ID = PREDEF_TYPE_LINALG_MATRIX_ID; + break; case BuiltinType::BuiltinFn: ID = PREDEF_TYPE_BUILTIN_FN; break; diff --git a/tools/clang/lib/Serialization/ASTReader.cpp b/tools/clang/lib/Serialization/ASTReader.cpp index 0c665204c3..68367fc582 100644 --- a/tools/clang/lib/Serialization/ASTReader.cpp +++ b/tools/clang/lib/Serialization/ASTReader.cpp @@ -5755,7 +5755,9 @@ QualType ASTReader::GetType(TypeID ID) { case PREDEF_TYPE_IMAGE3D_ID: T = Context.OCLImage3dTy; break; case PREDEF_TYPE_SAMPLER_ID: T = Context.OCLSamplerTy; break; case PREDEF_TYPE_EVENT_ID: T = Context.OCLEventTy; break; - case PREDEF_TYPE_LINALG_MATRIX_ID: T = Context.LinAlgMatrixTy; break; + case PREDEF_TYPE_LINALG_MATRIX_ID: + T = Context.LinAlgMatrixTy; + break; case PREDEF_TYPE_AUTO_DEDUCT: T = Context.getAutoDeductType(); break; case PREDEF_TYPE_AUTO_RREF_DEDUCT: From 716c63a532a5de371c9023a71f01c4cb531d67a8 Mon Sep 17 00:00:00 2001 From: Helena Kotas Date: Fri, 30 Jan 2026 10:44:07 -0800 Subject: [PATCH 5/8] Move tests back under linalg/builtins --- .../builtins/builtin-matrix-handle-type-ast.hlsl | 0 .../{coopvec => linalg}/builtins/builtin-matrix-handle-type.hlsl | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename tools/clang/test/SemaHLSL/hlsl/{coopvec => linalg}/builtins/builtin-matrix-handle-type-ast.hlsl (100%) rename tools/clang/test/SemaHLSL/hlsl/{coopvec => linalg}/builtins/builtin-matrix-handle-type.hlsl (100%) diff --git a/tools/clang/test/SemaHLSL/hlsl/coopvec/builtins/builtin-matrix-handle-type-ast.hlsl b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type-ast.hlsl similarity index 100% rename from tools/clang/test/SemaHLSL/hlsl/coopvec/builtins/builtin-matrix-handle-type-ast.hlsl rename to tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type-ast.hlsl diff --git a/tools/clang/test/SemaHLSL/hlsl/coopvec/builtins/builtin-matrix-handle-type.hlsl b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type.hlsl similarity index 100% rename from tools/clang/test/SemaHLSL/hlsl/coopvec/builtins/builtin-matrix-handle-type.hlsl rename to tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type.hlsl From 8e956a8e8d3ae6dc64c0106a5be7be5a1e6f50d4 Mon Sep 17 00:00:00 2001 From: Helena Kotas Date: Fri, 30 Jan 2026 18:32:30 -0800 Subject: [PATCH 6/8] Update __buitin_LinAlg_Matrix codegen --- tools/clang/lib/CodeGen/CodeGenTypes.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/clang/lib/CodeGen/CodeGenTypes.cpp b/tools/clang/lib/CodeGen/CodeGenTypes.cpp index 3c3680c69c..c6de996149 100644 --- a/tools/clang/lib/CodeGen/CodeGenTypes.cpp +++ b/tools/clang/lib/CodeGen/CodeGenTypes.cpp @@ -483,7 +483,9 @@ llvm::Type *CodeGenTypes::ConvertType(QualType T) { // HLSL Change Starts case BuiltinType::LinAlgMatrix: - llvm_unreachable("LinAlgMatrix codegen is not supported yet"); + // __builtin_LinAlg_Matrix type without attributes is not a valid LinAlg + // Matrix handle + ResultType = llvm::Type::getVoidTy(getLLVMContext()); break; // HLSL Change Ends From e9a6bb62bbf9cc59686e17c18fb01a60f373c657 Mon Sep 17 00:00:00 2001 From: Helena Kotas Date: Mon, 2 Feb 2026 16:44:32 -0800 Subject: [PATCH 7/8] Code review feedback --- tools/clang/lib/AST/TypeLoc.cpp | 6 +++--- tools/clang/lib/CodeGen/CodeGenTypes.cpp | 5 ++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/tools/clang/lib/AST/TypeLoc.cpp b/tools/clang/lib/AST/TypeLoc.cpp index efd6a4c967..362b5f7a2a 100644 --- a/tools/clang/lib/AST/TypeLoc.cpp +++ b/tools/clang/lib/AST/TypeLoc.cpp @@ -320,7 +320,7 @@ TypeSpecifierType BuiltinTypeLoc::getWrittenTypeSpec() const { case BuiltinType::Float: case BuiltinType::Double: case BuiltinType::LongDouble: - // HLSL Change Starts + // HLSL Change Starts case BuiltinType::HalfFloat: case BuiltinType::Min10Float: case BuiltinType::Min16Float: @@ -331,7 +331,8 @@ TypeSpecifierType BuiltinTypeLoc::getWrittenTypeSpec() const { case BuiltinType::LitInt: case BuiltinType::Int8_4Packed: case BuiltinType::UInt8_4Packed: - // HLSL Change Ends + case BuiltinType::LinAlgMatrix: + // HLSL Change Ends llvm_unreachable("Builtin type needs extra local data!"); // Fall through, if the impossible happens. @@ -353,7 +354,6 @@ TypeSpecifierType BuiltinTypeLoc::getWrittenTypeSpec() const { case BuiltinType::OCLImage3d: case BuiltinType::OCLSampler: case BuiltinType::OCLEvent: - case BuiltinType::LinAlgMatrix: case BuiltinType::BuiltinFn: return TST_unspecified; } diff --git a/tools/clang/lib/CodeGen/CodeGenTypes.cpp b/tools/clang/lib/CodeGen/CodeGenTypes.cpp index c6de996149..50cecac234 100644 --- a/tools/clang/lib/CodeGen/CodeGenTypes.cpp +++ b/tools/clang/lib/CodeGen/CodeGenTypes.cpp @@ -483,9 +483,8 @@ llvm::Type *CodeGenTypes::ConvertType(QualType T) { // HLSL Change Starts case BuiltinType::LinAlgMatrix: - // __builtin_LinAlg_Matrix type without attributes is not a valid LinAlg - // Matrix handle - ResultType = llvm::Type::getVoidTy(getLLVMContext()); + llvm_unreachable("__builtin_LinAlg_Matrix type without attributes is not " + "a valid LinAlMatrix handle"); break; // HLSL Change Ends From eea0b2b70ffcb65484aad2a25ac7948cab230b71 Mon Sep 17 00:00:00 2001 From: Helena Kotas Date: Mon, 2 Feb 2026 17:09:40 -0800 Subject: [PATCH 8/8] Rename the type to __builtin_LinAlgMatrix --- .../clang/include/clang/AST/BuiltinTypes.def | 2 +- tools/clang/include/clang/AST/Type.h | 2 +- tools/clang/lib/AST/ItaniumMangle.cpp | 2 +- tools/clang/lib/AST/Type.cpp | 2 +- tools/clang/lib/CodeGen/CodeGenTypes.cpp | 2 +- tools/clang/lib/Sema/Sema.cpp | 4 ++-- .../builtin-matrix-handle-type-ast.hlsl | 22 +++++++++---------- .../builtins/builtin-matrix-handle-type.hlsl | 22 +++++++++---------- 8 files changed, 29 insertions(+), 29 deletions(-) diff --git a/tools/clang/include/clang/AST/BuiltinTypes.def b/tools/clang/include/clang/AST/BuiltinTypes.def index 53986bffd6..640b5412ad 100644 --- a/tools/clang/include/clang/AST/BuiltinTypes.def +++ b/tools/clang/include/clang/AST/BuiltinTypes.def @@ -198,7 +198,7 @@ BUILTIN_TYPE(OCLSampler, OCLSamplerTy) // OpenCL event_t. BUILTIN_TYPE(OCLEvent, OCLEventTy) -// HLSL Change - __builtin_LinAlg_Matrix type +// HLSL Change - __builtin_LinAlgMatrix type BUILTIN_TYPE(LinAlgMatrix, LinAlgMatrixTy) // This represents the type of an expression whose type is diff --git a/tools/clang/include/clang/AST/Type.h b/tools/clang/include/clang/AST/Type.h index 5da576a723..7f23fd5fdf 100644 --- a/tools/clang/include/clang/AST/Type.h +++ b/tools/clang/include/clang/AST/Type.h @@ -1699,7 +1699,7 @@ class Type : public ExtQualsTypeCommonBase { bool isOpenCLSpecificType() const; // Any OpenCL specific type - bool isLinAlgMatrixType() const; // HLSL __builtin_LinAlg_Matrix + bool isLinAlgMatrixType() const; // HLSL __builtin_LinAlgMatrix /// Determines if this type, which must satisfy /// isObjCLifetimeType(), is implicitly __unsafe_unretained rather diff --git a/tools/clang/lib/AST/ItaniumMangle.cpp b/tools/clang/lib/AST/ItaniumMangle.cpp index 1c41a9b5ae..32a146b633 100644 --- a/tools/clang/lib/AST/ItaniumMangle.cpp +++ b/tools/clang/lib/AST/ItaniumMangle.cpp @@ -2051,7 +2051,7 @@ void CXXNameMangler::mangleType(const BuiltinType *T) { case BuiltinType::Int8_4Packed: Out << "int8_t4_packed"; break; case BuiltinType::UInt8_4Packed: Out << "uint8_t4_packed"; break; case BuiltinType::LinAlgMatrix: - Out << "23__builtin_LinAlg_Matrix"; + Out << "22__builtin_LinAlgMatrix"; break; // HLSL Change ends } diff --git a/tools/clang/lib/AST/Type.cpp b/tools/clang/lib/AST/Type.cpp index e527cd480c..cbfa49dfd8 100644 --- a/tools/clang/lib/AST/Type.cpp +++ b/tools/clang/lib/AST/Type.cpp @@ -2549,7 +2549,7 @@ StringRef BuiltinType::getName(const PrintingPolicy &Policy) const { case Int8_4Packed: return "int8_t4_packed"; case UInt8_4Packed: return "uint8_t4_packed"; case LinAlgMatrix: - return "__builtin_LinAlg_Matrix"; + return "__builtin_LinAlgMatrix"; // HLSL Change Ends } diff --git a/tools/clang/lib/CodeGen/CodeGenTypes.cpp b/tools/clang/lib/CodeGen/CodeGenTypes.cpp index 50cecac234..51fbaa8935 100644 --- a/tools/clang/lib/CodeGen/CodeGenTypes.cpp +++ b/tools/clang/lib/CodeGen/CodeGenTypes.cpp @@ -483,7 +483,7 @@ llvm::Type *CodeGenTypes::ConvertType(QualType T) { // HLSL Change Starts case BuiltinType::LinAlgMatrix: - llvm_unreachable("__builtin_LinAlg_Matrix type without attributes is not " + llvm_unreachable("__builtin_LinAlgMatrix type without attributes is not " "a valid LinAlMatrix handle"); break; // HLSL Change Ends diff --git a/tools/clang/lib/Sema/Sema.cpp b/tools/clang/lib/Sema/Sema.cpp index e299a9687e..0698b97e87 100644 --- a/tools/clang/lib/Sema/Sema.cpp +++ b/tools/clang/lib/Sema/Sema.cpp @@ -242,9 +242,9 @@ void Sema::Initialize() { } } - // HLSL Change - '__builtin_LinAlg_Matrix' + // HLSL Change - '__builtin_LinAlgMatrix' if (PP.getLangOpts().HLSL) - addImplicitTypedef("__builtin_LinAlg_Matrix", Context.LinAlgMatrixTy); + addImplicitTypedef("__builtin_LinAlgMatrix", Context.LinAlgMatrixTy); DeclarationName BuiltinVaList = &Context.Idents.get("__builtin_va_list"); if (IdResolver.begin(BuiltinVaList) == IdResolver.end()) diff --git a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type-ast.hlsl b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type-ast.hlsl index 3403f63d37..05241a9b8d 100644 --- a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type-ast.hlsl +++ b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type-ast.hlsl @@ -2,27 +2,27 @@ // RUN: %dxc -T lib_6_10 -ast-dump %s | FileCheck %s // CHECK: CXXRecordDecl {{.*}} struct S definition -// CHECK: FieldDecl {{.*}} handle '__builtin_LinAlg_Matrix':'__builtin_LinAlg_Matrix' +// CHECK: FieldDecl {{.*}} handle '__builtin_LinAlgMatrix':'__builtin_LinAlgMatrix' struct S { - __builtin_LinAlg_Matrix handle; + __builtin_LinAlgMatrix handle; }; -// CHECK: VarDecl {{.*}} global_handle '__builtin_LinAlg_Matrix':'__builtin_LinAlg_Matrix' -__builtin_LinAlg_Matrix global_handle; +// CHECK: VarDecl {{.*}} global_handle '__builtin_LinAlgMatrix':'__builtin_LinAlgMatrix' +__builtin_LinAlgMatrix global_handle; -// CHECK: FunctionDecl {{.*}} f1 'void (__builtin_LinAlg_Matrix)' -// CHECK: ParmVarDecl {{.*}} m '__builtin_LinAlg_Matrix':'__builtin_LinAlg_Matrix' -void f1(__builtin_LinAlg_Matrix m); +// CHECK: FunctionDecl {{.*}} f1 'void (__builtin_LinAlgMatrix)' +// CHECK: ParmVarDecl {{.*}} m '__builtin_LinAlgMatrix':'__builtin_LinAlgMatrix' +void f1(__builtin_LinAlgMatrix m); -// CHECK: FunctionDecl {{.*}} f2 '__builtin_LinAlg_Matrix ()' -__builtin_LinAlg_Matrix f2(); +// CHECK: FunctionDecl {{.*}} f2 '__builtin_LinAlgMatrix ()' +__builtin_LinAlgMatrix f2(); // CHECK: FunctionDecl {{.*}} main 'void ()' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: DeclStmt -// CHECK-NEXT: VarDecl {{.*}} m '__builtin_LinAlg_Matrix':'__builtin_LinAlg_Matrix' +// CHECK-NEXT: VarDecl {{.*}} m '__builtin_LinAlgMatrix':'__builtin_LinAlgMatrix' [shader("compute")] [numthreads(4,1,1)] void main() { - __builtin_LinAlg_Matrix m; + __builtin_LinAlgMatrix m; } diff --git a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type.hlsl b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type.hlsl index 19e9a88694..c9c885f3ec 100644 --- a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type.hlsl +++ b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/builtin-matrix-handle-type.hlsl @@ -1,35 +1,35 @@ // REQUIRES: dxil-1-10 // RUN: %dxc -T lib_6_10 -verify %s -__builtin_LinAlg_Matrix global_handle; +__builtin_LinAlgMatrix global_handle; -static __builtin_LinAlg_Matrix static_handle; +static __builtin_LinAlgMatrix static_handle; -groupshared __builtin_LinAlg_Matrix gs_handle; +groupshared __builtin_LinAlgMatrix gs_handle; -__builtin_LinAlg_Matrix array[2]; +__builtin_LinAlgMatrix array[2]; cbuffer CB { - __builtin_LinAlg_Matrix cb_handle; + __builtin_LinAlgMatrix cb_handle; }; struct S { - __builtin_LinAlg_Matrix handle; + __builtin_LinAlgMatrix handle; }; S s; -void f1(__builtin_LinAlg_Matrix m); +void f1(__builtin_LinAlgMatrix m); -__builtin_LinAlg_Matrix f2(); +__builtin_LinAlgMatrix f2(); -// expected-error@+1 {{typedef redefinition with different types ('int' vs '__builtin_LinAlg_Matrix')}} -typedef int __builtin_LinAlg_Matrix; +// expected-error@+1 {{typedef redefinition with different types ('int' vs '__builtin_LinAlgMatrix')}} +typedef int __builtin_LinAlgMatrix; [shader("compute")] [numthreads(4,1,1)] void main() { - __builtin_LinAlg_Matrix m; + __builtin_LinAlgMatrix m; m = s.handle;