[clang] [HLSL] support packoffset in clang codeGen (PR #91999)

Chris B via cfe-commits cfe-commits at lists.llvm.org
Thu May 16 13:02:27 PDT 2024


llvm-beanz wrote:

> Could you explain more about can't put any vectors or matrices into the cbuffer structure type?

Consider this example (regardless of packoffset):

```hlsl
cbuffer {
  float F;
  float2 V;
}
```

The layout for this is basically:
```c
struct {
  float F;
  float Vx; // v.x
  float Vy; // v.y
};
```
These elements are all packed.

If you translate this to an IR struct you get something like:

```llvm
type { float, <2 x float>}
```

The data layout will insert 4-bytes of padding between the float and the vector because the vector needs to be properly aligned.

https://github.com/llvm/llvm-project/pull/91999


More information about the cfe-commits mailing list