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

    <tr>
        <th>Summary</th>
        <td>
            Wrong canonicalization of `select` for a vector of poisonous values
        </td>
    </tr>

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

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

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

<pre>
    https://github.com/llvm/llvm-project/blob/33363521ca24f912cc25530f6cecbca53acce8a3/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp#L1043-L1049

Alive2 report: https://alive2.llvm.org/ce/z/fqZFy9

```llvm
----------------------------------------
define <2 x i32> @uadd_sat_not_ugt_commute_add.2(<2 x i32> %x, <2 x i32> %yp) {
#0:
  %y = sdiv <2 x i32> %yp, { 2442, 4242 }
  %notx = xor <2 x i32> %x, { 4294967295, poison }
  %a = add <2 x i32> %y, %notx
  %c = icmp ugt <2 x i32> %y, %x
  %r = select <2 x i1> %c, <2 x i32> { 4294967295, 4294967295 }, <2 x i32> %a
  ret <2 x i32> %r
}
=>
define <2 x i32> @uadd_sat_not_ugt_commute_add.2(<2 x i32> %x, <2 x i32> %yp) {
#0:
  %y = sdiv <2 x i32> %yp, { 2442, 4242 }
 %notx = xor <2 x i32> %x, { 4294967295, poison }
  %r = uadd_sat <2 x i32> %y, %notx
  ret <2 x i32> %r
}
Transformation doesn't verify!

ERROR: Target is more poisonous than source

Example:
<2 x i32> %x = < #x00000000 (0), #x00000000 (0) >
<2 x i32> %yp = < #x00000000 (0), #x00002041 (8257) >

Source:
<2 x i32> %y = < #x00000000 (0), #x00000001 (1) >
<2 x i32> %notx = < #xffffffff (4294967295, -1), poison >
<2 x i32> %a = < #xffffffff (4294967295, -1), poison >
<2 x i1> %c = < #x0 (0), #x1 (1) >
<2 x i32> %r = < #xffffffff (4294967295, -1), #xffffffff (4294967295, -1) >

Target:
<2 x i32> %y = < #x00000000 (0), #x00000001 (1) >
<2 x i32> %notx = < #xffffffff (4294967295, -1), poison >
<2 x i32> %r = < #xffffffff (4294967295, -1), poison >
Source value: < #xffffffff (4294967295, -1), #xffffffff (4294967295, -1) >
Target value: < #xffffffff (4294967295, -1), poison >

Summary:
  0 correct transformations
 1 incorrect transformations
  0 failed-to-prove transformations
  0 Alive2 errors
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcVl2L6zYQ_TWTF5Egj-Q4fvDD3s0GCoXC3guFvgRZlhMttuVKcprcX18sO9l87SVbbh9as3hjWefMOaPJZIRzetMolUH8BeLlRHR-a2yWm2bz1jVvk9wUh2zrfeuAPQGuAFcb7bddPpOmBlxV1e74b9pa86akB1zllckBV4yxOYsxkgJ5mUYoJcYxo-VcKplLETMhpVoIdsaje9w3KxpXGls7wNUvjfPPps51oy6fvqpKST-TbQvIfo0oZ9P-ngJdAn0a7k-V3ikkVrXGemBP5NKKCK9nffCZsRvAleyDfAdclX_-sTpccMGcDn9Ba1iaPngNuwtV6kYRYM9I9kQzBPZCgNNOFMXaCb9ujF93G7-Wpq47r9aiKGYIuLhCYLwHfL7mwfjQAqYEki-jXmS0dxoeSNhAgC2JK_TuPvi5BxPkHPvPHDkSSJZnBI3x-8CxN_aWYn9k4JjydJ5gGvcrrdHONFdMItCIorijJNAMwc4QMiC0rFvSbfzHsHOMHQyHQjkhohEg7yTxRvz7UzBwL-3iGNCqO7LseBhH98CWwF7-DwXxU-thOKmj8ceK4qF8n3qJ8No0pDDKNYCJJztldXkAjM6_4y-vr7-99n3im7Ab5Yl2pDZWjZpN54jfioY401mpLoB7UbeVOqX3NhnBILDeBdvT8SKACwqYDu5u18mpVu6cz8OMSHnUry8wTi5Jw_3r4OZD6YfPSA-Boh9LP5XNkbMcrx57WSzTaAxxrJoPScXPYjz1h0vb134fMWo_q-mBbdenN1Tqf_30Pp2pa8ahiMlOVF1fyv9a0sfG8E_i3CRhEN7VtbCHs8ZMiTTW9j9Z_qJ5uXFDRHTz4x2EklLoShVTb_qxbKc-3jiOSMpaY93VpDMpMlakLBUTlUUJpglbRItkss3yuFCKJTyROU9YIrlclDQq2QKTPOU8megMKfKIIqfIU57MinieFmmacIl5TuMEOFW10NVp-Jpo5zqVRRGLo3hSiVxVLkyliI36i4S3gNgPqTYL82bebRxwWmnn3TuN175S2e_WNBsiRWMaLUWlvw_t35QE5nQYCGBOSWksEWSnpDe2f_ne58MBu0lnq8-Pv0FrP7uOZnYZ_h0AAP__eHf9pQ">