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