[PATCH] Add PRU support for LMBD (left-most bit detect) instruction
Spencer E. Olson
olsonse@umich.edu
Tue Oct 27 17:04:48 GMT 2020
include/ChangeLog:
2020-10-26 Spencer E. Olson <olsonse@umich.edu>
* opcode/pru.h: Add LMBD (left-most bit detect) opcode index
opcodes/ChangeLog:
2020-10-26 Spencer E. Olson <olsonse@umich.edu>
* pru-opc.c: Add opcode description for LMBD (left-most bit detect)
gas
* gas/testsuite/gas/pru/misc.s: Add tests for lmbd (left-most bit detect)
* gas/testsuite/gas/pru/misc.d: Add tests for lmbd (left-most bit detect)
---
This patch adds support for an instruction that was misidentified initially as
being obsolete. This instruction (LMBD: Left-most bit detect) searches a
register to identify the first bit (from the left) that matches the first bit of
the given immediate/register operand. This patch adds the minimal description
required and associated tests to support the LMBD instruction.
gas/testsuite/gas/pru/misc.d | 3 +++
gas/testsuite/gas/pru/misc.s | 3 +++
include/ChangeLog | 4 ++++
include/opcode/pru.h | 4 ++--
opcodes/ChangeLog | 4 ++++
opcodes/pru-opc.c | 2 ++
6 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/gas/testsuite/gas/pru/misc.d b/gas/testsuite/gas/pru/misc.d
index 7c791e63f4..ac778db545 100644
--- a/gas/testsuite/gas/pru/misc.d
+++ b/gas/testsuite/gas/pru/misc.d
@@ -9,3 +9,6 @@ Disassembly of section .text:
0+0000 <[^>]*> 2a000000 halt
0+0004 <[^>]*> 3e800000 slp 1
0+0008 <[^>]*> 3e000000 slp 0
+0+000c <[^>]*> 2701e1e0 lmbd r0, r1, 1
+0+0010 <[^>]*> 2700e100 lmbd r0.b0, r1, 0
+0+0014 <[^>]*> 2642e1e0 lmbd r0, r1, sp.b2
diff --git a/gas/testsuite/gas/pru/misc.s b/gas/testsuite/gas/pru/misc.s
index cfe4d88fce..42e08a7579 100644
--- a/gas/testsuite/gas/pru/misc.s
+++ b/gas/testsuite/gas/pru/misc.s
@@ -4,3 +4,6 @@ foo:
halt
slp 1
slp 0
+ lmbd r0, r1, 0x1
+ lmbd r0.b0, r1, 0x0
+ lmbd r0, r1, r2.b2
diff --git a/include/ChangeLog b/include/ChangeLog
index 2267cda7bd..914d6a1f84 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,7 @@
+2020-10-26 Spencer E. Olson <olsonse@umich.edu>
+
+ * opcode/pru.h: Add LMBD (left-most bit detect) opcode index.
+
2020-10-26 Cooper Qu <cooper.qu@linux.alibaba.com>
* opcode/csky.h (CSKY_VERSION_V1): New, currently used.
diff --git a/include/opcode/pru.h b/include/opcode/pru.h
index 74cc27a544..a5472e5e15 100644
--- a/include/opcode/pru.h
+++ b/include/opcode/pru.h
@@ -58,8 +58,8 @@ enum opcode_format_type {
enum pru_instr_type {
prui_add, prui_adc, prui_sub, prui_suc, prui_lsl, prui_lsr, prui_rsb,
prui_rsc, prui_and, prui_or, prui_xor, prui_min, prui_max, prui_clr,
- prui_set, prui_not, prui_jmp, prui_jal, prui_ldi, prui_halt, prui_slp,
- prui_xin, prui_xout, prui_xchg, prui_sxin, prui_sxout, prui_sxchg,
+ prui_set, prui_not, prui_jmp, prui_jal, prui_ldi, prui_lmbd, prui_halt,
+ prui_slp, prui_xin, prui_xout, prui_xchg, prui_sxin, prui_sxout, prui_sxchg,
prui_loop, prui_iloop, prui_qbgt, prui_qbge, prui_qblt, prui_qble,
prui_qbeq, prui_qbne, prui_qba, prui_qbbs, prui_qbbc, prui_lbbo,
prui_sbbo, prui_lbco, prui_sbco
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 94659f4c38..a6140c819b 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,7 @@
+2020-10-26 Spencer E. Olson <olsonse@umich.edu>
+
+ * pru-opc.c: Add opcode description for LMBD (left-most bit detect).
+
2020-10-26 Cooper Qu <cooper.qu@linux.alibaba.com>
* csky-opc.h (csky_v2_opcodes): Change plsl.u16 to plsl.16.
diff --git a/opcodes/pru-opc.c b/opcodes/pru-opc.c
index f1fb7fefe1..05ddfb0358 100644
--- a/opcodes/pru-opc.c
+++ b/opcodes/pru-opc.c
@@ -121,6 +121,8 @@ const struct pru_opcode pru_opcodes[] =
OP_MATCH_JAL, OP_MASK_FMT2_OP | OP_MASK_SUBOP, 0, unsigned_immed16_overflow},
{ "ldi", prui_ldi, "d,W",
OP_MATCH_LDI, OP_MASK_FMT2_OP | OP_MASK_SUBOP, 0, unsigned_immed16_overflow},
+ { "lmbd", prui_lmbd, "d,s,b",
+ OP_MATCH_LMBD, OP_MASK_FMT2_OP | OP_MASK_SUBOP, 0, unsigned_immed8_overflow},
{ "halt", prui_halt, "",
OP_MATCH_HALT, OP_MASK_FMT2_OP | OP_MASK_SUBOP, 0, no_overflow},
{ "slp", prui_slp, "w",
--
2.17.1
More information about the Binutils
mailing list