From: Jose E. Marchesi Date: Fri, 1 May 2015 00:17:20 +0000 (-0700) Subject: gas: support for the sparc %ncc condition codes register. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f9911bebcab64889ec7ab3571305081741aa03e4;p=binutils-gdb.git gas: support for the sparc %ncc condition codes register. gas/ChangeLog: 2015-05-06 Jose E. Marchesi * 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 * 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. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index 09589a65db3..57b3bf54e5d 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2015-05-06 Jose E. Marchesi + + * 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 * 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 60bdcc6bfae..3ffe74f7219 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 aedf25c4344..f482e3a6b6f 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 41604ef675c..347fbb2407a 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2015-05-06 Jose E. Marchesi + + + * 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 * 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 00000000000..039e45edc14 --- /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 00000000000..2a514419921 --- /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 00000000000..e29c251f1a2 --- /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 00000000000..2a514419921 --- /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 36113f625a3..874f795cd81 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" "" }