[HLSL] Fix interleaved vector and matrix return types in AST dump (#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.
Fixes https://github.com/llvm/llvm-project/issues/114868.
Assisted-by: Gemini
This commit is contained in:
parent
51aad697e5
commit
c6bde8318e
@ -638,27 +638,29 @@ 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;
|
||||
|
||||
OS << " __attribute__((ext_vector_type(";
|
||||
if (T->getSizeExpr())
|
||||
T->getSizeExpr()->printPretty(OS, nullptr, Policy);
|
||||
OS << ")))";
|
||||
printAfter(T->getElementType(), 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,33 @@ 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);
|
||||
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 << ", ";
|
||||
if (T->getColumnExpr()) {
|
||||
T->getColumnExpr()->printPretty(OS, nullptr, Policy);
|
||||
}
|
||||
OS << ")))";
|
||||
}
|
||||
|
||||
void TypePrinter::printDependentSizedMatrixAfter(
|
||||
const DependentSizedMatrixType *T, raw_ostream &OS) {
|
||||
printAfter(T->getElementType(), OS);
|
||||
if (!Policy.UseHLSLTypes)
|
||||
printAfter(T->getElementType(), OS);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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'
|
||||
|
||||
@ -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'
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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];
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -113,7 +113,7 @@ 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;
|
||||
}
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@ 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;
|
||||
}
|
||||
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -52,15 +52,15 @@ void TestConstantNotExactlyRepresentable() {
|
||||
|
||||
// Float to half with values that lose precision - should warn
|
||||
TakesHalf2x2(F_inexact);
|
||||
// expected-warning@-1{{implicit conversion loses floating-point precision: 'const float2x2' (aka 'matrix<float const, 2, 2>') to 'matrix<half, 2, 2>'}}
|
||||
// expected-warning@-1{{implicit conversion loses floating-point precision: 'const float2x2' (aka 'matrix<float, 2, 2> const') to 'matrix<half, 2, 2>'}}
|
||||
|
||||
// Double to half with values that lose precision - should warn
|
||||
TakesHalf2x2(D_inexact);
|
||||
// expected-warning@-1{{implicit conversion loses floating-point precision: 'const double2x2' (aka 'matrix<double const, 2, 2>') to 'matrix<half, 2, 2>'}}
|
||||
// expected-warning@-1{{implicit conversion loses floating-point precision: 'const double2x2' (aka 'matrix<double, 2, 2> const') to 'matrix<half, 2, 2>'}}
|
||||
|
||||
// Double to float with values that lose precision - should warn
|
||||
TakesFloat2x2(D_inexact);
|
||||
// expected-warning@-1{{implicit conversion loses floating-point precision: 'const double2x2' (aka 'matrix<double const, 2, 2>') to 'matrix<float, 2, 2>'}}
|
||||
// expected-warning@-1{{implicit conversion loses floating-point precision: 'const double2x2' (aka 'matrix<double, 2, 2> const') to 'matrix<float, 2, 2>'}}
|
||||
|
||||
// Double to float, where the doubles are float literals that were upcast to double - should not warn
|
||||
TakesFloat2x2(D_inexact2);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user