[all-commits] [llvm/llvm-project] cb1468: [libc] Adding a version of memcpy w/ software pref...

Guillaume Chatelet via All-commits all-commits at lists.llvm.org
Fri Jul 7 03:37:51 PDT 2023

  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: cb1468d3cbb7774332647dee3475d4e4f85c21e2
  Author: Guillaume Chatelet <gchatelet at google.com>
  Date:   2023-07-07 (Fri, 07 Jul 2023)

  Changed paths:
    M libc/src/string/CMakeLists.txt
    M libc/src/string/memory_utils/op_builtin.h
    M libc/src/string/memory_utils/x86_64/memcpy_implementations.h
    M utils/bazel/llvm-project-overlay/libc/BUILD.bazel

  Log Message:
  [libc] Adding a version of memcpy w/ software prefetching

For machines with a lot of cores, hardware prefetchers can saturate the memory bus when utilization is high.
In this case it is desirable to turn off the hardware prefetcher completely.
This has a big impact on the performance of memory functions such as `memcpy` that rely on the fact that the next cache line will be readily available.

This patch adds the 'LIBC_COPT_MEMCPY_X86_USE_SOFTWARE_PREFETCHING' compile time option that generates a version of memcpy with software prefetching. While not fully restoring the original performances it mitigates the impact to an acceptable level.

Reviewed By: rtenneti

Differential Revision: https://reviews.llvm.org/D154494

More information about the All-commits mailing list