Ping. Thanks, bin
On Tue, May 17, 2016 at 10:02 AM, Bin Cheng <bin.ch...@arm.com> wrote: > Hi, > Alan and Renlin noticed that some vcond patterns are not supported in > AArch64(or AArch32?) backend, and they both had some patches fixing this. > After investigation, I agree with them that vcond/vcondu in AArch64's backend > should be re-implemented using vec_cmp/vcond_mask patterns, so here comes > this patch which is based on Alan's. This patch supports all vcond/vcondu > patterns by implementing/using vec_cmp and vcond_mask patterns. Different to > the original patch, it doesn't change GCC's expanding process, and it keeps > vcond patterns. The patch also introduces vec_cmp*_internal to support > special case optimization for vcond/vcondu which current implementation does. > Apart from Alan's patch, I also learned ideas from Renlin's, and it is my > change that shall be blamed if any potential bug is introduced. > > With this patch, GCC's test condition "vect_cond_mixed" can be enabled on > AArch64 (in a following patch). > Bootstrap and test on AArch64. Is it OK? BTW, this patch is necessary for > gcc.dg/vect/PR56541.c (on AArch64) which was added before in tree > if-conversion patch. > > Thanks, > bin > > 2016-05-11 Alan Lawrence <alan.lawre...@arm.com> > Renlin Li <renlin...@arm.com> > Bin Cheng <bin.ch...@arm.com> > > * config/aarch64/iterators.md (V_cmp_mixed, v_cmp_mixed): New. > * config/aarch64/aarch64-simd.md (<su><maxmin>v2di3): Call > gen_vcondv2div2di instead of gen_aarch64_vcond_internalv2div2di. > (aarch64_vcond_internal<mode><mode>): Delete pattern. > (aarch64_vcond_internal<VDQF_COND:mode><VDQF:mode>): Ditto. > (vcond_mask_<mode><v_cmp_result>): New pattern. > (vec_cmp<mode><mode>_internal, vec_cmp<mode><mode>): New pattern. > (vec_cmp<mode><v_cmp_result>_internal): New pattern. > (vec_cmp<mode><v_cmp_result>, vec_cmpu<mode><mode>): New pattern. > (vcond<mode><mode>): Re-implement using vec_cmp and vcond_mask. > (vcondu<mode><mode>): Ditto. > (vcond<v_cmp_result><mode>): Delete. > (vcond<v_cmp_mixed><mode>): New pattern. > (vcondu<mode><v_cmp_mixed>): New pattern. > (aarch64_cmtst<mode>): Revise comment using aarch64_vcond instead > of aarch64_vcond_internal. > > gcc/testsuite/ChangeLog > 2016-05-11 Bin Cheng <bin.ch...@arm.com> > > * gcc.target/aarch64/vect-vcond.c: New test.