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

    <tr>
        <th>Summary</th>
        <td>
            RISCV32gc code gen for if (a > b && c > d) has too many xori
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          apinski-cavium
      </td>
    </tr>
</table>

<pre>
    ```
int g(void);

int f(int a, int b, int c, int d)
{
  if (a > b && c > d)
    return g();
  return 1;
}
```
Produces:
```
f:                                      # @f
        slt     a0, a1, a0
        xori    a0, a0, 1
        slt     a1, a3, a2
        xori    a1, a1, 1
        or      a0, a0, a1
        bnez    a0, .LBB0_2
        tail    g
.LBB0_2:
        li      a0, 1
        ret
```
But the xori is not needed if beqz is used instead. Even if it was needed, there should have been only one as it can be gone after the or instead.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyNUk1v2zAM_TXyhahhy1_xwYemaYEBOwwbsOsgW7KtTbEySU6X_vpRSjynQVtMEESKfHwkJbaanxpSJped7EhyLycHA6Gbo5ac0Jpk27N99fbo9ZIR-gBeaRelW5QQeQ6rLvEAsgeMZECyR2hRLXFDF64rHnAZ4WYzhSquK_jnSNeiqt1Fed3EF6P53AlLsvs3_T064L8WoRmQPOnX6vyyygXJEt8xS8OZvMb80UZeYcKZvkNzJsjCSd-hSddUNzTaANxmYjeYdhIvKyb-vN0mP24yOSaVl8PZvGCWJ1xgSl5nu0mDP_Tmg29nB24U526khUk7mITggvuxaMXvF2-drb9P1gnGY3g8isl7pYNnZi9wnxOJjAA76llxGNlRIAFC9aROeAhAMMZ0bEI7DMHSO2FCAfhWS4JINGlZpnST50UV8SbjdVazyEmnRPP107eH7xkdOug0Rxbk733sxzOM1VhwWsOeTafQbDQb1YzOHcIs0ifcg3Tj3Mad3uNFqeMi7g5G_xSdw6u0dsbppU9FldEkGpu-LGhedZzWKU9yWvvddqISCc843ZSRYq1QtiHFllA6iWcIFKiTYhfJhiaUJhuapXWRp1Xci1z09aZgacVZXjKccLHH7499HbE2Q2SaUFI7DxadSlpnVyezVg74HyEd8rPZjdo07IBP-0vedewo530UKmhCB38BV8wv3w">