]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/config/aarch64/aarch64-builtins.cc
aarch64: Implement 128-bit extension to ACLE sysreg r/w builtins
authorVictor Do Nascimento <victor.donascimento@arm.com>
Sat, 28 Oct 2023 23:38:59 +0000 (00:38 +0100)
committerVictor Do Nascimento <victor.donascimento@arm.com>
Wed, 6 Dec 2023 21:20:36 +0000 (21:20 +0000)
commit88157c88172b06f1afb6136e9bd8fce1de5ba823
tree65b31cb920b8cecbf8512c11cdad17be95cb0e57
parenteac59af05aa5d7b420408b12865437dbc8a54218
aarch64: Implement 128-bit extension to ACLE sysreg r/w builtins

Implement the ACLE builtins for 128-bit system register manipulation:

  * __uint128_t __arm_rsr128(const char *special_register);
  * void __arm_wsr128(const char *special_register, __uint128_t value);

gcc/ChangeLog:

* config/aarch64/aarch64-builtins.cc (AARCH64_RSR128): New
`enum aarch64_builtins' value.
(AARCH64_WSR128): Likewise.
(aarch64_init_rwsr_builtins): Init `__builtin_aarch64_rsr128'
and `__builtin_aarch64_wsr128' builtins.
(aarch64_expand_rwsr_builtin): Extend function to handle
`__builtin_aarch64_{rsr|wsr}128'.
* config/aarch64/aarch64-protos.h (aarch64_retrieve_sysreg):
Update function signature.
* config/aarch64/aarch64.cc (F_REG_128): New.
(aarch64_retrieve_sysreg): Add 128-bit register mode check.
* config/aarch64/aarch64.md (UNSPEC_SYSREG_RTI): New.
(UNSPEC_SYSREG_WTI): Likewise.
(aarch64_read_sysregti): Likewise.
(aarch64_write_sysregti): Likewise.
* config/aarch64/arm_acle.h (__arm_rsr128): New.
(__arm_wsr128): Likewise.
gcc/config/aarch64/aarch64-builtins.cc
gcc/config/aarch64/aarch64-protos.h
gcc/config/aarch64/aarch64.cc
gcc/config/aarch64/aarch64.md
gcc/config/aarch64/arm_acle.h