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