[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