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

    <tr>
        <th>Summary</th>
        <td>
            [x86] `uitofp` gets scalarized in x86 backend for `half`
        </td>
    </tr>

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

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

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

<pre>
    Converting `<64 x i4> -> <64 x half>` results in scalarization of the operation:

`llc example.ll -mtriple=x86_64-pc-linux`
```
define <64 x half> @main() {
 %int4_p = alloca <64 x i4>
    %int4 = load <64 x i4>, <64 x i4>* %int4_p
    %fp16 = uitofp <64 x i4> %int4 to <64 x half>
    ret <64 x half> %fp16
}
```

When doing this for `<64 x i4> -> <64 x float>`, it does not get scalarized:
```
define <64 x float> @main_float() {
    %int4_p = alloca <64 x i4>
    %int4 = load <64 x i4>, <64 x i4>* %int4_p
    %fp16 = uitofp <64 x i4> %int4 to <64 x float>
    ret <64 x float> %fp16
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMlE2PozwMxz9NuFit8gIpHDg8M53envMeR4EYyG6aIBJm2f30K6C0085o9roSCsLY_9j-WVYhmNYhliR7ItkxUWPs_FD-ryZWsKTy-lf57N0bDtG4FoikRDzLFCYwKREvsJuPzdQp2xDxQiSFAcNoYwDjINTKqsH8VtF4B76B2CH4HofFQMR_hB4J3U5Jra0BJ3XuLe6thd05Dqa3SMRxyuWrTHd9vbPGjdOczBZ0eZZPjY1x-JgVkJSelXGE54QXQA5PqzcQnhkX09ceiDiCstbXCu6qvDgCbL6Lp_VKP_jx50fDO_k7laZnclEZTfRNfx92vSb6D729igwYP5a4Cl-6cjh-2p71_NahA-1nqLEzARo__IVuY72KK965UBNBewzgfIQW4xUz6hvSL7lsehuY19XwiOfW9X-c0LU_nyK6Vfs1o0SXQheiUAmWTBYiYzSjadKVjPIqTRvMtKgyFEXGK8a4OmiudaW0TEzJKRc0F4wVIqPpfg44VIIX-YFVOStISvGsjN1b-3be-6FNTAgjljJjGU2sqtCGZQ1w7vAnLD8J5_NWGMo5ZleNbSAptSbEcFOJJtplf0y5JNlxHqO1Z_MiaDGGd7MxL4Qpl1Cp-gc6vY3dMsCSJuNgyy7GPswzxE-En1oTu7Ha1_5M-Gm-8vLa9YP_jnUk_LQkGgg_LYX8CQAA__8Q91Xf">