From: Karl Meakin Date: Thu, 18 Sep 2025 15:58:10 +0000 (+0000) Subject: aarch64: Reformat array initializers X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8ce6c6c01e0ec6af72a65afbe0e26a593bcbdeee;p=thirdparty%2Fgcc.git aarch64: Reformat array initializers Spread the initializers over several lines, and include the names of each field in a comment (in lieu of C++20 designated initializers). Also rename `CONSTEXPR` to `constexpr` and remove `const` (it is redundant, because `constexpr` implies `const`). gcc/ChangeLog: * config/aarch64/aarch64-builtins.cc (DEF_SIMD_TYPE): Reformat. * config/aarch64/aarch64-acle-builtins.cc (vector_types): Likewise. (mode_suffixes): Likewise. (group_suffixes): Likewise. (function_groups): Likewise. (neon_sve_function_groups): Likewise. (sme_function_groups): Likewise. --- diff --git a/gcc/config/aarch64/aarch64-acle-builtins.cc b/gcc/config/aarch64/aarch64-acle-builtins.cc index 9ebd2a96f14..a24d4ce19e8 100644 --- a/gcc/config/aarch64/aarch64-acle-builtins.cc +++ b/gcc/config/aarch64/aarch64-acle-builtins.cc @@ -105,9 +105,11 @@ struct registered_function_hasher : ggc_ptr_hash }; /* Information about each single-predicate or single-vector type. */ -static constexpr const vector_type_info vector_types[] = { +static constexpr vector_type_info vector_types[] = { #define DEF_SVE_TYPE(ACLE_NAME, NCHARS, ABI_NAME, SCALAR_TYPE) \ - { #ACLE_NAME, #ABI_NAME, "u" #NCHARS #ABI_NAME }, + { /* .acle_name = */ #ACLE_NAME, \ + /* .abi_name = */ #ABI_NAME, \ + /* .mangled_name = */ "u" #NCHARS #ABI_NAME }, #include "aarch64-sve-builtins.def" }; @@ -123,57 +125,64 @@ static const char *const pred_suffixes[NUM_PREDS + 1] = { }; /* Static information about each mode_suffix_index. */ -constexpr const mode_suffix_info mode_suffixes[] = { +constexpr mode_suffix_info mode_suffixes[] = { #define VECTOR_TYPE_none NUM_VECTOR_TYPES -#define DEF_SVE_MODE(NAME, BASE, DISPLACEMENT, UNITS) \ - { "_" #NAME, VECTOR_TYPE_##BASE, VECTOR_TYPE_##DISPLACEMENT, UNITS_##UNITS }, +#define DEF_SVE_MODE(NAME, BASE, DISPLACEMENT, UNITS) \ + { /* .string = */ "_" #NAME, \ + /* .base_vector_type = */ VECTOR_TYPE_##BASE, \ + /* .displacement_vector_type = */ VECTOR_TYPE_##DISPLACEMENT, \ + /* .displacement_units = */ UNITS_##UNITS }, #include "aarch64-sve-builtins.def" -#undef VECTOR_TYPE_none - {"", NUM_VECTOR_TYPES, NUM_VECTOR_TYPES, UNITS_none}}; + { "", VECTOR_TYPE_none, VECTOR_TYPE_none, UNITS_none } +}; /* Static information about each type_suffix_index. */ -constexpr const type_suffix_info type_suffixes[NUM_TYPE_SUFFIXES + 1] = { +constexpr type_suffix_info type_suffixes[NUM_TYPE_SUFFIXES + 1] = { #define DEF_SVE_NEON_TYPE_SUFFIX(NAME, ACLE_TYPE, CLASS, BITS, MODE, \ - NEON64, NEON128) \ - { "_" #NAME, \ - VECTOR_TYPE_##ACLE_TYPE, \ - TYPE_##CLASS, \ - BITS, \ - BITS / BITS_PER_UNIT, \ - TYPE_##CLASS == TYPE_signed || TYPE_##CLASS == TYPE_unsigned, \ - TYPE_##CLASS == TYPE_unsigned, \ - TYPE_##CLASS == TYPE_float || TYPE_##CLASS == TYPE_bfloat, \ - TYPE_##CLASS != TYPE_bool, \ - TYPE_##CLASS == TYPE_bool, \ - false, \ - 0, \ - MODE, \ - NEON64, \ - NEON128 }, -#define DEF_SME_ZA_SUFFIX(NAME, BITS, MODE) \ - { "_" #NAME, \ - NUM_VECTOR_TYPES, \ - NUM_TYPE_CLASSES, \ - BITS, \ - BITS / BITS_PER_UNIT, \ - false, \ - false, \ - false, \ - false, \ - false, \ - true, \ - 0, \ - MODE, \ - ARM_NEON_H_TYPES_LAST, \ - ARM_NEON_H_TYPES_LAST }, + NEON64, NEON128) \ + { /* .string = */ "_" #NAME, \ + /* .vector_type = */ VECTOR_TYPE_##ACLE_TYPE, \ + /* .tclass = */ TYPE_##CLASS, \ + /* .element_bits = */ BITS, \ + /* .element_bytes = */ BITS / BITS_PER_UNIT, \ + /* .integer_p = */ TYPE_##CLASS == TYPE_signed \ + || TYPE_##CLASS == TYPE_unsigned, \ + /* .unsigned_p = */ TYPE_##CLASS == TYPE_unsigned, \ + /* .float_p = */ TYPE_##CLASS == TYPE_float \ + || TYPE_##CLASS == TYPE_bfloat, \ + /* .vector_p = */ TYPE_##CLASS != TYPE_bool, \ + /* .bool_p = */ TYPE_##CLASS == TYPE_bool, \ + /* .za_p = */ false, \ + /* .spare = */ 0, \ + /* .vector_mode = */ MODE, \ + /* .neon64_type = */ NEON64, \ + /* .neon128_type = */ NEON128 }, +#define DEF_SME_ZA_SUFFIX(NAME, BITS, MODE) \ + { /* .string = */ "_" #NAME, \ + /* .vector_type = */ NUM_VECTOR_TYPES, \ + /* .tclass = */ NUM_TYPE_CLASSES, \ + /* .element_bits = */ BITS, \ + /* .element_bytes = */ BITS / BITS_PER_UNIT, \ + /* .integer_p = */ false, \ + /* .unsigned_p = */ false, \ + /* .float_p = */ false, \ + /* .vector_p = */ false, \ + /* .bool_p = */ false, \ + /* .za_p = */ true, \ + /* .spare = */ 0, \ + /* .vector_mode = */ MODE, \ + /* .neon64_type = */ ARM_NEON_H_TYPES_LAST, \ + /* .neon128_type = */ ARM_NEON_H_TYPES_LAST }, #include "aarch64-sve-builtins.def" - { "", NUM_VECTOR_TYPES, TYPE_bool, 0, 0, false, false, false, false, - false, false, 0, VOIDmode, ARM_NEON_H_TYPES_LAST, ARM_NEON_H_TYPES_LAST } + { "", NUM_VECTOR_TYPES, TYPE_bool, 0, 0, false, false, false, false, false, + false, 0, VOIDmode, ARM_NEON_H_TYPES_LAST, ARM_NEON_H_TYPES_LAST } }; -constexpr const group_suffix_info group_suffixes[] = { +constexpr group_suffix_info group_suffixes[] = { #define DEF_SVE_GROUP_SUFFIX(NAME, VG, VECTORS_PER_TUPLE) \ - { "_" #NAME, VG, VECTORS_PER_TUPLE }, + { /* .string = */ "_" #NAME, \ + /* .vectors_per_group = */ VG, \ + /* .vectors_per_tuple = */ VECTORS_PER_TUPLE }, #include "aarch64-sve-builtins.def" { "", 0, 1 } }; @@ -194,34 +203,54 @@ constexpr const aarch64_acle::function_group_info neon_function_groups[] = { }; /* A list of all arm_sve.h functions. */ -static constexpr const function_group_info function_groups[] = { +static constexpr function_group_info function_groups[] = { #define DEF_SVE_FUNCTION_GS_FPM(NAME, SHAPE, TYPES, GROUPS, PREDS, FPM_MODE) \ - { #NAME, &functions::NAME, &shapes::SHAPE, types_##TYPES, groups_##GROUPS, \ - preds_##PREDS, aarch64_required_extensions::REQUIRED_EXTENSIONS, \ - FPM_##FPM_MODE }, + { /* .base_name = */ #NAME, \ + /* .base = */ &functions::NAME, \ + /* .shape = */ &shapes::SHAPE, \ + /* .types = */ types_##TYPES, \ + /* .groups = */ groups_##GROUPS, \ + /* .preds = */ preds_##PREDS, \ + /* .extensions = */ aarch64_required_extensions::REQUIRED_EXTENSIONS, \ + /* .fpm_mode = */ FPM_##FPM_MODE }, #include "aarch64-sve-builtins.def" }; /* A list of all arm_neon_sve_bridge.h ACLE functions. */ -static constexpr const function_group_info neon_sve_function_groups[] = { +static constexpr function_group_info neon_sve_function_groups[] = { #define DEF_NEON_SVE_FUNCTION(NAME, SHAPE, TYPES, GROUPS, PREDS) \ - { #NAME, &neon_sve_bridge_functions::NAME, &shapes::SHAPE, types_##TYPES, \ - groups_##GROUPS, preds_##PREDS, aarch64_required_extensions::ssve (0), \ - FPM_unused }, + { /* .base_name = */ #NAME, \ + /* .base = */ &neon_sve_bridge_functions::NAME, \ + /* .shape = */ &shapes::SHAPE, \ + /* .types = */ types_##TYPES, \ + /* .groups = */ groups_##GROUPS, \ + /* .preds = */ preds_##PREDS, \ + /* .extensions = */ aarch64_required_extensions::ssve (0), \ + /* .fpm_mode = */ FPM_unused }, #include "aarch64-neon-sve-bridge-builtins.def" }; /* A list of all arm_sme.h functions. */ -static constexpr const function_group_info sme_function_groups[] = { +static constexpr function_group_info sme_function_groups[] = { #define DEF_SME_FUNCTION_GS_FPM(NAME, SHAPE, TYPES, GROUPS, PREDS, FPM_MODE) \ - { #NAME, &functions::NAME, &shapes::SHAPE, types_##TYPES, groups_##GROUPS, \ - preds_##PREDS, aarch64_required_extensions::REQUIRED_EXTENSIONS, \ - FPM_##FPM_MODE }, + { /* .base_name = */ #NAME, \ + /* .base = */ &functions::NAME, \ + /* .shape = */ &shapes::SHAPE, \ + /* .types = */ types_##TYPES, \ + /* .groups = */ groups_##GROUPS, \ + /* .preds = */ preds_##PREDS, \ + /* .extensions = */ aarch64_required_extensions::REQUIRED_EXTENSIONS, \ + /* .fpm_mode = */ FPM_##FPM_MODE }, #define DEF_SME_ZA_FUNCTION_GS_FPM(NAME, SHAPE, TYPES, GROUPS, PREDS, FPM_MODE) \ - { #NAME, &functions::NAME##_za, &shapes::SHAPE, types_##TYPES, \ - groups_##GROUPS, preds_##PREDS, \ - aarch64_required_extensions::REQUIRED_EXTENSIONS \ - .and_also (AARCH64_FL_ZA_ON), FPM_##FPM_MODE }, + { /* .base_name = */ #NAME, \ + /* .base = */ &functions::NAME##_za, \ + /* .shape = */ &shapes::SHAPE, \ + /* .types = */ types_##TYPES, \ + /* .groups = */ groups_##GROUPS, \ + /* .preds = */ preds_##PREDS, \ + /* .extensions = */ aarch64_required_extensions::REQUIRED_EXTENSIONS \ + .and_also (AARCH64_FL_ZA_ON), \ + /* .fpm_mode = */ FPM_##FPM_MODE }, #include "aarch64-sve-builtins-sme.def" }; diff --git a/gcc/config/aarch64/aarch64-builtins.cc b/gcc/config/aarch64/aarch64-builtins.cc index 4d9281afdc6..facc8bc1e71 100644 --- a/gcc/config/aarch64/aarch64-builtins.cc +++ b/gcc/config/aarch64/aarch64-builtins.cc @@ -812,8 +812,12 @@ const char *aarch64_scalar_builtin_types[] = { extern const aarch64_simd_type_info aarch64_simd_types[]; extern GTY(()) aarch64_simd_type_info_trees aarch64_simd_types_trees[]; -#define DEF_SIMD_TYPE(E, M, Q, G) \ - {E, "__" #E, #G "__" #E, E_##M##mode, qualifier_##Q}, +#define DEF_SIMD_TYPE(NAME, MODE, QUALIFIERS, LEN) \ + {/* .type = */ NAME, \ + /* .name = */ "__" #NAME, \ + /* .mangle = */ #LEN "__" #NAME, \ + /* .mode = */ MODE##mode, \ + /* .qualifiers = */ qualifier_##QUALIFIERS}, const struct aarch64_simd_type_info aarch64_simd_types[] = { #include "aarch64-simd-builtin-types.def" };