BPF: support inlining __builtin_memcmp intrinsic call
authorYonghong Song <yhs@fb.com>
Tue, 29 Mar 2022 06:30:10 +0000 (23:30 -0700)
committerYonghong Song <yhs@fb.com>
Tue, 29 Mar 2022 22:03:26 +0000 (15:03 -0700)
commit5898979387bc4b0a6cddbeacac4a06c1d54933a9
tree4586e15c0ba6b3022d7b43d460a7f5c299bf2468
parent4d1010909f2e18a71a1597c40b64bda84a5f6d1f
BPF: support inlining __builtin_memcmp intrinsic call

Delyan Kratunov reported an issue where __builtin_memcmp is
not inlined into simple load/compare instructions.
This is a known issue. In the current state, __builtin_memcmp
will be converted to memcmp call which won't work for
bpf programs.

This patch added support for expanding __builtin_memcmp with
actual loads and compares up to currently maximum 128 total loads.
The implementation is identical to PowerPC.

Differential Revision: https://reviews.llvm.org/D122676
llvm/lib/Target/BPF/BPFISelLowering.cpp
llvm/lib/Target/BPF/BPFTargetTransformInfo.h
llvm/test/CodeGen/BPF/memcmp.ll [new file with mode: 0644]