gcc/libatomic
Victor Do Nascimento f6b9a064a2 Libatomic: AArch64: Convert all lse128 assembly to .insn directives
Given the lack of support for the LSE128 instructions in all but the
the most up-to-date version of Binutils (2.42), having the build-time
test for assembler support for these instructions often leads to the
building of Libatomic without support for LSE128-dependent atomic
function implementations.  This ultimately leads to different people
having different versions of Libatomic on their machines, depending on
which assembler was available at compilation time.

Furthermore, the conditional inclusion of these atomic function
implementations predicated on assembler support leads to a series of
`#if HAVE_FEAT_LSE128' guards scattered throughout the codebase and
the need for a series of aliases when the feature flag evaluates
to false.  The preprocessor macro guards, together with the
conditional aliasing leads to code that is cumbersome to understand
and maintain.

Both of the issues highlighted above will only get worse with the
coming support for LRCPC3 atomics which under the current scheme will
also require build-time checks.

Consequently, a better option for both consistency across builds and
code cleanness is to make recourse to the `.inst' directive.  By
replacing all novel assembly instructions for their hexadecimal
representation within `.inst's, we ensure that the Libatomic code is
both considerably cleaner and all machines build the same binary,
irrespective of binutils version available at compile time.

This patch therefore removes all configure checks for LSE128-support
in the assembler and all the guards and aliases that were associated
with `HAVE_FEAT_LSE128'

libatomic/ChangeLog:

	* acinclude.m4 (LIBAT_TEST_FEAT_AARCH64_LSE128): Delete.
	* auto-config.h.in (HAVE_FEAT_LSE128): Likewise
	* config/linux/aarch64/atomic_16.S: Replace all LSE128
	instructions with equivalent `.inst' directives.
	(HAVE_FEAT_LSE128): Remove all references.
	* configure: Regenerate.
	* configure.ac: Remove call to LIBAT_TEST_FEAT_AARCH64_LSE128.
2024-06-12 10:23:38 +01:00
..
config Libatomic: AArch64: Convert all lse128 assembly to .insn directives 2024-06-12 10:23:38 +01:00
testsuite testsuite: Adjust several dg-additional-files-options calls [PR115294] 2024-05-31 09:29:38 +02:00
.gitignore
acinclude.m4 Libatomic: AArch64: Convert all lse128 assembly to .insn directives 2024-06-12 10:23:38 +01:00
aclocal.m4
auto-config.h.in Libatomic: AArch64: Convert all lse128 assembly to .insn directives 2024-06-12 10:23:38 +01:00
cas_n.c
ChangeLog Daily bump. 2024-06-01 00:17:20 +00:00
configure Libatomic: AArch64: Convert all lse128 assembly to .insn directives 2024-06-12 10:23:38 +01:00
configure.ac Libatomic: AArch64: Convert all lse128 assembly to .insn directives 2024-06-12 10:23:38 +01:00
configure.tgt aarch64: Add aarch64-w64-mingw32 target to libatomic 2024-05-07 16:02:35 +00:00
exch_n.c
fadd_n.c
fand_n.c
fence.c
fenv.c
fior_n.c
flag.c
fnand_n.c
fop_n.c
fsub_n.c
fxor_n.c
gcas.c
gexch.c
glfree.c
gload.c
gstore.c
host-config.h
init.c
libatomic_i.h
libatomic.map
load_n.c
Makefile.am build: Derive object names in make_sunver.pl 2024-05-07 13:14:05 +02:00
Makefile.in build: Derive object names in make_sunver.pl 2024-05-07 13:14:05 +02:00
store_n.c
tas_n.c