code="svc #0" =>
! code="udf #0" =>
! code="hvc #0" =>
! code="smc #0" =>
! code="brk #0" =>
! code="hlt #0" =>
! code="dcps1 #0" =>
! code="dcps2 #0" =>
! code="dcps3 #0" =>
code="cbz x0, 1f; mrs x1, ctr_el0; 1:" x0=q:0 =>
code="cbz x0, 1f; svc #0; 1:" x0=q:0 =>
code="nop" =>
code="yield" =>
code="wfe" =>
code="wfi" =>
code="sev" =>
code="sevl" =>
code="csdb" =>

# NZCV: bits 31-28 → N, Z, C, V.
code="msr nzcv, x1" x1=q:0xa0000000 n=00 z=00 c=00 v=00 => n=01 z=00 c=01 v=00
code="mrs x1, nzcv" x1=q:0x00000000 n=01 z=00 c=01 v=00 => x1=q:0xa0000000

# TPIDR_EL0
code="msr tpidr_el0, x1" x1=q:0xdeadbeef tpidr_el0=q:0 => tpidr_el0=q:0xdeadbeef
code="mrs x1, tpidr_el0" x1=q:0 tpidr_el0=q:0xdeadbeef => x1=q:0xdeadbeef

# DCZID_EL0: 4 → 64-byte block size
code="mrs x1, dczid_el0" x1=q:0 => x1=q:4

# MIDR_EL1: Architecture(19:16)
code="mrs x1, midr_el1" x1=q:0 => x1=q:0xf0000

# FPCR, FPSR: For the forseeable future, ignore writes and return 0.
code="msr fpcr, x1; mrs x1, fpcr" x1=q:0xabcd => x1=q:0
code="msr fpsr, x1; mrs x1, fpsr" x1=q:0xabcd => x1=q:0

# "error: instruction requires: fmi"
#code="cfinv" cf=01 => cf=00

# "error: instruction requires: altnzcv"
#code="xaflag" =>
#code="axflag" =>

code="bl foo; hlt #0; foo:"     =>  pc=q:0x1000008 x30=q:0x1000004
code="blr x10" x10=q:0xaabbccdd => pc=q:0xaabbccdd x30=q:0x1000004
code="ret"     x30=q:0xaabbccdd => pc=q:0xaabbccdd
code="ret x10" x10=q:0xaabbccdd => pc=q:0xaabbccdd

code="b foo; hlt #0; foo:"      => pc=q:0x1000008
code="br x10"  x10=q:0xaabbccdd => pc=q:0xaabbccdd

code="b.eq foo; mov x0, #1; foo:" x0=q:0 n=00 z=01 c=00 v=00 => x0=q:0
code="b.ne foo; mov x0, #1; foo:" x0=q:0 n=00 z=01 c=00 v=00 => x0=q:1
code="b.hs foo; mov x0, #1; foo:" x0=q:0 n=00 z=00 c=01 v=00 => x0=q:0
code="b.lo foo; mov x0, #1; foo:" x0=q:0 n=00 z=00 c=01 v=00 => x0=q:1
code="b.mi foo; mov x0, #1; foo:" x0=q:0 n=01 z=00 c=00 v=00 => x0=q:0
code="b.pl foo; mov x0, #1; foo:" x0=q:0 n=01 z=00 c=00 v=00 => x0=q:1
code="b.vs foo; mov x0, #1; foo:" x0=q:0 n=00 z=00 c=00 v=01 => x0=q:0
code="b.vc foo; mov x0, #1; foo:" x0=q:0 n=00 z=00 c=00 v=01 => x0=q:1
code="b.hi foo; mov x0, #1; foo:" x0=q:0 n=00 z=00 c=01 v=00 => x0=q:0
code="b.ls foo; mov x0, #1; foo:" x0=q:0 n=00 z=00 c=01 v=00 => x0=q:1
code="b.ge foo; mov x0, #1; foo:" x0=q:0 n=01 z=00 c=00 v=01 => x0=q:0
code="b.lt foo; mov x0, #1; foo:" x0=q:0 n=01 z=00 c=00 v=01 => x0=q:1
code="b.gt foo; mov x0, #1; foo:" x0=q:0 n=00 z=00 c=00 v=00 => x0=q:0
code="b.le foo; mov x0, #1; foo:" x0=q:0 n=00 z=00 c=00 v=00 => x0=q:1
code="b.al foo; mov x0, #1; foo:" x0=q:0 n=00 z=00 c=00 v=00 => x0=q:0
code="b.nv foo; mov x0, #1; foo:" x0=q:0 n=00 z=00 c=00 v=00 => x0=q:0

