On Thu, 2023-11-16 15:26:14 +0000, Christophe Lyon wrote: > diff --git a/gcc/config/arm/arm-mve-builtins-functions.h b/gcc/config/arm/arm-mve-builtins-functions.h > index eba1f071af0..6d234a2dd7c 100644 > --- a/gcc/config/arm/arm-mve-builtins-functions.h > +++ b/gcc/config/arm/arm-mve-builtins-functions.h > @@ -966,6 +966,62 @@ public: [...] > +class full_width_access : public multi_vector_function > +{ > +public: > + CONSTEXPR full_width_access (unsigned int vectors_per_tuple = 1) > + : multi_vector_function (vectors_per_tuple) {} > + > + tree > + memory_scalar_type (const function_instance &fi) const override > + { > + return fi.scalar_type (0); > + } > + > + machine_mode > + memory_vector_mode (const function_instance &fi) const override > + { > + machine_mode mode = fi.vector_mode (0); > + /* Vectors of floating-point are managed in memory as vectors of > + integers. */ > + switch (mode) > + { > + case E_V4SFmode: > + mode = E_V4SImode; > + break; > + case E_V8HFmode: > + mode = E_V8HImode; > + break; > + } This introduces warnings about many enum values not being handled, so a default would be good I think. (I do automated builds with --enable-werror-always, see eg. http://toolchain.lug-owl.de/laminar/log/gcc-arm-eabi/48) MfG, JBG --