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

    <tr>
        <th>Summary</th>
        <td>
            Suboptimal instruction sequence when operands are reordered
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:RISC-V
      </td>
    </tr>

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

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

<pre>
    ```c
int foo(int t) {
    return t - (1 - 5 * t);
}

int bar(int t) {
    return t - 1 + 5 * t;
}

int baz(int t) {
    return t + 5 * t - 1;
}
```

riscv64-clang -O3
```
        .text
        .attribute      4, 16
        .attribute      5, "rv64i2p0_m2p0_a2p0_f2p0_d2p0_c2p0"
        .file   "example.c"
        .globl  foo                             # -- Begin function foo
        .p2align        1
        .type   foo,@function
foo:                                    # @foo
# %bb.0:
        slliw   a1, a0, 2
        addw    a1, a1, a0
        addw    a0, a0, a1
        addiw   a0, a0, -1
        ret
.Lfunc_end0:
        .size   foo, .Lfunc_end0-foo
                                        # -- End function
        .globl  bar                             # -- Begin function bar
        .p2align        1
        .type   bar,@function
bar:                                    # @bar
# %bb.0:
        slliw   a1, a0, 2
        addw    a1, a1, a0
        addw    a0, a0, a1
        addiw   a0, a0, -1
        ret
.Lfunc_end1:
        .size   bar, .Lfunc_end1-bar
                                        # -- End function
        .globl  baz                             # -- Begin function baz
        .p2align        1
        .type   baz,@function
baz:                                    # @baz
# %bb.0:
        li      a1, 6
        mulw    a0, a0, a1
        addiw   a0, a0, -1
        ret
.Lfunc_end2:
        .size   baz, .Lfunc_end2-baz
                                        # -- End function
        .ident  "clang version 16.0.0 (https://github.com/llvm/llvm-project.git 06c02d5dbb13f6d2a10eaa75c236f3c61cdf5b91)"
        .section        ".note.GNU-stack","",@progbits
        .addrsig
```

In the last case mulw is generated.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzVVU2PmzoU_TWwsUC2CZAsWMxH31OlqpVatdvK2BfiVwdS28x08ut7DZNMJkzTTKUunoX8gU_Otc895Na9eqiigk6PjOhtRK9050nT9xFfhpmP-IpE5fW0R7BZ8IPtiCcJQQzDIcfJ1YiMskdgVN4-Tg6ctbCXcDIkuz5QnuXb_Z7viCtwv8C3v_0xvdVO3hWLRBrRtST5kL2IJY8t9fDDn7wS3ltdDx6m9SLiN4QV50F5AEWcWwyt-ZZ-3YROhK4JnQqdxA4xJ0yNNoEEN-CH2GwNpHIOak1fGxJyS861iGckScg1tLojzdBJr_tudMRzui0XRrfdfs1ORXnYhiONTrqJFnTPNMHC6-yKXNDCccLP9_HHNc_rOqXI8DyoM0bf4yhYkFLQ0J-oIJS6J0-QPfBlDH2iEWyGmUIdYZITDLpwepG-C7f_Cp2anzl1evckFDmCJjPNL9EKU_emU-S53Idgjx7Ab_ESohMPhC_4TzwwfvlzD4TXr_LAIf7_2wPslx6YhDryAEtmml-i1YUe2F1CNPPA7g89sHvZA7vXemD3ew8YPY1Tak_-djeD-VuZ5Wcyu3ueWZ7MlLxEgfOZ1QqwHIYyMFWuO7AuJI0VKU1pKNdr77cunJL_g0-r_XqoU9lvcGHM3X5Itrb_D6RPEUBoISlXuaprljWF4oJREKLMJc-KJpMFk6rJ6xUL5X9WcxxMtjlcgadd7yH99_3nxHkhv4WfoC9CzyeDYOy21t6dFkul8DLtmar9Fgv-GogRzhMpHEyZ1o600IEVHlQaQ8WKgq4W5aosYlVlapWtROy1N1B9Gup-6_VGGKI75-0wHd3B9wE6CeR-DR3pt0jVKUeEBbRAbxVYUPFgTfU6bXGpnRvA4SQveZ7H64rJhmU0X2RLzhkVNYdCLLOypNAIKsosNqIG46oov0a5apQPnYQRP779dJN8CQrmt7GuOOWcLtmKc15g6hd5tpSrspGqzlReCtQYNkKbNBwn7W0b22o8WT20DjeNdt49bQqHsncAY1TkF4Nf97ZaayuU9g8iHq9RjXf4CW2nnTM">