mrrs

Move to Two Registers from System Register (128-bit)

MRRS <Xt>, <Xt+1>, <sysreg>

Reads a 128-bit system register into two general-purpose registers.

Details

Reads a 128-bit system register into two consecutive 64-bit general-purpose registers (Xt and Xt+1). This is an AArch64-only instruction requiring FEAT_SYSREG128 and may require elevated privilege depending on the system register being accessed. No condition flags are affected.

Pseudocode Operation

Xt ← SYSREG[sysreg][63:0]
Xt+1 ← SYSREG[sysreg][127:64]

Example

MRRS x3, Xt+1, sysreg

Encoding

Binary Layout
1101010101
1
1
o0
op1
CRn
CRm
op2
Rt
 
Format System
Opcode 0xD5700000
Extension FEAT_SYSREG128

Operands

  • Xt
    Lo
  • Xt+1
    Hi
  • sysreg
    Reg

Reference (Arm A64 ISA)

Instruction Forms

Encoding Instruction ISA Bit pattern
0xD5700000 MRRS <Xt>, <Xt+1>, (<systemreg>|S<op0>_<op1>_<Cn>_<Cm>_<op2>) A64 1101010101 | 1 | 1 | o0 | op1 | CRn | CRm | op2 | Rt

Description

Move System Register to two adjacent general-purpose registers allows the PE to read an AArch64 128-bit System register into two adjacent 64-bit general-purpose registers.

Operation

AArch64.SysRegRead128(sys_op0, sys_op1, sys_crn, sys_crm, sys_op2, t, t2);