From 267b0ea6e87a25044da047486d3877ebc1b5029b Mon Sep 17 00:00:00 2001 From: Ilya Tokar Date: Wed, 25 Mar 2026 15:14:27 -0400 Subject: [PATCH] [libc][x86] add MEMCPY_X86_USE_NTA_STORES to config (#188321) Add LIBC_CONF_COPT_MEMCPY_X86_USE_NTA_STORES to cmake/bazel/json config. --- libc/cmake/modules/LLVMLibCCompileOptionRules.cmake | 4 ++++ libc/config/config.json | 4 ++++ .../llvm-project-overlay/libc/libc_configure_options.bzl | 1 + 3 files changed, 9 insertions(+) diff --git a/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake b/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake index 1ce027114f73..2e2c5e3ad747 100644 --- a/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake +++ b/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake @@ -100,6 +100,10 @@ function(_get_compile_options_from_config output_var) list(APPEND config_options "-DLIBC_COPT_MEMSET_X86_USE_SOFTWARE_PREFETCHING") endif() + if(LIBC_CONF_COPT_MEMCPY_X86_USE_NTA_STORES) + list(APPEND config_options "-DLIBC_COPT_MEMCPY_X86_USE_NTA_STORES") + endif() + if(LIBC_TYPES_TIME_T_IS_32_BIT AND LLVM_LIBC_FULL_BUILD) list(APPEND config_options "-DLIBC_TYPES_TIME_T_IS_32_BIT") endif() diff --git a/libc/config/config.json b/libc/config/config.json index 2ab09f6717f2..39cb2d8cfa33 100644 --- a/libc/config/config.json +++ b/libc/config/config.json @@ -101,6 +101,10 @@ "LIBC_CONF_MEMSET_X86_USE_SOFTWARE_PREFETCHING": { "value": false, "doc": "Inserts prefetch for write instructions (PREFETCHW) for memset on x86 to recover performance when hardware prefetcher is disabled." + }, + "LIBC_CONF_COPT_MEMCPY_X86_USE_NTA_STORES": { + "value": false, + "doc": "Use Non-temporal stores in memcpy on x86 to improve performance of large copies." } }, "ctype": { diff --git a/utils/bazel/llvm-project-overlay/libc/libc_configure_options.bzl b/utils/bazel/llvm-project-overlay/libc/libc_configure_options.bzl index 1c2b65ea2011..340893850bfe 100644 --- a/utils/bazel/llvm-project-overlay/libc/libc_configure_options.bzl +++ b/utils/bazel/llvm-project-overlay/libc/libc_configure_options.bzl @@ -24,6 +24,7 @@ LIBC_CONFIGURE_OPTIONS = [ # Documentation in libc/src/string/memory_utils/... # "LIBC_COPT_MEMCPY_USE_EMBEDDED_TINY", # "LIBC_COPT_MEMCPY_X86_USE_REPMOVSB_FROM_SIZE", + # "LIBC_COPT_MEMCPY_X86_USE_NTA_STORES", "LIBC_COPT_MEMCPY_X86_USE_SOFTWARE_PREFETCHING", "LIBC_COPT_MEMSET_X86_USE_SOFTWARE_PREFETCHING",