|
1 |
| -// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-library -x hlsl -ast-dump -o - %s | FileCheck %s |
| 1 | +// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-library -finclude-default-header -ast-dump -o - %s | FileCheck %s |
2 | 2 |
|
3 |
| -// CHECK:HLSLBufferDecl 0x[[CB:[0-9a-f]+]] {{.*}} line:8:9 cbuffer CB |
4 |
| -// CHECK-NEXT:HLSLResourceClassAttr 0x[[CB:[0-9a-f]+]] {{.*}} Implicit CBuffer |
5 |
| -// CHECK-NEXT:HLSLResourceAttr 0x[[CB:[0-9a-f]+]] {{.*}} Implicit CBuffer |
6 |
| -// CHECK-NEXT:HLSLResourceBindingAttr 0x{{[0-9a-f]+}} <col:14> "b3" "space2" |
7 |
| -// CHECK-NEXT:VarDecl 0x[[A:[0-9a-f]+]] {{.*}} col:9 used a 'hlsl_constant float' |
| 3 | +// CHECK: HLSLBufferDecl {{.*}} line:[[# @LINE + 5]]:9 cbuffer CB |
| 4 | +// CHECK-NEXT: HLSLResourceClassAttr {{.*}} Implicit CBuffer |
| 5 | +// CHECK-NEXT: HLSLResourceAttr {{.*}} Implicit CBuffer |
| 6 | +// CHECK-NEXT: HLSLResourceBindingAttr {{.*}} "b3" "space2" |
| 7 | +// CHECK-NEXT: VarDecl {{.*}} used a 'hlsl_constant float' |
8 | 8 | cbuffer CB : register(b3, space2) {
|
9 | 9 | float a;
|
10 | 10 | }
|
11 | 11 |
|
12 |
| -// CHECK:HLSLBufferDecl 0x[[TB:[0-9a-f]+]] {{.*}} line:17:9 tbuffer TB |
13 |
| -// CHECK-NEXT:HLSLResourceClassAttr 0x[[CB:[0-9a-f]+]] {{.*}} Implicit SRV |
14 |
| -// CHECK-NEXT:HLSLResourceAttr 0x[[CB:[0-9a-f]+]] {{.*}} Implicit TBuffer |
15 |
| -// CHECK-NEXT:HLSLResourceBindingAttr 0x{{[0-9a-f]+}} <col:14> "t2" "space1" |
16 |
| -// CHECK-NEXT:VarDecl 0x[[B:[0-9a-f]+]] {{.*}} col:9 used b 'hlsl_constant float' |
| 12 | +// CHECK: HLSLBufferDecl {{.*}} line:[[# @LINE + 5]]:9 tbuffer TB |
| 13 | +// CHECK-NEXT: HLSLResourceClassAttr {{.*}} Implicit SRV |
| 14 | +// CHECK-NEXT: HLSLResourceAttr {{.*}} Implicit TBuffer |
| 15 | +// CHECK-NEXT: HLSLResourceBindingAttr {{.*}} "t2" "space1" |
| 16 | +// CHECK-NEXT: VarDecl {{.*}} used b 'hlsl_constant float' |
17 | 17 | tbuffer TB : register(t2, space1) {
|
18 | 18 | float b;
|
19 | 19 | }
|
20 | 20 |
|
21 |
| -float foo() { |
22 |
| -// CHECK: BinaryOperator 0x{{[0-9a-f]+}} <col:10, col:14> 'float' '+' |
23 |
| -// CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-f]+}} <col:10> 'float' <LValueToRValue> |
24 |
| -// CHECK-NEXT: DeclRefExpr 0x{{[0-9a-f]+}} <col:10> 'hlsl_constant float' lvalue Var 0x[[A]] 'a' 'hlsl_constant float' |
25 |
| -// CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-f]+}} <col:14> 'float' <LValueToRValue> |
26 |
| -// CHECK-NEXT: DeclRefExpr 0x{{[0-9a-f]+}} <col:14> 'hlsl_constant float' lvalue Var 0x[[B]] 'b' 'hlsl_constant float' |
| 21 | +export float foo() { |
27 | 22 | return a + b;
|
28 | 23 | }
|
29 | 24 |
|
30 |
| -// CHECK: VarDecl 0x{{[0-9a-f]+}} <{{.*}}> col:17 UAV 'RWBuffer<float>':'hlsl::RWBuffer<float>' callinit |
31 |
| -// CHECK-NEXT:-CXXConstructExpr 0x{{[0-9a-f]+}} <col:17> 'RWBuffer<float>':'hlsl::RWBuffer<float>' 'void ()' |
32 |
| -// CHECK-NEXT:-HLSLResourceBindingAttr 0x{{[0-9a-f]+}} <col:23> "u3" "space0" |
| 25 | +// CHECK: VarDecl {{.*}} UAV 'RWBuffer<float>':'hlsl::RWBuffer<float>' |
| 26 | +// CHECK: HLSLResourceBindingAttr {{.*}} "u3" "space0" |
33 | 27 | RWBuffer<float> UAV : register(u3);
|
34 | 28 |
|
35 |
| -// CHECK: -VarDecl 0x{{[0-9a-f]+}} <{{.*}}> col:17 UAV1 'RWBuffer<float>':'hlsl::RWBuffer<float>' callinit |
36 |
| -// CHECK-NEXT:-CXXConstructExpr 0x{{[0-9a-f]+}} <col:17> 'RWBuffer<float>':'hlsl::RWBuffer<float>' 'void ()' |
37 |
| -// CHECK-NEXT:-HLSLResourceBindingAttr 0x{{[0-9a-f]+}} <col:24> "u2" "space0" |
38 |
| -// CHECK-NEXT:-VarDecl 0x{{[0-9a-f]+}} <col:1, col:38> col:38 UAV2 'RWBuffer<float>':'hlsl::RWBuffer<float>' callinit |
39 |
| -// CHECK-NEXT:-CXXConstructExpr 0x{{[0-9a-f]+}} <col:38> 'RWBuffer<float>':'hlsl::RWBuffer<float>' 'void ()' |
40 |
| -// CHECK-NEXT:-HLSLResourceBindingAttr 0x{{[0-9a-f]+}} <col:45> "u4" "space0" |
| 29 | +// CHECK: VarDecl {{.*}} UAV1 'RWBuffer<float>':'hlsl::RWBuffer<float>' |
| 30 | +// CHECK: HLSLResourceBindingAttr {{.*}} "u2" "space0" |
| 31 | +// CHECK: VarDecl {{.*}} UAV2 'RWBuffer<float>':'hlsl::RWBuffer<float>' |
| 32 | +// CHECK: HLSLResourceBindingAttr {{.*}} "u4" "space0" |
41 | 33 | RWBuffer<float> UAV1 : register(u2), UAV2 : register(u4);
|
| 34 | + |
| 35 | +// |
| 36 | +// Default constants ($Globals) layout annotations |
| 37 | + |
| 38 | +// CHECK: VarDecl {{.*}} f 'hlsl_constant float' |
| 39 | +// CHECK: HLSLResourceBindingAttr {{.*}} "c5" "space0" |
| 40 | +float f : register(c5); |
| 41 | + |
| 42 | +// CHECK: VarDecl {{.*}} intv 'hlsl_constant int4':'vector<int hlsl_constant, 4>' |
| 43 | +// CHECK: HLSLResourceBindingAttr {{.*}} "c2" "space0" |
| 44 | +int4 intv : register(c2); |
| 45 | + |
| 46 | +// CHECK: VarDecl {{.*}} dar 'hlsl_constant double[5]' |
| 47 | +// CHECK: HLSLResourceBindingAttr {{.*}} "c3" "space0" |
| 48 | +double dar[5] : register(c3); |
| 49 | + |
| 50 | +struct S { |
| 51 | + int a; |
| 52 | +}; |
| 53 | + |
| 54 | +// CHECK: VarDecl {{.*}} s 'hlsl_constant S' |
| 55 | +// CHECK: HLSLResourceBindingAttr {{.*}} "c10" "space0 |
| 56 | +S s : register(c10); |
0 commit comments