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

    <tr>
        <th>Summary</th>
        <td>
            Missed Optimization: fold disjoint bitwise ORs (with select/zext i1) into a single constant select
        </td>
    </tr>

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

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

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

<pre>
    ```
define i8 @src(i1 %arg0) {
  %v0 = zext i1 %arg0 to i8
  %v1 = select i1 %arg0, i8 0, i8 8
  %v2 = or disjoint i8 %v1, %v0
  %v3 = or disjoint i8 %v2, 16
  ret i8 %v3
}

define i8 @tgt(i1 %arg0) {
  %v1 = select i1 %arg0, i8 17, i8 24
  ret i8 %v1
}
```
alive2: https://alive2.llvm.org/ce/z/vSQli0
godbolt: https://godbolt.org/z/543Mvx7MG
Pattern Found in: https://github.com/dtcxzyw/llvm-opt-benchmark/blob/main/bench/llvm/optimized/CGExpr.ll
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx8k9tu2zAMhp-GvhEaSPQxF75I27k3K7rDE8g2nbBTpMBSDs3TD3K8pOi2AkFsix8PP0Vq73ltiWrI7yF_TPQ-bNxYfyUnc1kkrevfaijk_JOrnga2JLgSkEk_doAVKwGY63EtAZcCynuQKxGPDlJA-ijOdAriBongBFdXRk2MJ0PdewrwISb587zxOPFuFD37V8c2TLXEQBGdsl7Z9H8sRlYVEzjS9TgFuYLyMf5_UBrW4VOln6tQ5fyC2ceU6pbyXZe14QMhpCuxCWHnIV0BNoDN5XxhzGG7cOMasOkIsDkDNoef3w1H37XrW2fC386zYXaMPnmWPh9O5fMTyNU3HQKNVjRub3vB9h_-HDb7dtG5LWDTh-50fjsCNrGYO7cLdy3ZbrPV4y_ApjWuBWy2mm38ipYZBWzcLvCWz9QDNg9PX067cWFM0tdpv0yXOqFalYVMlSxLlWzqvCoKnSskwqzKh6pMh6HFoSpUV1KKOuEaJeZKKsRUYa4WWVZqXVXDkHW6L7olZJK2ms21bwl7v6daFamSVWJ0S8ZPC4Bo6SgmKyDGfRjrSV-7X3vIpGEf_C1M4GCofmbvqRcvF1U6sJuaNzjT3wav5XBkT-LlhxeA1ZHDZh6XeBeXDYlDxTY4oYVnuzYkOmd90DbMaLIfTf3Jpcz9nSreje71En2S4wGbWe-hxt8BAAD__9ZLLQg">