code="cbz x0,  foo; mov x1, #1; foo:" x0=q:0 x1=q:0 => x1=q:0
code="cbz x0,  foo; mov x1, #1; foo:" x0=q:1 x1=q:0 => x1=q:1
code="cbnz x0, foo; mov x1, #1; foo:" x0=q:1 x1=q:0 => x1=q:0
code="cbnz x0, foo; mov x1, #1; foo:" x0=q:0 x1=q:0 => x1=q:1

code="tbz x0, #5, foo;   mov x1, #1; foo:" x0=q:0xffff x1=q:0 => x1=q:1
code="tbz x0, #23, foo;  mov x1, #1; foo:" x0=q:0xffff x1=q:0 => x1=q:0
code="tbnz x0, #31, foo; mov x1, #1; foo:" x0=q:0xffff x1=q:0 => x1=q:1
code="tbnz x0, #5, foo;  mov x1, #1; foo:" x0=q:0xffff x1=q:0 => x1=q:0
code="tbz x0, #5, foo;   mov x1, #1; foo: eor x1, x1, #1" x0=q:0xffff x1=q:0 => x1=q:0
code="tbnz x0, #5, foo;  mov x1, #1; foo: eor x1, x1, #1" x0=q:0xffff x1=q:0 => x1=q:1

code="csel x0, x1, x2, eq" x0=q:0 x1=q:1 x2=q:2 n=00 z=01 c=00 v=00 => x0=q:1
code="csel x0, x1, x2, ne" x0=q:0 x1=q:1 x2=q:2 n=00 z=01 c=00 v=00 => x0=q:2
code="csel w0, w1, w2, hs" x0=q:0 x1=q:0xffffffff00000001 x2=q:2 n=00 z=00 c=01 v=00 => x0=q:1
code="csel w0, w1, w2, lo" x0=q:0 x1=q:1 x2=q:0xffffffff00000002 n=00 z=00 c=01 v=00 => x0=q:2
code="csel x0, x1, x2, mi" x0=q:0 x1=q:1 x2=q:2 n=01 z=00 c=00 v=00 => x0=q:1
code="csel x0, x1, x2, pl" x0=q:0 x1=q:1 x2=q:2 n=01 z=00 c=00 v=00 => x0=q:2
code="csel x0, x1, x2, vs" x0=q:0 x1=q:1 x2=q:2 n=00 z=00 c=00 v=01 => x0=q:1
code="csel x0, x1, x2, vc" x0=q:0 x1=q:1 x2=q:2 n=00 z=00 c=00 v=01 => x0=q:2
code="csel x0, x1, x2, hi" x0=q:0 x1=q:1 x2=q:2 n=00 z=00 c=01 v=00 => x0=q:1
code="csel x0, x1, x2, ls" x0=q:0 x1=q:1 x2=q:2 n=00 z=00 c=01 v=00 => x0=q:2
code="csel x0, x1, x2, ge" x0=q:0 x1=q:1 x2=q:2 n=01 z=00 c=00 v=01 => x0=q:1
code="csel x0, x1, x2, lt" x0=q:0 x1=q:1 x2=q:2 n=01 z=00 c=00 v=01 => x0=q:2
code="csel x0, x1, x2, gt" x0=q:0 x1=q:1 x2=q:2 n=00 z=00 c=00 v=00 => x0=q:1
code="csel x0, x1, x2, le" x0=q:0 x1=q:1 x2=q:2 n=00 z=00 c=00 v=00 => x0=q:2
code="csel x0, x1, x2, al" x0=q:0 x1=q:1 x2=q:2 n=00 z=00 c=00 v=00 => x0=q:1
code="csel x0, x1, x2, nv" x0=q:0 x1=q:1 x2=q:2 n=00 z=00 c=00 v=00 => x0=q:1

