[llvm-dev] Proposal: Introduce memory comparison intrinsics

Dmitry Makogon via llvm-dev llvm-dev at lists.llvm.org
Mon Nov 22 08:22:49 PST 2021

Hello everyone.

I would like to introduce new intrinsics for memory comparison:

memcmp - an equivalent of libc' memcmp,
bcmp - an equivalent of libc' bcmp,
memcmp.element.unordered.atomic - an element atomic version of memcmp,
bcmp.element.unordered.atomic - an element atomic version of bcmp.

Currently there exist some optimizations for memcmp/bcmp libc calls.
We would like to have these optimizations for element atomic comparisons (atomicity permitted).

I suggest we rewrite the existing optimizations to work with on new intrinsics and transform
memcmp/bcmp libc calls to the corresponding intrinsics. This is similar to what we do with
memcpy library calls.

Having these optimizations work on intrinsics and not on recognized libc calls
will allow us to share some existing transforms between atomic and non-atomic variants.

I propose the following plan for introducing the new intrinsics:
1. Introduce non-atomic memcmp and bcmp intrinsics.
2. Reimplement existing transforms for non-atomic memcmp intrinsic,
the same way as it's done for memcpy.
3. Introduce atomic intrinsics and reuse the optimizations.

Please express your concerns about this.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20211122/fafda3c6/attachment.html>

More information about the llvm-dev mailing list