Large slowdowns were observed in Rust due to many small, constant
sized copies in conjunction with poorly-optimized memory.copy
implementations. Since memory.copy cannot be expected to be inlined
efficiently by engines at this time, stop using it for the smallest
copies. We continue to lower all memcpy intrinsics to memory.copy,
though.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
- Build Status
Buildable 38184 Build 38183: arc lint + arc unit
Event Timeline
Comment Actions
I've tested this patch compiling the motivating test case for the original performance issue for Firefox and performance is back to what it was in LLVM 8, so I can at least say from my perspective that this does the trick!
Comment Actions
8 stores normally or 4 stores when optimizing for size. If SIMD is enabled that will be 128 and 64 bytes, respectively, or else it will be 64 and 32 bytes.