<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">