<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">