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

    <tr>
        <th>Summary</th>
        <td>
            SDAG doesn't handle signed zero correctly when folding select -> {min|max}num
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            llvm:codegen,
            miscompilation,
            floating-point,
            llvm:SelectionDAG
      </td>
    </tr>

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

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

<pre>
    Reproducer: https://godbolt.org/z/sqYqK8vd9

```
; llc -mtriple=riscv64 -mattr=+f test.ll -o -
define float @test(float %1) {
entry:
  %2 = fcmp olt float %1, 0.000000
  %3 = select i1 %2, float %1, float 0.000000
  ret float %3
}
```
```
test: # @test
        fmv.w.x fa5, zero
        fmin.s  fa0, fa0, fa5
        ret
```

When `%1` is -0.0, the former returns +0.0 while the latter returns -0.0.
`SelectionDAGBuilder::visitSelect` incorrectly refined the select (always returns +0.0 when the input is -0.0) into `ISD::FMINNUM` (returns either 0.0 or -0.0).
Related code:
https://github.com/llvm/llvm-project/blob/a4a436672a2c179274e07aeb68e9acd6f483a653/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp#L3718-L3754
 
cc @topperc @arsenm 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVEuP4ygQ_jXkgmJh8PPgQ9Jet0Y7M4dprVZ7JFBOWGHwAE4_fv0K4qTTvXMZK4IUfPX4iqri3qujAehQuUdlv-FLOFnXySBe3l6fNwcrX7sfMDsrFwEOsR0-hTB7xHaIDogORysPVofMuiOiwxuig__5z88_m7NsEekR2a1rRdbfRWR7rLXA2yk4NWtArHfKi3NV4O3EQ3CI9YjuRxzAh0xrvLV4e1GVMCoDeNSWB4wKEhGINqtMyxzRFqN6f0GDCe41BpskHAEUI9bjUUwztjrge8UHTDKSvjs8S3gPGkTAKk8mIvSj4kX6rO7gzgFbudf9r3PyUUy82A4jym40V6uXb5zO2XP2gkdexgDewNnPAGUyj_HISYrwupUfYQ7Cr-NJ698nMDieRZ4VwcrjLcmSpXACPFo3gYs2Fmc8RnRPMoKfT0pDutc8hLv7qJrdvD2lnCpr-t3jflFapgJDbHdWXoXLbfJphHUORNCv2KXnl8n4-iaINlw_81f__zDAJKAy8xLeQ2-xMsFGVl-e-ovH4duX79__-ha9Idpc7YAKJ3DxVbF1V-U1_h-geQCJhZVwK7BPvaHCaTlkwk6IDlqfr9t2dvbfyI0OB20PiA684AWrqppyKvK6pXUBpOZwqBpouZDVWDSMVyW7s6Oi3oOV8AgG0eE-l5_ENbWZmGdE2VdW5832K6vLYq2DyyZEKjM7z-DSX-48mAlvZMdky1q-gS6v86pmZVGzzamTrThQSRtgLeRVU1ZUlEUr8rJkOakaulEdJbQgJa3yoqxLluUSinIUMpdlwQQRqCAwcaWzyClOkI3yfoGuZUVebDQ_gPZpLlGaWLNdTPYx8o0diCidlBd2mpXmkevtOLWcMsftbJUJt-PVyMdU0Tj1XJfe5bAcPSqIVj7496CCChq6p373iKUFbxCtAz5xIzXgNDxlaj78XqSp8EarpTLHa5VuEfsjzqVJGVQ_TPwF1b1Zps3idPfbZZPy5BEdLqk6d_S_AAAA___BObMt">