gnu/gcc/f152cf1734f8087b982605ce93d4fb048283564e [AArch64]: Use MOVI for low‑64‑bit integer SIMD constant vectors [PR113926]
Extend AdvSIMD constant materialization to recognize 128‑bit integer vector
constants where the low 64 bits contain a duplicated scalar value and the high
64 bits are zero.
Bootstrapped and tested on aarch64-linux-gnu.
gcc/ChangeLog:
PR target/113926
* config/aarch64/aarch64.cc (struct simd_immediate_info): Add width
field to record AdvSIMD output vector width.
(simd_immediate_info::simd_immediate_info): Initialize width to zero
in all constructors.
(aarch64_simd_valid_imm): Allow 128-bit AdvSIMD MOV immediates with
zero high 64 bits to be materialized using 64-bit MOVI.
(aarch64_output_simd_imm): Use recorded immediate width when outputting
AdvSIMD immediates.
gcc/testsuite/ChangeLog:
PR target/113926
* gcc.target/aarch64/pr113926.c: New test.
* gcc.target/aarch64/pr113926_1.c: New test.
Signed-off-by: Naveen <naveen.siddegowda@oss.qualcomm.com>
3 files changed