<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/124738>124738</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Vectorization. Reduce with min seems weird for floats (with ffast math)
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          DenisYaroshevskiy
      </td>
    </tr>
</table>

<pre>
    I'm looking at (with -march=haswell -ffast-math)

```
float tst(std::span<const float> x) {
    return std::reduce(x.begin(), x.end(), x[0], [](float a, float b) {
        return std::min(a, b);
    });
}
```
https://godbolt.org/z/1EjWG4x6f

The codegen does a lot of shuffles. I'm very confused by that

In eve library the main loop is just:

```
.LBB0_21:
        vminps  ymm0, ymm0, ymmword ptr [rdi]
        vminps  ymm3, ymm3, ymmword ptr [rdi + 32]
        vminps ymm4, ymm4, ymmword ptr [rdi + 64]
        vminps  ymm2, ymm2, ymmword ptr [rdi + 96]
        vminps  ymm0, ymm0, ymmword ptr [rdi + 128]
 vminps  ymm3, ymm3, ymmword ptr [rdi + 160]
        vminps  ymm4, ymm4, ymmword ptr [rdi + 192]
        vminps  ymm2, ymm2, ymmword ptr [rdi + 224]
        vminps  ymm0, ymm0, ymmword ptr [rdi + 256]
        vminps ymm3, ymm3, ymmword ptr [rdi + 288]
        vminps  ymm4, ymm4, ymmword ptr [rdi + 320]
        vminps  ymm2, ymm2, ymmword ptr [rdi + 352]
 vminps  ymm0, ymm0, ymmword ptr [rdi + 384]
        vminps  ymm3, ymm3, ymmword ptr [rdi + 416]
        vminps  ymm4, ymm4, ymmword ptr [rdi + 448]
        vminps  ymm2, ymm2, ymmword ptr [rdi + 480]
        add rdi, 512
        add     r8, -4
        jne .LBB0_21
```
https://godbolt.org/z/7hqYTcxEo

Is there a reason that's not what reduce (with ffast math) does? On the first glance I'd expect it to be OK. 
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJykVU2P2zYQ_TX0ZWBBHEq2dNBhnV0XQQsEKIIWORWUOLK4kUiXpPyRX19QcrabjZ06KCBAlGceh-8N_UZ6r3eGqGL5huWPCzmGzrrqkYz2n6SzvqOD_6zPi9qqc_We4XqA3trP2uxABmBYHHXoYDlI13RMPHbSH6nvYdm20oflIEPHsGTpQ3xW6eVJH9reygDBB4aFD4qJByYe_F4aJt411vgAUwYTT3BiWAJbb1j6AADgKIzOwAvIkRobYlickpp22jAsYkV8B6eEjHr1yfJNyvLHuJ7ZMizmc8j427ysv612reIwFZkwMZuJr8ls_fjyHdffUu5C2Pu4A24ZbndW1bYPiXU7htsvDLf86fnPX7LTqp3V-tgRNFbRjgwoSx4k9DaAbcF3Y9v25BOY-3Egd4bGmnb0pKA-Q-hkmDd5b4AOBL2unXQxQDBIbWIL96A9PI8-xCN915_kt80m_Qv5HPyqxGHQZu8BzsOQRvqv3kfrFOyDi9I6paO6V3Hiki-u44DhBgRehZ-HIbugsh-gV9nN4niB4Q_g5eom_D84T3COxQX_k6T5Kr1Z-B7avLyu2r28EW_rdg9xzK8Ldyd9LIr_RV_gbfnuoS9y_L5v9_AWxW3d7iGe8dsX7h7iWXZbuHuIZ8Ub4aRSEP_B-A5yjm8Ckx8WMbbMXoWeDcGLZfyc7a27vz99bE5P9uJYPrqUI5DgSHprZjfDtQdjAxw7GWC2_JfhM40auIyaySuZ2MIHM9ldq50PsOulaWjySwV02lMTQAcIFmqCD78msFCVUKUo5YIqvhZFulpna7HoqixrVa6IZ4LXK1lKrvKm5UXZcCEpJ7HQFaaYpxwLjoJznqgaeS2zsihbquVKsiylQeo-6fvDEIkvtPcjVRyztSgWvayp99P8RTR0hCnKMF7HhasiaFmPO8-ytNc--H-3CTr0VP1BTbBOf5FBW5PA77M2kzCDNuCJBg9H0k5Ba9085fx17Raj66s3_dKhG-uksQPDbax8eS33zj5TExhup_P6OMBmQocK_wkAAP__YKRz7w">