diff options
author | Wilco Dijkstra <wdijkstr@arm.com> | 2022-10-24 15:14:14 +0100 |
---|---|---|
committer | Wilco Dijkstra <wdijkstr@arm.com> | 2022-10-24 15:36:28 +0100 |
commit | a096036589d82175a0f729c2dab73c9a527d075d (patch) | |
tree | 416db1dabf6e889a31f3c784d9239e47f312fdcc /gcc/jit | |
parent | da8c362c4c18cff2f2dfd5c4706bdda7576899a4 (diff) | |
download | gcc-a096036589d82175a0f729c2dab73c9a527d075d.zip gcc-a096036589d82175a0f729c2dab73c9a527d075d.tar.gz gcc-a096036589d82175a0f729c2dab73c9a527d075d.tar.bz2 |
[AArch64] Improve immediate expansion [PR106583]
Improve immediate expansion of immediates which can be created from a
bitmask immediate and 2 MOVKs. Simplify, refactor and improve efficiency
of bitmask checks. Move various immediate handling functions together
to avoid forward declarations.
This reduces the number of 4-instruction immediates in SPECINT/FP by 10-15%.
gcc/
PR target/106583
* config/aarch64/aarch64.cc (aarch64_internal_mov_immediate)
Add support for a bitmask immediate with 2 MOVKs.
(aarch64_check_bitmask): New function after refactorization.
(aarch64_bitmask_imm): Simplify replication of small modes.
Split function into 64-bit only version for efficiency.
(aarch64_move_imm): Move near other immediate functions.
(aarch64_uimm12_shift): Likewise.
(aarch64_clamp_to_uimm12_shift): Likewise.
(aarch64_movk_shift): Likewise.
(aarch64_replicate_bitmask_imm): Likewise.
(aarch64_and_split_imm1): Likewise.
(aarch64_and_split_imm2): Likewise.
(aarch64_and_bitmask_imm): Likewise.
(aarch64_movw_imm): Likewise.
gcc/testsuite/
PR target/106583
* gcc.target/aarch64/pr106583.c: Add new test.
Diffstat (limited to 'gcc/jit')
0 files changed, 0 insertions, 0 deletions