Does MOP.RR.6 write rd by default?
Yes. The official Zimop rule says it writes zero to rd by default.
Zimop MOP.RR.6; by default writes zero to rd and may be redefined to read rs1/rs2 and write rd.
MOP-RR-6 uses opcode 1110011 (0x73), funct3 100, fixed n selector 1101001. 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.6 is a Zimop may-be-operation with recommended syntax mop.rr.6 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.
MOP.RR.6 is a three-register Zimop MOP encoding; when not redefined, it writes zero to rd.
Understand this scenario with real code like «mop.rr.6 t0, t1, t2».
Understand this scenario with real code like «mop.rr.6 t0, t1, t2».
Yes. The official Zimop rule says it writes zero to rd by default.
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.