<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/86076>86076</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
possibly missed fold, unnecessary splat before interleaving merging two scalars
</td>
</tr>
<tr>
<th>Labels</th>
<td>
llvm:optimizations,
missed-optimization
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
zhengyang92
</td>
</tr>
</table>
<pre>
https://godbolt.org/z/ah1vGWTqK
https://alive2.llvm.org/ce/z/oe-Gbc
```
define <16 x float> @src(float %0, float %1, i8 %2) {
entry:
%3 = insertelement <8 x float> poison, float %0, i64 0
%4 = shufflevector <8 x float> %3, <8 x float> poison, <8 x i32> zeroinitializer
%5 = insertelement <8 x float> poison, float %1, i64 0
%6 = shufflevector <8 x float> %5, <8 x float> poison, <8 x i32> zeroinitializer
%7 = shufflevector <8 x float> %4, <8 x float> %6, <16 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11, i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
ret <16 x float> %7
}
define <16 x float> @tgt(float %0, float %1, i8 %2) {
entry:
%3 = insertelement <8 x float> poison, float %0, i64 0
%4 = insertelement <8 x float> poison, float %1, i64 0
%sv = shufflevector <8 x float> %3, <8 x float> %4, <16 x i32> <i32 0, i32 8, i32 0, i32 8, i32 0, i32 8, i32 0, i32 8, i32 0, i32 8, i32 0, i32 8, i32 0, i32 8, i32 0, i32 8>
ret <16 x float> %sv
}
```
Is this some kind of canonicalization? From the generated x86 code, tgt seems have 1 less instruction but introduces a new constant.
@nikic @dtcxzyw @regehr @topperc
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVU2PpDYQ_TXmUpoW2Hw0Bw6z08sqyjVSzsZUg7PG7rhMz3T_-sg0Q3o2k2SUrJRICMrPVfXK5pUtifRgERtWfGLFIZFzGJ1vriPa4SLtUPOkc_2lGUM4EROPjLeMt4PrO2fCzvmB8fbKeCvH7Pzl559-_ZGlB5Y-vnWXRp-R74w5T2uIwjXO4cOXTt2C1neZrs8y7PGoLQITT1kJL3A0TgYmPgPLU_KK8f2CAONFyvgTbKMsjvQ-mpzxGlj16ZYQbfCXWNoygugggIkDaEvoAxqc0IZIuL_nOzlNzr6hWAh1mUN6lytfctE4H48Gz6iC83_IFSlj7J9zrDNa8Ihf0TttddDS6Cv6O7bin1WevVd5-bHKi-9TefUxtvw9tljsii-iWMmYeNKCw-23CA77VyN7NepXg29Tm7fYoM0936DNv9igzb_coM2_2qCCic-vq_YY3tExL6pV-NXhvg_-QvhhCP9X4X8fKdL5X3TRnWo-pI7_CPl7XdD5W2G8PRpv7x8IwqgJyE0IX7XtwR1BSeusVrHrZNDOMtFC690EYUQY0KKXAXt42ZegXI-xqjAEIMSJYJRnhAwMEsX_GfysYg7o5gDaBu_6WSGBBIvPoJylIG3YvTnD89Tqr1pFsfZBvVwvz9H0OODoFwW70wm9gqRvRF-LWibYZFWW1rWoC5GMTVmrPOWy2isleolHVGVd4F6mvaww5X2iG57yPBU8S0VR5GJXdiVWhZB12WHRFZLlKU5Sm-3aSTTRjM2-TKsyMbJDQ8utx3n0YOLRnYKe1g0jxmPPM84nTYT9w_1knCsOiW9i4EM3D8Ty1GgK9DtZ0MFgc3JEujMXuGWBozN93OzZWlRIJP0F6GRkgA6PzmPcX_QG5VnbASb0Q_yGZwekpJGektmbby9jHca52yk3Md4uS7l9Hk7e_YIqMN4uKyfG22XxvwUAAP__lB1CXw">