public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] NIOS2: Add rdprs instruction
@ 2013-03-09 15:37 Sebastian Huber
  2013-03-09 16:01 ` [PATCH v2] " Sebastian Huber
  2013-03-09 18:15 ` [PATCH v3] " Sebastian Huber
  0 siblings, 2 replies; 4+ messages in thread
From: Sebastian Huber @ 2013-03-09 15:37 UTC (permalink / raw)
  To: binutils

I do not have commit access.  If someone approves this patch, please
commit it also.

2013-03-09  Sebastian Huber <sebastian.huber@embedded-brains.de>
	* opcode/nios2.h (OP_RDPRS): New define.
	(OP_MATCH_RDPRS): Likewise.

2013-03-09  Sebastian Huber <sebastian.huber@embedded-brains.de>

	* nios2-opc.c (nios2_builtin_opcodes): Add entry for rdprs.

2013-03-09  Sebastian Huber <sebastian.huber@embedded-brains.de>

	* gas/nios2/nios2.exp: Run rdprs.
	* gas/nios2/rdprs.d: New file.
	* gas/nios2/rdprs.s: Likewise.
---
 gas/testsuite/gas/nios2/nios2.exp |    1 +
 gas/testsuite/gas/nios2/rdprs.d   |   10 ++++++++++
 gas/testsuite/gas/nios2/rdprs.s   |    5 +++++
 include/opcode/nios2.h            |    2 ++
 opcodes/nios2-opc.c               |    2 ++
 5 files changed, 20 insertions(+)
 create mode 100644 gas/testsuite/gas/nios2/rdprs.d
 create mode 100644 gas/testsuite/gas/nios2/rdprs.s

diff --git a/gas/testsuite/gas/nios2/nios2.exp b/gas/testsuite/gas/nios2/nios2.exp
index 13be1c1..173db00 100644
--- a/gas/testsuite/gas/nios2/nios2.exp
+++ b/gas/testsuite/gas/nios2/nios2.exp
@@ -53,6 +53,7 @@ if { [istarget nios2-*-*] } then {
     run_dump_test "ret"
     run_dump_test "rotate"
     run_dump_test "registers"
+    run_dump_test "rdprs"
     
     run_dump_test "stw"
     run_dump_test "sth"
diff --git a/gas/testsuite/gas/nios2/rdprs.d b/gas/testsuite/gas/nios2/rdprs.d
new file mode 100644
index 0000000..2cce2f6
--- /dev/null
+++ b/gas/testsuite/gas/nios2/rdprs.d
@@ -0,0 +1,10 @@
+#objdump: -dr --prefix-addresses
+#name: NIOS2 rdprs
+
+# Test the rdprs instruction
+
+.*: +file format elf32-littlenios2
+
+Disassembly of section .text:
+0+0000 <[^>]*> rdprs	r2,sp,123
+0+0004 <[^>]*> rdprs	r2,sp,-123
diff --git a/gas/testsuite/gas/nios2/rdprs.s b/gas/testsuite/gas/nios2/rdprs.s
new file mode 100644
index 0000000..1e4a514
--- /dev/null
+++ b/gas/testsuite/gas/nios2/rdprs.s
@@ -0,0 +1,5 @@
+# Source file used to test the rdprs instruction
+
+foo:
+	rdprs r2, sp, 123
+	rdprs r2, sp, -123
diff --git a/include/opcode/nios2.h b/include/opcode/nios2.h
index 85e7023..83773d5 100644
--- a/include/opcode/nios2.h
+++ b/include/opcode/nios2.h
@@ -289,6 +289,7 @@ struct nios2_reg
 #define OP_OPX 58
 #define OP_ORHI 52
 #define OP_ORI 20
+#define OP_RDPRS 56
 #define OP_STB 5
 #define OP_STBIO 37
 #define OP_STC 29
@@ -386,6 +387,7 @@ struct nios2_reg
 #define OP_MATCH_OPX		OP_OPX
 #define OP_MATCH_ORHI		OP_ORHI
 #define OP_MATCH_ORI		OP_ORI
+#define OP_MATCH_RDPRS		OP_RDPRS
 #define OP_MATCH_STB		OP_STB
 #define OP_MATCH_STBIO		OP_STBIO
 #define OP_MATCH_STC		OP_STC
diff --git a/opcodes/nios2-opc.c b/opcodes/nios2-opc.c
index ff24652..3c51343 100644
--- a/opcodes/nios2-opc.c
+++ b/opcodes/nios2-opc.c
@@ -343,6 +343,8 @@ const struct nios2_opcode nios2_builtin_opcodes[] =
    OP_MATCH_ORHI, OP_MASK_IOP, 0, unsigned_immed16_overflow},
   {"ori", "t,s,u", "t,s,u,E", 3,
    OP_MATCH_ORI, OP_MASK_IOP, NIOS2_INSN_ORI, unsigned_immed16_overflow},
