On Tue, 15 Aug 2023 at 00:05, Christophe Lyon via Gcc-patches
<[email protected]> wrote:
>
> Although they look like aliases for u8 and u16, we need to define them
> so that we can handle p8 and p16 suffixes with the general framework.
>
> They will be used by vmull[bt]q_poly intrinsics.
Hi Christophe,
It seems your patch committed in 9bae37ec8dc32027dedf9a32bf15754ebad6da38
broke arm bootstrap build due to Werror=missing-field-initializers:
https://ci.linaro.org/job/tcwg_bootstrap_build--master-arm-bootstrap-build/199/artifact/artifacts/notify/mail-body.txt/*view*/
I think this happens because the commit adds a new member to type_suffix_info:
- unsigned int spare : 13;
+ /* True if the suffix is for a polynomial type. */
+ unsigned int poly_p : 1;
+ unsigned int spare : 12;
but probably misses an initializer in arm-mve-builtins.cc:type_suffixes:
{ "", NUM_VECTOR_TYPES, TYPE_bool, 0, 0, false, false, false,
0, VOIDmode }
Thanks,
Prathamesh
>
> 2023-08-14 Christophe Lyon <[email protected]>
>
> gcc/
> * config/arm/arm-mve-builtins.cc (type_suffixes): Handle poly_p
> field..
> (TYPES_poly_8_16): New.
> (poly_8_16): New.
> * config/arm/arm-mve-builtins.def (p8): New type suffix.
> (p16): Likewise.
> * config/arm/arm-mve-builtins.h (enum type_class_index): Add
> TYPE_poly.
> (struct type_suffix_info): Add poly_p field.
> ---
> gcc/config/arm/arm-mve-builtins.cc | 6 ++++++
> gcc/config/arm/arm-mve-builtins.def | 2 ++
> gcc/config/arm/arm-mve-builtins.h | 5 ++++-
> 3 files changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/gcc/config/arm/arm-mve-builtins.cc
> b/gcc/config/arm/arm-mve-builtins.cc
> index 7eec9d2861c..fa8b0ad36b3 100644
> --- a/gcc/config/arm/arm-mve-builtins.cc
> +++ b/gcc/config/arm/arm-mve-builtins.cc
> @@ -128,6 +128,7 @@ CONSTEXPR const type_suffix_info
> type_suffixes[NUM_TYPE_SUFFIXES + 1] = {
> TYPE_##CLASS == TYPE_signed || TYPE_##CLASS == TYPE_unsigned, \
> TYPE_##CLASS == TYPE_unsigned, \
> TYPE_##CLASS == TYPE_float, \
> + TYPE_##CLASS == TYPE_poly, \
> 0, \
> MODE },
> #include "arm-mve-builtins.def"
> @@ -177,6 +178,10 @@ CONSTEXPR const type_suffix_info
> type_suffixes[NUM_TYPE_SUFFIXES + 1] = {
> #define TYPES_all_signed(S, D) \
> S (s8), S (s16), S (s32)
>
> +/* _p8 _p16. */
> +#define TYPES_poly_8_16(S, D) \
> + S (p8), S (p16)
> +
> /* _u8 _u16 _u32. */
> #define TYPES_all_unsigned(S, D) \
> S (u8), S (u16), S (u32)
> @@ -275,6 +280,7 @@ DEF_MVE_TYPES_ARRAY (integer_8);
> DEF_MVE_TYPES_ARRAY (integer_8_16);
> DEF_MVE_TYPES_ARRAY (integer_16_32);
> DEF_MVE_TYPES_ARRAY (integer_32);
> +DEF_MVE_TYPES_ARRAY (poly_8_16);
> DEF_MVE_TYPES_ARRAY (signed_16_32);
> DEF_MVE_TYPES_ARRAY (signed_32);
> DEF_MVE_TYPES_ARRAY (reinterpret_integer);
> diff --git a/gcc/config/arm/arm-mve-builtins.def
> b/gcc/config/arm/arm-mve-builtins.def
> index e3f37876210..e2cf1baf370 100644
> --- a/gcc/config/arm/arm-mve-builtins.def
> +++ b/gcc/config/arm/arm-mve-builtins.def
> @@ -63,6 +63,8 @@ DEF_MVE_TYPE_SUFFIX (u8, uint8x16_t, unsigned, 8, V16QImode)
> DEF_MVE_TYPE_SUFFIX (u16, uint16x8_t, unsigned, 16, V8HImode)
> DEF_MVE_TYPE_SUFFIX (u32, uint32x4_t, unsigned, 32, V4SImode)
> DEF_MVE_TYPE_SUFFIX (u64, uint64x2_t, unsigned, 64, V2DImode)
> +DEF_MVE_TYPE_SUFFIX (p8, uint8x16_t, poly, 8, V16QImode)
> +DEF_MVE_TYPE_SUFFIX (p16, uint16x8_t, poly, 16, V8HImode)
> #undef REQUIRES_FLOAT
>
> #define REQUIRES_FLOAT true
> diff --git a/gcc/config/arm/arm-mve-builtins.h
> b/gcc/config/arm/arm-mve-builtins.h
> index c9b51a0c77b..37b8223dfb2 100644
> --- a/gcc/config/arm/arm-mve-builtins.h
> +++ b/gcc/config/arm/arm-mve-builtins.h
> @@ -146,6 +146,7 @@ enum type_class_index
> TYPE_float,
> TYPE_signed,
> TYPE_unsigned,
> + TYPE_poly,
> NUM_TYPE_CLASSES
> };
>
> @@ -221,7 +222,9 @@ struct type_suffix_info
> unsigned int unsigned_p : 1;
> /* True if the suffix is for a floating-point type. */
> unsigned int float_p : 1;
> - unsigned int spare : 13;
> + /* True if the suffix is for a polynomial type. */
> + unsigned int poly_p : 1;
> + unsigned int spare : 12;
>
> /* The associated vector or predicate mode. */
> machine_mode vector_mode : 16;
> --
> 2.34.1
>