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

    <tr>
        <th>Summary</th>
        <td>
            RISC-V: clang generates bcmp for memcmp for small comparisons
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

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

<pre>
    As per the presentation by @asb memcmp should be generating `vmsne` https://blogs.igalia.com/compilers/2025/05/28/improvements-to-risc-v-vector-code-generation-in-llvm
?

```cpp
bool equal(char* dest, char* src) {
    return memcmp(dest, src, 16) ==0;
}

/*
*/
```

but on latest clang
$ clang -march=rva23u64 -O3

```asm
equal(char*, char*):
        addi    sp, sp, -16
        sd ra, 8(sp)
        li      a2, 16
        call    bcmp
        seqz a0, a0
        ld      ra, 8(sp)
        addi    sp, sp, 16
 ret
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx0U02PozgQ_TXFxSJybEPgwIHuKNKeVtqV9u6PCnhlMG2bSD2_fmQg6kxrBiFXgZ-r_KrqyRjtMCN2UL1BdS3kmkYfutEGaWz6lIXy5rPrI1kwkDQiWQJGnJNM1s9EfRIQVEZFJpz0tJA4-tUZopAMOGOQyc4DgZo-pjgj1JSMKS0ReA_sBuymnB_iyQ7SWXnSfgJ2035arMMQgd0YZRWwG80La4Dd7LQE_8AJ5xTL5Mtgoy4f5QN18qHU3mD5zOvn0s6lc48JaA_8llfaQ033Vy8L0F557wh-rNIBa_QoA7CeGIwJ2Dt5fseggbUELm9Ae0IICZjWMB-UgTXPAxvwnZzrDc6vwK8UeD4Fl-uRP9Penc1_udEOUGsifiZOJoyJaCfnYUOL3SflJIMegV_DQzK-1oKUf_Nv3GTMnL_RemEErM0d2MnkRxpjs43LRmNby3P9goiGBJl_N8CaDGhfNp09wrCD_teWls5lq3KlXsLhxw8iaYZL-hrJ7PbPuX531T1jwPRahMJ03LS8lQV254toeVWJpirG7t4ocRHnMxO8pS3SMzZG30WjDNMaL5fCdnnuaE0bKqgQ1alCJe73lqGsmTKmBkFxktad8nSdfBgKG-OK3Vlw1orCSYUuboJibO8gY1lbocsHSrUOEQR1Nqb4FSLZ5LD7569_38v_gPdHu49pxrhVkNx9eCotu3HK5c2KkcFGP8diDa77VWKDTeOqDnFtcthNuQT_P-qUVZVvn_V2EHh07GcAAAD__2PUMJY">