<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/129056>129056</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[X86] Failure to merge PINSRW insertions
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:X86,
missed-optimization
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
RKSimon
</td>
</tr>
</table>
<pre>
```ll
define <16 x i16> @ff(<16 x i16> %x, i16 %s) {
%i0 = insertelement <16 x i16> %x, i16 %s, i32 0
%i1 = insertelement <16 x i16> %i0, i16 %s, i32 8
ret <16 x i16> %i1
}
```
llc -mcpu=x86-64-v3
```asm
ff: # @ff
vpinsrw $0, %edi, %xmm0, %xmm1
vpblendd $15, %ymm1, %ymm0, %ymm0 # ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
vmovd %edi, %xmm1
vpbroadcastw %xmm1, %ymm1
vpblendw $1, %ymm1, %ymm0, %ymm1 # ymm1 = ymm1[0],ymm0[1,2,3,4,5,6,7],ymm1[8],ymm0[9,10,11,12,13,14,15]
vpblendd $240, %ymm1, %ymm0, %ymm0 # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
retq
```
This should just perform the vmovd+vpbroadcastw to transfer %edi once
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyUVNGOqzYQ_ZrhxUpkj8HAAw8EGqmqVFX3VmpfDZjEWwOpbbLZfn1llk2ym121V0IwZuacOXMMls7pw6hUAckOkjqSsz9Otvj2y3c9TGPUTN1LAYK-XsYALTvV61ER4BUT5EI0E8B_IhDTvgfMPr7G5AJYhWWIHWBOIN0BLUlYa0qA10SPTlmvjBrU6B-YHygqojkSeiVh_4tE089YsoXFqk8RDGgJaR3ubxYALY1pyWZoTzPw-pKJjYg3Z35fI90AtOx74CUB5Ks3oc_5pEdnnwlgvKgBTFSn1-gyDPQWshXQGDV2XUCwZM2-hOw1pHfh0u414DVZ6pJdKAj1CFhxSGrAaoEluxiwCqQCsEpDZmk5TOfuQdlVjp1k10rnn6-JO1F3kpch2X8pZm-K2XvF9ypv2rF6ULxUBUz2DpOHmZfBA5oFOAt4FghYcp31zt7blvyAv_RLf9kX_lrl__7wQf1-1I644zSbjjzNzpOTsv1kB-KP6nU7AHfvrPcT8VaOrld23Skyja0iUVfwLue5jFTB0pgKwZM0jo5FxjrJmMrbVgrRdzJXmMpcCM5ykWW8i3SBFBOKmDLOcx5vmyZTyDHLRMtT5BJiqgapzdaY87Cd7CHSzs2qYJjTRERGNsq45RRBbGT7lxo74OWfmQAMxgDioJ1T3WY6eT3of6TX0xhySR3ZIpBumvngIKZGO-9ubbz2ZjmeAldSk73UZrYqeDAoe1Dkt59__f7tj_X_19Pootma4uj9yQEvAfeA-4P2x7nZttMAuA_U62NzstOTaj3gfhnHAe7Xic4F_hsAAP__4RVmRw">