[PATCH] Add PRU support for LMBD (left-most bit detect) instruction
Dimitar Dimitrov
dimitar@dinux.eu
Tue Oct 27 17:44:19 GMT 2020
On вторник, 27 октомври 2020 г. 19:04:48 EET Spencer E. Olson wrote:
> 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",
Change looks good to me. I'm not sure if it is considered small enough change
to avoid copyright assignment.
Olson, in the future please do not modify ChangeLog in your change, since
changelogs frequently conflict. ChangeLog files are supposed to be updated
after applying your patch, just prior commit to master.
Thanks,
Dimitar
More information about the Binutils
mailing list