<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/104848>104848</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Superfluous instructions when using `_mm_set_ss` with `-ffp-model=strict`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
jerryct
</td>
</tr>
</table>
<pre>
When using the intrinics `_mm_set_ss` with `-ffp-model=strict` compiler flag
Clang generates two seemingly unrelated instructions (neither `eax` nor `xmm1` are used by `andps`)
```
xor eax, eax
cvtsi2ss xmm1, eax
andps xmm0, xmmword ptr [rip + .LCPI1_0]
```
reproducer: https://godbolt.org/z/3fj6ob345
For example when switching to `_mm_load_ps1` instead the instructions
are not generated: https://godbolt.org/z/8G6vGEjxE
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUU0-Pmz4U_DTmYiUy5k_gwGF3s6x-0u9QqYceI2M_wJGxkZ8JST99ZZLtttUeWgvZen4wM8zYAlEPFqAhxTMpjolYwuh8cwbvbzIknVO35tsIli6o7UDDCFTb4LXVEikp2WmaTgjhhEhKRlcdxri76_t5NzkFhmRHDF7LENvSTbM24GlvxEDYkbCnFyPsQAew4EUApGF1FAEmbQdzo4v1YEQARbXF4BcZtLNICa8s6DCCj2QgrhHcuq26TlMaS-GBLgiKdre4Layao0TC6zvxYy7Z49lKenWexhEx-cu23BuPIS8BNUd8rze2z17c-GKbxfZ1mlbnFZ2Dp6R49nqmhD_T_f8vX_5LT4wUx0_l3GcPs3dqkeBJ9kTHEGYk2RPhLeHt4FTnTNg7PxDefie8zfpz6bosL36FaJ2ncBXTbICuMU1cdZDjlqh7j9E4oU4zbu5Fu0GoR94f1t_horfWhZ-xqb8RVr2Vl7fX8_U1UU2m6qwWCTTpgeesrqoqS8amY6woDgIOwPKeZ13eq4qVvZISSlWxPtENZzxnVVpzxlOe7VOuapDyUOfpIa2ZIjmDSWizN-YyRe5EIy7QpCyv8ioxogOD21Hn3MJKty7hPJ5838SPdt0yIMmZ0RjwAyboYKD5uszge7O4BX8_kOvHDfnHO5Es3jR_WKfDuHR76SbC26jgsexm784gA-HtphsJbx8_dmn4jwAAAP__v_0vxg">