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

    <tr>
        <th>Summary</th>
        <td>
            Improve the assembly sequence for X == Y ? 2 : 1 on x86.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:X86,
            missed-optimization
      </td>
    </tr>

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

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

<pre>
    Compile:

```
unsigned sel(unsigned X, unsigned Y) {
  return X == Y ? 2 : 1;
}
```

I get:

```
  31 c9                      xor %ecx,%ecx
  39 f7                      cmp    %esi,%edi
  0f 94 c1 sete   %cl
  b8 02 00 00 00             mov    $0x2,%eax
 29 c8                      sub    %ecx,%eax
```

We could generate:

```
  31 c0                      xor    %eax,%eax
  39 f7                      cmp    %esi,%edi
  0f 95 c0 setne  %al
  ff c0                      inc    %eax
``` 

saving 5 bytes.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykU11vozoQ_TXmZdTIjIHgBx7aRpH6C2776I-B-NbgXGyitL_-igSy3VW6-7CWZTPynDlnDraK0XUDUcPKJ1buMjWlQxibd_U5JfWuDm5USWU62I_mOfRH54mJR8Z3jK9rxZd5CafhUs9CJM-wvoWvDJ_hFr0xlMC2T1cMwEhpGgd4BSZ2TOzgDZjYAwITj5AzseSx7e4u53V9gY7S78UBiByMhLvjHEZgWJI5M3xePlaUhHZ7H2X647zN-dEtQOtWIG9BFmByiJTommb8eqhr4AicL_Pr6MPpWrXgZ1yqqlUOSjD1fTVx0quaWxsr7q5p_xCYMHkLHQ00qvSHv3s1kH9v4EKufiX_Sw_LmTRSGuiSpm4etu23ctxgvsj5uRv42mNUJzd0UIL-SBQ3mW2ElUKqjJq82lalkEVeZYemkAZtiVzX3BQ61wprW1lVS4N1panKXIMcBce84hKFqDZWcmtyI0vRtiS1ZAWnXjm_8f7Ub8LYZS7GiZqK17zMvNLk4-UhImpl3mmwTDy-1hXD6yXA3sVI9iEck-vdp0ouDPNZucvGZq75oKcusoJ7F1P8wZJc8tS89McxnAjSgUDFSL32HxDpv4kGQ9CG8Zv3B2GAc11tsmn0zSGlY5wvCe4Z7juXDpPemNAz3M90y_ZwHMO_ZBLD_aXDyHB_afL_AAAA___okCdx">