Applicability of this chapter to configurations:

Configuration

Implementation

CV32A60AX

Implemented extension

CV32A60X

Not implemented extension

CV64A6_MMU

Not implemented extension

Note: RV32Zicond and RV64Zicond are identical.

RVZicond Integer Conditional operations

The instructions follow the format for R-type instructions with 3 operands (i.e., 2 source operands and 1 destination operand). Using these instructions, branchless sequences can be implemented (typically in two-instruction sequences) without the need for instruction fusion, special provisions during the decoding of architectural instructions, or other microarchitectural provisions.

  • CZERO.EQZ: Conditional zero, if condition is equal to zero

    Format: czero.eqz rd, rs1, rs2

    Description: This instruction behaves as if there is a conditional branch dependent on rs2 being equal to zero, wherein it branches to code that writes a 0 into rd when the equivalence is true, and otherwise falls through to code that moves rs1 into rd.

    Pseudocode: if (x[rs2] == 0) x[rd] = 0 else x[rs1]

    Invalid values: NONE

    Exception raised: NONE

  • CZERO.NEZ: Conditional zero, if condition is nonzero

    Format: czero.nez rd, rs1, rs2

    Description: This instruction behaves as if there is a conditional branch dependent on rs2 being not equal to zero, wherein it branches to code that writes a 0 into rd when the equivalence is true, and otherwise falls through to code that moves rs1 into rd

    Pseudocode: if (x[rs2] != 0) x[rd] = 0 else x[rs1]

    Invalid values: NONE

    Exception raised: NONE