[all-commits] [llvm/llvm-project] 83f9b1: [libc] Optimized version of memmove

Guillaume Chatelet via All-commits all-commits at lists.llvm.org
Tue Feb 8 03:55:42 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 83f9b13d8cc2dd148c8ff7c1c71584e1eb634b75
      https://github.com/llvm/llvm-project/commit/83f9b13d8cc2dd148c8ff7c1c71584e1eb634b75
  Author: Guillaume Chatelet <gchatelet at google.com>
  Date:   2022-02-08 (Tue, 08 Feb 2022)

  Changed paths:
    M libc/src/__support/CPP/ArrayRef.h
    M libc/src/string/CMakeLists.txt
    M libc/src/string/memmove.cpp
    M libc/src/string/memory_utils/elements.h
    M libc/test/src/string/CMakeLists.txt
    M libc/test/src/string/memmove_test.cpp
    M libc/utils/UnitTest/CMakeLists.txt
    A libc/utils/UnitTest/MemoryMatcher.cpp
    A libc/utils/UnitTest/MemoryMatcher.h

  Log Message:
  -----------
  [libc] Optimized version of memmove

This implementation relies on storing data in registers for sizes up to 128B.
Then depending on whether `dst` is less (resp. greater) than `src` we move data forward (resp. backward) by chunks of 32B.
We first make sure one of the pointers is aligned to increase performance on large move sizes.

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




More information about the All-commits mailing list