Skip to main content

arm

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) => { ... };
}