code="csinc x0, x1, x2, eq" x0=q:0 x1=q:1 x2=q:2 n=00 z=01 c=00 v=00 => x0=q:1
code="csinc x0, x1, x2, ne" x0=q:0 x1=q:1 x2=q:2 n=00 z=01 c=00 v=00 => x0=q:3
code="csinc w0, w1, w2, hs" x0=q:0 x1=q:0xffffffff00000001 x2=q:2 n=00 z=00 c=01 v=00 => x0=q:1
code="csinc w0, w1, w2, lo" x0=q:0 x1=q:1 x2=q:0xffffffff00000002 n=00 z=00 c=01 v=00 => x0=q:3

code="cinc x0, x1, eq" x0=q:0 x1=q:1 n=00 z=01 c=00 v=00 => x0=q:2
code="cinc x0, x1, ne" x0=q:0 x1=q:1 n=00 z=01 c=00 v=00 => x0=q:1
code="cinc w0, w1, hs" x0=q:0 x1=q:0xffffffff00000001 n=00 z=00 c=01 v=00 => x0=q:2
code="cinc w0, w1, lo" x0=q:0 x1=q:0xffffffff00000001 n=00 z=00 c=01 v=00 => x0=q:1

code="cset x0, eq" x0=q:0 n=00 z=01 c=00 v=00 => x0=q:1
code="cset x0, ne" x0=q:0 n=00 z=01 c=00 v=00 => x0=q:0
code="cset x0, hs" x0=q:0 n=00 z=00 c=01 v=00 => x0=q:1
code="cset x0, lo" x0=q:0 n=00 z=00 c=01 v=00 => x0=q:0

code="csinv x0, x1, x2, eq" x0=q:0 x1=q:1 x2=q:2 n=00 z=01 c=00 v=00 => x0=q:1
code="csinv x0, x1, x2, ne" x0=q:0 x1=q:1 x2=q:0xffff n=00 z=01 c=00 v=00 => x0=q:0xffffffffffff0000
code="csinv w0, w1, w2, hs" x0=q:0 x1=q:1 x2=q:0xffff n=00 z=00 c=01 v=00 => x0=q:1
code="csinv w0, w1, w2, lo" x0=q:0 x1=q:1 x2=q:0xffff n=00 z=00 c=01 v=00 => x0=q:0xffff0000

code="cinv x0, x1, eq" x0=q:0 x1=q:0xffff n=00 z=01 c=00 v=00 => x0=q:0xffffffffffff0000
code="cinv x0, x1, ne" x0=q:0 x1=q:0xffff n=00 z=01 c=00 v=00 => x0=q:0xffff
code="cinv w0, w1, hs" x0=q:0 x1=q:0xffff n=00 z=00 c=01 v=00 => x0=q:0xffff0000
code="cinv w0, w1, lo" x0=q:0 x1=q:0xffff n=00 z=00 c=01 v=00 => x0=q:0xffff

code="csetm x0, eq" x0=q:0 n=00 z=01 c=00 v=00 => x0=q:-1
code="csetm x0, ne" x0=q:0 n=00 z=01 c=00 v=00 => x0=q:0
code="csetm w0, hs" x0=q:0 n=00 z=00 c=01 v=00 => x0=q:0xffffffff
code="csetm w0, lo" x0=q:0 n=00 z=00 c=01 v=00 => x0=q:0

