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

    <tr>
        <th>Summary</th>
        <td>
            Comparison of add of extended booleans not folded to xor
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            llvm:instcombine,
            missed-optimization
      </td>
    </tr>

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

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

<pre>
    I was looking at [some code that tried to compute a sort of enum scheme by adding booleans, and comparing to constant values which failed to form nice boolean code](https://github.com/RadeonOpenCompute/ROCm-Device-Libs/blob/46939af92ad91238c878a82aad2220822073ffa1/ocml/src/powF_base.h#L64). This is really just an xor.

https://alive2.llvm.org/ce/z/RSnV-d

```
define i1 @src(i1 %arg, i1 %arg1) {
bb:
  %i = zext i1 %arg to i32
  %i2 = zext i1 %arg1 to i32
  %i3 = add nuw nsw i32 %i2, %i
  %i4 = icmp eq i32 %i3, 1
  ret i1 %i4
}

define i1 @tgt(i1 %arg, i1 %arg1) {
bb:
  %xor = xor i1 %arg, %arg1
  ret i1 %xor
}

```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVF2L6zYQ_TXyy5Bgj_z54IfdBEPhwoW29LXI0jjWrSylkrzJ7q8vcu5ms3TpQyFEI-ucmaMZzYgQ9MkS9ax6ZtUxE2ucne-FD2SXbHTqtf8FLiKAce4vbU8gIrDqObiFQDpFEGcRIXpNCqID6ZbzGgkEBOcjuAnIrgsEOdNCML6CUCp5GZ0zJGxgeABh1cYTPp1sTmyIwkZ4EWalAJdZyxkmoc0tyOT8AlZLenezKWHVkWE7x3gOjD8xHBgOJx3nddxLtzAcfhWKnP1-Jnu4qUzfvh-W3ZFetKTdNz0GhsNo3MhwKOuOd2LqUKiuQN7KtmlFi0IoRMxbxLzh0yQKhoOTi2E4BC8ZDmd3Gf4cRaD9zJB_q0uG3R5-n3UAHcCTMOYVfqwhgrBwdX7P8iPLn27_n9ULo18I98a8LHvnTwwHmTS_Jd2_2T926pHK6vznb9sqmrQl0AWwMt-UtcnGSiRHB7hvCoYdsOb5RhvHFH0zIQE0MH6EN7rGD0Yqgeb4iMIvYMUXOL7hhFJg1wvYcEmAm4ckKhmP8HKDa7mcgf6-Q3mCFu84T-8xdfkzE83xMTGfMhFP8X9m4ur8piatn_jv5H_puTr_paB7pTLVc5VeWUZ9UXdYF12Vl9ncl6ps8maUqmkqIYpWCZ53Vd3wYuI5yTrTPebI8xaLAvMq53vJ5VhXOXXdyDtRSlbmtAht7o8n0yGs1NdlW3WZESOZsLU8YkIw_qRtiNIto7bEMFWDIS46BFI7d4560W8iamfTWXXMfJ9ou3E9BVbmRocYPkJFHQ31h1tLB2fTGEg1T9PgGskqUvcBANZFmJxRt9a-Op-t3vT_0cab3tuyO3v3g2RkOGzXS-273fCfAAAA__905G_1">