diff options
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-sparc.c | 4 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gas/testsuite/gas/sparc/imm-plus-rreg.d | 13 | ||||
-rw-r--r-- | gas/testsuite/gas/sparc/imm-plus-rreg.s | 7 | ||||
-rw-r--r-- | gas/testsuite/gas/sparc/sparc.exp | 1 |
6 files changed, 34 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index cdea19e..63afe4f 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2011-09-08 Mark Fortescue <mark@mtfhpc.demon.co.uk> + + * config/tc-sparc.c (sparc_ip): Handle 'i' + r<0..31> + in addition to 'i' + [goli]<0..7>. + 2011-09-08 Joern Rennecke <joern.rennecke@embecosm.com> * cgen.c (gas_cgen_pcrel_r_type): New function. diff --git a/gas/config/tc-sparc.c b/gas/config/tc-sparc.c index 61808f3..be8d987 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 b8adc1f..2df1ce8 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-09-08 Mark Fortescue <mark@mtfhpc.demon.co.uk> + + * gas/sparc/imm-plus-rreg.[sd]: New test. + * gas/sparc/sparc.exp: Run new test. + 2011-09-08 David S. Miller <davem@davemloft.net> * 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 0000000..aed738b --- /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 <foo>: + 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 0000000..c84e3e8 --- /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 4a67574..335d4b4 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" |