This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
patch for opcodes/sparc-opc.c
- From: Nathan Tallent <eraxxon at cs dot rice dot edu>
- To: <binutils at sources dot redhat dot com>
- Cc: <eraxxon at alumni dot rice dot edu>
- Date: Mon, 7 Oct 2002 15:10:00 -0500 (CDT)
- Subject: patch for opcodes/sparc-opc.c
Description:
------------
Add conditional/unconditional branch classification to the floating point
brach instructions.
Testing and testcases:
----------------------
I have run the binutils regression tests with and without my changes and
the results are the same.
Our tests: We are using bintuils as the binary reader for a program
that performs source code structure recovery on binaries from a number of
different platforms. (We esp. focus on loop recovery for scientific
programs.) This program is also a cross-tool and we have successfully
tested these changes (and a number of others to follow eventually) on a
number of different binaries (from GNU and non-GNU compilers) and
platforms.
hosts (all of which are enabled on each platform)
mips64-sgi-irix6
alpha-*-linux-gnu, alpha-*-osf
sparc32-*-elf, sparc64-*-solaris2
i386-*-linux-gnu
ia64-*-linux-gnu
ChangeLog:
----------
2002-10-07 Nathan Tallent <eraxxon@alumni.rice.edu>
* sparc-opc.c (sparc_opcodes) <fb, fba, fbe, fbz, fbg, fbge,
fbl, fble, fblg, fbn, fbne, fbnz, fbo, fbu, fbue, fbug, fbuge,
fbul, fbule>: Add conditional/unconditional branch
classification.
Patch: opcodes/sparc-opc.c
(created with 'cvs diff -c3p' against cvs repository on 10/07/02)
------
Index: sparc-opc.c
===================================================================
RCS file: /cvs/src/src/opcodes/sparc-opc.c,v
retrieving revision 1.7
diff -c -3 -p -r1.7 sparc-opc.c
*** sparc-opc.c 13 Mar 2001 22:58:37 -0000 1.7
--- sparc-opc.c 7 Oct 2002 19:52:44 -0000
*************** cond ("bz", "tz", CONDZ, F_CONDBR|F_AL
*** 1440,1464 ****
FBRX(fop, F2(0, 5)|COND(mask), F2(~0, ~5)|COND(~(mask)), flags), /* v9 */ \
FBR(fop, F2(0, 6)|COND(mask), F2(~0, ~6)|COND(~(mask)), flags)
! CONDFC ("fb", "cb", 0x8, 0),
! CONDFCL ("fba", "cba", 0x8, F_ALIAS),
! CONDFC ("fbe", "cb0", 0x9, 0),
! CONDF ("fbz", 0x9, F_ALIAS),
! CONDFC ("fbg", "cb2", 0x6, 0),
! CONDFC ("fbge", "cb02", 0xb, 0),
! CONDFC ("fbl", "cb1", 0x4, 0),
! CONDFC ("fble", "cb01", 0xd, 0),
! CONDFC ("fblg", "cb12", 0x2, 0),
! CONDFCL ("fbn", "cbn", 0x0, 0),
! CONDFC ("fbne", "cb123", 0x1, 0),
! CONDF ("fbnz", 0x1, F_ALIAS),
! CONDFC ("fbo", "cb012", 0xf, 0),
! CONDFC ("fbu", "cb3", 0x7, 0),
! CONDFC ("fbue", "cb03", 0xa, 0),
! CONDFC ("fbug", "cb23", 0x5, 0),
! CONDFC ("fbuge", "cb023", 0xc, 0),
! CONDFC ("fbul", "cb13", 0x3, 0),
! CONDFC ("fbule", "cb013", 0xe, 0),
#undef CONDFC
#undef CONDFCL
--- 1440,1464 ----
FBRX(fop, F2(0, 5)|COND(mask), F2(~0, ~5)|COND(~(mask)), flags), /* v9 */ \
FBR(fop, F2(0, 6)|COND(mask), F2(~0, ~6)|COND(~(mask)), flags)
! CONDFC ("fb", "cb", 0x8, F_UNBR),
! CONDFCL ("fba", "cba", 0x8, F_UNBR|F_ALIAS),
! CONDFC ("fbe", "cb0", 0x9, F_CONDBR),
! CONDF ("fbz", 0x9, F_CONDBR|F_ALIAS),
! CONDFC ("fbg", "cb2", 0x6, F_CONDBR),
! CONDFC ("fbge", "cb02", 0xb, F_CONDBR),
! CONDFC ("fbl", "cb1", 0x4, F_CONDBR),
! CONDFC ("fble", "cb01", 0xd, F_CONDBR),
! CONDFC ("fblg", "cb12", 0x2, F_CONDBR),
! CONDFCL ("fbn", "cbn", 0x0, F_UNBR),
! CONDFC ("fbne", "cb123", 0x1, F_CONDBR),
! CONDF ("fbnz", 0x1, F_CONDBR|F_ALIAS),
! CONDFC ("fbo", "cb012", 0xf, F_CONDBR),
! CONDFC ("fbu", "cb3", 0x7, F_CONDBR),
! CONDFC ("fbue", "cb03", 0xa, F_CONDBR),
! CONDFC ("fbug", "cb23", 0x5, F_CONDBR),
! CONDFC ("fbuge", "cb023", 0xc, F_CONDBR),
! CONDFC ("fbul", "cb13", 0x3, F_CONDBR),
! CONDFC ("fbule", "cb013", 0xe, F_CONDBR),
#undef CONDFC
#undef CONDFCL