Skip to content

RISC-V: clang generates bcmp for memcmp for small comparisons #143294

Closed
@hiraditya

Description

@hiraditya

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
?

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

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

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

repro: https://godbolt.org/z/Kcsn5rqfa

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions