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

    <tr>
        <th>Summary</th>
        <td>
            select -> fneg/copysign propagates nsz incorrectly
        </td>
    </tr>

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

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

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

<pre>
    Test Transforms/InstCombine/select.ll, fn copysign2:
Simplified without vectors:
```llvm
define float @src(float %x) {
%0:
  %i = bitcast float %x to i32
  %isneg = icmp slt i32 %i, 0
  %r = select nsz i1 %isneg, float 42.000000, float -42.000000
  ret float %r
}
=>
define float @tgt(float %x) {
%0:
  %1 = fneg nsz float %x, exceptions=ignore
  %r = copysign float 42.000000, %1, exceptions=ignore
  ret float %r
}
Transformation doesn't verify!

ERROR: Value mismatch

Example:
float %x = #x00000000 (+0.0)

Source:
i32 %i = #x00000000 (0)
i1 %isneg = #x0 (0)
float %r = #xc2280000 (-42)

Target:
float %1 = #x00000000 (+0.0)
float %r = #x42280000 (42)
Source value: #xc2280000 (-42)
Target value: #x42280000 (42)
```

Dropping nsz from `fneg` makes it correct.
https://alive2.llvm.org/ce/z/tNATrd

cc @rotateright @LebedevRI
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyVVFFvmzAQ_jXmxWpEDCTkgYe2tFKlaZPSau_GGOLNYGSbNOmv39lQIGvWbYgEjL_77r7z3RWqPGcv3Fj8omlrKqUbg8jjU2vsvWoK0XJYGS45syspEbnHVYuZ6s5G1C1B0S0KcxTePoumk6ISvMSvwh5Ub_ERTJQ2EwRtwuGW8tgMn0pegQNcSUUtRnFoNEMkHZckOSGyw2h7N9qTJJzIsNsXGEU5LoRlFOKfzbBVWERkiTQtrz1asKbDRloH8DtOUriAag8bFOPWvGGxnhi8fO8mJqvQX_Onm_nbyKb5Iio9qtjm40uUo-jheh5sbf8nD2sfcuUkuoCXdveYnxjvrFAtnEQOZ6Y0_6D2_TyviXP8f-H5VOdUVtQZ41Jx0yKydfWhRXVGZD0a-P-H_f7bHtTh71T2HDfCgB07XEBOFGqNTylYnLvTgkh0CscLFikid-EKlOyWHM-q12ymeK-FqwSz7aISZuQlZE7DhGAEACMX1MhvkbxQXXP7Ucz6X8Rc8RYvvC2cDYLx0WXVpfezwIaQLrF_oJ16eikp16rrRDsWo1YNBoCrTnjghv7kBgsLNae1GyqDzcHazo8K8gg3leLIycoNipXS0HaPzI2hN_jZr1BR5dIdY65ltLLUQkXVB99BX3jBS37cPwVlFpW7aEcDK6zk2djYN9B7vmMc93v1dxA4rYHGDI3fjjHKc9BrmV3GWMOY64sVUw0s_EgbHjfA8gOMYCmM6bmbpkkcbrfBISuSTbVbw5UUJdskcZpuWJkUKU93nBY7FkhacGkylNwhQlr-ij0FvKMkD0RGQuLuZB3G2yRdVWvGt2VYbUhaxO5Y4pA3VMgpcYHOfEhFXxvYlMJYM29S41Rz7t0BP-1hcOus7VvVSdVxE3jvmY_-FyoavrY">