mirror of
https://github.com/lowRISC/ibex.git
synced 2025-04-24 13:57:19 -04:00
This commit implements the Bit Manipulation Extension SBS instruction group: sbset[i], sbclr[i], sbinv[i] and sbext[i]. These instructions set, clear, invert or extract bit rs1[rs2] or rs1[imm] for reg-reg and reg-imm instructions respectively. Archtectural details: * A multiplexer is added to the shifter structure in order to chose between 32'h1, used for the single-bit instructions as summarized below, and regular operand_b input. * Dedicated bitwise-logic blocks are introduced for multicycle shifts and cmix instructions (fsr, fsl, ror, rol), single-bit instructions (sbset, sbclr, sbinv, sbext), and stanard-ALU and zbb instructions (or, and xor, orn, andn, xnor). Instruction details: All of the zbs instructions rely on sharing the existing shifter structure. The instructions are carried out in one cycle. * sbset, sbclr, sbinv: shift_result = 32'h1 << rs2[4:0]; singlebit_result = rs1 [|, ^ , &~] shift_result; * sbext: shift_result = rs1 >> rs2[4:0]; singlebit_result = {31'0,shift_resutl[0]}; Signed-off-by: ganoam <gnoam@live.com> |
||
---|---|---|
.. | ||
verilator_waiver.vlt |