diff options
author | 2023-01-25 15:08:18 +0000 | |
---|---|---|
committer | 2023-03-02 15:46:45 +0000 | |
commit | 6149a22d1a02d5a2905f1917fbaf14ddbb2c0bd2 (patch) | |
tree | ce0f77c9b2c400e83d51911f913a497cec8c2623 /compiler/optimizing/nodes.h | |
parent | 20f783080b772843a1c1186811e73ec74bab3ae8 (diff) |
Optimize the System.arraycopy(char) arm64 intrinsic
Introduce loop inversion, loop unrolling optimization, and larger memory
copies to the System.arraycopy(char) intrinsic.
Instead of a single loop with a pair of strh/ldrh instructions, we now
have two loops: one with ldr/str instructions and the other one with
strh/ldrh. The goal is to use increased step size (8 bytes) in the first
loop and then after it's over, finish processing of the rest of the
array using the smaller step. If the copy length is constant we further
optimize by always unrolling the tail loop, and also unrolling the head
loop when the copy length is small.
Also increase the threshold array size when intrinsic implementation is
chosen.
Also add tests to copy character arrays of different sizes.
Original author: Artem Kotsiuba <artem.kotsiuba@linaro.org>
Test: 011-array-copy
Test: test-art-target
Change-Id: I1dee1dab7931c3de4b91b2bbd5d0180a9820771a
Diffstat (limited to 'compiler/optimizing/nodes.h')
0 files changed, 0 insertions, 0 deletions