MOP.R.9

RISC-V MOP.R.9 Instruction Details

Instruction ManualI-type

MOP.R.9 writes zero to rd under its default Zimop definition; a redefining extension may use rs1.

Instruction Syntax

mop.r.9 rd, rs1
Operand Breakdown
rd: the default semantics write 0 to x[rd]; with rd=x0 the architectural write is discarded and x0 remains 0.
rs1: an explicit register field in the recommended assembly syntax; the default Zimop definition does not read it and carries no syntactic dependency from rs1 to rd.
Bits 31..20 are a fixed MOP.R.n selector, not an assembly immediate and not a 12-bit signed value to sign-extend; only a future redefining extension may specify an rs1 read.
ZimopSystem & Privileged

Extension condition: RV32/RV64 requires Zimop 1.0; this page describes the base behavior unless another extension redefines it.

Instruction Encoding

31..20
fixed n selector
19..15
rs1
14..12
funct3
11..7
rd
6..0
opcode

MOP.R.9 uses opcode 1110011 (0x73), funct3 100. MOP.R.n uses SYSTEM fields: bits 31..20 are the fixed n selector, rs1 and rd are explicit register fields, funct3=100, and opcode=SYSTEM. The default definition writes only 0 to x[rd]; rs1 is not a default read source.

Format: Zimop MOP.R SYSTEM fields (n=9)
opcode: 1110011 (0x73)
funct3: 100 (0x4)
Fixed n selector (bits 31..20): 100010011101 (0x89d)

Instruction Behavior

MOP.R.9 is a Zimop may-be-operation with recommended syntax mop.r.9 rd, rs1. If no other extension redefines the encoding, the official default behavior writes 0 to x[rd]. The encoding space allows future extensions to define it as reading x[rs1] and writing x[rd]. Standard software should not execute a MOP unless deliberately targeting an extension that redefines it. rd may be x0, in which case x0 remains zero; register overlap does not turn the base behavior into a copy or computation.

Quick Understanding & Search Notes

MOP.R.9 is a Zimop compatible encoding reserved for future extensions; when not redefined, its visible result is rd receiving zero.

The official extension defines 32 MOP.R.n instructions numbered 0 through 31.
MOP.R.n allows a future extension to read rs1 and write rd, but by default it does not read rs1 and creates no rs1-to-rd syntactic dependency.
Bits 31..20 are fixed to 100010011101, not an assembly immediate; funct3=100 and opcode=1110011 (SYSTEM).

Common Usage Scenarios

System & Privileged

Assume RV32/RV64 Zimop 1.0 is implemented and this MOP is not redefined: mop.r.9 t0, t1 sets t0 (x5) to zero regardless of the old t1 (x6) values; other registers are unchanged. Overlapping rd with a source field still writes zero; rd=x0 leaves x0 zero. Standard software should execute it only when deliberately targeting an extension that redefines this MOP.

Extension Compatibility

Assume RV32/RV64 Zimop 1.0 is implemented and this MOP is not redefined: mop.r.9 t0, t1 sets t0 (x5) to zero regardless of the old t1 (x6) values; other registers are unchanged. Overlapping rd with a source field still writes zero; rd=x0 leaves x0 zero. Standard software should execute it only when deliberately targeting an extension that redefines this MOP.

Pre-Use Checklist

Syntax Check
  • Confirm the assembly syntax has only rd and rs1; bits 31..20 are the fixed MOP.R.n selector, not an immediate.
  • Confirm any x-register is valid for rd or rs1; the default definition does not read rs1 and carries no syntactic rs1-to-rd dependency.
Semantic Check
  • Confirm that, unless another extension has redefined it, the instruction only writes 0 to x[rd]; with rd=x0, x0 remains 0.
  • Do not assume a specific future redefining operation; standard software should execute this MOP only when deliberately targeting that redefining extension.

Pitfalls / Common Confusions

The default behavior writes zero to rd rather than generally leaving registers unchanged; with rd=x0, x0 remains zero.
Default Zimop MOPs carry no syntactic dependency from rs1 to rd; a redefining extension may specify otherwise.
MOP encodings are in the SYSTEM major opcode; ordinary software should not treat them as regular integer instructions.

FAQ

Is MOP.R.9 a pure no-op by default?

Under the default Zimop definition described here, it writes zero to rd; if rd=x0, x0 remains zero. For redefined behavior, consult the corresponding extension.

Should ordinary software execute MOP.R.9?

No, unless the software deliberately targets an extension that redefines that MOP.