This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH AArch64][V3]Rewrite vcond patterns using vcond_mask/vec_cmp, also support missing vect_cond_mixed patterns


Hi,
This is the 3rd version patch implementing vcond patterns on AArch64.  It rewrites vcond patterns using newly introduced vcond_mask and vec_cmp patterns in previous patch.  It also adds missing vect_cond_mixed patterns for AArch64.  Note we rely on RTL combiner to optimize "mask = !x; res = mask ? T : F" into "res = x ? F : T", thus an additional inversion instruction can be saved.  The patch includes a test for this purpose.

Bootstrap and test along with previous one on AArch64, is it OK?

Thanks,
bin

2016-07-28  Alan Lawrence  <alan.lawrence@arm.com>
	    Renlin Li  <renlin.li@arm.com>
	    Bin Cheng  <bin.cheng@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<v_cmp_result><mode>): Ditto.
	(vcond<mode><mode>): Re-implement using vec_cmp and vcond_mask.
	(vcondu<mode><mode>): Ditto.
	(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-07-28  Bin Cheng  <bin.cheng@arm.com>

	* gcc.target/aarch64/simd/vcond-ne.c: New test.

Attachment: aarch64-vcond-20160703.txt
Description: aarch64-vcond-20160703.txt


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]