@@ -48,94 +48,104 @@ struct TwoFloats {
48
48
// CHECK: HLSLResourceClassAttr {{.*}} Implicit CBuffer
49
49
// CHECK: HLSLResourceAttr {{.*}} Implicit CBuffer
50
50
cbuffer CB {
51
- // CHECK: VarDecl {{.*}} col:9 used a1 'hlsl_constant float'
51
+ // CHECK: VarDecl {{.*}} used a1 'hlsl_constant float'
52
52
float a1;
53
- // CHECK: CXXRecordDecl {{.*}} implicit referenced class __layout_CB definition
54
- // CHECK: FieldDecl {{.*}} a1 'float'
53
+ // CHECK: CXXRecordDecl {{.*}} implicit referenced struct __cblayout_CB definition
54
+ // CHECK: PackedAttr
55
+ // CHECK-NEXT: FieldDecl {{.*}} a1 'float'
55
56
}
56
- _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (OneFloat, __layout_CB ), "" );
57
+ _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (OneFloat, __cblayout_CB ), "" );
57
58
58
59
// Check that buffer layout struct does not include resources or empty types
59
- // CHECK: HLSLBufferDecl {{.*}} line:62 :9 cbuffer CB
60
+ // CHECK: HLSLBufferDecl {{.*}} line:[[# @LINE + 3]] :9 cbuffer CB
60
61
// CHECK: HLSLResourceClassAttr {{.*}} Implicit CBuffer
61
62
// CHECK: HLSLResourceAttr {{.*}} Implicit CBuffer
62
63
cbuffer CB {
63
- // CHECK: VarDecl {{.*}} col:9 used a2 'hlsl_constant float'
64
+ // CHECK: VarDecl {{.*}} used a2 'hlsl_constant float'
64
65
float a2;
65
- // CHECK: VarDecl {{.*}} col:19 b2 'RWBuffer<float>':'hlsl::RWBuffer<float>'
66
+ // CHECK: VarDecl {{.*}} b2 'RWBuffer<float>':'hlsl::RWBuffer<float>'
66
67
RWBuffer <float > b2;
67
- // CHECK: VarDecl {{.*}} col:15 c2 'EmptyStruct'
68
+ // CHECK: VarDecl {{.*}} c2 'EmptyStruct'
68
69
EmptyStruct c2;
69
- // CHECK: VarDecl {{.*}} col:9 d2 'float[0]'
70
+ // CHECK: VarDecl {{.*}} d2 'float[0]'
70
71
float d2[0 ];
71
- // CHECK: VarDecl {{.*}} col:9 e2 'hlsl_constant float'
72
+ // CHECK: VarDecl {{.*}} f2 'RWBuffer<float>[2]'
73
+ RWBuffer <float > f2[2 ];
74
+ // CHECK: VarDecl {{.*}} e2 'hlsl_constant float'
72
75
float e2;
73
- // CHECK: CXXRecordDecl {{.*}} implicit referenced class __layout_CB_1 definition
74
- // CHECK: FieldDecl {{.*}} a2 'float'
76
+ // CHECK: CXXRecordDecl {{.*}} implicit referenced struct __cblayout_CB_1 definition
77
+ // CHECK: PackedAttr
78
+ // CHECK-NEXT: FieldDecl {{.*}} a2 'float'
75
79
// CHECK-NEXT: FieldDecl {{.*}} e2 'float'
76
80
}
77
- _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (TwoFloats, __layout_CB_1 ), "" );
81
+ _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (TwoFloats, __cblayout_CB_1 ), "" );
78
82
79
83
// Check that layout struct is created for B and the empty struct C is removed
80
- // CHECK: HLSLBufferDecl {{.*}} line:83 :9 cbuffer CB
84
+ // CHECK: HLSLBufferDecl {{.*}} line:[[# @LINE + 3]] :9 cbuffer CB
81
85
// CHECK: HLSLResourceClassAttr {{.*}} Implicit CBuffer
82
86
// CHECK: HLSLResourceAttr {{.*}} Implicit CBuffer
83
87
cbuffer CB {
84
- // CHECK: VarDecl {{.*}} col:5 used s1 'hlsl_constant A'
88
+ // CHECK: VarDecl {{.*}} used s1 'hlsl_constant A'
85
89
A s1;
86
- // CHECK: VarDecl {{.*}} col:5 s2 'hlsl_constant B'
90
+ // CHECK: VarDecl {{.*}} s2 'hlsl_constant B'
87
91
B s2;
88
- // CHECK: VarDecl {{.*}} col:12 s3 'CTypedef':'C'
92
+ // CHECK: VarDecl {{.*}} s3 'CTypedef':'C'
89
93
CTypedef s3;
90
- // CHECK: CXXRecordDecl {{.*}} implicit referenced class __layout_CB_2 definition
91
- // CHECK: FieldDecl {{.*}} s1 'A'
92
- // CHECK: FieldDecl {{.*}} s2 '__layout_B'
94
+ // CHECK: CXXRecordDecl {{.*}} implicit referenced struct __cblayout_CB_2 definition
95
+ // CHECK: PackedAttr
96
+ // CHECK-NEXT: FieldDecl {{.*}} s1 'A'
97
+ // CHECK-NEXT: FieldDecl {{.*}} s2 '__cblayout_B'
93
98
}
94
- // CHECK: CXXRecordDecl {{.*}} implicit referenced class __layout_B definition
95
- // CHECK: FieldDecl {{.*}} a 'float'
99
+ // CHECK: CXXRecordDecl {{.*}} implicit referenced struct __cblayout_B definition
100
+ // CHECK: PackedAttr
101
+ // CHECK-NEXT: FieldDecl {{.*}} a 'float'
96
102
97
- _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (OneFloat, __layout_B ), "" );
98
- _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (TwoFloats, __layout_CB_2 ), "" );
103
+ _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (OneFloat, __cblayout_B ), "" );
104
+ _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (TwoFloats, __cblayout_CB_2 ), "" );
99
105
100
106
// check that layout struct is created for D because of its base struct
101
- // CHECK: HLSLBufferDecl {{.*}} line:104 :9 cbuffer CB
107
+ // CHECK: HLSLBufferDecl {{.*}} line:[[# @LINE + 3]] :9 cbuffer CB
102
108
// CHECK: HLSLResourceClassAttr {{.*}} Implicit CBuffer
103
109
// CHECK: HLSLResourceAttr {{.*}} Implicit CBuffer
104
110
cbuffer CB {
105
111
// CHECK: VarDecl {{.*}} s4 'hlsl_constant D'
106
112
D s4;
107
- // CHECK: CXXRecordDecl {{.*}} implicit referenced class __layout_CB_3 definition
108
- // CHECK: FieldDecl {{.*}} s4 '__layout_D'
113
+ // CHECK: CXXRecordDecl {{.*}} implicit referenced struct __cblayout_CB_3 definition
114
+ // CHECK: PackedAttr
115
+ // CHECK-NEXT: FieldDecl {{.*}} s4 '__cblayout_D'
109
116
}
110
- // CHECK: CXXRecordDecl {{.*}} implicit referenced class __layout_D definition
111
- // CHECK: public '__layout_B'
112
- // CHECK: FieldDecl {{.*}} b 'float'
113
- _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (TwoFloats, __layout_D), "" );
114
- _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (TwoFloats, __layout_CB_3), "" );
117
+ // CHECK: CXXRecordDecl {{.*}} implicit referenced struct __cblayout_D definition
118
+ // CHECK: public '__cblayout_B'
119
+ // CHECK: PackedAttr
120
+ // CHECK-NEXT: FieldDecl {{.*}} b 'float'
121
+ _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (TwoFloats, __cblayout_D), "" );
122
+ _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (TwoFloats, __cblayout_CB_3), "" );
115
123
116
124
// check that layout struct is created for E because because its base struct
117
125
// is empty and should be eliminated, and BTypedef should reuse the previously
118
- // defined '__layout_B '
119
- // CHECK: HLSLBufferDecl {{.*}} line:122 :9 cbuffer CB
126
+ // defined '__cblayout_B '
127
+ // CHECK: HLSLBufferDecl {{.*}} line:[[# @LINE + 3]] :9 cbuffer CB
120
128
// CHECK: HLSLResourceClassAttr {{.*}} Implicit CBuffer
121
129
// CHECK: HLSLResourceAttr {{.*}} Implicit CBuffer
122
130
cbuffer CB {
123
131
// CHECK: VarDecl {{.*}} s5 'hlsl_constant E'
124
132
E s5;
125
133
// CHECK: VarDecl {{.*}} s6 'hlsl_constant BTypedef':'hlsl_constant B'
126
134
BTypedef s6;
127
- // CHECK: CXXRecordDecl {{.*}} implicit referenced class __layout_CB_4 definition
128
- // CHECK: FieldDecl {{.*}} s5 '__layout_E'
129
- // CHECK: FieldDecl {{.*}} s6 '__layout_B'
135
+ // CHECK: CXXRecordDecl {{.*}} implicit referenced struct __cblayout_CB_4 definition
136
+ // CHECK: PackedAttr
137
+ // CHECK-NEXT: FieldDecl {{.*}} s5 '__cblayout_E'
138
+ // CHECK-NEXT: FieldDecl {{.*}} s6 '__cblayout_B'
130
139
}
131
- // CHECK: CXXRecordDecl {{.*}} implicit referenced class __layout_E definition
132
- // CHECK: FieldDecl {{.*}} c 'float'
133
- // CHECK-NOT: CXXRecordDecl {{.*}} class __layout_B definition
134
- _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (OneFloat, __layout_E), "" );
135
- _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (TwoFloats, __layout_CB_4), "" );
140
+ // CHECK: CXXRecordDecl {{.*}} implicit referenced struct __cblayout_E definition
141
+ // CHECK: PackedAttr
142
+ // CHECK-NEXT: FieldDecl {{.*}} c 'float'
143
+ // CHECK-NOT: CXXRecordDecl {{.*}} struct __cblayout_B definition
144
+ _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (OneFloat, __cblayout_E), "" );
145
+ _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (TwoFloats, __cblayout_CB_4), "" );
136
146
137
147
// check that this produces empty layout struct
138
- // CHECK: HLSLBufferDecl {{.*}} line:141 :9 cbuffer CB
148
+ // CHECK: HLSLBufferDecl {{.*}} line:[[# @LINE + 3]] :9 cbuffer CB
139
149
// CHECK: HLSLResourceClassAttr {{.*}} Implicit CBuffer
140
150
// CHECK: HLSLResourceAttr {{.*}} Implicit CBuffer
141
151
cbuffer CB {
@@ -149,27 +159,30 @@ cbuffer CB {
149
159
RWBuffer <float > Buf;
150
160
// CHECK: VarDecl {{.*}} ea 'EmptyArrayTypedef':'float[10][0]'
151
161
EmptyArrayTypedef ea;
152
- // CHECK: CXXRecordDecl {{.*}} implicit class __layout_CB_5 definition
162
+ // CHECK: CXXRecordDecl {{.*}} implicit struct __cblayout_CB_5 definition
163
+ // CHECK: PackedAttr
153
164
// CHECK-NOT: FieldDecl
154
165
}
155
166
156
167
// check host layout struct with compatible base struct
157
- // CHECK: HLSLBufferDecl {{.*}} line:160 :9 cbuffer CB
168
+ // CHECK: HLSLBufferDecl {{.*}} line:[[# @LINE + 3]] :9 cbuffer CB
158
169
// CHECK: HLSLResourceClassAttr {{.*}} Implicit CBuffer
159
170
// CHECK: HLSLResourceAttr {{.*}} Implicit CBuffer
160
171
cbuffer CB {
161
172
// CHECK: VarDecl {{.*}} s8 'hlsl_constant F'
162
173
F s8;
163
- // CHECK: CXXRecordDecl {{.*}} implicit referenced class __layout_CB_6 definition
164
- // CHECK: FieldDecl {{.*}} s8 '__layout_F'
174
+ // CHECK: CXXRecordDecl {{.*}} implicit referenced struct __cblayout_CB_6 definition
175
+ // CHECK: PackedAttr
176
+ // CHECK-NEXT: FieldDecl {{.*}} s8 '__cblayout_F'
165
177
}
166
- // CHECK: CXXRecordDecl {{.*}} implicit referenced class __layout_F definition
167
- // CHECK: public 'A'
168
- _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (OneFloat, __layout_F), "" );
169
- _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (OneFloat, __layout_CB_6), "" );
178
+ // CHECK: CXXRecordDecl {{.*}} implicit referenced struct __cblayout_F definition
179
+ // CHECK: public 'A'
180
+ // CHECK: PackedAttr
181
+ _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (OneFloat, __cblayout_F), "" );
182
+ _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (OneFloat, __cblayout_CB_6), "" );
170
183
171
184
// anonymous structs
172
- // CHECK: HLSLBufferDecl {{.*}} line:175 :9 cbuffer CB
185
+ // CHECK: HLSLBufferDecl {{.*}} line:[[# @LINE + 3]] :9 cbuffer CB
173
186
// CHECK: HLSLResourceClassAttr {{.*}} Implicit CBuffer
174
187
// CHECK: HLSLResourceAttr {{.*}} Implicit CBuffer
175
188
cbuffer CB {
@@ -182,26 +195,29 @@ cbuffer CB {
182
195
// CHECK: FieldDecl {{.*}} f 'RWBuffer<float>':'hlsl::RWBuffer<float>'
183
196
RWBuffer <float > f;
184
197
} s9;
185
- // CHECK: VarDecl {{.*}} s9 'hlsl_constant struct (unnamed struct at {{.*}}cbuffer.hlsl:177 :3
198
+ // CHECK: VarDecl {{.*}} s9 'hlsl_constant struct (unnamed struct at {{.*}}cbuffer.hlsl:[[# @LINE - 8]] :3
186
199
// CHECK: CXXRecordDecl {{.*}} struct definition
187
200
struct {
188
201
// CHECK: FieldDecl {{.*}} g 'float'
189
202
float g;
190
203
// CHECK: FieldDecl {{.*}} f 'RWBuffer<float>':'hlsl::RWBuffer<float>'
191
204
RWBuffer <float > f;
192
205
} s10;
193
- // CHECK: VarDecl {{.*}} s10 'hlsl_constant struct (unnamed struct at {{.*}}cbuffer.hlsl:187:3
194
- // CHECK: CXXRecordDecl {{.*}} implicit referenced class __layout_anon definition
195
- // CHECK: FieldDecl {{.*}} e 'float'
196
- // CHECK: CXXRecordDecl {{.*}} implicit referenced class __layout_anon_1 definition
197
- // CHECK: FieldDecl {{.*}} g 'float'
198
- // CHECK: CXXRecordDecl {{.*}} implicit referenced class __layout_CB_7 definition
199
- // CHECK: FieldDecl {{.*}} s9 '__layout_anon'
200
- // CHECK: FieldDecl {{.*}} s10 '__layout_anon_1'
206
+ // CHECK: VarDecl {{.*}} s10 'hlsl_constant struct (unnamed struct at {{.*}}cbuffer.hlsl:[[# @LINE - 6]]:3
207
+ // CHECK: CXXRecordDecl {{.*}} implicit referenced struct __cblayout_anon definition
208
+ // CHECK: PackedAttr
209
+ // CHECK-NEXT: FieldDecl {{.*}} e 'float'
210
+ // CHECK: CXXRecordDecl {{.*}} implicit referenced struct __cblayout_anon_1 definition
211
+ // CHECK: PackedAttr
212
+ // CHECK-NEXT: FieldDecl {{.*}} g 'float'
213
+ // CHECK: CXXRecordDecl {{.*}} implicit referenced struct __cblayout_CB_7 definition
214
+ // CHECK: PackedAttr
215
+ // CHECK-NEXT: FieldDecl {{.*}} s9 '__cblayout_anon'
216
+ // CHECK-NEXT: FieldDecl {{.*}} s10 '__cblayout_anon_1'
201
217
}
202
- _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (OneFloat, __layout_anon ), "" );
203
- _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (OneFloat, __layout_anon_1 ), "" );
204
- _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (TwoFloats, __layout_CB_7 ), "" );
218
+ _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (OneFloat, __cblayout_anon ), "" );
219
+ _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (OneFloat, __cblayout_anon_1 ), "" );
220
+ _Static_assert (__builtin_hlsl_is_scalarized_layout_compatible (TwoFloats, __cblayout_CB_7 ), "" );
205
221
206
222
// Add uses for the constant buffer declarations so they are not optimized away
207
223
export float foo () {
0 commit comments