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