"yangyang (ET)" <yangyang...@huawei.com> writes: >> -----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?
FWIW, I've filed https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96342 to track this. I guess the easiest thing would be for anyone who's planning on working on it to assign themselves. Thanks, Richard