+  {"rdprs", "t,s,i", "t,s,i,E", 3,
+   OP_MATCH_RDPRS, OP_MASK_IOP, 0, unsigned_immed16_overflow},
   {"rdctl", "d,c", "d,c,E", 2,
    OP_MATCH_RDCTL, OP_MASK_RDCTL, 0, no_overflow},
   {"ret", "", "E", 0,
-- 
1.7.10.4

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH v2] NIOS2: Add rdprs instruction
  2013-03-09 15:37 [PATCH] NIOS2: Add rdprs instruction Sebastian Huber
@ 2013-03-09 16:01 ` Sebastian Huber
  2013-03-09 18:15 ` [PATCH v3] " Sebastian Huber
  1 sibling, 0 replies; 4+ messages in thread
From: Sebastian Huber @ 2013-03-09 16:01 UTC (permalink / raw)
  To: binutils

Sorry, I had problems with the alphabet.

I do not have commit access.  If someone approves this patch, please
commit it also.

2013-03-09  Sebastian Huber <sebastian.huber@embedded-brains.de>
	* opcode/nios2.h (OP_RDPRS): New define.
	(OP_MATCH_RDPRS): Likewise.

2013-03-09  Sebastian Huber <sebastian.huber@embedded-brains.de>

	* nios2-opc.c (nios2_builtin_opcodes): Add entry for rdprs.

2013-03-09  Sebastian Huber <sebastian.huber@embedded-brains.de>

	* gas/nios2/nios2.exp: Run rdprs.
	* gas/nios2/rdprs.d: New file.
	* gas/nios2/rdprs.s: Likewise.
---
 gas/testsuite/gas/nios2/nios2.exp |    1 +
 gas/testsuite/gas/nios2/rdprs.d   |   10 ++++++++++
 gas/testsuite/gas/nios2/rdprs.s   |    5 +++++
 include/opcode/nios2.h            |    2 ++
 opcodes/nios2-opc.c               |    2 ++
 5 files changed, 20 insertions(+)
 create mode 100644 gas/testsuite/gas/nios2/rdprs.d
 create mode 100644 gas/testsuite/gas/nios2/rdprs.s

