https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106583
--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Wilco Dijkstra <wi...@gcc.gnu.org>: https://gcc.gnu.org/g:a096036589d82175a0f729c2dab73c9a527d075d commit r13-3459-ga096036589d82175a0f729c2dab73c9a527d075d Author: Wilco Dijkstra <wdijk...@arm.com> Date: Mon Oct 24 15:14:14 2022 +0100 [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.