/* ------------------------------------------------------------------ */ /* ARM64 (AArch64) assembler token definitions for TCC */ /* General purpose registers - 64-bit */ DEF_ASM(x0) DEF_ASM(x1) DEF_ASM(x2) DEF_ASM(x3) DEF_ASM(x4) DEF_ASM(x5) DEF_ASM(x6) DEF_ASM(x7) DEF_ASM(x8) DEF_ASM(x9) DEF_ASM(x10) DEF_ASM(x11) DEF_ASM(x12) DEF_ASM(x13) DEF_ASM(x14) DEF_ASM(x15) DEF_ASM(x16) DEF_ASM(x17) DEF_ASM(x18) DEF_ASM(x19) DEF_ASM(x20) DEF_ASM(x21) DEF_ASM(x22) DEF_ASM(x23) DEF_ASM(x24) DEF_ASM(x25) DEF_ASM(x26) DEF_ASM(x27) DEF_ASM(x28) DEF_ASM(x29) DEF_ASM(x30) /* General purpose registers - 32-bit */ DEF_ASM(w0) DEF_ASM(w1) DEF_ASM(w2) DEF_ASM(w3) DEF_ASM(w4) DEF_ASM(w5) DEF_ASM(w6) DEF_ASM(w7) DEF_ASM(w8) DEF_ASM(w9) DEF_ASM(w10) DEF_ASM(w11) DEF_ASM(w12) DEF_ASM(w13) DEF_ASM(w14) DEF_ASM(w15) DEF_ASM(w16) DEF_ASM(w17) DEF_ASM(w18) DEF_ASM(w19) DEF_ASM(w20) DEF_ASM(w21) DEF_ASM(w22) DEF_ASM(w23) DEF_ASM(w24) DEF_ASM(w25) DEF_ASM(w26) DEF_ASM(w27) DEF_ASM(w28) DEF_ASM(w29) DEF_ASM(w30) /* Special registers */ DEF_ASM(sp) DEF_ASM(xzr) DEF_ASM(wzr) /* SIMD/FP registers - 128-bit views */ DEF_ASM(v0) DEF_ASM(v1) DEF_ASM(v2) DEF_ASM(v3) DEF_ASM(v4) DEF_ASM(v5) DEF_ASM(v6) DEF_ASM(v7) DEF_ASM(v8) DEF_ASM(v9) DEF_ASM(v10) DEF_ASM(v11) DEF_ASM(v12) DEF_ASM(v13) DEF_ASM(v14) DEF_ASM(v15) DEF_ASM(v16) DEF_ASM(v17) DEF_ASM(v18) DEF_ASM(v19) DEF_ASM(v20) DEF_ASM(v21) DEF_ASM(v22) DEF_ASM(v23) DEF_ASM(v24) DEF_ASM(v25) DEF_ASM(v26) DEF_ASM(v27) DEF_ASM(v28) DEF_ASM(v29) DEF_ASM(v30) DEF_ASM(v31) /* SIMD/FP registers - 64-bit views (double) */ DEF_ASM(d0) DEF_ASM(d1) DEF_ASM(d2) DEF_ASM(d3) DEF_ASM(d4) DEF_ASM(d5) DEF_ASM(d6) DEF_ASM(d7) DEF_ASM(d8) DEF_ASM(d9) DEF_ASM(d10) DEF_ASM(d11) DEF_ASM(d12) DEF_ASM(d13) DEF_ASM(d14) DEF_ASM(d15) DEF_ASM(d16) DEF_ASM(d17) DEF_ASM(d18) DEF_ASM(d19) DEF_ASM(d20) DEF_ASM(d21) DEF_ASM(d22) DEF_ASM(d23) DEF_ASM(d24) DEF_ASM(d25) DEF_ASM(d26) DEF_ASM(d27) DEF_ASM(d28) DEF_ASM(d29) DEF_ASM(d30) DEF_ASM(d31) /* SIMD/FP registers - 32-bit views (single) */ DEF_ASM(s0) DEF_ASM(s1) DEF_ASM(s2) DEF_ASM(s3) DEF_ASM(s4) DEF_ASM(s5) DEF_ASM(s6) DEF_ASM(s7) DEF_ASM(s8) DEF_ASM(s9) DEF_ASM(s10) DEF_ASM(s11) DEF_ASM(s12) DEF_ASM(s13) DEF_ASM(s14) DEF_ASM(s15) DEF_ASM(s16) DEF_ASM(s17) DEF_ASM(s18) DEF_ASM(s19) DEF_ASM(s20) DEF_ASM(s21) DEF_ASM(s22) DEF_ASM(s23) DEF_ASM(s24) DEF_ASM(s25) DEF_ASM(s26) DEF_ASM(s27) DEF_ASM(s28) DEF_ASM(s29) DEF_ASM(s30) DEF_ASM(s31) /* SIMD/FP registers - 16-bit views (half) */ DEF_ASM(h0) DEF_ASM(h1) DEF_ASM(h2) DEF_ASM(h3) DEF_ASM(h4) DEF_ASM(h5) DEF_ASM(h6) DEF_ASM(h7) DEF_ASM(h8) DEF_ASM(h9) DEF_ASM(h10) DEF_ASM(h11) DEF_ASM(h12) DEF_ASM(h13) DEF_ASM(h14) DEF_ASM(h15) DEF_ASM(h16) DEF_ASM(h17) DEF_ASM(h18) DEF_ASM(h19) DEF_ASM(h20) DEF_ASM(h21) DEF_ASM(h22) DEF_ASM(h23) DEF_ASM(h24) DEF_ASM(h25) DEF_ASM(h26) DEF_ASM(h27) DEF_ASM(h28) DEF_ASM(h29) DEF_ASM(h30) DEF_ASM(h31) /* SIMD/FP registers - 8-bit views (byte) */ DEF_ASM(b0) DEF_ASM(b1) DEF_ASM(b2) DEF_ASM(b3) DEF_ASM(b4) DEF_ASM(b5) DEF_ASM(b6) DEF_ASM(b7) DEF_ASM(b8) DEF_ASM(b9) DEF_ASM(b10) DEF_ASM(b11) DEF_ASM(b12) DEF_ASM(b13) DEF_ASM(b14) DEF_ASM(b15) DEF_ASM(b16) DEF_ASM(b17) DEF_ASM(b18) DEF_ASM(b19) DEF_ASM(b20) DEF_ASM(b21) DEF_ASM(b22) DEF_ASM(b23) DEF_ASM(b24) DEF_ASM(b25) DEF_ASM(b26) DEF_ASM(b27) DEF_ASM(b28) DEF_ASM(b29) DEF_ASM(b30) DEF_ASM(b31) /* Condition codes */ DEF_ASM(eq) DEF_ASM(ne) DEF_ASM(cs) DEF_ASM(hs) DEF_ASM(cc) DEF_ASM(lo) DEF_ASM(mi) DEF_ASM(pl) DEF_ASM(vs) DEF_ASM(vc) DEF_ASM(hi) DEF_ASM(ls) DEF_ASM(ge) DEF_ASM(lt) DEF_ASM(gt) DEF_ASM(le) DEF_ASM(al) /* Data processing - arithmetic (no condition suffixes for ARM64) */ DEF_ASM(add) DEF_ASM(adds) DEF_ASM(sub) DEF_ASM(subs) DEF_ASM(cmn) DEF_ASM(cmp) DEF_ASM(neg) DEF_ASM(negs) DEF_ASM(adc) DEF_ASM(adcs) DEF_ASM(sbc) DEF_ASM(sbcs) DEF_ASM(ngc) DEF_ASM(ngcs) /* Data processing - bitwise */ DEF_ASM(and) DEF_ASM(ands) DEF_ASM(bic) DEF_ASM(bics) DEF_ASM(orr) DEF_ASM(orn) DEF_ASM(eor) DEF_ASM(eon) DEF_ASM(mvn) DEF_ASM(mov) /* Shifts */ DEF_ASM(lsl) DEF_ASM(lsr) DEF_ASM(asr) DEF_ASM(ror) /* Multiply/divide */ DEF_ASM(mul) DEF_ASM(muls) DEF_ASM(madd) DEF_ASM(msub) DEF_ASM(smaddl) DEF_ASM(smsubl) DEF_ASM(umaddl) DEF_ASM(umsubl) DEF_ASM(smulh) DEF_ASM(umulh) DEF_ASM(udiv) DEF_ASM(sdiv) /* Moves */ DEF_ASM(movz) DEF_ASM(movn) DEF_ASM(movk) /* Compare/test */ DEF_ASM(tst) DEF_ASM(teq) /* Branch instructions */ DEF_ASM(b) DEF_ASM(bl) DEF_ASM(br) DEF_ASM(blr) DEF_ASM(ret) DEF_ASM(cbz) DEF_ASM(cbnz) DEF_ASM(tbz) DEF_ASM(tbnz) /* Conditional branches */ DEF_ASM(beq) DEF_ASM(bne) DEF_ASM(bcs) DEF_ASM(bhs) DEF_ASM(bcc) DEF_ASM(blo) DEF_ASM(bmi) DEF_ASM(bpl) DEF_ASM(bvs) DEF_ASM(bvc) DEF_ASM(bhi) DEF_ASM(bls) DEF_ASM(bge) DEF_ASM(blt) DEF_ASM(bgt) DEF_ASM(ble) /* Conditional select */ DEF_ASM(csel) DEF_ASM(csinc) DEF_ASM(csinv) DEF_ASM(csneg) /* Load/Store */ DEF_ASM(ldr) DEF_ASM(ldrb) DEF_ASM(ldrh) DEF_ASM(ldrsb) DEF_ASM(ldrsh) DEF_ASM(ldrsw) DEF_ASM(str) DEF_ASM(strb) DEF_ASM(strh) /* Load/Store - pair */ DEF_ASM(ldp) DEF_ASM(stp) DEF_ASM(ldpsw) /* Address generation */ DEF_ASM(adr) DEF_ASM(adrp) /* System instructions */ DEF_ASM(nop) DEF_ASM(wfi) DEF_ASM(wfe) DEF_ASM(sev) DEF_ASM(sevl) DEF_ASM(isb) DEF_ASM(dsb) DEF_ASM(dmb) /* Hints */ DEF_ASM(yield) DEF_ASM(clrex) /* Push/pop */ DEF_ASM(push) DEF_ASM(pop) /* Floating point */ DEF_ASM(fmov) DEF_ASM(fadd) DEF_ASM(fsub) DEF_ASM(fmul) DEF_ASM(fnmul) DEF_ASM(fdiv) DEF_ASM(fmax) DEF_ASM(fmin) DEF_ASM(fmaxnm) DEF_ASM(fminnm) DEF_ASM(fsqrt) DEF_ASM(fabs) DEF_ASM(fneg) DEF_ASM(frintn) DEF_ASM(frintp) DEF_ASM(frintm) DEF_ASM(frintz) DEF_ASM(frinta) DEF_ASM(frintx) DEF_ASM(frinti) DEF_ASM(fcmp) DEF_ASM(fcmpe) DEF_ASM(fccmp) DEF_ASM(fccmpe) DEF_ASM(fcvts) DEF_ASM(fcvtd) DEF_ASM(fcvth) DEF_ASM(fcvtx) DEF_ASM(scvtf) DEF_ASM(ucvtf) DEF_ASM(fcvtns) DEF_ASM(fcvtnu) DEF_ASM(fcvtps) DEF_ASM(fcvtpu) /* SIMD instructions */ DEF_ASM(addv) DEF_ASM(faddp) DEF_ASM(fmaxp) DEF_ASM(fminp) DEF_ASM(fmaxnmp) DEF_ASM(fminnmp) DEF_ASM(addp) DEF_ASM(bif) DEF_ASM(bit) DEF_ASM(bsl) DEF_ASM(dup) DEF_ASM(ext) DEF_ASM(ins) DEF_ASM(movi) DEF_ASM(mvni) DEF_ASM(not) DEF_ASM(shl) DEF_ASM(shll) DEF_ASM(shll2) DEF_ASM(sli) DEF_ASM(sri) DEF_ASM(sqshl) DEF_ASM(sqshlu) DEF_ASM(srshl) DEF_ASM(sshll) DEF_ASM(sshll2) DEF_ASM(sshr) DEF_ASM(ushll) DEF_ASM(ushll2) DEF_ASM(ushr) /* Misc */ DEF_ASM(bfm) DEF_ASM(sbfm) DEF_ASM(ubfm) DEF_ASM(extr) DEF_ASM(crc32b) DEF_ASM(crc32h) DEF_ASM(crc32w) DEF_ASM(crc32x) DEF_ASM(crc32cb) DEF_ASM(crc32ch) DEF_ASM(crc32cw) DEF_ASM(crc32cx) DEF_ASM(rev) DEF_ASM(rev16) DEF_ASM(rev32) DEF_ASM(rev64) DEF_ASM(clz) DEF_ASM(cls) DEF_ASM(rbit) /* Exception generating */ DEF_ASM(svc) DEF_ASM(hvc) DEF_ASM(smc) DEF_ASM(brk) DEF_ASM(hlt) DEF_ASM(dcps1) DEF_ASM(dcps2) DEF_ASM(dcps3) /* Conditional branches */ DEF_ASM(b_eq) DEF_ASM(b_ne) DEF_ASM(b_cs) DEF_ASM(b_cc) DEF_ASM(b_mi) DEF_ASM(b_pl) DEF_ASM(b_vs) DEF_ASM(b_vc) DEF_ASM(b_hi) DEF_ASM(b_ls) DEF_ASM(b_ge) DEF_ASM(b_lt) DEF_ASM(b_gt) DEF_ASM(b_le) /* LD/ST exclusive */ DEF_ASM(ldxr) DEF_ASM(ldxrb) DEF_ASM(ldxrh) DEF_ASM(stxr) DEF_ASM(stxrb) DEF_ASM(stxrh) DEF_ASM(ldaxr) DEF_ASM(ldaxrb) DEF_ASM(ldaxrh) DEF_ASM(stlxr) DEF_ASM(stlxrb) DEF_ASM(stlxrh) /* LD/ST acquire-release */ DEF_ASM(ldar) DEF_ASM(ldarb) DEF_ASM(ldarh) DEF_ASM(stlr) DEF_ASM(stlrb) DEF_ASM(stlrh) DEF_ASM(ldalr) DEF_ASM(ldalrb) DEF_ASM(ldalrh) DEF_ASM(stllr) DEF_ASM(stllrb) DEF_ASM(stllrh) /* LD/ST unscaled immediate */ DEF_ASM(ldur) DEF_ASM(ldurb) DEF_ASM(ldurh) DEF_ASM(ldursb) DEF_ASM(ldursh) DEF_ASM(ldursw) DEF_ASM(stur) DEF_ASM(sturb) DEF_ASM(sturh) /* Vector load/store */ DEF_ASM(ld1) DEF_ASM(st1) DEF_ASM(ld2) DEF_ASM(st2) DEF_ASM(ld3) DEF_ASM(st3) DEF_ASM(ld4) DEF_ASM(st4)