code="csneg x0, x1, x2, eq" x0=q:0 x1=q:1 x2=q:2 n=00 z=01 c=00 v=00 => x0=q:1
code="csneg x0, x1, x2, ne" x0=q:0 x1=q:1 x2=q:2 n=00 z=01 c=00 v=00 => x0=q:-2
code="csneg w0, w1, w2, hs" x0=q:0 x1=q:1 x2=q:2 n=00 z=00 c=01 v=00 => x0=q:1
code="csneg w0, w1, w2, lo" x0=q:0 x1=q:1 x2=q:2 n=00 z=00 c=01 v=00 => x0=feffffff00000000

code="cneg x0, x1, eq" x0=q:0 x1=q:1 n=00 z=01 c=00 v=00 => x0=q:-1
code="cneg x0, x1, ne" x0=q:0 x1=q:1 n=00 z=01 c=00 v=00 => x0=q:1
code="cneg w0, w1, hs" x0=q:0 x1=q:1 n=00 z=00 c=01 v=00 => x0=q:0xffffffff
code="cneg w0, w1, lo" x0=q:0 x1=q:1 n=00 z=00 c=01 v=00 => x0=q:1

code="ccmp x0, x1, #0xf, eq" x0=q:0 x1=q:0 n=00 z=01 c=00 v=00 => n=00 z=01 c=01 v=00
code="ccmp x0, x1, #0xf, ne" x0=q:0 x1=q:0 n=00 z=01 c=00 v=00 => n=01 z=01 c=01 v=01
code="ccmp w0, w1, #0xf, hs" x0=q:0 x1=q:0 n=00 z=00 c=01 v=00 => n=00 z=01 c=01 v=00
code="ccmp w0, w1, #0xf, lo" x0=q:0 x1=q:0 n=00 z=00 c=01 v=00 => n=01 z=01 c=01 v=01

code="ccmn x0, x1, #0xf, eq" x0=q:0 x1=q:1 n=00 z=01 c=00 v=00 => n=00 z=00 c=00 v=00
code="ccmn x0, x1, #0xf, ne" x0=q:0 x1=q:1 n=00 z=01 c=00 v=00 => n=01 z=01 c=01 v=01
code="ccmn w0, w1, #0xf, hs" x0=q:0 x1=q:1 n=00 z=00 c=01 v=00 => n=00 z=00 c=00 v=00
code="ccmn w0, w1, #0xf, lo" x0=q:0 x1=q:1 n=00 z=00 c=01 v=00 => n=01 z=01 c=01 v=01

code="ccmp x0, #0, #0xf, eq" x0=q:0 n=00 z=01 c=00 v=00 => n=00 z=01 c=01 v=00
code="ccmp x0, #0, #0xf, ne" x0=q:0 n=00 z=01 c=00 v=00 => n=01 z=01 c=01 v=01
code="ccmp w0, #0, #0xf, hs" x0=q:0 n=00 z=00 c=01 v=00 => n=00 z=01 c=01 v=00
code="ccmp w0, #0, #0xf, lo" x0=q:0 n=00 z=00 c=01 v=00 => n=01 z=01 c=01 v=01

code="ccmn x0, #1, #0xf, eq" x0=q:0 n=00 z=01 c=00 v=00 => n=00 z=00 c=00 v=00
code="ccmn x0, #1, #0xf, ne" x0=q:0 n=00 z=01 c=00 v=00 => n=01 z=01 c=01 v=01
code="ccmn w0, #1, #0xf, hs" x0=q:0 n=00 z=00 c=01 v=00 => n=00 z=00 c=00 v=00
code="ccmn w0, #1, #0xf, lo" x0=q:0 n=00 z=00 c=01 v=00 => n=01 z=01 c=01 v=01
