From f124dd4f3f9511447b5782d334b3c66172db7451 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Thu, 8 Sep 2011 16:56:10 +0000 Subject: [PATCH] gas/ * config/tc-sparc.c (sparc_ip): Handle 'i' + r<0..31> in addition to 'i' + [goli]<0..7>. gas/testsuite/ * gas/sparc/imm-plus-rreg.[sd]: New test. * gas/sparc/sparc.exp: Run new test. --- gas/ChangeLog | 5 +++++ gas/config/tc-sparc.c | 4 +++- gas/testsuite/ChangeLog | 5 +++++ gas/testsuite/gas/sparc/imm-plus-rreg.d | 13 +++++++++++++ gas/testsuite/gas/sparc/imm-plus-rreg.s | 7 +++++++ gas/testsuite/gas/sparc/sparc.exp | 1 + 6 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 gas/testsuite/gas/sparc/imm-plus-rreg.d create mode 100644 gas/testsuite/gas/sparc/imm-plus-rreg.s diff --git a/gas/ChangeLog b/gas/ChangeLog index cdea19e2097..63afe4f37fe 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2011-09-08 Mark Fortescue + + * config/tc-sparc.c (sparc_ip): Handle 'i' + r<0..31> + in addition to 'i' + [goli]<0..7>. + 2011-09-08 Joern Rennecke * cgen.c (gas_cgen_pcrel_r_type): New function. diff --git a/gas/config/tc-sparc.c b/gas/config/tc-sparc.c index 61808f37ebe..be8d9878920 100644 --- a/gas/config/tc-sparc.c +++ b/gas/config/tc-sparc.c @@ -2408,8 +2408,10 @@ sparc_ip (char *str, const struct sparc_opcode **pinsn) { if (s1[-2] == '%' && s1[-3] == '+') s1 -= 3; - else if (strchr ("goli0123456789", s1[-2]) && s1[-3] == '%' && s1[-4] == '+') + else if (strchr ("golir0123456789", s1[-2]) && s1[-3] == '%' && s1[-4] == '+') s1 -= 4; + else if (s1[-3] == 'r' && s1[-4] == '%' && s1[-5] == '+') + s1 -= 5; else s1 = NULL; if (s1) diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index b8adc1f2650..2df1ce8ea92 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-09-08 Mark Fortescue + + * gas/sparc/imm-plus-rreg.[sd]: New test. + * gas/sparc/sparc.exp: Run new test. + 2011-09-08 David S. Miller * gas/sparc/hpcvis3.s: Correct pdistn test. diff --git a/gas/testsuite/gas/sparc/imm-plus-rreg.d b/gas/testsuite/gas/sparc/imm-plus-rreg.d new file mode 100644 index 00000000000..aed738b8464 --- /dev/null +++ b/gas/testsuite/gas/sparc/imm-plus-rreg.d @@ -0,0 +1,13 @@ +#as: -Av8 +#objdump: -dr +#name: address: simm13 + rreg + +.*: +file format .* + +Disassembly of section .text: + +00000000 : + 0: c2 02 20 0a ld \[ %o0 \+ 0xa \], %g1 + 4: c4 04 a0 0a ld \[ %l2 \+ 0xa \], %g2 + 8: c4 22 20 0a st %g2, \[ %o0 \+ 0xa \] + c: c2 24 a0 0a st %g1, \[ %l2 \+ 0xa \] diff --git a/gas/testsuite/gas/sparc/imm-plus-rreg.s b/gas/testsuite/gas/sparc/imm-plus-rreg.s new file mode 100644 index 00000000000..c84e3e87763 --- /dev/null +++ b/gas/testsuite/gas/sparc/imm-plus-rreg.s @@ -0,0 +1,7 @@ +! simm13 + regrs1 address using r<0..31> instead of [goli]<0..7> + .text +foo: + ld [10+%r8], %r1 + ld [10+%r18], %r2 + st %r2, [10+%r8] + st %r1, [10+%r18] diff --git a/gas/testsuite/gas/sparc/sparc.exp b/gas/testsuite/gas/sparc/sparc.exp index 4a67574ab50..335d4b4b746 100644 --- a/gas/testsuite/gas/sparc/sparc.exp +++ b/gas/testsuite/gas/sparc/sparc.exp @@ -50,6 +50,7 @@ if [istarget sparc*-*-*] { run_dump_test "plt64" run_dump_test "gotop64" } + run_dump_test "imm-plus-rreg" run_dump_test "v9branch1" run_dump_test "v9branch2" run_dump_test "v9branch3" -- 2.30.2