Does MOP.RR.1 write rd 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.
MOP.RR.1 writes zero to rd under its default Zimop definition; a redefining extension may use rs1 and rs2.
Extension condition: RV32/RV64 requires Zimop 1.0; this page describes the base behavior unless another extension redefines it.
MOP.RR.1 uses opcode 1110011 (0x73), funct3 100, fixed n selector 1000011. MOP.RR.n uses SYSTEM fields: bits 31..25 are the fixed n selector, rs2, rs1, and rd are explicit register fields, funct3=100, and opcode=SYSTEM. The default definition writes only 0 to x[rd]; neither rs1 nor rs2 is a default read source.
MOP.RR.1 is a Zimop may-be-operation with recommended syntax mop.rr.1 rd, rs1, rs2. 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 x[rs2] 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.
MOP.RR.1 is a three-register Zimop MOP encoding; when not redefined, it writes zero to rd.
Assume RV32/RV64 Zimop 1.0 is implemented and this MOP is not redefined: mop.rr.1 t0, t1, t2 sets t0 (x5) to zero regardless of the old t1 (x6) and t2 (x7) 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.
Assume RV32/RV64 Zimop 1.0 is implemented and this MOP is not redefined: mop.rr.1 t0, t1, t2 sets t0 (x5) to zero regardless of the old t1 (x6) and t2 (x7) 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.
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.
MOP.RR is reserved for future extensions that may read two source registers; MOP.R is reserved for future extensions that may read one source register.