gas/
authorDavid S. Miller <davem@redhat.com>
Thu, 8 Sep 2011 16:56:10 +0000 (16:56 +0000)
committerDavid S. Miller <davem@redhat.com>
Thu, 8 Sep 2011 16:56:10 +0000 (16:56 +0000)
* 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
gas/config/tc-sparc.c
gas/testsuite/ChangeLog
gas/testsuite/gas/sparc/imm-plus-rreg.d [new file with mode: 0644]
gas/testsuite/gas/sparc/imm-plus-rreg.s [new file with mode: 0644]
gas/testsuite/gas/sparc/sparc.exp

index cdea19e20973866dc217296ac3d0c619291eb97c..63afe4f37fe90957731d96e2be734e64d4e3eadb 100644 (file)
@@ -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.
index 61808f37ebe2df4659e510b8327e2275cceae301..be8d9878920addcb6f21a3ee38054b0cb3e55d05 100644 (file)
@@ -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)
index b8adc1f2650ebec5f829fdc43b3c0c12e9a73fc4..2df1ce8ea9254b5f4f0b9b5030881f10c0b33e3a 100644 (file)
@@ -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 (file)
index 0000000..aed738b
--- /dev/null
@@ -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 (file)
index 0000000..c84e3e8
--- /dev/null
@@ -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]
index 4a67574ab50f905863b84ac4252049effdd1bab2..335d4b4b746621fbb565d83e81f78f506d41db6a 100644 (file)
@@ -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"