On Tue, 29 Aug 2023 at 08:06, Prathamesh Kulkarni < prathamesh.kulka...@linaro.org> wrote:
> On Tue, 15 Aug 2023 at 00:05, Christophe Lyon via Gcc-patches > <gcc-patches@gcc.gnu.org> 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, > Hi Prathamesh, > 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 } > > Yeah, exactly. I had noticed this after sending the patch, but forgot to fix it when I pushed the patch. Fixed as obvious with the attached patch (r14-3538-gacaf9e333dbc2e). Thanks, Christophe Thanks, > Prathamesh > > > > 2023-08-14 Christophe Lyon <christophe.l...@linaro.org> > > > > 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 > > >
From acaf9e333dbc2eb811848c169f95ec7a8ca0e2e7 Mon Sep 17 00:00:00 2001 From: Christophe Lyon <christophe.l...@linaro.org> Date: Tue, 29 Aug 2023 06:35:06 +0000 Subject: [PATCH] arm: Fix bootstrap / add missing initializer in MVE type_suffixes My recent patch r14-3519-g9bae37ec8dc320 (arm: [MVE intrinsics] add support for p8 and p16 polynomial types) added a new member to type_suffix_info, but I forgot to add the corresponding initializer to type_suffixes. Committed as obvious. 2023-08-29 Christophe Lyon <christophe.l...@linaro.org> gcc/ * config/arm/arm-mve-builtins.cc (type_suffixes): Add missing initializer. --- gcc/config/arm/arm-mve-builtins.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/config/arm/arm-mve-builtins.cc b/gcc/config/arm/arm-mve-builtins.cc index fa8b0ad36b3..02dc8fa9b73 100644 --- a/gcc/config/arm/arm-mve-builtins.cc +++ b/gcc/config/arm/arm-mve-builtins.cc @@ -132,7 +132,7 @@ CONSTEXPR const type_suffix_info type_suffixes[NUM_TYPE_SUFFIXES + 1] = { 0, \ MODE }, #include "arm-mve-builtins.def" - { "", NUM_VECTOR_TYPES, TYPE_bool, 0, 0, false, false, false, + { "", NUM_VECTOR_TYPES, TYPE_bool, 0, 0, false, false, false, false, 0, VOIDmode } }; -- 2.34.1