Following improvements to the way ifuncs are selected based on detected architectural features, we are able to do away with many of the aliases that were previously needed for subsets of atomic functions that were not implemented in a given extension.
This may be clarified by virtue of an example. Before, LSE128 functions carried the suffix _i1 and LSE2 functions the _i2. Using a single ifunc selector for all atomic functions meant that if LSE128 was detected, the _i1 function variant would be used indiscriminately, irrespective of whether or not a function had an LSE128-specific implementation. Aliasing was thus needed to redirect calls to these missing functions to their _i2 LSE2 alternatives. The more architectural extensions for which support was added, the more complex the aliasing chain. With the per-file configuration of ifuncs, we do away with the need for such aliasing. libatomic/ChangeLog: * config/linux/aarch64/atomic_16.S: Remove unnecessary aliasing. --- libatomic/config/linux/aarch64/atomic_16.S | 41 ---------------------- 1 file changed, 41 deletions(-) diff --git a/libatomic/config/linux/aarch64/atomic_16.S b/libatomic/config/linux/aarch64/atomic_16.S index 1517e9e78df..16ff03057ab 100644 --- a/libatomic/config/linux/aarch64/atomic_16.S +++ b/libatomic/config/linux/aarch64/atomic_16.S @@ -732,47 +732,6 @@ ENTRY_ALIASED (test_and_set_16) END (test_and_set_16) -/* Alias entry points which are the same in LSE2 and LSE128. */ - -#if HAVE_IFUNC -# if !HAVE_FEAT_LSE128 -ALIAS (exchange_16, LSE128, LSE2) -ALIAS (fetch_or_16, LSE128, LSE2) -ALIAS (fetch_and_16, LSE128, LSE2) -ALIAS (or_fetch_16, LSE128, LSE2) -ALIAS (and_fetch_16, LSE128, LSE2) -# endif -ALIAS (load_16, LSE128, LSE2) -ALIAS (store_16, LSE128, LSE2) -ALIAS (compare_exchange_16, LSE128, LSE2) -ALIAS (fetch_add_16, LSE128, LSE2) -ALIAS (add_fetch_16, LSE128, LSE2) -ALIAS (fetch_sub_16, LSE128, LSE2) -ALIAS (sub_fetch_16, LSE128, LSE2) -ALIAS (fetch_xor_16, LSE128, LSE2) -ALIAS (xor_fetch_16, LSE128, LSE2) -ALIAS (fetch_nand_16, LSE128, LSE2) -ALIAS (nand_fetch_16, LSE128, LSE2) -ALIAS (test_and_set_16, LSE128, LSE2) - -/* Alias entry points which are the same in baseline and LSE2. */ - -ALIAS (exchange_16, LSE2, CORE) -ALIAS (fetch_add_16, LSE2, CORE) -ALIAS (add_fetch_16, LSE2, CORE) -ALIAS (fetch_sub_16, LSE2, CORE) -ALIAS (sub_fetch_16, LSE2, CORE) -ALIAS (fetch_or_16, LSE2, CORE) -ALIAS (or_fetch_16, LSE2, CORE) -ALIAS (fetch_and_16, LSE2, CORE) -ALIAS (and_fetch_16, LSE2, CORE) -ALIAS (fetch_xor_16, LSE2, CORE) -ALIAS (xor_fetch_16, LSE2, CORE) -ALIAS (fetch_nand_16, LSE2, CORE) -ALIAS (nand_fetch_16, LSE2, CORE) -ALIAS (test_and_set_16, LSE2, CORE) -#endif - /* GNU_PROPERTY_AARCH64_* macros from elf.h for use in asm code. */ #define FEATURE_1_AND 0xc0000000 #define FEATURE_1_BTI 1 -- 2.34.1