<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/149345>149345</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [HLSL][DirectX]
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          spall
      </td>
    </tr>
</table>

<pre>
    https://godbolt.org/z/To9e81PWs

```
StructuredBuffer<uint4> In : register(t0);
RWStructuredBuffer<uint4> Out : register(u1);

[numthreads(1,1,1)]
void main() {
  Out[3] = AddUint64(In[0], In[0]);
}
```

This code, when compiled, produces invalid DXIL

```
# .---command stdout------------
# | Function: main: error: Instructions must be of an allowed type.
# | note: at '%.upto077112 = insertelement <2 x i1> undef, i1 %.elem1, i32 0' in block 'entry' of function 'main'.
# | Function: main: error: Instructions must be of an allowed type.
# | note: at '%58 = insertelement <2 x i1> %.upto077112, i1 %.elem17, i32 1' in block 'entry' of function 'main'.
# | Function: main: error: Instructions must be of an allowed type.
# | note: at '%.i09113 = extractelement <2 x i1> %58, i32 0' in block 'entry' of function 'main'.
# | Function: main: error: Instructions must be of an allowed type.
# | note: at '%.i110114 = extractelement <2 x i1> %58, i32 1' in block 'entry' of function 'main'.
# | Validation failed.
# |
# `-----------------------------
# .---command stderr------------
# | clang-dxc: error: dxv command failed with exit code 1 (use -v to see invocation)
# `-----------------------------
# error: command failed with exit status: 1
```

These 'insertelement' and 'extractelement' instructions are created by the scalarizer pass, but are unnecessary and could be eliminated.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzUVV2P4yYU_TXk5SoWYBPbD35IJo060kitutvuvmJzndBiiPjIJPvrKzyZbWa6s9WqUtW1iGID58I5h8uVIei9ReyI2BCxXcgUD8534SiNWfROXbpDjMdAyjXhO8J3e6d6Z2Lh_J7w3SfCd-9diw37-UMgdJ3bil4bXb-LPg0xeVSbNI7oSXmXtI0VKX-AewukXIPHvQ4RPeFNpIS3pNwQuv7lw9egP6X4GpvYZ2xuYmPTFA8epQqEN4zwu-uvJWJL6PrktIJJakt4Q3gLpM5QyKGJ2JREbIGUW1gr9au2cVUR3txbIjY0w_kd3Hw8L1tvX7EndP3-oAMMTmHGPB7QwuCmozaocsfRO5UGDKDtSRqtYPvx_uHvKhJeQrFcLgc3TdIqCFG5FJc3z3USqe9gl-wQtbNZn5lfuQb03vn8cm_DLKt2NsCUQoQewY0gLUhj3CMqiJcjFjfxrIuYoTIC4TXhokjH6GhdM8ZnibQN6CManNBmW-44nEGz7FOyCsdMVDPIyDyJzd8lB0p4DdpCb9zwR46NNvpL7nQjjFcWuf_Jpbr4L0mK5p-4vVTiNcn6mSX7P7MsNG0ZK2eqeI5eDm9yFc134VuhGaOMVd9G6d-Y9FtOXDlPGGVO7JvB57cVXX7t-XKKo_dvpPhgpN0v1Xl4IZ86n-AZ_rQTeNTxAHjWcb6CIJ_PJgWE5Qmig4CYLx43zLvP99g3bffzwm8uGqKMKVcOYF-6GTFg1vRFjmXNc6zswQv3nhy6OSDSIwweZUQF_QXiASEM0kivP6GHowwhu9unOM9M1uKAIUh_meMPLhmVzxcaPWmboxQL1ZWqLVu5wI7VgterRrBqcegUawRd9bRveNOIduAlxbERVPV9RWsxLnTHKRe0ZjVb0aYsC1qOspb1qmrFyBtVkYriJLUpjDlNuXQudAgJO1a1ZSUWRvZowlyBObf4CPMo4TwXZN9l0LJP-0AqanSI4a8wUUczl-4fH9495GokNlvtcYgfMzR587p663hIfTG4ifBdjnL9Wx69-x2HSPhuXjsQvrtu7tTxPwMAAP__RcNolw">