Philipp Tomsich
b625eff8a2
RISC-V: Support Zicond extension
This implements the Zicond (conditional integer operations) extension,
as of version 1.0-rc2.
The Zicond extension acts as a building block for branchless sequences
including conditional-arithmetic, conditional-logic and
conditional-select/move.
The following instructions constitute Zicond:
- czero.eqz rd, rs1, rs2 => rd = (rs2 == 0) ? 0 : rs1
- czero.nez rd, rs1, rs2 => rd = (rs2 != 0) ? 0 : rs1
See
https://github.com/riscv/riscv-zicond/releases/download/v1.0-rc2/riscv-zicond-v1.0-rc2.pdf
for the proposed specification and usage details.
bfd/ChangeLog:
* elfxx-riscv.c (riscv_multi_subset_supports): Recognize
INSN_CLASS_ZICOND.
(riscv_multi_subset_supports_ext): Recognize INSN_CLASS_ZICOND.
gas/ChangeLog:
* testsuite/gas/riscv/zicond.d: New test.
* testsuite/gas/riscv/zicond.s: New test.
include/ChangeLog:
* opcode/riscv-opc.h (MATCH_CZERO_EQZ): Define.
(MASK_CZERO_EQZ): Define.
(MATCH_CZERO_NEZ): Define,
(MASK_CZERO_NEZ): Define.
(DECLARE_INSN): Add czero.eqz and czero.nez.
* opcode/riscv.h (enum riscv_insn_class): Add
INSN_CLASS_ZICOND.
opcodes/ChangeLog:
* riscv-opc.c: Add czero.eqz and czero.nez.
Signed-off-by: Philipp Tomsich <philipp.tomsich@vrull.eu>
2023-06-27 07:24:43 -06:00
..
2023-05-30 12:51:22 +09:30
2023-01-01 21:50:11 +10:30
2023-06-09 12:56:12 +09:30
2023-06-15 04:45:03 +01:00
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-06-27 07:24:43 -06:00
2023-01-18 20:47:55 -05:00
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-02-06 23:06:44 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-05-26 13:12:32 +02:00
2017-01-02 13:55:05 +10:30
2018-01-03 17:49:42 +10:30
2019-01-01 21:25:40 +10:30
2020-01-01 18:12:08 +10:30
2021-01-01 10:31:02 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-12 14:40:47 +00:00
2023-01-01 21:50:11 +10:30
2023-03-06 21:00:52 -05:00
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-05-17 11:21:43 +09:30
2023-01-01 21:50:11 +10:30
2023-06-06 10:50:07 -07:00
2023-04-19 14:37:59 -07:00
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30
2023-05-17 11:21:43 +09:30
2023-01-01 21:50:11 +10:30
2023-01-01 21:50:11 +10:30