https://github.com/s-perron created
https://github.com/llvm/llvm-project/pull/184888
HLSL vector and matrix types were previously printed with their closing
syntax (', N>') in 'printAfter', causing them to interleave with function
parameters when used as return types (e.g., 'vector<float (args), 4>').
This change moves the HLSL vector and matrix closing syntax into
'printBefore' when 'UseHLSLTypes' is enabled, ensuring the type is
printed completely before the parameter list.
Note that address space qualifiers are now printed after the type
(e.g., 'vector<float, 4>hlsl_device'). This is because
'canPrefixQualifiers' in 'TypePrinter.cpp' returns false for these types.
We cannot easily change this to check 'UseHLSLTypes' because
'canPrefixQualifiers' is a static method and does not have access to the
PrintingPolicy at that point.
Fixes interleaved output in HLSL AST tests.
Assisted-by: Gemini
>From fea72dad8785493375404f05a9cc6ac36535a9f0 Mon Sep 17 00:00:00 2001
From: Steven Perron <[email protected]>
Date: Thu, 5 Mar 2026 14:25:43 -0500
Subject: [PATCH] [HLSL] Fix interleaved vector and matrix return types in AST
dump
HLSL vector and matrix types were previously printed with their closing
syntax (', N>') in 'printAfter', causing them to interleave with function
parameters when used as return types (e.g., 'vector<float (args), 4>').
This change moves the HLSL vector and matrix closing syntax into
'printBefore' when 'UseHLSLTypes' is enabled, ensuring the type is
printed completely before the parameter list.
Note that address space qualifiers are now printed after the type
(e.g., 'vector<float, 4>hlsl_device'). This is because
'canPrefixQualifiers' in 'TypePrinter.cpp' returns false for these types.
We cannot easily change this to check 'UseHLSLTypes' because
'canPrefixQualifiers' is a static method and does not have access to the
PrintingPolicy at that point.
Fixes interleaved output in HLSL AST tests.
Assisted-by: Gemini
---
clang/lib/AST/TypePrinter.cpp | 100 +++++++++++-------
.../test/AST/HLSL/ByteAddressBuffers-AST.hlsl | 60 +++++------
clang/test/AST/HLSL/Texture2D-scalar-AST.hlsl | 32 +++---
clang/test/AST/HLSL/Texture2D-vector-AST.hlsl | 54 +++++-----
.../pch_with_matrix_element_accessor.hlsl | 10 +-
.../pch_with_matrix_single_subscript.hlsl | 2 +-
.../test/AST/HLSL/resource_binding_attr.hlsl | 2 +-
clang/test/SemaHLSL/BuiltIns/Buffers.hlsl | 2 +-
.../SemaHLSL/BuiltIns/StructuredBuffers.hlsl | 2 +-
.../test/SemaHLSL/BuiltIns/matrix-errors.hlsl | 4 +-
10 files changed, 144 insertions(+), 124 deletions(-)
diff --git a/clang/lib/AST/TypePrinter.cpp b/clang/lib/AST/TypePrinter.cpp
index 07a0c39bd93f1..b5d36214696bf 100644
--- a/clang/lib/AST/TypePrinter.cpp
+++ b/clang/lib/AST/TypePrinter.cpp
@@ -638,28 +638,30 @@ void TypePrinter::printDependentAddressSpaceAfter(
}
void TypePrinter::printDependentSizedExtVectorBefore(
- const DependentSizedExtVectorType *T,
- raw_ostream &OS) {
- if (Policy.UseHLSLTypes)
- OS << "vector<";
- printBefore(T->getElementType(), OS);
-}
-
-void TypePrinter::printDependentSizedExtVectorAfter(
- const DependentSizedExtVectorType *T,
- raw_ostream &OS) {
+ const DependentSizedExtVectorType *T, raw_ostream &OS) {
if (Policy.UseHLSLTypes) {
+ OS << "vector<";
+ print(T->getElementType(), OS, StringRef());
OS << ", ";
if (T->getSizeExpr())
T->getSizeExpr()->printPretty(OS, nullptr, Policy);
OS << ">";
+ spaceBeforePlaceHolder(OS);
} else {
- OS << " __attribute__((ext_vector_type(";
- if (T->getSizeExpr())
- T->getSizeExpr()->printPretty(OS, nullptr, Policy);
- OS << ")))";
+ printBefore(T->getElementType(), OS);
}
+}
+
+void TypePrinter::printDependentSizedExtVectorAfter(
+ const DependentSizedExtVectorType *T, raw_ostream &OS) {
+ if (Policy.UseHLSLTypes)
+ return;
+
printAfter(T->getElementType(), OS);
+ OS << " __attribute__((ext_vector_type(";
+ if (T->getSizeExpr())
+ T->getSizeExpr()->printPretty(OS, nullptr, Policy);
+ OS << ")))";
}
void TypePrinter::printVectorBefore(const VectorType *T, raw_ostream &OS) {
@@ -826,23 +828,24 @@ void TypePrinter::printDependentVectorAfter(
void TypePrinter::printExtVectorBefore(const ExtVectorType *T,
raw_ostream &OS) {
- if (Policy.UseHLSLTypes)
+ if (Policy.UseHLSLTypes) {
OS << "vector<";
- printBefore(T->getElementType(), OS);
+ print(T->getElementType(), OS, StringRef());
+ OS << ", " << T->getNumElements() << ">";
+ spaceBeforePlaceHolder(OS);
+ } else {
+ printBefore(T->getElementType(), OS);
+ }
}
void TypePrinter::printExtVectorAfter(const ExtVectorType *T, raw_ostream &OS)
{
- printAfter(T->getElementType(), OS);
+ if (Policy.UseHLSLTypes)
+ return;
- if (Policy.UseHLSLTypes) {
- OS << ", ";
- OS << T->getNumElements();
- OS << ">";
- } else {
- OS << " __attribute__((ext_vector_type(";
- OS << T->getNumElements();
- OS << ")))";
- }
+ printAfter(T->getElementType(), OS);
+ OS << " __attribute__((ext_vector_type(";
+ OS << T->getNumElements();
+ OS << ")))";
}
static void printDims(const ConstantMatrixType *T, raw_ostream &OS) {
@@ -852,13 +855,14 @@ static void printDims(const ConstantMatrixType *T,
raw_ostream &OS) {
static void printHLSLMatrixBefore(TypePrinter &TP, const ConstantMatrixType *T,
raw_ostream &OS) {
OS << "matrix<";
- TP.printBefore(T->getElementType(), OS);
-}
-
-static void printHLSLMatrixAfter(const ConstantMatrixType *T, raw_ostream &OS)
{
+ TP.print(T->getElementType(), OS, StringRef());
OS << ", ";
printDims(T, OS);
OS << ">";
+ TP.spaceBeforePlaceHolder(OS);
+}
+
+static void printHLSLMatrixAfter(const ConstantMatrixType *T, raw_ostream &OS)
{
}
static void printClangMatrixBefore(TypePrinter &TP, const ConstantMatrixType
*T,
@@ -889,21 +893,37 @@ void TypePrinter::printConstantMatrixAfter(const
ConstantMatrixType *T,
void TypePrinter::printDependentSizedMatrixBefore(
const DependentSizedMatrixType *T, raw_ostream &OS) {
- printBefore(T->getElementType(), OS);
- OS << " __attribute__((matrix_type(";
- if (T->getRowExpr()) {
- T->getRowExpr()->printPretty(OS, nullptr, Policy);
- }
- OS << ", ";
- if (T->getColumnExpr()) {
- T->getColumnExpr()->printPretty(OS, nullptr, Policy);
+ if (Policy.UseHLSLTypes) {
+ OS << "matrix<";
+ print(T->getElementType(), OS, StringRef());
+ OS << ", ";
+ if (T->getRowExpr()) {
+ T->getRowExpr()->printPretty(OS, nullptr, Policy);
+ }
+ OS << ", ";
+ if (T->getColumnExpr()) {
+ T->getColumnExpr()->printPretty(OS, nullptr, Policy);
+ }
+ OS << ">";
+ spaceBeforePlaceHolder(OS);
+ } else {
+ printBefore(T->getElementType(), OS);
+ OS << " __attribute__((matrix_type(";
+ if (T->getRowExpr()) {
+ T->getRowExpr()->printPretty(OS, nullptr, Policy);
+ }
+ OS << ", ";
+ if (T->getColumnExpr()) {
+ T->getColumnExpr()->printPretty(OS, nullptr, Policy);
+ }
+ OS << ")))";
}
- OS << ")))";
}
void TypePrinter::printDependentSizedMatrixAfter(
const DependentSizedMatrixType *T, raw_ostream &OS) {
- printAfter(T->getElementType(), OS);
+ if (!Policy.UseHLSLTypes)
+ printAfter(T->getElementType(), OS);
}
void
diff --git a/clang/test/AST/HLSL/ByteAddressBuffers-AST.hlsl
b/clang/test/AST/HLSL/ByteAddressBuffers-AST.hlsl
index e9e7cd76167a5..16ce8ab0e7400 100644
--- a/clang/test/AST/HLSL/ByteAddressBuffers-AST.hlsl
+++ b/clang/test/AST/HLSL/ByteAddressBuffers-AST.hlsl
@@ -189,12 +189,12 @@ RESOURCE Buffer;
// CHECK-LOAD-NEXT: CXXScalarValueInitExpr {{.*}} 'unsigned int *'
// CHECK-LOAD-NEXT: AlwaysInlineAttr {{.*}} Implicit always_inline
-// CHECK-LOAD: CXXMethodDecl {{.*}} Load2 'vector<unsigned int (unsigned int),
2>'
+// CHECK-LOAD: CXXMethodDecl {{.*}} Load2 'vector<unsigned int, 2> (unsigned
int)'
// CHECK-LOAD-NEXT: ParmVarDecl {{.*}} Index 'unsigned int'
// CHECK-LOAD-NEXT: CompoundStmt
// CHECK-LOAD-NEXT: ReturnStmt
-// CHECK-LOAD-NEXT: UnaryOperator {{.*}} 'vector<unsigned int hlsl_device, 2>'
lvalue prefix '*' cannot overflow
-// CHECK-LOAD-NEXT: CallExpr {{.*}} 'vector<unsigned int hlsl_device *, 2>'
+// CHECK-LOAD-NEXT: UnaryOperator {{.*}} 'vector<unsigned int, 2> hlsl_device'
lvalue prefix '*' cannot overflow
+// CHECK-LOAD-NEXT: CallExpr {{.*}} 'vector<unsigned int, 2> hlsl_device *'
// CHECK-LOAD-NEXT: ImplicitCastExpr {{.*}} 'void (*)(...) noexcept'
<BuiltinFnToFnPtr>
// CHECK-LOAD-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}}
'__builtin_hlsl_resource_getpointer_typed' 'void (...) noexcept'
// CHECK-LOAD-NEXT: ImplicitCastExpr {{.*}} '__hlsl_resource_t {{.*}}'
<LValueToRValue>
@@ -202,10 +202,10 @@ RESOURCE Buffer;
// CHECK-LOAD-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]' lvalue implicit
this
// CHECK-LOAD-NEXT: ImplicitCastExpr {{.*}} 'unsigned int' <LValueToRValue>
// CHECK-LOAD-NEXT: DeclRefExpr {{.*}} 'unsigned int' lvalue ParmVar {{.*}}
'Index' 'unsigned int'
-// CHECK-LOAD-NEXT: CXXScalarValueInitExpr {{.*}} 'vector<unsigned int *, 2>'
+// CHECK-LOAD-NEXT: CXXScalarValueInitExpr {{.*}} 'vector<unsigned int, 2> *'
// CHECK-LOAD-NEXT: AlwaysInlineAttr {{.*}} Implicit always_inline
-// CHECK-LOAD: CXXMethodDecl {{.*}} Load2 'vector<unsigned int (unsigned int,
out unsigned int), 2>'
+// CHECK-LOAD: CXXMethodDecl {{.*}} Load2 'vector<unsigned int, 2> (unsigned
int, out unsigned int)'
// CHECK-LOAD-NEXT: ParmVarDecl {{.*}} Index 'unsigned int'
// CHECK-LOAD-NEXT: ParmVarDecl {{.*}} Status 'unsigned int &__restrict'
// CHECK-LOAD-NEXT: HLSLParamModifierAttr {{.*}} out
@@ -221,15 +221,15 @@ RESOURCE Buffer;
// CHECK-LOAD-NEXT: DeclRefExpr {{.*}} 'unsigned int' lvalue ParmVar {{.*}}
'Index' 'unsigned int'
// CHECK-LOAD-NEXT: ImplicitCastExpr {{.*}} 'unsigned int' <LValueToRValue>
// CHECK-LOAD-NEXT: DeclRefExpr {{.*}} 'unsigned int' lvalue ParmVar {{.*}}
'Status' 'unsigned int &__restrict'
-// CHECK-LOAD-NEXT: CXXScalarValueInitExpr {{.*}} 'vector<unsigned int *, 2>'
+// CHECK-LOAD-NEXT: CXXScalarValueInitExpr {{.*}} 'vector<unsigned int, 2> *'
// CHECK-LOAD-NEXT: AlwaysInlineAttr {{.*}} Implicit always_inline
-// CHECK-LOAD: CXXMethodDecl {{.*}} Load3 'vector<unsigned int (unsigned int),
3>'
+// CHECK-LOAD: CXXMethodDecl {{.*}} Load3 'vector<unsigned int, 3> (unsigned
int)'
// CHECK-LOAD-NEXT: ParmVarDecl {{.*}} Index 'unsigned int'
// CHECK-LOAD-NEXT: CompoundStmt
// CHECK-LOAD-NEXT: ReturnStmt
-// CHECK-LOAD-NEXT: UnaryOperator {{.*}} 'vector<unsigned int hlsl_device, 3>'
lvalue prefix '*' cannot overflow
-// CHECK-LOAD-NEXT: CallExpr {{.*}} 'vector<unsigned int hlsl_device *, 3>'
+// CHECK-LOAD-NEXT: UnaryOperator {{.*}} 'vector<unsigned int, 3> hlsl_device'
lvalue prefix '*' cannot overflow
+// CHECK-LOAD-NEXT: CallExpr {{.*}} 'vector<unsigned int, 3> hlsl_device *'
// CHECK-LOAD-NEXT: ImplicitCastExpr {{.*}} 'void (*)(...) noexcept'
<BuiltinFnToFnPtr>
// CHECK-LOAD-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}}
'__builtin_hlsl_resource_getpointer_typed' 'void (...) noexcept'
// CHECK-LOAD-NEXT: ImplicitCastExpr {{.*}} '__hlsl_resource_t {{.*}}'
<LValueToRValue>
@@ -237,10 +237,10 @@ RESOURCE Buffer;
// CHECK-LOAD-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]' lvalue implicit
this
// CHECK-LOAD-NEXT: ImplicitCastExpr {{.*}} 'unsigned int' <LValueToRValue>
// CHECK-LOAD-NEXT: DeclRefExpr {{.*}} 'unsigned int' lvalue ParmVar {{.*}}
'Index' 'unsigned int'
-// CHECK-LOAD-NEXT: CXXScalarValueInitExpr {{.*}} 'vector<unsigned int *, 3>'
+// CHECK-LOAD-NEXT: CXXScalarValueInitExpr {{.*}} 'vector<unsigned int, 3> *'
// CHECK-LOAD-NEXT: AlwaysInlineAttr {{.*}} Implicit always_inline
-// CHECK-LOAD: CXXMethodDecl {{.*}} Load3 'vector<unsigned int (unsigned int,
out unsigned int), 3>'
+// CHECK-LOAD: CXXMethodDecl {{.*}} Load3 'vector<unsigned int, 3> (unsigned
int, out unsigned int)'
// CHECK-LOAD-NEXT: ParmVarDecl {{.*}} Index 'unsigned int'
// CHECK-LOAD-NEXT: ParmVarDecl {{.*}} Status 'unsigned int &__restrict'
// CHECK-LOAD-NEXT: HLSLParamModifierAttr {{.*}} out
@@ -256,15 +256,15 @@ RESOURCE Buffer;
// CHECK-LOAD-NEXT: DeclRefExpr {{.*}} 'unsigned int' lvalue ParmVar {{.*}}
'Index' 'unsigned int'
// CHECK-LOAD-NEXT: ImplicitCastExpr {{.*}} 'unsigned int' <LValueToRValue>
// CHECK-LOAD-NEXT: DeclRefExpr {{.*}} 'unsigned int' lvalue ParmVar {{.*}}
'Status' 'unsigned int &__restrict'
-// CHECK-LOAD-NEXT: CXXScalarValueInitExpr {{.*}} 'vector<unsigned int *, 3>'
+// CHECK-LOAD-NEXT: CXXScalarValueInitExpr {{.*}} 'vector<unsigned int, 3> *'
// CHECK-LOAD-NEXT: AlwaysInlineAttr {{.*}} Implicit always_inline
-// CHECK-LOAD: CXXMethodDecl {{.*}} Load4 'vector<unsigned int (unsigned int),
4>'
+// CHECK-LOAD: CXXMethodDecl {{.*}} Load4 'vector<unsigned int, 4> (unsigned
int)'
// CHECK-LOAD-NEXT: ParmVarDecl {{.*}} Index 'unsigned int'
// CHECK-LOAD-NEXT: CompoundStmt
// CHECK-LOAD-NEXT: ReturnStmt
-// CHECK-LOAD-NEXT: UnaryOperator {{.*}} 'vector<unsigned int hlsl_device, 4>'
lvalue prefix '*' cannot overflow
-// CHECK-LOAD-NEXT: CallExpr {{.*}} 'vector<unsigned int hlsl_device *, 4>'
+// CHECK-LOAD-NEXT: UnaryOperator {{.*}} 'vector<unsigned int, 4> hlsl_device'
lvalue prefix '*' cannot overflow
+// CHECK-LOAD-NEXT: CallExpr {{.*}} 'vector<unsigned int, 4> hlsl_device *'
// CHECK-LOAD-NEXT: ImplicitCastExpr {{.*}} 'void (*)(...) noexcept'
<BuiltinFnToFnPtr>
// CHECK-LOAD-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}}
'__builtin_hlsl_resource_getpointer_typed' 'void (...) noexcept'
// CHECK-LOAD-NEXT: ImplicitCastExpr {{.*}} '__hlsl_resource_t {{.*}}'
<LValueToRValue>
@@ -272,10 +272,10 @@ RESOURCE Buffer;
// CHECK-LOAD-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]' lvalue implicit
this
// CHECK-LOAD-NEXT: ImplicitCastExpr {{.*}} 'unsigned int' <LValueToRValue>
// CHECK-LOAD-NEXT: DeclRefExpr {{.*}} 'unsigned int' lvalue ParmVar {{.*}}
'Index' 'unsigned int'
-// CHECK-LOAD-NEXT: CXXScalarValueInitExpr {{.*}} 'vector<unsigned int *, 4>'
+// CHECK-LOAD-NEXT: CXXScalarValueInitExpr {{.*}} 'vector<unsigned int, 4> *'
// CHECK-LOAD-NEXT: AlwaysInlineAttr {{.*}} Implicit always_inline
-// CHECK-LOAD: CXXMethodDecl {{.*}} Load4 'vector<unsigned int (unsigned int,
out unsigned int), 4>'
+// CHECK-LOAD: CXXMethodDecl {{.*}} Load4 'vector<unsigned int, 4> (unsigned
int, out unsigned int)'
// CHECK-LOAD-NEXT: ParmVarDecl {{.*}} Index 'unsigned int'
// CHECK-LOAD-NEXT: ParmVarDecl {{.*}} Status 'unsigned int &__restrict'
// CHECK-LOAD-NEXT: HLSLParamModifierAttr {{.*}} out
@@ -291,7 +291,7 @@ RESOURCE Buffer;
// CHECK-LOAD-NEXT: DeclRefExpr {{.*}} 'unsigned int' lvalue ParmVar {{.*}}
'Index' 'unsigned int'
// CHECK-LOAD-NEXT: ImplicitCastExpr {{.*}} 'unsigned int' <LValueToRValue>
// CHECK-LOAD-NEXT: DeclRefExpr {{.*}} 'unsigned int' lvalue ParmVar {{.*}}
'Status' 'unsigned int &__restrict'
-// CHECK-LOAD-NEXT: CXXScalarValueInitExpr {{.*}} 'vector<unsigned int *, 4>'
+// CHECK-LOAD-NEXT: CXXScalarValueInitExpr {{.*}} 'vector<unsigned int, 4> *'
// CHECK-LOAD-NEXT: AlwaysInlineAttr {{.*}} Implicit always_inline
// CHECK-LOAD: CXXMethodDecl {{.*}} Load 'element_type (unsigned int)'
@@ -347,9 +347,9 @@ RESOURCE Buffer;
// CHECK-STORE-NEXT: ParmVarDecl {{.*}} Index 'unsigned int'
// CHECK-STORE-NEXT: ParmVarDecl {{.*}} Value 'vector<unsigned int, 2>'
// CHECK-STORE-NEXT: CompoundStmt
-// CHECK-STORE-NEXT: BinaryOperator {{.*}} 'vector<unsigned int hlsl_device,
2>' '='
-// CHECK-STORE-NEXT: UnaryOperator {{.*}} 'vector<unsigned int hlsl_device,
2>' lvalue prefix '*' cannot overflow
-// CHECK-STORE-NEXT: CallExpr {{.*}} 'vector<unsigned int hlsl_device *, 2>'
+// CHECK-STORE-NEXT: BinaryOperator {{.*}} 'vector<unsigned int, 2>
hlsl_device' '='
+// CHECK-STORE-NEXT: UnaryOperator {{.*}} 'vector<unsigned int, 2>
hlsl_device' lvalue prefix '*' cannot overflow
+// CHECK-STORE-NEXT: CallExpr {{.*}} 'vector<unsigned int, 2> hlsl_device *'
// CHECK-STORE-NEXT: ImplicitCastExpr {{.*}} 'void (*)(...) noexcept'
<BuiltinFnToFnPtr>
// CHECK-STORE-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}}
'__builtin_hlsl_resource_getpointer_typed' 'void (...) noexcept'
// CHECK-STORE-NEXT: ImplicitCastExpr {{.*}} '__hlsl_resource_t {{.*}}'
<LValueToRValue>
@@ -357,7 +357,7 @@ RESOURCE Buffer;
// CHECK-STORE-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]' lvalue implicit
this
// CHECK-STORE-NEXT: ImplicitCastExpr {{.*}} 'unsigned int' <LValueToRValue>
// CHECK-STORE-NEXT: DeclRefExpr {{.*}} 'unsigned int' lvalue ParmVar {{.*}}
'Index' 'unsigned int'
-// CHECK-STORE-NEXT: CXXScalarValueInitExpr {{.*}} 'vector<unsigned int *, 2>'
+// CHECK-STORE-NEXT: CXXScalarValueInitExpr {{.*}} 'vector<unsigned int, 2> *'
// CHECK-STORE-NEXT: DeclRefExpr {{.*}} 'vector<unsigned int, 2>' lvalue
ParmVar {{.*}} 'Value' 'vector<unsigned int, 2>'
// CHECK-STORE-NEXT: AlwaysInlineAttr {{.*}} Implicit always_inline
@@ -365,9 +365,9 @@ RESOURCE Buffer;
// CHECK-STORE-NEXT: ParmVarDecl {{.*}} Index 'unsigned int'
// CHECK-STORE-NEXT: ParmVarDecl {{.*}} Value 'vector<unsigned int, 3>'
// CHECK-STORE-NEXT: CompoundStmt
-// CHECK-STORE-NEXT: BinaryOperator {{.*}} 'vector<unsigned int hlsl_device,
3>' '='
-// CHECK-STORE-NEXT: UnaryOperator {{.*}} 'vector<unsigned int hlsl_device,
3>' lvalue prefix '*' cannot overflow
-// CHECK-STORE-NEXT: CallExpr {{.*}} 'vector<unsigned int hlsl_device *, 3>'
+// CHECK-STORE-NEXT: BinaryOperator {{.*}} 'vector<unsigned int, 3>
hlsl_device' '='
+// CHECK-STORE-NEXT: UnaryOperator {{.*}} 'vector<unsigned int, 3>
hlsl_device' lvalue prefix '*' cannot overflow
+// CHECK-STORE-NEXT: CallExpr {{.*}} 'vector<unsigned int, 3> hlsl_device *'
// CHECK-STORE-NEXT: ImplicitCastExpr {{.*}} 'void (*)(...) noexcept'
<BuiltinFnToFnPtr>
// CHECK-STORE-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}}
'__builtin_hlsl_resource_getpointer_typed' 'void (...) noexcept'
// CHECK-STORE-NEXT: ImplicitCastExpr {{.*}} '__hlsl_resource_t {{.*}}'
<LValueToRValue>
@@ -375,7 +375,7 @@ RESOURCE Buffer;
// CHECK-STORE-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]' lvalue implicit
this
// CHECK-STORE-NEXT: ImplicitCastExpr {{.*}} 'unsigned int' <LValueToRValue>
// CHECK-STORE-NEXT: DeclRefExpr {{.*}} 'unsigned int' lvalue ParmVar {{.*}}
'Index' 'unsigned int'
-// CHECK-STORE-NEXT: CXXScalarValueInitExpr {{.*}} 'vector<unsigned int *, 3>'
+// CHECK-STORE-NEXT: CXXScalarValueInitExpr {{.*}} 'vector<unsigned int, 3> *'
// CHECK-STORE-NEXT: DeclRefExpr {{.*}} 'vector<unsigned int, 3>' lvalue
ParmVar {{.*}} 'Value' 'vector<unsigned int, 3>'
// CHECK-STORE-NEXT: AlwaysInlineAttr {{.*}} Implicit always_inline
@@ -383,9 +383,9 @@ RESOURCE Buffer;
// CHECK-STORE-NEXT: ParmVarDecl {{.*}} Index 'unsigned int'
// CHECK-STORE-NEXT: ParmVarDecl {{.*}} Value 'vector<unsigned int, 4>'
// CHECK-STORE-NEXT: CompoundStmt
-// CHECK-STORE-NEXT: BinaryOperator {{.*}} 'vector<unsigned int hlsl_device,
4>' '='
-// CHECK-STORE-NEXT: UnaryOperator {{.*}} 'vector<unsigned int hlsl_device,
4>' lvalue prefix '*' cannot overflow
-// CHECK-STORE-NEXT: CallExpr {{.*}} 'vector<unsigned int hlsl_device *, 4>'
+// CHECK-STORE-NEXT: BinaryOperator {{.*}} 'vector<unsigned int, 4>
hlsl_device' '='
+// CHECK-STORE-NEXT: UnaryOperator {{.*}} 'vector<unsigned int, 4>
hlsl_device' lvalue prefix '*' cannot overflow
+// CHECK-STORE-NEXT: CallExpr {{.*}} 'vector<unsigned int, 4> hlsl_device *'
// CHECK-STORE-NEXT: ImplicitCastExpr {{.*}} 'void (*)(...) noexcept'
<BuiltinFnToFnPtr>
// CHECK-STORE-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}}
'__builtin_hlsl_resource_getpointer_typed' 'void (...) noexcept'
// CHECK-STORE-NEXT: ImplicitCastExpr {{.*}} '__hlsl_resource_t {{.*}}'
<LValueToRValue>
@@ -393,7 +393,7 @@ RESOURCE Buffer;
// CHECK-STORE-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]' lvalue implicit
this
// CHECK-STORE-NEXT: ImplicitCastExpr {{.*}} 'unsigned int' <LValueToRValue>
// CHECK-STORE-NEXT: DeclRefExpr {{.*}} 'unsigned int' lvalue ParmVar {{.*}}
'Index' 'unsigned int'
-// CHECK-STORE-NEXT: CXXScalarValueInitExpr {{.*}} 'vector<unsigned int *, 4>'
+// CHECK-STORE-NEXT: CXXScalarValueInitExpr {{.*}} 'vector<unsigned int, 4> *'
// CHECK-STORE-NEXT: DeclRefExpr {{.*}} 'vector<unsigned int, 4>' lvalue
ParmVar {{.*}} 'Value' 'vector<unsigned int, 4>'
// CHECK-STORE-NEXT: AlwaysInlineAttr {{.*}} Implicit always_inline
diff --git a/clang/test/AST/HLSL/Texture2D-scalar-AST.hlsl
b/clang/test/AST/HLSL/Texture2D-scalar-AST.hlsl
index 8725bcc05882a..921c92da5cb2b 100644
--- a/clang/test/AST/HLSL/Texture2D-scalar-AST.hlsl
+++ b/clang/test/AST/HLSL/Texture2D-scalar-AST.hlsl
@@ -415,7 +415,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'vector<int, 2>' lvalue ParmVar {{.*}}
'Offset' 'vector<int, 2>'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} Gather 'vector<element_type
(hlsl::SamplerState, vector<float, 2>), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} Gather 'vector<element_type, 4>
(hlsl::SamplerState, vector<float, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: CompoundStmt
@@ -431,7 +431,7 @@
// CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 0
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} Gather 'vector<element_type
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} Gather 'vector<element_type, 4>
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector<int, 2>'
@@ -449,7 +449,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'vector<int, 2>' lvalue ParmVar {{.*}}
'Offset' 'vector<int, 2>'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherRed 'vector<element_type
(hlsl::SamplerState, vector<float, 2>), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherRed 'vector<element_type, 4>
(hlsl::SamplerState, vector<float, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: CompoundStmt
@@ -465,7 +465,7 @@
// CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 0
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherRed 'vector<element_type
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherRed 'vector<element_type, 4>
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector<int, 2>'
@@ -483,7 +483,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'vector<int, 2>' lvalue ParmVar {{.*}}
'Offset' 'vector<int, 2>'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherGreen 'vector<element_type
(hlsl::SamplerState, vector<float, 2>), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherGreen 'vector<element_type, 4>
(hlsl::SamplerState, vector<float, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: CompoundStmt
@@ -499,7 +499,7 @@
// CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 1
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherGreen 'vector<element_type
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherGreen 'vector<element_type, 4>
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector<int, 2>'
@@ -517,7 +517,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'vector<int, 2>' lvalue ParmVar {{.*}}
'Offset' 'vector<int, 2>'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherBlue 'vector<element_type
(hlsl::SamplerState, vector<float, 2>), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherBlue 'vector<element_type, 4>
(hlsl::SamplerState, vector<float, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: CompoundStmt
@@ -533,7 +533,7 @@
// CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 2
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherBlue 'vector<element_type
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherBlue 'vector<element_type, 4>
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector<int, 2>'
@@ -551,7 +551,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'vector<int, 2>' lvalue ParmVar {{.*}}
'Offset' 'vector<int, 2>'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherAlpha 'vector<element_type
(hlsl::SamplerState, vector<float, 2>), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherAlpha 'vector<element_type, 4>
(hlsl::SamplerState, vector<float, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: CompoundStmt
@@ -567,7 +567,7 @@
// CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 3
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherAlpha 'vector<element_type
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherAlpha 'vector<element_type, 4>
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector<int, 2>'
@@ -585,7 +585,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'vector<int, 2>' lvalue ParmVar {{.*}}
'Offset' 'vector<int, 2>'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherCmp 'vector<float
(hlsl::SamplerComparisonState, vector<float, 2>, float), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherCmp 'vector<float, 4>
(hlsl::SamplerComparisonState, vector<float, 2>, float)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float'
@@ -603,7 +603,7 @@
// CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 0
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherCmp 'vector<float
(hlsl::SamplerComparisonState, vector<float, 2>, float, vector<int, 2>), 4>'
inline
+// CHECK: CXXMethodDecl {{.*}} GatherCmp 'vector<float, 4>
(hlsl::SamplerComparisonState, vector<float, 2>, float, vector<int, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float'
@@ -623,7 +623,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'vector<int, 2>' lvalue ParmVar {{.*}}
'Offset' 'vector<int, 2>'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherCmpRed 'vector<float
(hlsl::SamplerComparisonState, vector<float, 2>, float), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherCmpRed 'vector<float, 4>
(hlsl::SamplerComparisonState, vector<float, 2>, float)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float'
@@ -641,7 +641,7 @@
// CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 0
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherCmpGreen 'vector<float
(hlsl::SamplerComparisonState, vector<float, 2>, float), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherCmpGreen 'vector<float, 4>
(hlsl::SamplerComparisonState, vector<float, 2>, float)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float'
@@ -659,7 +659,7 @@
// CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 1
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherCmpBlue 'vector<float
(hlsl::SamplerComparisonState, vector<float, 2>, float), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherCmpBlue 'vector<float, 4>
(hlsl::SamplerComparisonState, vector<float, 2>, float)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float'
@@ -677,7 +677,7 @@
// CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 2
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherCmpAlpha 'vector<float
(hlsl::SamplerComparisonState, vector<float, 2>, float, vector<int, 2>), 4>'
inline
+// CHECK: CXXMethodDecl {{.*}} GatherCmpAlpha 'vector<float, 4>
(hlsl::SamplerComparisonState, vector<float, 2>, float, vector<int, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float'
diff --git a/clang/test/AST/HLSL/Texture2D-vector-AST.hlsl
b/clang/test/AST/HLSL/Texture2D-vector-AST.hlsl
index 4e1c41f05232e..0e056009c1a38 100644
--- a/clang/test/AST/HLSL/Texture2D-vector-AST.hlsl
+++ b/clang/test/AST/HLSL/Texture2D-vector-AST.hlsl
@@ -23,7 +23,7 @@
// CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector<element_type,
element_count>)]]
// CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]]
-// CHECK: CXXMethodDecl {{.*}} Sample 'vector<element_type
(hlsl::SamplerState, vector<float, 2>), element_count>'
+// CHECK: CXXMethodDecl {{.*}} Sample 'vector<element_type, element_count>
(hlsl::SamplerState, vector<float, 2>)'
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: CompoundStmt
@@ -44,7 +44,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'vector<float, 2>' lvalue ParmVar {{.*}}
'Location' 'vector<float, 2>'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} Sample 'vector<element_type
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>), element_count>'
+// CHECK: CXXMethodDecl {{.*}} Sample 'vector<element_type, element_count>
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>)'
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector<int, 2>'
@@ -67,7 +67,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'vector<int, 2>' lvalue ParmVar {{.*}}
'Offset' 'vector<int, 2>'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} Sample 'vector<element_type
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>, float), element_count>'
+// CHECK: CXXMethodDecl {{.*}} Sample 'vector<element_type, element_count>
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>, float)'
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector<int, 2>'
@@ -92,7 +92,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'Clamp' 'float'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} SampleBias 'vector<element_type
(hlsl::SamplerState, vector<float, 2>, float), element_count>'
+// CHECK: CXXMethodDecl {{.*}} SampleBias 'vector<element_type, element_count>
(hlsl::SamplerState, vector<float, 2>, float)'
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} Bias 'float'
@@ -115,7 +115,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'Bias' 'float'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} SampleBias 'vector<element_type
(hlsl::SamplerState, vector<float, 2>, float, vector<int, 2>), element_count>'
+// CHECK: CXXMethodDecl {{.*}} SampleBias 'vector<element_type, element_count>
(hlsl::SamplerState, vector<float, 2>, float, vector<int, 2>)'
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} Bias 'float'
@@ -140,7 +140,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'vector<int, 2>' lvalue ParmVar {{.*}}
'Offset' 'vector<int, 2>'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} SampleBias 'vector<element_type
(hlsl::SamplerState, vector<float, 2>, float, vector<int, 2>, float),
element_count>'
+// CHECK: CXXMethodDecl {{.*}} SampleBias 'vector<element_type, element_count>
(hlsl::SamplerState, vector<float, 2>, float, vector<int, 2>, float)'
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} Bias 'float'
@@ -167,7 +167,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'Clamp' 'float'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} SampleGrad 'vector<element_type
(hlsl::SamplerState, vector<float, 2>, vector<float, 2>, vector<float, 2>),
element_count>'
+// CHECK: CXXMethodDecl {{.*}} SampleGrad 'vector<element_type, element_count>
(hlsl::SamplerState, vector<float, 2>, vector<float, 2>, vector<float, 2>)'
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} DDX 'vector<float, 2>'
@@ -192,7 +192,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'vector<float, 2>' lvalue ParmVar {{.*}}
'DDY' 'vector<float, 2>'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} SampleGrad 'vector<element_type
(hlsl::SamplerState, vector<float, 2>, vector<float, 2>, vector<float, 2>,
vector<int, 2>), element_count>'
+// CHECK: CXXMethodDecl {{.*}} SampleGrad 'vector<element_type, element_count>
(hlsl::SamplerState, vector<float, 2>, vector<float, 2>, vector<float, 2>,
vector<int, 2>)'
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} DDX 'vector<float, 2>'
@@ -219,7 +219,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'vector<int, 2>' lvalue ParmVar {{.*}}
'Offset' 'vector<int, 2>'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} SampleGrad 'vector<element_type
(hlsl::SamplerState, vector<float, 2>, vector<float, 2>, vector<float, 2>,
vector<int, 2>, float), element_count>'
+// CHECK: CXXMethodDecl {{.*}} SampleGrad 'vector<element_type, element_count>
(hlsl::SamplerState, vector<float, 2>, vector<float, 2>, vector<float, 2>,
vector<int, 2>, float)'
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} DDX 'vector<float, 2>'
@@ -248,7 +248,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'Clamp' 'float'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} SampleLevel 'vector<element_type
(hlsl::SamplerState, vector<float, 2>, float), element_count>'
+// CHECK: CXXMethodDecl {{.*}} SampleLevel 'vector<element_type,
element_count> (hlsl::SamplerState, vector<float, 2>, float)'
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} LOD 'float'
@@ -271,7 +271,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'LOD' 'float'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} SampleLevel 'vector<element_type
(hlsl::SamplerState, vector<float, 2>, float, vector<int, 2>), element_count>'
+// CHECK: CXXMethodDecl {{.*}} SampleLevel 'vector<element_type,
element_count> (hlsl::SamplerState, vector<float, 2>, float, vector<int, 2>)'
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} LOD 'float'
@@ -419,7 +419,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'vector<int, 2>' lvalue ParmVar {{.*}}
'Offset' 'vector<int, 2>'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} Gather 'vector<element_type
(hlsl::SamplerState, vector<float, 2>), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} Gather 'vector<element_type, 4>
(hlsl::SamplerState, vector<float, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: CompoundStmt
@@ -435,7 +435,7 @@
// CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 0
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} Gather 'vector<element_type
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} Gather 'vector<element_type, 4>
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector<int, 2>'
@@ -453,7 +453,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'vector<int, 2>' lvalue ParmVar {{.*}}
'Offset' 'vector<int, 2>'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherRed 'vector<element_type
(hlsl::SamplerState, vector<float, 2>), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherRed 'vector<element_type, 4>
(hlsl::SamplerState, vector<float, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: CompoundStmt
@@ -469,7 +469,7 @@
// CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 0
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherRed 'vector<element_type
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherRed 'vector<element_type, 4>
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector<int, 2>'
@@ -487,7 +487,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'vector<int, 2>' lvalue ParmVar {{.*}}
'Offset' 'vector<int, 2>'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherGreen 'vector<element_type
(hlsl::SamplerState, vector<float, 2>), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherGreen 'vector<element_type, 4>
(hlsl::SamplerState, vector<float, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: CompoundStmt
@@ -503,7 +503,7 @@
// CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 1
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherGreen 'vector<element_type
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherGreen 'vector<element_type, 4>
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector<int, 2>'
@@ -521,7 +521,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'vector<int, 2>' lvalue ParmVar {{.*}}
'Offset' 'vector<int, 2>'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherBlue 'vector<element_type
(hlsl::SamplerState, vector<float, 2>), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherBlue 'vector<element_type, 4>
(hlsl::SamplerState, vector<float, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: CompoundStmt
@@ -537,7 +537,7 @@
// CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 2
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherBlue 'vector<element_type
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherBlue 'vector<element_type, 4>
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector<int, 2>'
@@ -555,7 +555,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'vector<int, 2>' lvalue ParmVar {{.*}}
'Offset' 'vector<int, 2>'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherAlpha 'vector<element_type
(hlsl::SamplerState, vector<float, 2>), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherAlpha 'vector<element_type, 4>
(hlsl::SamplerState, vector<float, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: CompoundStmt
@@ -571,7 +571,7 @@
// CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 3
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherAlpha 'vector<element_type
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherAlpha 'vector<element_type, 4>
(hlsl::SamplerState, vector<float, 2>, vector<int, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector<int, 2>'
@@ -589,7 +589,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'vector<int, 2>' lvalue ParmVar {{.*}}
'Offset' 'vector<int, 2>'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherCmp 'vector<float
(hlsl::SamplerComparisonState, vector<float, 2>, float), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherCmp 'vector<float, 4>
(hlsl::SamplerComparisonState, vector<float, 2>, float)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float'
@@ -607,7 +607,7 @@
// CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 0
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherCmp 'vector<float
(hlsl::SamplerComparisonState, vector<float, 2>, float, vector<int, 2>), 4>'
inline
+// CHECK: CXXMethodDecl {{.*}} GatherCmp 'vector<float, 4>
(hlsl::SamplerComparisonState, vector<float, 2>, float, vector<int, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float'
@@ -627,7 +627,7 @@
// CHECK-NEXT: DeclRefExpr {{.*}} 'vector<int, 2>' lvalue ParmVar {{.*}}
'Offset' 'vector<int, 2>'
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherCmpRed 'vector<float
(hlsl::SamplerComparisonState, vector<float, 2>, float), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherCmpRed 'vector<float, 4>
(hlsl::SamplerComparisonState, vector<float, 2>, float)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float'
@@ -645,7 +645,7 @@
// CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 0
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherCmpGreen 'vector<float
(hlsl::SamplerComparisonState, vector<float, 2>, float), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherCmpGreen 'vector<float, 4>
(hlsl::SamplerComparisonState, vector<float, 2>, float)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float'
@@ -663,7 +663,7 @@
// CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 1
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherCmpBlue 'vector<float
(hlsl::SamplerComparisonState, vector<float, 2>, float), 4>' inline
+// CHECK: CXXMethodDecl {{.*}} GatherCmpBlue 'vector<float, 4>
(hlsl::SamplerComparisonState, vector<float, 2>, float)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float'
@@ -681,7 +681,7 @@
// CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 2
// CHECK-NEXT: AlwaysInlineAttr
-// CHECK: CXXMethodDecl {{.*}} GatherCmpAlpha 'vector<float
(hlsl::SamplerComparisonState, vector<float, 2>, float, vector<int, 2>), 4>'
inline
+// CHECK: CXXMethodDecl {{.*}} GatherCmpAlpha 'vector<float, 4>
(hlsl::SamplerComparisonState, vector<float, 2>, float, vector<int, 2>)' inline
// CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState'
// CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector<float, 2>'
// CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float'
diff --git a/clang/test/AST/HLSL/pch_with_matrix_element_accessor.hlsl
b/clang/test/AST/HLSL/pch_with_matrix_element_accessor.hlsl
index 46f340a4196d8..18446296675a7 100644
--- a/clang/test/AST/HLSL/pch_with_matrix_element_accessor.hlsl
+++ b/clang/test/AST/HLSL/pch_with_matrix_element_accessor.hlsl
@@ -7,8 +7,8 @@ float4x4 gM;
// CHECK-NEXT: CompoundStmt {{.*}}
// CHECK-NEXT: ReturnStmt {{.*}}
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'vector<float, 4>' <LValueToRValue>
-// CHECK-NEXT: MatrixElementExpr {{.*}} 'vector<float hlsl_constant, 4>'
lvalue _11_22_33_44
-// CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl_constant float4x4':'matrix<float
hlsl_constant, 4, 4>' lvalue Var {{.*}} 'gM' 'hlsl_constant
float4x4':'matrix<float hlsl_constant, 4, 4>'
+// CHECK-NEXT: MatrixElementExpr {{.*}} 'vector<float, 4> hlsl_constant'
lvalue _11_22_33_44
+// CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl_constant float4x4':'matrix<float, 4,
4> hlsl_constant' lvalue Var {{.*}} 'gM' 'hlsl_constant
float4x4':'matrix<float, 4, 4> hlsl_constant'
float4 getDiag() {
return gM._11_22_33_44;
}
@@ -16,9 +16,9 @@ float4 getDiag() {
// CHECK: FunctionDecl {{.*}} setRowZero 'void (float4)'
// CHECK-NEXT: ParmVarDecl {{.*}} used V 'float4':'vector<float, 4>'
// CHECK-NEXT: CompoundStmt {{.*}}
-// CHECK-NEXT: BinaryOperator {{.*}} 'vector<float hlsl_constant, 4>' lvalue
'='
-// CHECK-NEXT: MatrixElementExpr {{.*}} 'vector<float hlsl_constant, 4>'
lvalue _m00_m01_m02_m03
-// CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl_constant float4x4':'matrix<float
hlsl_constant, 4, 4>' lvalue Var {{.*}} 'gM' 'hlsl_constant
float4x4':'matrix<float hlsl_constant, 4, 4>'
+// CHECK-NEXT: BinaryOperator {{.*}} 'vector<float, 4> hlsl_constant' lvalue
'='
+// CHECK-NEXT: MatrixElementExpr {{.*}} 'vector<float, 4> hlsl_constant'
lvalue _m00_m01_m02_m03
+// CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl_constant float4x4':'matrix<float, 4,
4> hlsl_constant' lvalue Var {{.*}} 'gM' 'hlsl_constant
float4x4':'matrix<float, 4, 4> hlsl_constant'
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float4':'vector<float, 4>'
<LValueToRValue>
// CHECK-NEXT: DeclRefExpr {{.*}} 'float4':'vector<float, 4>' lvalue ParmVar
{{.*}} 'V' 'float4':'vector<float, 4>'
void setRowZero(float4 V) {
diff --git a/clang/test/AST/HLSL/pch_with_matrix_single_subscript.hlsl
b/clang/test/AST/HLSL/pch_with_matrix_single_subscript.hlsl
index 089dd3f34d93b..feccd64c5f86d 100644
--- a/clang/test/AST/HLSL/pch_with_matrix_single_subscript.hlsl
+++ b/clang/test/AST/HLSL/pch_with_matrix_single_subscript.hlsl
@@ -9,7 +9,7 @@ float3x2 gM;
// CHECK-NEXT: ReturnStmt {{.*}}
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'vector<float, 2>' <LValueToRValue>
// CHECK-NEXT: MatrixSingleSubscriptExpr {{.*}} 'vector<float, 2>' lvalue
matrixcomponent
-// CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl_constant float3x2':'matrix<float
hlsl_constant, 3, 2>' lvalue Var {{.*}} 'gM' 'hlsl_constant
float3x2':'matrix<float hlsl_constant, 3, 2>'
+// CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl_constant float3x2':'matrix<float, 3,
2> hlsl_constant' lvalue Var {{.*}} 'gM' 'hlsl_constant
float3x2':'matrix<float, 3, 2> hlsl_constant'
// CHECK-NEXT: DeclRefExpr {{.*}} 'uint':'unsigned int' lvalue ParmVar {{.*}}
'row' 'uint':'unsigned int'
float2 getRow(uint row) {
return gM[row];
diff --git a/clang/test/AST/HLSL/resource_binding_attr.hlsl
b/clang/test/AST/HLSL/resource_binding_attr.hlsl
index 2de06741cfd46..2cd2b96bc41b5 100644
--- a/clang/test/AST/HLSL/resource_binding_attr.hlsl
+++ b/clang/test/AST/HLSL/resource_binding_attr.hlsl
@@ -46,7 +46,7 @@ RWBuffer<float> UAV_Array[10] : register(u10, space6);
// CHECK: HLSLResourceBindingAttr {{.*}} "c5" "space0"
float f : register(c5);
-// CHECK: VarDecl {{.*}} intv 'hlsl_constant int4':'vector<int hlsl_constant,
4>'
+// CHECK: VarDecl {{.*}} intv 'hlsl_constant int4':'vector<int, 4>
hlsl_constant'
// CHECK: HLSLResourceBindingAttr {{.*}} "c2" "space0"
int4 intv : register(c2);
diff --git a/clang/test/SemaHLSL/BuiltIns/Buffers.hlsl
b/clang/test/SemaHLSL/BuiltIns/Buffers.hlsl
index 999372c95554e..449e6ee52580d 100644
--- a/clang/test/SemaHLSL/BuiltIns/Buffers.hlsl
+++ b/clang/test/SemaHLSL/BuiltIns/Buffers.hlsl
@@ -113,6 +113,6 @@ void main() {
// expected-note@* {{implicitly declared private here}}
// expected-error@+2 {{cannot assign to return value because function
'operator[]' returns a const value}}
- // expected-note@* {{function 'operator[]' which returns const-qualified
type 'vector<float const hlsl_device &, 3>' declared here}}
+ // expected-note@* {{function 'operator[]' which returns const-qualified
type 'vector<float, 3> const hlsl_device &' declared here}}
Buff[0] = 0.0;
}
diff --git a/clang/test/SemaHLSL/BuiltIns/StructuredBuffers.hlsl
b/clang/test/SemaHLSL/BuiltIns/StructuredBuffers.hlsl
index e5b1125b873e1..d017d2e464ed3 100644
--- a/clang/test/SemaHLSL/BuiltIns/StructuredBuffers.hlsl
+++ b/clang/test/SemaHLSL/BuiltIns/StructuredBuffers.hlsl
@@ -30,6 +30,6 @@ void main() {
// expected-note@* {{implicitly declared private here}}
// expected-error@+2 {{cannot assign to return value because function
'operator[]' returns a const value}}
- // expected-note@* {{function 'operator[]' which returns const-qualified
type 'vector<float const hlsl_device &, 3>' declared here}}
+ // expected-note@* {{function 'operator[]' which returns const-qualified
type 'vector<float, 3> const hlsl_device &' declared here}}
Buff[0] = 0.0;
}
diff --git a/clang/test/SemaHLSL/BuiltIns/matrix-errors.hlsl
b/clang/test/SemaHLSL/BuiltIns/matrix-errors.hlsl
index 03751878bbb98..2aa127f60ae22 100644
--- a/clang/test/SemaHLSL/BuiltIns/matrix-errors.hlsl
+++ b/clang/test/SemaHLSL/BuiltIns/matrix-errors.hlsl
@@ -2,7 +2,7 @@
// Some bad declarations
hlsl::matrix ShouldWorkSomeday; // expected-error{{use of alias template
'hlsl::matrix' requires template arguments}}
-// expected-note@*:* {{template declaration from hidden source: template
<class element = float, int rows_count = 4, int cols_count = 4> requires
rows_count <= 4 && cols_count <= 4 using matrix = element
__attribute__((matrix_type(rows_count, cols_count)))}}
+// expected-note@*:* {{template declaration from hidden source: template
<class element = float, int rows_count = 4, int cols_count = 4> requires
rows_count <= 4 && cols_count <= 4 using matrix = matrix<element, rows_count,
cols_count>}}
hlsl::matrix<1,1,1> BadMat; // expected-error{{template argument for template
type parameter must be a type}}
// expected-note@*:* {{template parameter from hidden source: class element =
float}}
@@ -11,7 +11,7 @@ hlsl::matrix<int, float,4> AnotherBadMat; //
expected-error{{template argument f
// expected-note@*:* {{template parameter from hidden source: int rows_count =
4}}
hlsl::matrix<int, 2, 3, 2> YABV; // expected-error{{too many template
arguments for alias template 'matrix'}}
-// expected-note@*:* {{template declaration from hidden source: template
<class element = float, int rows_count = 4, int cols_count = 4> requires
rows_count <= 4 && cols_count <= 4 using matrix = element
__attribute__((matrix_type(rows_count, cols_count)))}}
+// expected-note@*:* {{template declaration from hidden source: template
<class element = float, int rows_count = 4, int cols_count = 4> requires
rows_count <= 4 && cols_count <= 4 using matrix = matrix<element, rows_count,
cols_count>}}
// This code is rejected by clang because clang puts the HLSL built-in types
// into the HLSL namespace.
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits