> -----Original Message-----
> From: Richard Sandiford [mailto:richard.sandif...@arm.com]
> Sent: Tuesday, July 21, 2020 2:49 AM
> To: yangyang (ET) <yangyang...@huawei.com>
> Cc: gcc-patches@gcc.gnu.org
> Subject: Re: [PATCH PR96195] aarch64: ICE during GIMPLE pass:vect
> 
> Sorry for the slow reply.
> 
> "yangyang (ET)" <yangyang...@huawei.com> writes:
> > Hi,
> >
> >     This is a simple fix for PR96195.
> >
> >     For the test case, GCC generates the following gimple statement in
> pass_vect:
> >
> >       vect__21.16_58 = zp.simdclone.2 (vect_vec_iv_.15_56);
> >
> >     The mode of vect__21.16_58 is VNx2SI while the mode of zp.simdclone.2
> (vect_vec_iv_.15_56) is V4SI, resulting in the crash.
> >
> >     In vectorizable_simd_clone_call, type compatibility is handled based on
> the number of elements and the type compatibility of elements, which is not
> enough.
> >     This patch add VIEW_CONVERT_EXPRs if the arguments types and return
> type of simd clone function are distinct with the vectype of stmt.
> >
> >     Added one testcase for this. Bootstrap and tested on both aarch64 and
> x86 Linux platform, no new regression witnessed.
> 
> I agree this looks correct as far as the target-independent interface goes.
> However, the underlying problem is that we haven't yet added support for SVE
> omp simd functions.  What should happen for the testcase is that we assume
> both SVE and Advanced SIMD versions of zp exist and call the SVE version
> instead of the Advanced SIMD version.
> 
> There again, for little-endian -msve-vector-bits=128 there should be no
> overhead with using the Advanced SIMD version, and big-endian
> -msve-vector-bits=128 is equivalent to -msve-vector-bits=scalable.
> 
> Things would get more interesting for:
> 
>   #pragma omp declare simd simdlen(8)
>   int
>   zp (int);
> 
> and -msve-vector-bits=256, but again, we don't yet support simdlen(8) for
> Advanced SIMD.
> 
> So all in all, I agree this is the right fix.  Pushed to master with a minor
> whitespace fixup for:
> 
> > +                       gassign *new_stmt
> > +                         = gimple_build_assign (make_ssa_name (atype),
> > +                                                  vec_oprnd0);
> 
> …the indentation on this line.
> 
> Thanks,
> Richard

Thanks for reviewing and installing the patch. By the way, are there any plans 
for adding support for SVE omp simd functions in the future?

Reply via email to