This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
PATCH: powerpc regnames
- From: Tristan Gingold <gingold at adacore dot com>
- To: binutils at sourceware dot org
- Cc: Alan Modra <amodra at bigpond dot net dot au>
- Date: Thu, 8 Nov 2007 16:02:56 +0100
- Subject: PATCH: powerpc regnames
- References: <910B3131-CE93-432B-A948-669A952F90A8@adacore.com> <20071019104747.GB5096@bubble.grove.modra.org> <B55C29C0-0E75-4831-B442-BA92B2709977@adacore.com> <20071019114042.GC5096@bubble.grove.modra.org>
Here is the patch to fix this issue.
Tristan.
On Oct 19, 2007, at 1:40 PM, Alan Modra wrote:
On Fri, Oct 19, 2007 at 01:16:33PM +0200, Tristan Gingold wrote:
Note that your patch doesn't handle all cases:
%cr7*4+gt is not accepted.
Indeed. Would you like to fix it?
gas:
2007-11-08 Tristan Gingold <gingold@adacore.com>
* config/tc-ppc.c (md_assemble): If -mregnames, when parsing
PPC_OPERAND_CR always parse as expression to allow register name
followed by an expression.
gas/testsuite:
2007-11-08 Tristan Gingold <gingold@adacore.com>
* gas/ppc/regnames.d: New. Test -mregnames switch.
* gas/ppc/regnames.s: Likewise.
* gas/ppc/ppc.exp: Run regnames.
*** gas/config/tc-ppc.c 7 Nov 2007 14:10:48 -0000 1.130
--- gas/config/tc-ppc.c 8 Nov 2007 14:51:14 -0000
***************
*** 2454,2460 ****
else
#endif /* TE_PE */
{
! if (! register_name (&ex))
{
char save_lex = lex_type['%'];
--- 2454,2465 ----
else
#endif /* TE_PE */
{
! /* For CR operand, always parse as an expression if
reg_names_p.
! This is useful for instruction like:
! cror 4*%cr7+gt,%cr7*4+gt,4*%cr6+gt
! */
! if ((reg_names_p && (operand->flags & PPC_OPERAND_CR) != 0)
! || ! register_name (&ex))
{
char save_lex = lex_type['%'];
*** /dev/null 2004-06-30 22:03:36.000000000 +0200
--- gas/testsuite/gas/ppc/regnames.s 2007-11-08 15:25:10.000000000
+0100
***************
*** 0 ****
--- 1,3 ----
+ .text
+ cror 4*%cr7+gt,%cr7*4+gt,4*%cr6+gt
+ lbz r4,4(r5)
*** /dev/null 2004-06-30 22:03:36.000000000 +0200
--- gas/testsuite/gas/ppc/regnames.d 2007-11-08 15:40:02.000000000
+0100
***************
*** 0 ****
--- 1,8 ----
+ #as: -mregnames
+ #objdump: -s -j .text
+ #name: PowerPC symbolic regnames
+
+ .*
+
+ Contents of section \.text:
+ 0000 4fbdcb82 88850004 .*
*** gas/testsuite/gas/ppc/ppc.exp 24 Aug 2007 00:56:29
-0000 1.15
--- gas/testsuite/gas/ppc/ppc.exp 8 Nov 2007 14:58:25 -0000
***************
*** 30,35 ****
--- 30,36 ----
if { [istarget powerpc*-*-*] } then {
run_dump_test "simpshft"
run_dump_test "machine"
+ run_dump_test "regnames"
if { [istarget powerpc-*-*aix*] } then {
run_dump_test "altivec_xcoff"