diff options
| author | Xu Kuohai <[email protected]> | 2022-03-21 11:28:49 -0400 |
|---|---|---|
| committer | Daniel Borkmann <[email protected]> | 2022-04-01 00:27:34 +0200 |
| commit | 7db6c0f1d8ee051e0a7d8c58c5982990e4491f39 (patch) | |
| tree | 3af861aaa48c023084343617d8e0649755e44ec9 /tools/perf/scripts/python/exported-sql-viewer.py | |
| parent | 30c90f6757a7b38bc95069725657a647873e2ab3 (diff) | |
bpf, arm64: Optimize BPF store/load using arm64 str/ldr(immediate offset)
The current BPF store/load instruction is translated by the JIT into two
instructions. The first instruction moves the immediate offset into a
temporary register. The second instruction uses this temporary register
to do the real store/load.
In fact, arm64 supports addressing with immediate offsets. So This patch
introduces optimization that uses arm64 str/ldr instruction with immediate
offset when the offset fits.
Example of generated instuction for r2 = *(u64 *)(r1 + 0):
without optimization:
mov x10, 0
ldr x1, [x0, x10]
with optimization:
ldr x1, [x0, 0]
If the offset is negative, or is not aligned correctly, or exceeds max
value, rollback to the use of temporary register.
Signed-off-by: Xu Kuohai <[email protected]>
Signed-off-by: Daniel Borkmann <[email protected]>
Link: https://lore.kernel.org/bpf/[email protected]
Diffstat (limited to 'tools/perf/scripts/python/exported-sql-viewer.py')
0 files changed, 0 insertions, 0 deletions