diff --git a/gas/testsuite/gas/nios2/nios2.exp b/gas/testsuite/gas/nios2/nios2.exp
index 13be1c1..173db00 100644
--- a/gas/testsuite/gas/nios2/nios2.exp
+++ b/gas/testsuite/gas/nios2/nios2.exp
@@ -53,6 +53,7 @@ if { [istarget nios2-*-*] } then {
     run_dump_test "ret"
     run_dump_test "rotate"
     run_dump_test "registers"
+    run_dump_test "rdprs"
     
     run_dump_test "stw"
     run_dump_test "sth"
diff --git a/gas/testsuite/gas/nios2/rdprs.d b/gas/testsuite/gas/nios2/rdprs.d
new file mode 100644
index 0000000..2cce2f6
--- /dev/null
+++ b/gas/testsuite/gas/nios2/rdprs.d
@@ -0,0 +1,10 @@
+#objdump: -dr --prefix-addresses
+#name: NIOS2 rdprs
+
+# Test the rdprs instruction
+
+.*: +file format elf32-littlenios2
+
+Disassembly of section .text:
+0+0000 <[^>]*> rdprs	r2,sp,123
+0+0004 <[^>]*> rdprs	r2,sp,-123
diff --git a/gas/testsuite/gas/nios2/rdprs.s b/gas/testsuite/gas/nios2/rdprs.s
new file mode 100644
index 0000000..1e4a514
--- /dev/null
+++ b/gas/testsuite/gas/nios2/rdprs.s
@@ -0,0 +1,5 @@
+# Source file used to test the rdprs instruction
+
+foo:
+	rdprs r2, sp, 123
+	rdprs r2, sp, -123
diff --git a/include/opcode/nios2.h b/include/opcode/nios2.h
index 85e7023..83773d5 100644
--- a/include/opcode/nios2.h
+++ b/include/opcode/nios2.h
@@ -289,6 +289,7 @@ struct nios2_reg
 #define OP_OPX 58
 #define OP_ORHI 52
 #define OP_ORI 20
+#define OP_RDPRS 56
 #define OP_STB 5
 #define OP_STBIO 37
 #define OP_STC 29
@@ -386,6 +387,7 @@ struct nios2_reg
 #define OP_MATCH_OPX		OP_OPX
 #define OP_MATCH_ORHI		OP_ORHI
 #define OP_MATCH_ORI		OP_ORI
+#define OP_MATCH_RDPRS		OP_RDPRS
 #define OP_MATCH_STB		OP_STB
 #define OP_MATCH_STBIO		OP_STBIO
 #define OP_MATCH_STC		OP_STC
diff --git a/opcodes/nios2-opc.c b/opcodes/nios2-opc.c
index ff24652..9617d47 100644
--- a/opcodes/nios2-opc.c
+++ b/opcodes/nios2-opc.c
@@ -345,6 +345,8 @@ const struct nios2_opcode nios2_builtin_opcodes[] =
    OP_MATCH_ORI, OP_MASK_IOP, NIOS2_INSN_ORI, unsigned_immed16_overflow},
   {"rdctl", "d,c", "d,c,E", 2,
    OP_MATCH_RDCTL, OP_MASK_RDCTL, 0, no_overflow},
