[PATCH] MIPS: Fix __sync_nand for changed semantics.

David Daney ddaney@caviumnetworks.com
Fri Dec 5 20:22:00 GMT 2008


The decision to change the semantics of the built-in atomic NAND
operations necessitates some changes for MIPS.

This patch fixes the five newly failing testcases:

-FAIL: gcc.dg/ia64-sync-1.c execution test
+PASS: gcc.dg/ia64-sync-1.c execution test

-FAIL: gcc.dg/ia64-sync-2.c execution test
+PASS: gcc.dg/ia64-sync-2.c execution test

-FAIL: gcc.dg/pr37908.c execution test
+PASS: gcc.dg/pr37908.c execution test

-FAIL: gcc.dg/sync-2.c execution test
+PASS: gcc.dg/sync-2.c execution test

-FAIL: gcc.dg/sync-3.c execution test
+PASS: gcc.dg/sync-3.c execution test

We do however suffer a new failure in gcc.target/mips/atomic-memory-1.c,
which is due to the change in semantics.  Someone will have to fix this
with a separate patch to the testcase.

Tested on mips64-octeon-linux w/ n32 ABI.

OK to commit?

2008-12-05  David Daney  <ddaney@caviumnetworks.com>

	* config/mips/sync.md (sync_old_<optab>_12): Remove third
	paramater to MIPS_SYNC_OLD_OP_12 macro.
	(sync_nand_12): Reduce length attribute to 40.
	(sync_old_nand_12): Remove third paramater to MIPS_SYNC_OLD_OP_12
	macro, and reduce length attribute to 40.
	(sync_new_nand<mode>): Increase length attribute to 36.
	* config/mips/mips.h (MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
	MIPS_SYNC_OP_12_NOT_NOT,MIPS_SYNC_OLD_OP_12_NOT_NOP,
	MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_NEW_OP_12,
	MIPS_SYNC_NEW_OP_12_NOT_NOP, MIPS_SYNC_NEW_OP_12_NOT_NOT,
	MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Rewritten
	to implement new __sync_nand semantics.
	(MIPS_SYNC_OLD_OP_12): Implement new __sync_nand semantics, and
	remove third parameter.
	(MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
	MIPS_SYNC_OLD_OP_12_NOT_NOT_REG): Removed.
	

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: nand-fix-v3.patch
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20081205/8e4cbaf5/attachment.ksh>


More information about the Gcc-patches mailing list