This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils 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 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


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