+  {"rdprs", "t,s,i", "t,s,i,E", 3,
+   OP_MATCH_RDPRS, OP_MASK_IOP, 0, unsigned_immed16_overflow},
   {"ret", "", "E", 0,
    OP_MATCH_RET, OP_MASK, 0, no_overflow},
   {"rol", "d,s,t", "d,s,t,E", 3,
-- 
1.7.10.4

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH v3] NIOS2: Add rdprs instruction
  2013-03-09 15:37 [PATCH] NIOS2: Add rdprs instruction Sebastian Huber
  2013-03-09 16:01 ` [PATCH v2] " Sebastian Huber
@ 2013-03-09 18:15 ` Sebastian Huber
  2013-03-12  2:23   ` Sandra Loosemore
  1 sibling, 1 reply; 4+ messages in thread
From: Sebastian Huber @ 2013-03-09 18:15 UTC (permalink / raw)
  To: binutils

Improved test case.  I manually verified the instruction values to match the
ones produced by the Altera binutils.

I do not have commit access.  If someone approves this patch, please
commit it also.

2013-03-09  Sebastian Huber <sebastian.huber@embedded-brains.de>

	* opcode/nios2.h (OP_RDPRS): New define.
	(OP_MATCH_RDPRS): Likewise.

2013-03-09  Sebastian Huber <sebastian.huber@embedded-brains.de>

	* nios2-opc.c (nios2_builtin_opcodes): Add entry for rdprs.

2013-03-09  Sebastian Huber <sebastian.huber@embedded-brains.de>

	* gas/nios2/nios2.exp: Run rdprs.
	* gas/nios2/rdprs.d: New file.
	* gas/nios2/rdprs.s: Likewise.
---
 gas/testsuite/gas/nios2/nios2.exp |    1 +
 gas/testsuite/gas/nios2/rdprs.d   |   35 +++++++++++++++++++++++++++++++++++
 gas/testsuite/gas/nios2/rdprs.s   |   32 ++++++++++++++++++++++++++++++++
 include/opcode/nios2.h            |    2 ++
 opcodes/nios2-opc.c               |    2 ++
 5 files changed, 72 insertions(+)
 create mode 100644 gas/testsuite/gas/nios2/rdprs.d
 create mode 100644 gas/testsuite/gas/nios2/rdprs.s

diff --git a/gas/testsuite/gas/nios2/nios2.exp b/gas/testsuite/gas/nios2/nios2.exp
index 13be1c1..173db00 100644
--- a/gas/testsuite/gas/nios2/nios2.exp
+++ b/gas/testsuite/gas/nios2/nios2.exp
@@ -53,6 +53,7 @@ if { [istarget nios2-*-*] } then {
     run_dump_test "ret"
     run_dump_test "rotate"
     run_dump_test "registers"
+    run_dump_test "rdprs"
     
     run_dump_test "stw"
     run_dump_test "sth"
diff --git a/gas/testsuite/gas/nios2/rdprs.d b/gas/testsuite/gas/nios2/rdprs.d
new file mode 100644
index 0000000..f5a87cd
--- /dev/null
+++ b/gas/testsuite/gas/nios2/rdprs.d
@@ -0,0 +1,35 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: NIOS2 rdprs
+
+# Test the rdprs instruction
+
+.*: +file format elf32-littlenios2
+
+Disassembly of section .text:
+0+0000 <[^>]*> 00000038 	rdprs	zero,zero,0
+0+0004 <[^>]*> 00000078 	rdprs	zero,zero,1
+0+0008 <[^>]*> 000000b8 	rdprs	zero,zero,2
+0+000c <[^>]*> 00000138 	rdprs	zero,zero,4
+0+0010 <[^>]*> 00000238 	rdprs	zero,zero,8
+0+0014 <[^>]*> 00000438 	rdprs	zero,zero,16
+0+0018 <[^>]*> 00000838 	rdprs	zero,zero,32
+0+001c <[^>]*> 00001038 	rdprs	zero,zero,64
+0+0020 <[^>]*> 00002038 	rdprs	zero,zero,128
+0+0024 <[^>]*> 00004038 	rdprs	zero,zero,256
+0+0028 <[^>]*> 00008038 	rdprs	zero,zero,512
+0+002c <[^>]*> 00010038 	rdprs	zero,zero,1024
+0+0030 <[^>]*> 00020038 	rdprs	zero,zero,2048
+0+0034 <[^>]*> 00040038 	rdprs	zero,zero,4096
+0+0038 <[^>]*> 00080038 	rdprs	zero,zero,8192
+0+003c <[^>]*> 00100038 	rdprs	zero,zero,16384
+0+0040 <[^>]*> 00200038 	rdprs	zero,zero,-32768
+0+0044 <[^>]*> 00400038 	rdprs	at,zero,0
+0+0048 <[^>]*> 00800038 	rdprs	r2,zero,0
+0+004c <[^>]*> 01000038 	rdprs	r4,zero,0
+0+0050 <[^>]*> 02000038 	rdprs	r8,zero,0
+0+0054 <[^>]*> 04000038 	rdprs	r16,zero,0
+0+0058 <[^>]*> 08000038 	rdprs	zero,at,0
+0+005c <[^>]*> 10000038 	rdprs	zero,r2,0
+0+0060 <[^>]*> 20000038 	rdprs	zero,r4,0
+0+0064 <[^>]*> 40000038 	rdprs	zero,r8,0
+0+0068 <[^>]*> 80000038 	rdprs	zero,r16,0
diff --git a/gas/testsuite/gas/nios2/rdprs.s b/gas/testsuite/gas/nios2/rdprs.s
new file mode 100644
index 0000000..fb4909d
--- /dev/null
+++ b/gas/testsuite/gas/nios2/rdprs.s
@@ -0,0 +1,32 @@
+# Source file used to test the rdprs instruction
+
+.set noat
+
+foo:
+	rdprs zero, zero, 0
+	rdprs zero, zero, 1
+	rdprs zero, zero, 2
+	rdprs zero, zero, 4
+	rdprs zero, zero, 8
+	rdprs zero, zero, 16
+	rdprs zero, zero, 32
+	rdprs zero, zero, 64
+	rdprs zero, zero, 128
+	rdprs zero, zero, 256
+	rdprs zero, zero, 512
+	rdprs zero, zero, 1024
+	rdprs zero, zero, 2048
+	rdprs zero, zero, 4096
+	rdprs zero, zero, 8192
+	rdprs zero, zero, 16384
+	rdprs zero, zero, -32768
+	rdprs at, zero, 0
+	rdprs r2, zero, 0
+	rdprs r4, zero, 0
+	rdprs r8, zero, 0
+	rdprs r16, zero, 0
+	rdprs zero, at, 0
+	rdprs zero, r2, 0
+	rdprs zero, r4, 0
+	rdprs zero, r8, 0
+	rdprs zero, r16, 0
diff --git a/include/opcode/nios2.h b/include/opcode/nios2.h
index 85e7023..83773d5 100644
--- a/include/opcode/nios2.h
+++ b/include/opcode/nios2.h
@@ -289,6 +289,7 @@ struct nios2_reg
 #define OP_OPX 58
 #define OP_ORHI 52
 #define OP_ORI 20
+#define OP_RDPRS 56
 #define OP_STB 5
 #define OP_STBIO 37
 #define OP_STC 29
@@ -386,6 +387,7 @@ struct nios2_reg
 #define OP_MATCH_OPX		OP_OPX
 #define OP_MATCH_ORHI		OP_ORHI
 #define OP_MATCH_ORI		OP_ORI
+#define OP_MATCH_RDPRS		OP_RDPRS
 #define OP_MATCH_STB		OP_STB
 #define OP_MATCH_STBIO		OP_STBIO
 #define OP_MATCH_STC		OP_STC
diff --git a/opcodes/nios2-opc.c b/opcodes/nios2-opc.c
index ff24652..9617d47 100644
--- a/opcodes/nios2-opc.c
+++ b/opcodes/nios2-opc.c
@@ -345,6 +345,8 @@ const struct nios2_opcode nios2_builtin_opcodes[] =
    OP_MATCH_ORI, OP_MASK_IOP, NIOS2_INSN_ORI, unsigned_immed16_overflow},
   {"rdctl", "d,c", "d,c,E", 2,
    OP_MATCH_RDCTL, OP_MASK_RDCTL, 0, no_overflow},
+  {"rdprs", "t,s,i", "t,s,i,E", 3,
+   OP_MATCH_RDPRS, OP_MASK_IOP, 0, unsigned_immed16_overflow},
   {"ret", "", "E", 0,
    OP_MATCH_RET, OP_MASK, 0, no_overflow},
   {"rol", "d,s,t", "d,s,t,E", 3,
-- 
1.7.10.4

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v3] NIOS2: Add rdprs instruction
  2013-03-09 18:15 ` [PATCH v3] " Sebastian Huber
@ 2013-03-12  2:23   ` Sandra Loosemore
  0 siblings, 0 replies; 4+ messages in thread
From: Sandra Loosemore @ 2013-03-12  2:23 UTC (permalink / raw)
  To: Sebastian Huber; +Cc: binutils

On 03/09/2013 11:15 AM, Sebastian Huber wrote:
> Improved test case.  I manually verified the instruction values to match the
> ones produced by the Altera binutils.
>
> I do not have commit access.  If someone approves this patch, please
> commit it also.
>
> 2013-03-09  Sebastian Huber <sebastian.huber@embedded-brains.de>
>
> 	* opcode/nios2.h (OP_RDPRS): New define.
> 	(OP_MATCH_RDPRS): Likewise.
>
> 2013-03-09  Sebastian Huber <sebastian.huber@embedded-brains.de>
>
> 	* nios2-opc.c (nios2_builtin_opcodes): Add entry for rdprs.
>
> 2013-03-09  Sebastian Huber <sebastian.huber@embedded-brains.de>
>
> 	* gas/nios2/nios2.exp: Run rdprs.
> 	* gas/nios2/rdprs.d: New file.
> 	* gas/nios2/rdprs.s: Likewise.

This patch looks good; I've checked it in for you.  Thanks for catching 
this omission.

-Sandra

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-03-12  2:23 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-03-09 15:37 [PATCH] NIOS2: Add rdprs instruction Sebastian Huber
2013-03-09 16:01 ` [PATCH v2] " Sebastian Huber
2013-03-09 18:15 ` [PATCH v3] " Sebastian Huber
2013-03-12  2:23   ` Sandra Loosemore

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).