> -----Original Message----- > From: Gcc-patches <gcc-patches- > bounces+kyrylo.tkachov=arm....@gcc.gnu.org> On Behalf Of Christophe > Lyon via Gcc-patches > Sent: Wednesday, May 4, 2022 8:51 AM > To: gcc-patches@gcc.gnu.org > Subject: Re: [PATCH] arm: Restrict support of vectors of boolean immediates > (PR target/104662) > > ping? > > On 4/20/22 10:50, Christophe Lyon wrote: > > This simple patch avoids the ICE described in the PR: > > internal compiler error: in simd_valid_immediate, at > config/arm/arm.cc:12866 > > > > with an early exit from simd_valid_immediate if we are trying to > > handle a vector of booleans and MVE is not enabled. > > > > We still get an ICE when compiling the existing > > gcc.dg/rtl/arm/mve-vxbi.c without -march=armv8.1-m.main+mve: > > > > error: unrecognizable insn: > > (insn 7 5 8 2 (set (reg:V4BI 114) > > (const_vector:V4BI [ > > (const_int 1 [0x1]) > > (const_int 0 [0]) repeated x2 > > (const_int 1 [0x1]) > > ])) -1 > > (nil)) > > during RTL pass: ira > > > > but there's little we can do since the testcase explicitly creates > > vectors of booleans which do need MVE. > > > > That is the reason why I do not add a testcase.
Ok if testing is fine. Thanks, Kyrill > > > > 2022-04-19 Christophe Lyon <christophe.l...@arm.com> > > > > PR target/104662 > > * config/arm/arm.cc (simd_valid_immediate): Exit when input is a > > vector of booleans and MVE is not enabled. > > --- > > gcc/config/arm/arm.cc | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/gcc/config/arm/arm.cc b/gcc/config/arm/arm.cc > > index 14e2fdfeafa..69a18c2f157 100644 > > --- a/gcc/config/arm/arm.cc > > +++ b/gcc/config/arm/arm.cc > > @@ -12849,6 +12849,9 @@ simd_valid_immediate (rtx op, machine_mode > mode, int inverse, > > || n_elts * innersize != 16)) > > return -1; > > > > + if (!TARGET_HAVE_MVE && GET_MODE_CLASS (mode) == > MODE_VECTOR_BOOL) > > + return -1; > > + > > /* Vectors of float constants. */ > > if (GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT) > > {