Macro arm
Source macro_rules! arm {
($op:ident lr, [sp, #$imm:expr]) => { ... };
($op:ident $($a:ident($x:expr),)+ [sp, #$imm:expr]) => { ... };
($op:ident $($a:ident($x:expr),)+ [sp, $b:ident($y:expr), lsl #3]) => { ... };
($op:ident lr, [$b:ident($y:expr), #$imm:expr]) => { ... };
($op:ident sp, sp, #$imm:expr, lsl #12) => { ... };
($op:ident sp, sp, #$imm:expr) => { ... };
(mov x($rd:expr), sp) => { ... };
(fmov d($rd:expr), d($rn:expr)) => { ... };
(fmov d($rd:expr), x($rn:expr)) => { ... };
(fmov x($rd:expr), d($rn:expr)) => { ... };
(mov x($rd:expr), x($rm:expr)) => { ... };
(movz x($rd:expr), #$imm16:expr) => { ... };
(movk_lsl16 x($rd:expr), #$imm16:expr) => { ... };
(movk_lsl32 x($rd:expr), #$imm16:expr) => { ... };
(movk_lsl48 x($rd:expr), #$imm16:expr) => { ... };
(adrp x($rd:expr), label($offset:expr)) => { ... };
(ldr d($rd:expr), [x($rn:expr), #$ofs:expr]) => { ... };
(ldr d($rd:expr), [x($rn:expr), x($rm:expr), lsl #3]) => { ... };
(ldr x($rd:expr), [x($rn:expr), #$ofs:expr]) => { ... };
(ldr x($rd:expr), [x($rn:expr), x($rm:expr), lsl #3]) => { ... };
(ldr d($rd:expr), label($ofs:expr)) => { ... };
(ldr x($rd:expr), label($ofs:expr)) => { ... };
(str d($rd:expr), [x($rn:expr), #$ofs:expr]) => { ... };
(str d($rd:expr), [x($rn:expr), x($rm:expr), lsl #3]) => { ... };
(str x($rd:expr), [x($rn:expr), #$ofs:expr]) => { ... };
(ldp d($rd:expr), d($rd2:expr), [x($rn:expr), #$of7:expr]) => { ... };
(ldp x($rd:expr), x($rd2:expr), [x($rn:expr), #$of7:expr]) => { ... };
(stp d($rd:expr), d($rd2:expr), [x($rn:expr), #$of7:expr]) => { ... };
(stp x($rd:expr), x($rd2:expr), [x($rn:expr), #$of7:expr]) => { ... };
(add x($rd:expr), x($rn:expr), #$imm:expr, lsl #12) => { ... };
(add x($rd:expr), x($rn:expr), #$imm:expr) => { ... };
(sub x($rd:expr), x($rn:expr), #$imm:expr, lsl #12) => { ... };
(sub x($rd:expr), x($rn:expr), #$imm:expr) => { ... };
(lsr x($rd:expr), x($rn:expr), #$imm:expr) => { ... };
(fadd d($rd:expr), d($rn:expr), d($rm:expr)) => { ... };
(fsub d($rd:expr), d($rn:expr), d($rm:expr)) => { ... };
(fmul d($rd:expr), d($rn:expr), d($rm:expr)) => { ... };
(fdiv d($rd:expr), d($rn:expr), d($rm:expr)) => { ... };
(fsqrt d($rd:expr), d($rn:expr)) => { ... };
(fneg d($rd:expr), d($rn:expr)) => { ... };
(fabs d($rd:expr), d($rn:expr)) => { ... };
(fmadd d($rd:expr), d($rn:expr), d($rm:expr), d($ra:expr)) => { ... };
(fmsub d($rd:expr), d($rn:expr), d($rm:expr), d($ra:expr)) => { ... };
(fnmadd d($rd:expr), d($rn:expr), d($rm:expr), d($ra:expr)) => { ... };
(fnmsub d($rd:expr), d($rn:expr), d($rm:expr), d($ra:expr)) => { ... };
(frinti d($rd:expr), d($rn:expr)) => { ... };
(frintm d($rd:expr), d($rn:expr)) => { ... };
(frintp d($rd:expr), d($rn:expr)) => { ... };
(frintz d($rd:expr), d($rn:expr)) => { ... };
(and v($rd:expr).8b, v($rn:expr).8b, v($rm:expr).8b) => { ... };
(orr v($rd:expr).8b, v($rn:expr).8b, v($rm:expr).8b) => { ... };
(eor v($rd:expr).8b, v($rn:expr).8b, v($rm:expr).8b) => { ... };
(bit v($rd:expr).8b, v($rn:expr).8b, v($rm:expr).8b) => { ... };
(bif v($rd:expr).8b, v($rn:expr).8b, v($rm:expr).8b) => { ... };
(bic v($rd:expr).8b, v($rn:expr).8b, v($rm:expr).8b) => { ... };
(bsl v($rd:expr).8b, v($rn:expr).8b, v($rm:expr).8b) => { ... };
(not v($rd:expr).8b, v($rn:expr).8b) => { ... };
(fcmeq d($rd:expr), d($rn:expr), d($rm:expr)) => { ... };
(fcmlt d($rd:expr), d($rm:expr), d($rn:expr)) => { ... };
(fcmle d($rd:expr), d($rm:expr), d($rn:expr)) => { ... };
(fcmgt d($rd:expr), d($rn:expr), d($rm:expr)) => { ... };
(fcmge d($rd:expr), d($rn:expr), d($rm:expr)) => { ... };
(fcmp d($rn:expr), #0.0) => { ... };
(b.eq label($ofs:expr)) => { ... };
(b.ne label($ofs:expr)) => { ... };
(b.lt label($ofs:expr)) => { ... };
(b.le label($ofs:expr)) => { ... };
(b.gt label($ofs:expr)) => { ... };
(b.ge label($ofs:expr)) => { ... };
(tst x($rn:expr), x($rm:expr)) => { ... };
(and x($rd:expr), x($rn:expr), x($rm:expr)) => { ... };
(orr x($rd:expr), x($rn:expr), x($rm:expr)) => { ... };
(eor x($rd:expr), x($rn:expr), x($rm:expr)) => { ... };
(blr x($rn:expr)) => { ... };
(ret) => { ... };
(nop) => { ... };
(fmov d($rd:expr), #0.0) => { ... };
(fmov d($rd:expr), #1.0) => { ... };
(fmov d($rd:expr), #-1.0) => { ... };
(fmov q($rd:expr), q($rn:expr)) => { ... };
(ldr q($rd:expr), [x($rn:expr), #$ofs:expr]) => { ... };
(ldr q($rd:expr), [x($rn:expr), x($rm:expr), lsl #4]) => { ... };
(ldr q($rd:expr), label($ofs:expr)) => { ... };
(ld1r {q($rd:expr)}, [x($rn:expr)]) => { ... };
(dup q($rd:expr), q($rn:expr)[0]) => { ... };
(umov x($rd:expr), v($rn:expr).d[0]) => { ... };
(umov x($rd:expr), v($rn:expr).d[1]) => { ... };
(str q($rd:expr), [x($rn:expr), #$ofs:expr]) => { ... };
(str q($rd:expr), [x($rn:expr), x($rm:expr), lsl #4]) => { ... };
(fadd q($rd:expr), q($rn:expr), q($rm:expr)) => { ... };
(fsub q($rd:expr), q($rn:expr), q($rm:expr)) => { ... };
(fmul q($rd:expr), q($rn:expr), q($rm:expr)) => { ... };
(fdiv q($rd:expr), q($rn:expr), q($rm:expr)) => { ... };
(fsqrt q($rd:expr), q($rn:expr)) => { ... };
(fneg q($rd:expr), q($rn:expr)) => { ... };
(fabs q($rd:expr), q($rn:expr)) => { ... };
(frinti q($rd:expr), q($rn:expr)) => { ... };
(frintm q($rd:expr), q($rn:expr)) => { ... };
(frintp q($rd:expr), q($rn:expr)) => { ... };
(frintz q($rd:expr), q($rn:expr)) => { ... };
(fcmeq q($rd:expr), q($rn:expr), q($rm:expr)) => { ... };
(fcmlt q($rd:expr), q($rm:expr), q($rn:expr)) => { ... };
(fcmle q($rd:expr), q($rm:expr), q($rn:expr)) => { ... };
(fcmgt q($rd:expr), q($rn:expr), q($rm:expr)) => { ... };
(fcmge q($rd:expr), q($rn:expr), q($rm:expr)) => { ... };
(and v($rd:expr).16b, v($rn:expr).16b, v($rm:expr).16b) => { ... };
(orr v($rd:expr).16b, v($rn:expr).16b, v($rm:expr).16b) => { ... };
(eor v($rd:expr).16b, v($rn:expr).16b, v($rm:expr).16b) => { ... };
(bit v($rd:expr).16b, v($rn:expr).16b, v($rm:expr).16b) => { ... };
(bif v($rd:expr).16b, v($rn:expr).16b, v($rm:expr).16b) => { ... };
(bic v($rd:expr).16b, v($rn:expr).16b, v($rm:expr).16b) => { ... };
(bsl v($rd:expr).16b, v($rn:expr).16b, v($rm:expr).16b) => { ... };
(not v($rd:expr).16b, v($rn:expr).16b) => { ... };
}