aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJose E. Marchesi <jose.marchesi@oracle.com>2015-04-30 17:17:20 -0700
committerJose E. Marchesi <jose.marchesi@oracle.com>2015-05-06 09:26:23 -0700
commitf9911bebcab64889ec7ab3571305081741aa03e4 (patch)
treee494b7c63418f7dc99cf98735a9e5695f4740e08
parent9ac47a43ffc8e3c73867b9953145a8e7a227132d (diff)
downloadgdb-f9911bebcab64889ec7ab3571305081741aa03e4.zip
gdb-f9911bebcab64889ec7ab3571305081741aa03e4.tar.gz
gdb-f9911bebcab64889ec7ab3571305081741aa03e4.tar.bz2
gas: support for the sparc %ncc condition codes register.
gas/ChangeLog: 2015-05-06 Jose E. Marchesi <jose.marchesi@oracle.com> * config/tc-sparc.c (sparc_ip): Support the %ncc "natural" condition codes * doc/c-sparc.texi (Sparc-Regs): Document %ncc. gas/testsuite/ChangeLog: 2015-05-06 Jose E. Marchesi <jose.marchesi@oracle.com> * gas/sparc/natural.s: New file. * gas/sparc/natural-32.s: Likewise. * gas/sparc/natural.d: Likewise. * gas/sparc/natural-32.d: Likewise. * gas/sparc/sparc.exp (sparc_elf_setup): Run the tests natural and natural-32.
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/tc-sparc.c6
-rw-r--r--gas/doc/c-sparc.texi4
-rw-r--r--gas/testsuite/ChangeLog10
-rw-r--r--gas/testsuite/gas/sparc/natural-32.d10
-rw-r--r--gas/testsuite/gas/sparc/natural-32.s5
-rw-r--r--gas/testsuite/gas/sparc/natural.d10
-rw-r--r--gas/testsuite/gas/sparc/natural.s5
-rw-r--r--gas/testsuite/gas/sparc/sparc.exp2
9 files changed, 56 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 09589a6..57b3bf5 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2015-05-06 Jose E. Marchesi <jose.marchesi@oracle.com>
+
+ * config/tc-sparc.c (sparc_ip): Support the %ncc "natural"
+ condition codes
+ * doc/c-sparc.texi (Sparc-Regs): Document %ncc.
+
2015-05-06 Nick Clifton <nickc@redhat.com>
* doc/as.texinfo (Dollar Local Labels): Note that these are only
diff --git a/gas/config/tc-sparc.c b/gas/config/tc-sparc.c
index 60bdcc6..3ffe74f 100644
--- a/gas/config/tc-sparc.c
+++ b/gas/config/tc-sparc.c
@@ -1973,7 +1973,8 @@ sparc_ip (char *str, const struct sparc_opcode **pinsn)
{
++s;
}
- if (strncmp (s, "%icc", 4) == 0)
+ if ((strncmp (s, "%icc", 4) == 0)
+ || (sparc_arch_size == 32 && strncmp (s, "%ncc", 4) == 0))
{
s += 4;
continue;
@@ -1985,7 +1986,8 @@ sparc_ip (char *str, const struct sparc_opcode **pinsn)
{
++s;
}
- if (strncmp (s, "%xcc", 4) == 0)
+ if ((strncmp (s, "%xcc", 4) == 0)
+ || (sparc_arch_size == 64 && strncmp (s, "%ncc", 4) == 0))
{
s += 4;
continue;
diff --git a/gas/doc/c-sparc.texi b/gas/doc/c-sparc.texi
index aedf25c..f482e3a 100644
--- a/gas/doc/c-sparc.texi
+++ b/gas/doc/c-sparc.texi
@@ -303,6 +303,10 @@ Various V9 branch and conditional move instructions allow
specification of which set of integer condition codes to
test. These are referred to as @samp{%xcc} and @samp{%icc}.
+Additionally, GAS supports the so-called ``natural'' condition codes;
+these are referred to as @samp{%ncc} and reference to @samp{%icc} if
+the word size is 32, @samp{%xcc} if the word size is 64.
+
In V9, there are 4 sets of floating point condition codes
which are referred to as @samp{%fcc@var{n}}.
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 41604ef..347fbb2 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,13 @@
+2015-05-06 Jose E. Marchesi <jose.marchesi@oracle.com>
+
+
+ * gas/sparc/natural.s: New file.
+ * gas/sparc/natural-32.s: Likewise.
+ * gas/sparc/natural.d: Likewise.
+ * gas/sparc/natural-32.d: Likewise.
+ * gas/sparc/sparc.exp (sparc_elf_setup): Run the tests natural and
+ natural-32.
+
2015-05-06 Renlin Li <renlin.li@arm.com>
* gas/aarch64/codealign_1.s: New.
diff --git a/gas/testsuite/gas/sparc/natural-32.d b/gas/testsuite/gas/sparc/natural-32.d
new file mode 100644
index 0000000..039e45e
--- /dev/null
+++ b/gas/testsuite/gas/sparc/natural-32.d
@@ -0,0 +1,10 @@
+#as: -Av9 -32
+#objdump: -dr --prefix-addresses
+#name: sparc natural regs and insns
+
+.*: +file format .*
+
+Disassembly of section .text:
+0x00000000 b %icc, 0x00000008
+0x0+0000004 nop
+0x0+0000008 nop
diff --git a/gas/testsuite/gas/sparc/natural-32.s b/gas/testsuite/gas/sparc/natural-32.s
new file mode 100644
index 0000000..2a51441
--- /dev/null
+++ b/gas/testsuite/gas/sparc/natural-32.s
@@ -0,0 +1,5 @@
+# Test SPARC "natural" registers and instructions
+ .text
+ ba %ncc, 0f
+ nop
+0: nop
diff --git a/gas/testsuite/gas/sparc/natural.d b/gas/testsuite/gas/sparc/natural.d
new file mode 100644
index 0000000..e29c251
--- /dev/null
+++ b/gas/testsuite/gas/sparc/natural.d
@@ -0,0 +1,10 @@
+#as: -Av9 -64
+#objdump: -dr --prefix-addresses
+#name: sparc natural regs and insns
+
+.*: +file format .*
+
+Disassembly of section .text:
+0x0+0000000 b %xcc, 0x0+0000008
+0x0+0000004 nop
+0x0+0000008 nop
diff --git a/gas/testsuite/gas/sparc/natural.s b/gas/testsuite/gas/sparc/natural.s
new file mode 100644
index 0000000..2a51441
--- /dev/null
+++ b/gas/testsuite/gas/sparc/natural.s
@@ -0,0 +1,5 @@
+# Test SPARC "natural" registers and instructions
+ .text
+ ba %ncc, 0f
+ nop
+0: nop
diff --git a/gas/testsuite/gas/sparc/sparc.exp b/gas/testsuite/gas/sparc/sparc.exp
index 36113f6..874f795 100644
--- a/gas/testsuite/gas/sparc/sparc.exp
+++ b/gas/testsuite/gas/sparc/sparc.exp
@@ -93,6 +93,8 @@ if [istarget sparc*-*-*] {
run_dump_test "mwait"
run_dump_test "mcdper"
run_dump_test "sparc5vis4"
+ run_dump_test "natural"
+ run_dump_test "natural-32"
run_list_test "pr4587" ""
}