<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/100619>100619</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[HLSL] Layout compatible type casting
</td>
</tr>
<tr>
<th>Labels</th>
<td>
HLSL
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
llvm-beanz
</td>
</tr>
</table>
<pre>
HLSL allows explicit casting between layout compatible types. For example:
```hlsl
struct XYZ {
float X, Y, Z;
};
XYZ xyz = ...;
float3 f3 = (float3)xyz;
xyz = (XYX)f3;
struct S {
int i;
float f;
};
struct OtherS {
int i;
float f;
};
S s =...;
OtherS o = (OtherS)s;
```
Related: https://github.com/llvm/llvm-project/issues/100614
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykUk2L2zAQ_TXjy7BGHvlLBx-yDaaHQKG5JHuT7UmsosTGkneT_Prij2wL7aUUBn2M5r15jJ52zpyvzAUkr5BsAz36thsKa98vLxXr6yOouuZefN3td6it7T4c8q23pjYea-28uZ6xYv_BfEWr793ose4uvfamsoz-3rMLsewG5Ju-9JZBbkDMkYolWussiI3zw1h7PBzfELJXEBvEk-20xwPQFzxOyxvI6QGy7XoQm6n8dn8gyC2GYbjkZ5zEk5zTQPmSAFK3-2MpeWKA8sPxAKRO8pNzVbJfdZirR_MbMZ7-lLFCvvmWh3_B7dFNMj6VrwTdU9tyB1JuhTyHtsC_s9WeG5AbbL3v3TRcKoHKs_HtWIV1dwEqp79ct5d-6H5w7YFK49zIDqiMhEijOGgK2SipdMBFlFGkpKA4DtqCo1xHWlScZHmTRWmukizVqhFVWqUiPgWmIEGxyCiJsiSjOJR1lscyV3GUJGmdKogFX7Sx4aQg7IZzMPcu5sYqsLpi62b_EU0-A6LJiU8TjmcHsbDGefeLwRtvZ8_OgGSLu79672nRYBxs8Z8jUsF7QT8DAAD__zRn8Yo">