================
@@ -0,0 +1,56 @@
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-library -x hlsl -o -
-fsyntax-only %s -verify
+
+// valid
+cbuffer cbuf {
+ RWBuffer<int> r : register(u0, space0);
+}
+
+cbuffer cbuf2 {
+ struct x {
+ // expected-error@+1 {{'register' attribute only applies to
cbuffer/tbuffer and external global variables}}
+ RWBuffer<int> E : register(u2, space3);
+ };
+}
+
+struct MyStruct {
+ RWBuffer<int> E;
+};
+
+cbuffer cbuf3 {
+ MyStruct E : register(u2, space3);
----------------
damyanp wrote:
https://godbolt.org/z/ezj1sc3sx - it looks like DXC doesn't actually get the
binding right in this case:
```
; Name Type Format Dim ID
HLSL Bind Count
; ------------------------------ ---------- ------- ----------- -------
-------------- ------
; E.E UAV i32 buf U0
u4294967295 1
```
Also I think that the case we're discussing:
```
struct MyStruct {
RWBuffer<int> E;
};
cbuffer cbuf3 {
MyStruct E : register(u2, space3);
}
```
We should consider as equivalent to:
```
struct MyStruct {
RWBuffer<int> E;
};
MyStruct E : register(u2, space3);
```
And I think that we said that this would report a "can't use space on globals"
error?
https://github.com/llvm/llvm-project/pull/106782
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits