aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Eager <eager@eagercon.com>2012-11-14 16:45:00 +0000
committerMichael Eager <eager@eagercon.com>2012-11-14 16:45:00 +0000
commite2be436cc342d130ac0ba6b4a31724d71e473684 (patch)
tree84b635d6ee7c037563420c08b7b5d63e79f3b0b2
parent1e6eff13a8f06601a76ca70b9b74651016ef042d (diff)
downloadbinutils-e2be436cc342d130ac0ba6b4a31724d71e473684.tar.gz
Add clz opcode.
opcodes/ * microblaze-opc.h: Increase MAX_OPCODES (op_code_struct): add clz insn * microblaze-opcm.h (microblaze_instr): add clz gas/testsuite/ * gas/microblaze/allinsn.s: Add clz insn * gas/microblaze/allinsn.d: Likewise
-rw-r--r--gas/testsuite/ChangeLog5
-rw-r--r--gas/testsuite/gas/microblaze/allinsn.d3
-rw-r--r--gas/testsuite/gas/microblaze/allinsn.s4
-rw-r--r--opcodes/ChangeLog5
-rw-r--r--opcodes/microblaze-opc.h3
-rw-r--r--opcodes/microblaze-opcm.h2
6 files changed, 20 insertions, 2 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 9387158d4..c2a66c8f4 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2012-11-08 David Holsgrove <david.holsgrove@xilinx.com>
+
+ * gas/microblaze/allinsn.s: Add clz insn
+ * gas/microblaze/allinsn.d: Likewise
+
2012-11-14 David Holsgrove <david.holsgrove@xilinx.com>
* gas/microblaze/allinsn.exp: New file - test newly added opcodes
diff --git a/gas/testsuite/gas/microblaze/allinsn.d b/gas/testsuite/gas/microblaze/allinsn.d
index 79064ba11..c7854f18a 100644
--- a/gas/testsuite/gas/microblaze/allinsn.d
+++ b/gas/testsuite/gas/microblaze/allinsn.d
@@ -22,3 +22,6 @@ Disassembly of section .text:
00000014 <swr>:
14: d8000200 swr r0, r0, r0
+
+00000018 <clz>:
+ 18: 900000e0 clz r0, r0
diff --git a/gas/testsuite/gas/microblaze/allinsn.s b/gas/testsuite/gas/microblaze/allinsn.s
index 8bb3ef585..0e4271d40 100644
--- a/gas/testsuite/gas/microblaze/allinsn.s
+++ b/gas/testsuite/gas/microblaze/allinsn.s
@@ -24,4 +24,8 @@ shr:
.global swr
swr:
swr r0,r0,r0
+ .text
+ .global clz
+clz:
+ clz r0,r0
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 69248f828..2efcdd224 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,5 +1,10 @@
2012-11-14 Edgar E. Iglesias <edgar.iglesias@gmail.com>
+ * microblaze-opc.h: Increase MAX_OPCODES (op_code_struct): add clz insn
+ * microblaze-opcm.h (microblaze_instr): add clz
+
+2012-11-14 Edgar E. Iglesias <edgar.iglesias@gmail.com>
+
* microblaze-opc.h: Increase MAX_OPCODES (op_code_struct): add lbur,
lhur, lwr, sbr, shr, swr
* microblaze-opcm.h (microblaze_instr): add lbur, lhur, lwr, sbr, shr,
diff --git a/opcodes/microblaze-opc.h b/opcodes/microblaze-opc.h
index 44c9d3871..132b95146 100644
--- a/opcodes/microblaze-opc.h
+++ b/opcodes/microblaze-opc.h
@@ -96,7 +96,7 @@
#define DELAY_SLOT 1
#define NO_DELAY_SLOT 0
-#define MAX_OPCODES 284
+#define MAX_OPCODES 285
struct op_code_struct
{
@@ -394,6 +394,7 @@ struct op_code_struct
{"tneaputd", INST_TYPE_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0006E0, OPCODE_MASK_H34C, tneaputd, anyware_inst },
{"necaputd", INST_TYPE_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000760, OPCODE_MASK_H34C, necaputd, anyware_inst },
{"tnecaputd", INST_TYPE_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0007E0, OPCODE_MASK_H34C, tnecaputd, anyware_inst },
+ {"clz", INST_TYPE_RD_R1, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x900000E0, OPCODE_MASK_H34, clz, special_inst },
{"", 0, 0, 0, 0, 0, 0, 0, 0},
};
diff --git a/opcodes/microblaze-opcm.h b/opcodes/microblaze-opcm.h
index a3bec497d..58e6fd453 100644
--- a/opcodes/microblaze-opcm.h
+++ b/opcodes/microblaze-opcm.h
@@ -25,7 +25,7 @@
enum microblaze_instr
{
- add, rsub, addc, rsubc, addk, rsubk, addkc, rsubkc, cmp, cmpu,
+ add, rsub, addc, rsubc, addk, rsubk, addkc, rsubkc, clz, cmp, cmpu,
addi, rsubi, addic, rsubic, addik, rsubik, addikc, rsubikc, mul,
mulh, mulhu, mulhsu,
idiv, idivu, bsll, bsra, bsrl, get, put, nget, nput, cget, cput,