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