aboutsummaryrefslogtreecommitdiff
path: root/lib/compiler_rt/memcpy.zig
AgeCommit message (Collapse)Author
2025-10-18tweak tests to avoid timeoutsmlugg
2025-08-03zig fmt: apply new cast builtin orderJustus Klausecker
2025-07-22aarch64: add new from scratch self-hosted backendJacob Young
2025-03-05Remove uses of deprecated callconv aliasesLinus Groh
2025-02-22Merge pull request #22606 from dweiller/memmove-optAndrew Kelley
compiler-rt: memmove optimisation
2025-02-11compiler-rt: fix memcpy generating recursive callsdweiller
When using the LLVM backend, array copies were lowered as calls to `llvm.memcpy.*` builtin which could cause recursive calls to memcpy to be generated (observed with `-target x86_64-linux -mcpu x86_64+avx512vl --debug-rt`). By instead performing these small fixed-size copies with integers or vectors the LLVM backend does not generate calls to the `llvm.memcpy` builtin, and so (with `-fno-builtin`) recursive calls to memcpy will not be generated by LLVM. The assertions and (test build) runtime safety have been removed as they may cause (mutually) recursive calls to memcpy in debug builds since the panic handler generates calls to llvm.memcpy.
2025-02-10compiler_rt memcpy: avoid infinite recursionAndrew Kelley
when compiled in debug mode (--debug-rt)
2025-02-09x86_64: implement conversions between scalar floats and intsJacob Young
Closes #22797
2025-01-30compiler-rt: optimize memmovedweiller
2025-01-26compiler-rt: ensure memcpy Element has no unused bytesdweiller
2025-01-20compiler-rt: optimize memcpydweiller
The new memcpy function aims to be more generic than the previous implementation which was adapted from an implementation optimized for x86_64 avx2 machines. Even on x86_64 avx2 machines this implementation should be generally be faster due to fewer branches in the small length cases and generating less machine code. Note that the new memcpy function no longer acts as a memmove.
2025-01-20compiler-rt: reduce memmove and memcpy size for ReleaseSmalldweiller
2025-01-20compiler-rt: move memmove back to memmove.zigdweiller
2025-01-18Revert "work around llvm failing to lower memcpy"Alex Rønne Petersen
This reverts commit acf70439551fc3f49b2d292ff93ee519901cdf42. Fixed as of ec768b7fa2f9c7dea6b92651bef59a7eea3299f2.
2025-01-17work around llvm failing to lower memcpyAndrew Kelley
triggers an assertion in LegalizeDAG otherwise
2025-01-17compiler_rt: don't rely on weak aliasesAndrew Kelley
2025-01-17replace `compiler_rt` memcpy with a better versionDavid Rubin
2024-08-27lib,test,tools,doc: update usages of @exportmlugg
2022-12-28compiler-rt: Set the symbol visibilityLuuk de Gram
When we're compiling compiler_rt for any WebAssembly target, we do not want to expose all the compiler-rt functions to the host runtime. By setting the visibility of all exports to `hidden`, we allow the linker to resolve the symbols during linktime, while not expose the functions to the host runtime. This also means the linker can properly garbage collect any compiler-rt function that does not get resolved. The symbol visibility for all target remains the same as before: `default`.
2022-11-30compiler-rt: disable some exports for ofmt=cVeikka Tuominen
2022-10-15compiler_rt: Move mem implementations from c.zigLuuk de Gram
This moves functions that LLVM generates calls to, to the compiler_rt implementation itself, rather than c.zig. This is a prerequisite for native backends to link with compiler-rt. This also allows native backends to generate calls to `memcpy` and the like.