|
| 1 | +// RUN: %dxc -T lib_6_9 -ast-dump-implicit %s | FileCheck -check-prefix=ASTIMPL %s |
| 2 | +// RUN: %dxc -T lib_6_9 -ast-dump %s | FileCheck -check-prefix=AST %s |
| 3 | +// The HLSL source is just a copy of |
| 4 | +// tools\clang\test\HLSLFileCheck\shader_targets\raytracing\subobjects_raytracingPipelineConfig1.hlsl |
| 5 | + |
| 6 | +// This test tests that the HLSLSubObjectAttr attribute is present on all |
| 7 | +// HLSL subobjects, and tests the ast representation of subobjects |
| 8 | + |
| 9 | +// ASTIMPL: CXXRecordDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit referenced struct StateObjectConfig definition |
| 10 | +// ASTIMPL-NEXT: HLSLSubObjectAttr 0x{{.+}} <<invalid sloc>> Implicit 0 2 |
| 11 | +// ASTIMPL-NEXT: FinalAttr 0x{{.+}} <<invalid sloc>> Implicit final |
| 12 | +// ASTIMPL-NEXT: FieldDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit Flags 'unsigned int' |
| 13 | +// ASTIMPL-NEXT: CXXRecordDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit referenced struct GlobalRootSignature definition |
| 14 | +// ASTIMPL-NEXT: HLSLSubObjectAttr 0x{{.+}} <<invalid sloc>> Implicit 1 2 |
| 15 | +// ASTIMPL-NEXT: FinalAttr 0x{{.+}} <<invalid sloc>> Implicit final |
| 16 | +// ASTIMPL-NEXT: FieldDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit Data 'string' |
| 17 | +// ASTIMPL-NEXT: CXXRecordDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit referenced struct LocalRootSignature definition |
| 18 | +// ASTIMPL-NEXT: HLSLSubObjectAttr 0x{{.+}} <<invalid sloc>> Implicit 2 2 |
| 19 | +// ASTIMPL-NEXT: FinalAttr 0x{{.+}} <<invalid sloc>> Implicit final |
| 20 | +// ASTIMPL-NEXT: FieldDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit Data 'string' |
| 21 | +// ASTIMPL-NEXT: CXXRecordDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit referenced struct SubobjectToExportsAssociation definition |
| 22 | +// ASTIMPL-NEXT: HLSLSubObjectAttr 0x{{.+}} <<invalid sloc>> Implicit 8 2 |
| 23 | +// ASTIMPL-NEXT: FinalAttr 0x{{.+}} <<invalid sloc>> Implicit final |
| 24 | +// ASTIMPL-NEXT: FieldDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit Subobject 'string' |
| 25 | +// ASTIMPL-NEXT: FieldDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit Exports 'string' |
| 26 | +// ASTIMPL-NEXT: CXXRecordDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit referenced struct RaytracingShaderConfig definition |
| 27 | +// ASTIMPL-NEXT: HLSLSubObjectAttr 0x{{.+}} <<invalid sloc>> Implicit 9 2 |
| 28 | +// ASTIMPL-NEXT: FinalAttr 0x{{.+}} <<invalid sloc>> Implicit final |
| 29 | +// ASTIMPL-NEXT: FieldDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit MaxPayloadSizeInBytes 'unsigned int' |
| 30 | +// ASTIMPL-NEXT: FieldDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit MaxAttributeSizeInBytes 'unsigned int' |
| 31 | +// ASTIMPL-NEXT: CXXRecordDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit struct RaytracingPipelineConfig definition |
| 32 | +// ASTIMPL-NEXT: HLSLSubObjectAttr 0x{{.+}} <<invalid sloc>> Implicit 10 2 |
| 33 | +// ASTIMPL-NEXT: FinalAttr 0x{{.+}} <<invalid sloc>> Implicit final |
| 34 | +// ASTIMPL-NEXT: FieldDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit MaxTraceRecursionDepth 'unsigned int' |
| 35 | +// ASTIMPL-NEXT: CXXRecordDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit referenced struct TriangleHitGroup definition |
| 36 | +// ASTIMPL-NEXT: HLSLSubObjectAttr 0x{{.+}} <<invalid sloc>> Implicit 11 0 |
| 37 | +// ASTIMPL-NEXT: FinalAttr 0x{{.+}} <<invalid sloc>> Implicit final |
| 38 | +// ASTIMPL-NEXT: FieldDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit AnyHit 'string' |
| 39 | +// ASTIMPL-NEXT: FieldDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit ClosestHit 'string' |
| 40 | +// ASTIMPL-NEXT: CXXRecordDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit referenced struct ProceduralPrimitiveHitGroup definition |
| 41 | +// ASTIMPL-NEXT: HLSLSubObjectAttr 0x{{.+}} <<invalid sloc>> Implicit 11 1 |
| 42 | +// ASTIMPL-NEXT: FinalAttr 0x{{.+}} <<invalid sloc>> Implicit final |
| 43 | +// ASTIMPL-NEXT: FieldDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit AnyHit 'string' |
| 44 | +// ASTIMPL-NEXT: FieldDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit ClosestHit 'string' |
| 45 | +// ASTIMPL-NEXT: FieldDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit Intersection 'string' |
| 46 | +// ASTIMPL-NEXT: CXXRecordDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit referenced struct RaytracingPipelineConfig1 definition |
| 47 | +// ASTIMPL-NEXT: HLSLSubObjectAttr 0x{{.+}} <<invalid sloc>> Implicit 12 2 |
| 48 | +// ASTIMPL-NEXT: FinalAttr 0x{{.+}} <<invalid sloc>> Implicit final |
| 49 | +// ASTIMPL-NEXT: FieldDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit MaxTraceRecursionDepth 'unsigned int' |
| 50 | +// ASTIMPL-NEXT: FieldDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit Flags 'unsigned int' |
| 51 | + |
| 52 | +// AST: VarDecl 0x{{.+}} grs 'GlobalRootSignature' static cinit |
| 53 | +// AST-NEXT: InitListExpr 0x{{.+}} 'GlobalRootSignature' |
| 54 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'const string' <ArrayToPointerDecay> |
| 55 | +// AST-NEXT: StringLiteral 0x{{.+}} 'literal string' lvalue "CBV(b0)" |
| 56 | +// AST-NEXT: VarDecl 0x{{.+}} soc 'StateObjectConfig' static cinit |
| 57 | +// AST-NEXT: InitListExpr 0x{{.+}} 'StateObjectConfig' |
| 58 | +// AST-NEXT: BinaryOperator 0x{{.+}} 'unsigned int' '|' |
| 59 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'unsigned int' <LValueToRValue> |
| 60 | +// AST-NEXT: DeclRefExpr 0x{{.+}} 'const unsigned int' lvalue Var 0x{{.+}} 'STATE_OBJECT_FLAGS_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITONS' 'const unsigned int' |
| 61 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'unsigned int' <LValueToRValue> |
| 62 | +// AST-NEXT: DeclRefExpr 0x{{.+}} 'const unsigned int' lvalue Var 0x{{.+}} 'STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS' 'const unsigned int' |
| 63 | +// AST-NEXT: VarDecl 0x{{.+}} lrs 'LocalRootSignature' static cinit |
| 64 | +// AST-NEXT: InitListExpr 0x{{.+}} 'LocalRootSignature' |
| 65 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'const string' <ArrayToPointerDecay> |
| 66 | +// AST-NEXT: StringLiteral 0x{{.+}} 'literal string' lvalue "UAV(u0, visibility = SHADER_VISIBILITY_GEOMETRY), RootFlags(LOCAL_ROOT_SIGNATURE)" |
| 67 | +// AST-NEXT: VarDecl 0x{{.+}} sea 'SubobjectToExportsAssociation' static cinit |
| 68 | +// AST-NEXT: InitListExpr 0x{{.+}} 'SubobjectToExportsAssociation' |
| 69 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'const string' <ArrayToPointerDecay> |
| 70 | +// AST-NEXT: StringLiteral 0x{{.+}} 'literal string' lvalue "grs" |
| 71 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'const string' <ArrayToPointerDecay> |
| 72 | +// AST-NEXT: StringLiteral 0x{{.+}} 'literal string' lvalue "a;b;foo;c" |
| 73 | +// AST-NEXT: VarDecl 0x{{.+}} sea2 'SubobjectToExportsAssociation' static cinit |
| 74 | +// AST-NEXT: InitListExpr 0x{{.+}} 'SubobjectToExportsAssociation' |
| 75 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'const string' <ArrayToPointerDecay> |
| 76 | +// AST-NEXT: StringLiteral 0x{{.+}} 'literal string' lvalue "grs" |
| 77 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'const string' <ArrayToPointerDecay> |
| 78 | +// AST-NEXT: StringLiteral 0x{{.+}} 'literal string' lvalue ";" |
| 79 | +// AST-NEXT: VarDecl 0x{{.+}} sea3 'SubobjectToExportsAssociation' static cinit |
| 80 | +// AST-NEXT: InitListExpr 0x{{.+}} 'SubobjectToExportsAssociation' |
| 81 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'const string' <ArrayToPointerDecay> |
| 82 | +// AST-NEXT: StringLiteral 0x{{.+}} 'literal string' lvalue "grs" |
| 83 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'const string' <ArrayToPointerDecay> |
| 84 | +// AST-NEXT: StringLiteral 0x{{.+}} 'literal string' lvalue "" |
| 85 | +// AST-NEXT: VarDecl 0x{{.+}} rsc 'RaytracingShaderConfig' static cinit |
| 86 | +// AST-NEXT: InitListExpr 0x{{.+}} 'RaytracingShaderConfig' |
| 87 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'unsigned int' <IntegralCast> |
| 88 | +// AST-NEXT: IntegerLiteral 0x{{.+}} 'literal int' 128 |
| 89 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'unsigned int' <IntegralCast> |
| 90 | +// AST-NEXT: IntegerLiteral 0x{{.+}} 'literal int' 64 |
| 91 | +// AST-NEXT: VarDecl 0x{{.+}} rpc 'RaytracingPipelineConfig1' static cinit |
| 92 | +// AST-NEXT: InitListExpr 0x{{.+}} 'RaytracingPipelineConfig1' |
| 93 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'unsigned int' <IntegralCast> |
| 94 | +// AST-NEXT: IntegerLiteral 0x{{.+}} 'literal int' 32 |
| 95 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'unsigned int' <LValueToRValue> |
| 96 | +// AST-NEXT: DeclRefExpr 0x{{.+}} 'const unsigned int' lvalue Var 0x{{.+}} 'RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES' 'const unsigned int' |
| 97 | +// AST-NEXT: VarDecl 0x{{.+}} sea4 'SubobjectToExportsAssociation' static cinit |
| 98 | +// AST-NEXT: InitListExpr 0x{{.+}} 'SubobjectToExportsAssociation' |
| 99 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'const string' <ArrayToPointerDecay> |
| 100 | +// AST-NEXT: StringLiteral 0x{{.+}} 'literal string' lvalue "rpc" |
| 101 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'const string' <ArrayToPointerDecay> |
| 102 | +// AST-NEXT: StringLiteral 0x{{.+}} 'literal string' lvalue ";" |
| 103 | +// AST-NEXT: VarDecl 0x{{.+}} rpc2 'RaytracingPipelineConfig1' static cinit |
| 104 | +// AST-NEXT: InitListExpr 0x{{.+}} 'RaytracingPipelineConfig1' |
| 105 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'unsigned int' <IntegralCast> |
| 106 | +// AST-NEXT: IntegerLiteral 0x{{.+}} 'literal int' 32 |
| 107 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'unsigned int' <LValueToRValue> |
| 108 | +// AST-NEXT: DeclRefExpr 0x{{.+}} 'const unsigned int' lvalue Var 0x{{.+}} 'RAYTRACING_PIPELINE_FLAG_NONE' 'const unsigned int' |
| 109 | +// AST-NEXT: VarDecl 0x{{.+}} trHitGt 'TriangleHitGroup' static cinit |
| 110 | +// AST-NEXT: InitListExpr 0x{{.+}} 'TriangleHitGroup' |
| 111 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'const string' <ArrayToPointerDecay> |
| 112 | +// AST-NEXT: StringLiteral 0x{{.+}} 'literal string' lvalue "a" |
| 113 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'const string' <ArrayToPointerDecay> |
| 114 | +// AST-NEXT: StringLiteral 0x{{.+}} 'literal string' lvalue "b" |
| 115 | +// AST-NEXT: VarDecl 0x{{.+}} ppHitGt 'ProceduralPrimitiveHitGroup' static cinit |
| 116 | +// AST-NEXT: InitListExpr 0x{{.+}} 'ProceduralPrimitiveHitGroup' |
| 117 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'const string' <ArrayToPointerDecay> |
| 118 | +// AST-NEXT: StringLiteral 0x{{.+}} 'literal string' lvalue "a" |
| 119 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'const string' <ArrayToPointerDecay> |
| 120 | +// AST-NEXT: StringLiteral 0x{{.+}} 'literal string' lvalue "b" |
| 121 | +// AST-NEXT: ImplicitCastExpr 0x{{.+}} 'const string' <ArrayToPointerDecay> |
| 122 | +// AST-NEXT: StringLiteral 0x{{.+}} 'literal string' lvalue "c" |
| 123 | + |
| 124 | +GlobalRootSignature grs = {"CBV(b0)"}; |
| 125 | +StateObjectConfig soc = { STATE_OBJECT_FLAGS_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITONS | STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS }; |
| 126 | +LocalRootSignature lrs = {"UAV(u0, visibility = SHADER_VISIBILITY_GEOMETRY), RootFlags(LOCAL_ROOT_SIGNATURE)"}; |
| 127 | +SubobjectToExportsAssociation sea = { "grs", "a;b;foo;c" }; |
| 128 | +// Empty association is well-defined: it creates a default association |
| 129 | +SubobjectToExportsAssociation sea2 = { "grs", ";" }; |
| 130 | +SubobjectToExportsAssociation sea3 = { "grs", "" }; |
| 131 | +RaytracingShaderConfig rsc = { 128, 64 }; |
| 132 | +RaytracingPipelineConfig1 rpc = { 32, RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES }; |
| 133 | +SubobjectToExportsAssociation sea4 = {"rpc", ";"}; |
| 134 | +RaytracingPipelineConfig1 rpc2 = {32, RAYTRACING_PIPELINE_FLAG_NONE }; |
| 135 | +TriangleHitGroup trHitGt = {"a", "b"}; |
| 136 | +ProceduralPrimitiveHitGroup ppHitGt = { "a", "b", "c"}; |
0 commit comments