Skip to documentation
SLOP

tiny.choir.backends.aarch64.encoding

Reference tiny.choir backends aarch64 encoding

Defined in backends.aarch64.

API (118)

Actions

Public operations.

Types and contracts

Public types and contracts.

Values and defaults

Public values and defaults.

No direct callersNo direct callsbackends.aarch64encoding
Static calls · unresolved targets: unknown · external targets: unknown.

Source

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:32

zig
pub const AddSubExtend = enum(u3) {    uxtb = 0b000,    uxth = 0b001,    uxtw = 0b010,    uxtx = 0b011,    sxtb = 0b100,    sxth = 0b101,    sxtw = 0b110,    sxtx = 0b111,};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:368

zig
pub const AddSubExtendedRegister = packed struct(u32) {    rd: Encoded,    rn: Encoded,    imm3: u3,    option: AddSubExtend,    rm: Encoded,    fixed0: u1 = 1,    fixed1: u2 = 0b01,    fixed2: u5 = 0b01011,    s: u1,    op: u1,    sf: u1,};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:130

zig
pub const AddSubImmediate = packed struct(u32) {    rd: Encoded,    rn: Encoded,    imm12: u12,    sh: u1,    fixed: u6 = 0b100010,    s: u1,    op: AddSubOp,    sf: u1,    pub const AddSubOp = enum(u1) { add = 0, sub = 1 };    pub fn add(rd: Encoded, rn: Encoded, imm: u12, size: GPRSize) Instruction {        return .{            .data_processing_imm = .{                .add_sub_imm = .{                    .rd = rd,                    .rn = rn,                    .imm12 = imm,                    .sh = 0,                    .s = 0,                    .op = .add,                    .sf = @backingInt(size),                },            },        };    }    pub fn adds(rd: Encoded, rn: Encoded, imm: u12, size: GPRSize) Instruction {        return .{            .data_processing_imm = .{                .add_sub_imm = .{                    .rd = rd,                    .rn = rn,                    .imm12 = imm,                    .sh = 0,                    .s = 1,                    .op = .add,                    .sf = @backingInt(size),                },            },        };    }    pub fn sub(rd: Encoded, rn: Encoded, imm: u12, size: GPRSize) Instruction {        return .{            .data_processing_imm = .{                .add_sub_imm = .{                    .rd = rd,                    .rn = rn,                    .imm12 = imm,                    .sh = 0,                    .s = 0,                    .op = .sub,                    .sf = @backingInt(size),                },            },        };    }    pub fn subs(rd: Encoded, rn: Encoded, imm: u12, size: GPRSize) Instruction {        return .{            .data_processing_imm = .{                .add_sub_imm = .{                    .rd = rd,                    .rn = rn,                    .imm12 = imm,                    .sh = 0,                    .s = 1,                    .op = .sub,                    .sf = @backingInt(size),                },            },        };    }    pub fn cmpImm(rn: Encoded, imm: u12, size: GPRSize) Instruction {        return subs(registers.ZR.encoded, rn, imm, size);    }};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:25

zig
pub const AddSubShift = enum(u2) {    lsl = 0b00,    lsr = 0b01,    asr = 0b10,    reserved = 0b11,};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:283

zig
pub const AddSubShiftedRegister = packed struct(u32) {    rd: Encoded,    rn: Encoded,    imm6: u6,    rm: Encoded,    fixed0: u1 = 0,    shift: AddSubShift,    fixed1: u5 = 0b01011,    s: u1,    op: u1,    sf: u1,    pub fn addReg(rd: Encoded, rn: Encoded, rm: Encoded, size: GPRSize) Instruction {        return .{            .data_processing_reg = .{                .add_sub_shifted = .{                    .rd = rd,                    .rn = rn,                    .imm6 = 0,                    .rm = rm,                    .shift = .lsl,                    .s = 0,                    .op = 0,                    .sf = @backingInt(size),                },            },        };    }    pub fn addsReg(rd: Encoded, rn: Encoded, rm: Encoded, size: GPRSize) Instruction {        return .{            .data_processing_reg = .{                .add_sub_shifted = .{                    .rd = rd,                    .rn = rn,                    .imm6 = 0,                    .rm = rm,                    .shift = .lsl,                    .s = 1,                    .op = 0,                    .sf = @backingInt(size),                },            },        };    }    pub fn subReg(rd: Encoded, rn: Encoded, rm: Encoded, size: GPRSize) Instruction {        return .{            .data_processing_reg = .{                .add_sub_shifted = .{                    .rd = rd,                    .rn = rn,                    .imm6 = 0,                    .rm = rm,                    .shift = .lsl,                    .s = 0,                    .op = 1,                    .sf = @backingInt(size),                },            },        };    }    pub fn subsReg(rd: Encoded, rn: Encoded, rm: Encoded, size: GPRSize) Instruction {        return .{            .data_processing_reg = .{                .add_sub_shifted = .{                    .rd = rd,                    .rn = rn,                    .imm6 = 0,                    .rm = rm,                    .shift = .lsl,                    .s = 1,                    .op = 1,                    .sf = @backingInt(size),                },            },        };    }    pub fn cmpReg(rn: Encoded, rm: Encoded, size: GPRSize) Instruction {        return subsReg(registers.ZR.encoded, rn, rm, size);    }};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:950

zig
pub const Branch = packed union {    unconditional_imm: UnconditionalBranchImm,    conditional: ConditionalBranch,    unconditional_reg: UnconditionalBranchReg,    raw: u32,};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:1394

zig
pub const Condition = enum(u4) {    eq = 0b0000,    ne = 0b0001,    cs = 0b0010,    cc = 0b0011,    mi = 0b0100,    pl = 0b0101,    vs = 0b0110,    vc = 0b0111,    hi = 0b1000,    ls = 0b1001,    ge = 0b1010,    lt = 0b1011,    gt = 0b1100,    le = 0b1101,    al = 0b1110,    nv = 0b1111,    pub const hs = Condition.cs;    pub const lo = Condition.cc;    pub fn invert(self: Condition) Condition {        return @fromBackingInt(@intCast(@backingInt(self) ^ 1));    }};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:985

zig
pub const ConditionalBranch = packed struct(u32) {    cond: Condition,    fixed0: u1 = 0,    imm19: i19,    fixed1: u1 = 0,    fixed2: u7 = 0b0101010,    pub fn bCond(cond: Condition, offset: i19) Instruction {        return .{            .branch = .{                .conditional = .{                    .cond = cond,                    .imm19 = offset,                },            },        };    }};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:538

zig
pub const ConditionalSelect = packed struct(u32) {    rd: Encoded,    rn: Encoded,    op2: u2,    cond: Condition,    rm: Encoded,    fixed0: u1 = 0,    fixed1: u2 = 0b10,    fixed2: u5 = 0b11010,    s: u1 = 0,    op: u1,    sf: u1,    pub fn csel(rd: Encoded, rn: Encoded, rm: Encoded, cond: Condition, size: GPRSize) Instruction {        return .{            .data_processing_reg = .{                .conditional_select = .{                    .rd = rd,                    .rn = rn,                    .op2 = 0b00,                    .cond = cond,                    .rm = rm,                    .op = 0,                    .sf = @backingInt(size),                },            },        };    }    pub fn cset(rd: Encoded, cond: Condition, size: GPRSize) Instruction {        return .{            .data_processing_reg = .{                .conditional_select = .{                    .rd = rd,                    .rn = registers.ZR.encoded,                    .op2 = 0b01,                    .cond = cond.invert(),                    .rm = registers.ZR.encoded,                    .op = 0,                    .sf = @backingInt(size),                },            },        };    }};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:449

zig
pub const DataProcessing2Source = packed struct(u32) {    rd: Encoded,    rn: Encoded,    opcode: DataProcessing2SourceOpcode,    rm: Encoded,    fixed: u8 = 0b11010110,    s: u1 = 0,    fixed2: u1 = 0,    sf: u1,    pub fn udiv(rd: Encoded, rn: Encoded, rm: Encoded, size: GPRSize) Instruction {        return .{            .data_processing_reg = .{                .data_proc_2src = .{                    .rd = rd,                    .rn = rn,                    .opcode = .udiv,                    .rm = rm,                    .sf = @backingInt(size),                },            },        };    }    pub fn sdiv(rd: Encoded, rn: Encoded, rm: Encoded, size: GPRSize) Instruction {        return .{            .data_processing_reg = .{                .data_proc_2src = .{                    .rd = rd,                    .rn = rn,                    .opcode = .sdiv,                    .rm = rm,                    .sf = @backingInt(size),                },            },        };    }};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:50

zig
pub const DataProcessing2SourceOpcode = enum(u6) {    udiv = 0b000010,    sdiv = 0b000011,    lslv = 0b001000,    lsrv = 0b001001,    asrv = 0b001010,    rorv = 0b001011,};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:488

zig
pub const DataProcessing3Source = packed struct(u32) {    rd: Encoded,    rn: Encoded,    ra: Encoded,    o0: u1,    rm: Encoded,    op31: u3,    fixed: u5 = 0b11011,    op54: u2,    sf: u1,    pub fn mul(rd: Encoded, rn: Encoded, rm: Encoded, size: GPRSize) Instruction {        return madd(rd, rn, rm, registers.ZR.encoded, size);    }    pub fn madd(rd: Encoded, rn: Encoded, rm: Encoded, ra: Encoded, size: GPRSize) Instruction {        return .{            .data_processing_reg = .{                .data_proc_3src = .{                    .rd = rd,                    .rn = rn,                    .ra = ra,                    .o0 = 0,                    .rm = rm,                    .op31 = 0b000,                    .op54 = 0b00,                    .sf = @backingInt(size),                },            },        };    }    pub fn msub(rd: Encoded, rn: Encoded, rm: Encoded, ra: Encoded, size: GPRSize) Instruction {        return .{            .data_processing_reg = .{                .data_proc_3src = .{                    .rd = rd,                    .rn = rn,                    .ra = ra,                    .o0 = 1,                    .rm = rm,                    .op31 = 0b000,                    .op54 = 0b00,                    .sf = @backingInt(size),                },            },        };    }};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:123

zig
pub const DataProcessingImmediate = packed union {    add_sub_imm: AddSubImmediate,    move_wide: MoveWide,    logical_imm: LogicalImmediate,    raw: u32,};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:273

zig
pub const DataProcessingRegister = packed union {    add_sub_shifted: AddSubShiftedRegister,    add_sub_extended: AddSubExtendedRegister,    logical_shifted: LogicalShiftedRegister,    data_proc_2src: DataProcessing2Source,    data_proc_3src: DataProcessing3Source,    conditional_select: ConditionalSelect,    raw: u32,};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:1320

zig
pub const FMovGeneral = packed struct(u32) {    rd: Encoded,    rn: Encoded,    fixed0: u6 = 0b000000,    opcode: u3,    rmode: u2,    fixed1: u1 = 1,    ptype: u2,    fixed2: u5 = 0b11110,    s: u1 = 0,    fixed3: u1 = 0,    sf: u1,    pub fn fmovToFprSingle(rd: Encoded, rn: Encoded) Instruction {        return .{            .fp_data_processing = .{                .fmov_general = .{                    .rd = rd,                    .rn = rn,                    .opcode = 0b111,                    .rmode = 0b00,                    .ptype = 0b00,                    .sf = 0,                },            },        };    }    pub fn fmovToFprDouble(rd: Encoded, rn: Encoded) Instruction {        return .{            .fp_data_processing = .{                .fmov_general = .{                    .rd = rd,                    .rn = rn,                    .opcode = 0b111,                    .rmode = 0b00,                    .ptype = 0b01,                    .sf = 1,                },            },        };    }    pub fn fmovFromFprSingle(rd: Encoded, rn: Encoded) Instruction {        return .{            .fp_data_processing = .{                .fmov_general = .{                    .rd = rd,                    .rn = rn,                    .opcode = 0b110,                    .rmode = 0b00,                    .ptype = 0b00,                    .sf = 0,                },            },        };    }    pub fn fmovFromFprDouble(rd: Encoded, rn: Encoded) Instruction {        return .{            .fp_data_processing = .{                .fmov_general = .{                    .rd = rd,                    .rn = rn,                    .opcode = 0b110,                    .rmode = 0b00,                    .ptype = 0b01,                    .sf = 1,                },            },        };    }};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:1063

zig
pub const FP1Source = packed struct(u32) {    rd: Encoded,    rn: Encoded,    fixed0: u5 = 0b10000,    opcode: FP1SourceOpcode,    fixed1: u1 = 1,    ptype: FP2Source.FPType,    fixed2: u5 = 0b11110,    s: u1 = 0,    fixed3: u1 = 0,    m: u1 = 0,    pub fn fabs(rd: Encoded, rn: Encoded, ftype: FP2Source.FPType) Instruction {        return .{            .fp_data_processing = .{                .fp_1src = .{                    .rd = rd,                    .rn = rn,                    .opcode = .fabs,                    .ptype = ftype,                },            },        };    }    pub fn fneg(rd: Encoded, rn: Encoded, ftype: FP2Source.FPType) Instruction {        return .{            .fp_data_processing = .{                .fp_1src = .{                    .rd = rd,                    .rn = rn,                    .opcode = .fneg,                    .ptype = ftype,                },            },        };    }    pub fn fsqrt(rd: Encoded, rn: Encoded, ftype: FP2Source.FPType) Instruction {        return .{            .fp_data_processing = .{                .fp_1src = .{                    .rd = rd,                    .rn = rn,                    .opcode = .fsqrt,                    .ptype = ftype,                },            },        };    }    pub fn fmov(rd: Encoded, rn: Encoded, ftype: FP2Source.FPType) Instruction {        return .{            .fp_data_processing = .{                .fp_1src = .{                    .rd = rd,                    .rn = rn,                    .opcode = .fmov,                    .ptype = ftype,                },            },        };    }};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:76

zig
pub const FP1SourceOpcode = enum(u6) {    fmov = 0b000000,    fabs = 0b000001,    fneg = 0b000010,    fsqrt = 0b000011,};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:1128

zig
pub const FP2Source = packed struct(u32) {    rd: Encoded,    rn: Encoded,    fixed0: u2 = 0b10,    opcode: FP2SourceOpcode,    rm: Encoded,    fixed1: u1 = 1,    ptype: FPType,    fixed2: u5 = 0b11110,    m: u1 = 0,    fixed3: u1 = 0,    s: u1 = 0,    pub const FPType = enum(u2) {        single = 0b00,        double = 0b01,        half = 0b11,    };    pub fn fadd(rd: Encoded, rn: Encoded, rm: Encoded, ftype: FPType) Instruction {        return .{            .fp_data_processing = .{                .fp_2src = .{                    .rd = rd,                    .rn = rn,                    .opcode = .fadd,                    .rm = rm,                    .ptype = ftype,                },            },        };    }    pub fn fsub(rd: Encoded, rn: Encoded, rm: Encoded, ftype: FPType) Instruction {        return .{            .fp_data_processing = .{                .fp_2src = .{                    .rd = rd,                    .rn = rn,                    .opcode = .fsub,                    .rm = rm,                    .ptype = ftype,                },            },        };    }    pub fn fmul(rd: Encoded, rn: Encoded, rm: Encoded, ftype: FPType) Instruction {        return .{            .fp_data_processing = .{                .fp_2src = .{                    .rd = rd,                    .rn = rn,                    .opcode = .fmul,                    .rm = rm,                    .ptype = ftype,                },            },        };    }    pub fn fdiv(rd: Encoded, rn: Encoded, rm: Encoded, ftype: FPType) Instruction {        return .{            .fp_data_processing = .{                .fp_2src = .{                    .rd = rd,                    .rn = rn,                    .opcode = .fdiv,                    .rm = rm,                    .ptype = ftype,                },            },        };    }};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:83

zig
pub const FP2SourceOpcode = enum(u4) {    fmul = 0b0000,    fdiv = 0b0001,    fadd = 0b0010,    fsub = 0b0011,    fmax = 0b0100,    fmin = 0b0101,};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:1204

zig
pub const FPCompare = packed struct(u32) {    opcode2: u5,    rn: Encoded,    fixed0: u4 = 0b1000,    op: u2,    rm: Encoded,    fixed1: u1 = 1,    ptype: FP2Source.FPType,    fixed2: u5 = 0b11110,    m: u1 = 0,    fixed3: u1 = 0,    s: u1 = 0,    pub fn fcmp(rn: Encoded, rm: Encoded, ftype: FP2Source.FPType) Instruction {        return .{            .fp_data_processing = .{                .fp_compare = .{                    .opcode2 = 0b00000,                    .rn = rn,                    .op = 0b00,                    .rm = rm,                    .ptype = ftype,                },            },        };    }    pub fn fcmpZero(rn: Encoded, ftype: FP2Source.FPType) Instruction {        return .{            .fp_data_processing = .{                .fp_compare = .{                    .opcode2 = 0b01000,                    .rn = rn,                    .op = 0b00,                    .rm = @fromBackingInt(@intCast(0)),                    .ptype = ftype,                },            },        };    }};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:1246

zig
pub const FPConversion = packed struct(u32) {    rd: Encoded,    rn: Encoded,    fixed0: u6 = 0b000000,    opcode: u3,    rmode: u2,    fixed1: u1 = 0,    ptype: u2,    fixed2: u5 = 0b11110,    s: u1 = 0,    fixed3: u1 = 0,    sf: u1,};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:1053

zig
pub const FPDataProcessing = packed union {    fp_1src: FP1Source,    fp_2src: FP2Source,    fp_compare: FPCompare,    fp_conversion: FPConversion,    fp_imm: FPImmediate,    fmov_general: FMovGeneral,    raw: u32,};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:1260

zig
pub const FPImmediate = packed struct(u32) {    rd: Encoded,    fixed0: u5 = 0b00000,    fixed1: u3 = 0b100,    imm8: u8,    ptype: FPImmediateType,    fixed2: u5 = 0b11100,    fixed3: u4 = 0b0001,    fn immTypeFromFP(ftype: FP2Source.FPType) FPImmediateType {        return switch (ftype) {            .half => .half,            .single => .single,            .double => .double,        };    }    pub fn fmovImm(rd: Encoded, imm8: u8, ftype: FP2Source.FPType) Instruction {        return .{            .fp_data_processing = .{                .fp_imm = .{                    .rd = rd,                    .imm8 = imm8,                    .ptype = immTypeFromFP(ftype),                },            },        };    }    pub fn encodeF32(value: f32) ?u8 {        const bits: u32 = @bitCast(value);        const sign: u8 = @intCast(bits >> 31);        const exp: u8 = @intCast((bits >> 23) & 0xFF);        const frac: u32 = bits & 0x7FFFFF;        const exp_high: u8 = exp >> 3;        if (exp_high != 0x0F and exp_high != 0x10) return null;        if ((frac & 0x7FFFF) != 0) return null;        const exp_low: u8 = exp & 0x7;        const frac_top: u8 = @intCast(frac >> 19);        return (sign << 7) | (exp_low << 4) | frac_top;    }    pub fn encodeF64(value: f64) ?u8 {        const bits: u64 = @bitCast(value);        const sign: u8 = @intCast(bits >> 63);        const exp: u16 = @intCast((bits >> 52) & 0x7FF);        const frac: u64 = bits & 0xFFFFFFFFFFFFF;        const exp_high: u16 = exp >> 3;        if (exp_high != 0x7F and exp_high != 0x80) return null;        if ((frac & 0xFFFFFFFFFFFF) != 0) return null;        const exp_low: u8 = @intCast(exp & 0x7);        const frac_top: u8 = @intCast(frac >> 48);        return (sign << 7) | (exp_low << 4) | frac_top;    }};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:92

zig
pub const FPImmediateType = enum(u2) {    half = 0b00,    single = 0b01,    double = 0b11,};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:98

zig
pub const Instruction = packed union {    data_processing_imm: DataProcessingImmediate,    data_processing_reg: DataProcessingRegister,    load_store: LoadStore,    branch: Branch,    fp_data_processing: FPDataProcessing,    raw: u32,    pub const size = 4;    pub fn toBytes(self: Instruction) [4]u8 {        var buf: [4]u8 = undefined;        std.mem.writeInt(u32, buf[0..4], self.raw, .little);        return buf;    }    pub fn fromBytes(bytes: [4]u8) Instruction {        return .{ .raw = std.mem.readInt(u32, bytes[0..4], .little) };    }    pub fn write(self: Instruction, buf: []u8) void {        std.mem.writeInt(u32, buf[0..4], self.raw, .little);    }};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:584

zig
pub const LoadStore = packed union {    load_store_reg_imm: LoadStoreRegImm,    load_store_reg_imm_fp: LoadStoreRegImmFP,    load_store_pair: LoadStorePair,    load_store_pair_fp: LoadStorePairFP,    raw: u32,};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:59

zig
pub const LoadStoreFPSize = enum(u2) {    single = 0b10,    double = 0b11,};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:682

zig
pub const LoadStorePair = packed struct(u32) {    rt: Encoded,    rn: Encoded,    rt2: Encoded,    imm7: i7,    l: u1,    op2: LoadStorePairMode,    v: u1 = 0,    fixed: u3 = 0b101,    opc: u2,    pub fn stp(rt: Encoded, rt2: Encoded, rn: Encoded, offset: i7, gpr_size: GPRSize) Instruction {        return .{            .load_store = .{                .load_store_pair = .{                    .rt = rt,                    .rn = rn,                    .rt2 = rt2,                    .imm7 = offset,                    .l = 0,                    .op2 = .signed_offset,                    .opc = @as(u2, @backingInt(gpr_size)) << 1,                },            },        };    }    pub fn stpBytes(rt: Encoded, rt2: Encoded, rn: Encoded, byte_offset: i32, gpr_size: GPRSize) Instruction {        const scale: i32 = switch (gpr_size) {            .w => 4,            .x => 8,        };        return stp(rt, rt2, rn, scalePairOffsetBytes(byte_offset, scale), gpr_size);    }    pub fn stpPre(rt: Encoded, rt2: Encoded, rn: Encoded, offset: i7, gpr_size: GPRSize) Instruction {        return .{            .load_store = .{                .load_store_pair = .{                    .rt = rt,                    .rn = rn,                    .rt2 = rt2,                    .imm7 = offset,                    .l = 0,                    .op2 = .pre_index,                    .opc = @as(u2, @backingInt(gpr_size)) << 1,                },            },        };    }    pub fn stpPreBytes(rt: Encoded, rt2: Encoded, rn: Encoded, byte_offset: i32, gpr_size: GPRSize) Instruction {        const scale: i32 = switch (gpr_size) {            .w => 4,            .x => 8,        };        return stpPre(rt, rt2, rn, scalePairOffsetBytes(byte_offset, scale), gpr_size);    }    pub fn ldp(rt: Encoded, rt2: Encoded, rn: Encoded, offset: i7, gpr_size: GPRSize) Instruction {        return .{            .load_store = .{                .load_store_pair = .{                    .rt = rt,                    .rn = rn,                    .rt2 = rt2,                    .imm7 = offset,                    .l = 1,                    .op2 = .signed_offset,                    .opc = @as(u2, @backingInt(gpr_size)) << 1,                },            },        };    }    pub fn ldpBytes(rt: Encoded, rt2: Encoded, rn: Encoded, byte_offset: i32, gpr_size: GPRSize) Instruction {        const scale: i32 = switch (gpr_size) {            .w => 4,            .x => 8,        };        return ldp(rt, rt2, rn, scalePairOffsetBytes(byte_offset, scale), gpr_size);    }    pub fn ldpPost(rt: Encoded, rt2: Encoded, rn: Encoded, offset: i7, gpr_size: GPRSize) Instruction {        return .{            .load_store = .{                .load_store_pair = .{                    .rt = rt,                    .rn = rn,                    .rt2 = rt2,                    .imm7 = offset,                    .l = 1,                    .op2 = .post_index,                    .opc = @as(u2, @backingInt(gpr_size)) << 1,                },            },        };    }    pub fn ldpPostBytes(rt: Encoded, rt2: Encoded, rn: Encoded, byte_offset: i32, gpr_size: GPRSize) Instruction {        const scale: i32 = switch (gpr_size) {            .w => 4,            .x => 8,        };        return ldpPost(rt, rt2, rn, scalePairOffsetBytes(byte_offset, scale), gpr_size);    }};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:790

zig
pub const LoadStorePairFP = packed struct(u32) {    rt: Encoded,    rn: Encoded,    rt2: Encoded,    imm7: i7,    l: u1,    op2: LoadStorePairMode,    v: u1 = 1,    fixed: u3 = 0b101,    opc: LoadStorePairFPSize,    pub fn stp(        rt: Encoded,        rt2: Encoded,        rn: Encoded,        offset: i7,        size: LoadStorePairFPSize,    ) Instruction {        return .{            .load_store = .{                .load_store_pair_fp = .{                    .rt = rt,                    .rn = rn,                    .rt2 = rt2,                    .imm7 = offset,                    .l = 0,                    .op2 = .signed_offset,                    .opc = size,                },            },        };    }    pub fn stpBytes(        rt: Encoded,        rt2: Encoded,        rn: Encoded,        byte_offset: i32,        size: LoadStorePairFPSize,    ) Instruction {        const scale: i32 = switch (size) {            .single => 4,            .double => 8,            .quad => 16,        };        return stp(rt, rt2, rn, scalePairOffsetBytes(byte_offset, scale), size);    }    pub fn stpPre(        rt: Encoded,        rt2: Encoded,        rn: Encoded,        offset: i7,        size: LoadStorePairFPSize,    ) Instruction {        return .{            .load_store = .{                .load_store_pair_fp = .{                    .rt = rt,                    .rn = rn,                    .rt2 = rt2,                    .imm7 = offset,                    .l = 0,                    .op2 = .pre_index,                    .opc = size,                },            },        };    }    pub fn stpPreBytes(        rt: Encoded,        rt2: Encoded,        rn: Encoded,        byte_offset: i32,        size: LoadStorePairFPSize,    ) Instruction {        const scale: i32 = switch (size) {            .single => 4,            .double => 8,            .quad => 16,        };        return stpPre(rt, rt2, rn, scalePairOffsetBytes(byte_offset, scale), size);    }    pub fn ldp(        rt: Encoded,        rt2: Encoded,        rn: Encoded,        offset: i7,        size: LoadStorePairFPSize,    ) Instruction {        return .{            .load_store = .{                .load_store_pair_fp = .{                    .rt = rt,                    .rn = rn,                    .rt2 = rt2,                    .imm7 = offset,                    .l = 1,                    .op2 = .signed_offset,                    .opc = size,                },            },        };    }    pub fn ldpBytes(        rt: Encoded,        rt2: Encoded,        rn: Encoded,        byte_offset: i32,        size: LoadStorePairFPSize,    ) Instruction {        const scale: i32 = switch (size) {            .single => 4,            .double => 8,            .quad => 16,        };        return ldp(rt, rt2, rn, scalePairOffsetBytes(byte_offset, scale), size);    }    pub fn ldpPost(        rt: Encoded,        rt2: Encoded,        rn: Encoded,        offset: i7,        size: LoadStorePairFPSize,    ) Instruction {        return .{            .load_store = .{                .load_store_pair_fp = .{                    .rt = rt,                    .rn = rn,                    .rt2 = rt2,                    .imm7 = offset,                    .l = 1,                    .op2 = .post_index,                    .opc = size,                },            },        };    }    pub fn ldpPostBytes(        rt: Encoded,        rt2: Encoded,        rn: Encoded,        byte_offset: i32,        size: LoadStorePairFPSize,    ) Instruction {        const scale: i32 = switch (size) {            .single => 4,            .double => 8,            .quad => 16,        };        return ldpPost(rt, rt2, rn, scalePairOffsetBytes(byte_offset, scale), size);    }};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:70

zig
pub const LoadStorePairFPSize = enum(u2) {    single = 0b00,    double = 0b01,    quad = 0b10,};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:64

zig
pub const LoadStorePairMode = enum(u3) {    post_index = 0b001,    signed_offset = 0b010,    pre_index = 0b011,};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:592

zig
pub const LoadStoreRegImm = packed struct(u32) {    rt: Encoded,    rn: Encoded,    imm12: u12,    opc: u2,    fixed_01: u2 = 0b01,    v: u1 = 0,    fixed_111: u3 = 0b111,    size: u2,    pub fn ldr(rt: Encoded, rn: Encoded, offset: u12, gpr_size: GPRSize) Instruction {        return .{            .load_store = .{                .load_store_reg_imm = .{                    .rt = rt,                    .rn = rn,                    .imm12 = offset,                    .opc = 0b01,                    .size = switch (gpr_size) {                        .w => 0b10,                        .x => 0b11,                    },                },            },        };    }    pub fn str(rt: Encoded, rn: Encoded, offset: u12, gpr_size: GPRSize) Instruction {        return .{            .load_store = .{                .load_store_reg_imm = .{                    .rt = rt,                    .rn = rn,                    .imm12 = offset,                    .opc = 0b00,                    .size = switch (gpr_size) {                        .w => 0b10,                        .x => 0b11,                    },                },            },        };    }};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:637

zig
pub const LoadStoreRegImmFP = packed struct(u32) {    rt: Encoded,    rn: Encoded,    imm12: u12,    opc: u2,    fixed_01: u2 = 0b01,    v: u1 = 1,    fixed_111: u3 = 0b111,    size: u2,    pub fn ldr(rt: Encoded, rn: Encoded, offset: u12, fp_size: LoadStoreFPSize) Instruction {        return .{            .load_store = .{                .load_store_reg_imm_fp = .{                    .rt = rt,                    .rn = rn,                    .imm12 = offset,                    .opc = 0b01,                    .size = @backingInt(fp_size),                },            },        };    }    pub fn str(rt: Encoded, rn: Encoded, offset: u12, fp_size: LoadStoreFPSize) Instruction {        return .{            .load_store = .{                .load_store_reg_imm_fp = .{                    .rt = rt,                    .rn = rn,                    .imm12 = offset,                    .opc = 0b00,                    .size = @backingInt(fp_size),                },            },        };    }};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:262

zig
pub const LogicalImmediate = packed struct(u32) {    rd: Encoded,    rn: Encoded,    imms: u6,    immr: u6,    n: u1,    fixed: u6 = 0b100100,    opc: LogicalOpcode,    sf: u1,};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:18

zig
pub const LogicalOpcode = enum(u2) {    @"and" = 0b00,    orr = 0b01,    eor = 0b10,    ands = 0b11,};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:43

zig
pub const LogicalShift = enum(u2) {    lsl = 0b00,    lsr = 0b01,    asr = 0b10,    ror = 0b11,};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:382

zig
pub const LogicalShiftedRegister = packed struct(u32) {    rd: Encoded,    rn: Encoded,    imm6: u6,    rm: Encoded,    n: u1,    shift: LogicalShift,    fixed: u5 = 0b01010,    opc: LogicalOpcode,    sf: u1,    pub fn andReg(rd: Encoded, rn: Encoded, rm: Encoded, size: GPRSize) Instruction {        return .{            .data_processing_reg = .{                .logical_shifted = .{                    .rd = rd,                    .rn = rn,                    .imm6 = 0,                    .rm = rm,                    .n = 0,                    .shift = .lsl,                    .opc = .@"and",                    .sf = @backingInt(size),                },            },        };    }    pub fn orrReg(rd: Encoded, rn: Encoded, rm: Encoded, size: GPRSize) Instruction {        return .{            .data_processing_reg = .{                .logical_shifted = .{                    .rd = rd,                    .rn = rn,                    .imm6 = 0,                    .rm = rm,                    .n = 0,                    .shift = .lsl,                    .opc = .orr,                    .sf = @backingInt(size),                },            },        };    }    pub fn eorReg(rd: Encoded, rn: Encoded, rm: Encoded, size: GPRSize) Instruction {        return .{            .data_processing_reg = .{                .logical_shifted = .{                    .rd = rd,                    .rn = rn,                    .imm6 = 0,                    .rm = rm,                    .n = 0,                    .shift = .lsl,                    .opc = .eor,                    .sf = @backingInt(size),                },            },        };    }    pub fn movReg(rd: Encoded, rm: Encoded, size: GPRSize) Instruction {        return orrReg(rd, registers.ZR.encoded, rm, size);    }};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:211

zig
pub const MoveWide = packed struct(u32) {    rd: Encoded,    imm16: u16,    hw: u2,    fixed: u6 = 0b100101,    opc: MoveWideOpcode,    sf: u1,    pub fn movz(rd: Encoded, imm: u16, shift: u2, size: GPRSize) Instruction {        return .{            .data_processing_imm = .{                .move_wide = .{                    .rd = rd,                    .imm16 = imm,                    .hw = shift,                    .opc = .movz,                    .sf = @backingInt(size),                },            },        };    }    pub fn movk(rd: Encoded, imm: u16, shift: u2, size: GPRSize) Instruction {        return .{            .data_processing_imm = .{                .move_wide = .{                    .rd = rd,                    .imm16 = imm,                    .hw = shift,                    .opc = .movk,                    .sf = @backingInt(size),                },            },        };    }    pub fn movn(rd: Encoded, imm: u16, shift: u2, size: GPRSize) Instruction {        return .{            .data_processing_imm = .{                .move_wide = .{                    .rd = rd,                    .imm16 = imm,                    .hw = shift,                    .opc = .movn,                    .sf = @backingInt(size),                },            },        };    }};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:12

zig
pub const MoveWideOpcode = enum(u2) {    movn = 0b00,    movz = 0b10,    movk = 0b11,};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:957

zig
pub const UnconditionalBranchImm = packed struct(u32) {    imm26: i26,    fixed: u5 = 0b00101,    op: u1,    pub fn b(offset: i26) Instruction {        return .{            .branch = .{                .unconditional_imm = .{                    .imm26 = offset,                    .op = 0,                },            },        };    }    pub fn bl(offset: i26) Instruction {        return .{            .branch = .{                .unconditional_imm = .{                    .imm26 = offset,                    .op = 1,                },            },        };    }};

Source: lib/choir/src/backends/aarch64/encoding/instruction.zig:1004

zig
pub const UnconditionalBranchReg = packed struct(u32) {    fixed0: u5 = 0b00000,    rn: Encoded,    fixed1: u6 = 0b000000,    op2: u5,    opc: u4,    fixed2: u7 = 0b1101011,    pub fn ret(rn: Encoded) Instruction {        return .{            .branch = .{                .unconditional_reg = .{                    .rn = rn,                    .op2 = 0b11111,                    .opc = 0b0010,                },            },        };    }    pub fn retLr() Instruction {        return ret(GPR.lr.encode());    }    pub fn br(rn: Encoded) Instruction {        return .{            .branch = .{                .unconditional_reg = .{                    .rn = rn,                    .op2 = 0b11111,                    .opc = 0b0000,                },            },        };    }    pub fn blr(rn: Encoded) Instruction {        return .{            .branch = .{                .unconditional_reg = .{                    .rn = rn,                    .op2 = 0b11111,                    .opc = 0b0001,                },            },        };    }};
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: ADD immediate encodingtest sourcelib.choir.src.backends.aarch64.encoding.instr...test: disassemble: core instruction s...test sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: ADD/SUB immediatebackends.aarch64.encoding.AddSubImmediateadd
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: ADD/SUB immediatebackends.aarch64.encoding.AddSubImmediateadds
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: disassemble: core instruction s...test sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: ADD/SUB immediatebackends.aarch64.encoding.AddSubImmediatesubsbackends.aarch64.encoding.AddSubImmediatecmpImm
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: ADD/SUB immediatebackends.aarch64.encoding.AddSubImmediatesub
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callsbackends.aarch64.encoding.AddSubImmediatecmpImmtest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: ADD/SUB immediatebackends.aarch64.encoding.AddSubImmediatesubs
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: ADD register encodingtest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: ADD/SUB shifted registerbackends.aarch64.encoding.AddSubShiftedRegisteraddReg
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: ADD/SUB shifted registerbackends.aarch64.encoding.AddSubShiftedRegisteraddsReg
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: ADD/SUB shifted registerbackends.aarch64.encoding.AddSubShiftedRegistersubsRegbackends.aarch64.encoding.AddSubShiftedRegistercmpReg
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: ADD/SUB shifted registerbackends.aarch64.encoding.AddSubShiftedRegistersubReg
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callsbackends.aarch64.encoding.AddSubShiftedRegistercmpRegtest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: ADD/SUB shifted registerbackends.aarch64.encoding.AddSubShiftedRegistersubsReg
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...cond encodingtest sourcelib.choir.src.backends.aarch64.encoding.instr...test: disassemble: core instruction s...test sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Conditional branchbackends.aarch64.encoding.ConditionalBranchbCond
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Conditional selectbackends.aarch64.encoding.ConditionalSelectcsel
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Conditional selectbackends.aarch64.encoding.ConditionalSelectcset
Static calls · unresolved targets: 0 · external targets: 1.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Data processing 2-sourcebackends.aarch64.encoding.DataProcessing2Sourcesdiv
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Data processing 2-sourcebackends.aarch64.encoding.DataProcessing2Sourceudiv
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callsbackends.aarch64.encoding.DataProcessing3Sourcemultest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Data processing 3-sourcebackends.aarch64.encoding.DataProcessing3Sourcemadd
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Data processing 3-sourcebackends.aarch64.encoding.DataProcessing3Sourcemsub
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: MUL encodingtest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Data processing 3-sourcebackends.aarch64.encoding.DataProcessing3Sourcemaddbackends.aarch64.encoding.DataProcessing3Sourcemul
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: FMOV general (GPR <-> F...backends.aarch64.encoding.FMovGeneralfmovFromFprDouble
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: FMOV general (GPR <-> F...backends.aarch64.encoding.FMovGeneralfmovFromFprSingle
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: FMOV general (GPR <-> F...backends.aarch64.encoding.FMovGeneralfmovToFprDouble
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: disassemble: core instruction s...test sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: FMOV general (GPR <-> F...backends.aarch64.encoding.FMovGeneralfmovToFprSingle
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: FABS encodingtest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: FP 1-sourceprivate sourcelib.tldr.src.profiling.collect.sources.lua.stubswriteLuaStubsbackends.aarch64.encoding.FP1Sourcefabs
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: FMOV register encodingtest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: FP 1-sourcebackends.aarch64.encoding.FP1Sourcefmov
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: FNEG encodingtest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: FP 1-sourcebackends.aarch64.encoding.FP1Sourcefneg
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: FSQRT encodingtest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: FP 1-sourcebackends.aarch64.encoding.FP1Sourcefsqrt
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: FADD encodingtest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: FP 2-sourcebackends.aarch64.encoding.FP2Sourcefadd
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: FP 2-sourcebackends.aarch64.encoding.FP2Sourcefdiv
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: FP 2-sourcebackends.aarch64.encoding.FP2Sourcefmul
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: FP 2-sourcebackends.aarch64.encoding.FP2Sourcefsub
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: FP comparebackends.aarch64.encoding.FPComparefcmp
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: FP comparebackends.aarch64.encoding.FPComparefcmpZero
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: FP immediate imm8 encoding (f32...backends.aarch64.encoding.FPImmediateencodeF32
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: FP immediate imm8 encoding (f32...backends.aarch64.encoding.FPImmediateencodeF64
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: FMOV immediate encodingtest sourcelib.choir.src.backends.aarch64.encoding.instr...test: disassemble: core instruction s...private sourcelib.choir.src.backends.aarch64.encoding.instr...immTypeFromFPbackends.aarch64.encoding.FPImmediatefmovImm
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: Instruction toBytes/fromBytes u...backends.aarch64.EncodingfromBytes
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: Instruction toBytes/fromBytes u...backends.aarch64.EncodingtoBytes
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Load/Store pairprivate sourcelib.choir.src.backends.aarch64.encoding.instr...scalePairOffsetBytesbackends.aarch64.encoding.LoadStorePairldpBytes
Static calls · unresolved targets: 1 · external targets: 0.
Called byCallsNo direct callersprivate sourcelib.choir.src.backends.aarch64.encoding.instr...scalePairOffsetBytesbackends.aarch64.encoding.LoadStorePairldpPostBytes
Static calls · unresolved targets: 1 · external targets: 0.
Called byCallstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: disassemble: core instruction s...test sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Load/Store pairprivate sourcelib.choir.src.backends.aarch64.encoding.instr...scalePairOffsetBytesbackends.aarch64.encoding.LoadStorePairstpBytes
Static calls · unresolved targets: 1 · external targets: 0.
Called byCallsNo direct callersprivate sourcelib.choir.src.backends.aarch64.encoding.instr...scalePairOffsetBytesbackends.aarch64.encoding.LoadStorePairstpPreBytes
Static calls · unresolved targets: 1 · external targets: 0.
Called byCallstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: FP Load/Store pairprivate sourcelib.choir.src.backends.aarch64.encoding.instr...scalePairOffsetBytesbackends.aarch64.encoding.LoadStorePairFPldpBytes
Static calls · unresolved targets: 1 · external targets: 0.
Called byCallsNo direct callersprivate sourcelib.choir.src.backends.aarch64.encoding.instr...scalePairOffsetBytesbackends.aarch64.encoding.LoadStorePairFPldpPostBytes
Static calls · unresolved targets: 1 · external targets: 0.
Called byCallstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: FP Load/Store pairprivate sourcelib.choir.src.backends.aarch64.encoding.instr...scalePairOffsetBytesbackends.aarch64.encoding.LoadStorePairFPstpBytes
Static calls · unresolved targets: 1 · external targets: 0.
Called byCallsNo direct callersprivate sourcelib.choir.src.backends.aarch64.encoding.instr...scalePairOffsetBytesbackends.aarch64.encoding.LoadStorePairFPstpPreBytes
Static calls · unresolved targets: 1 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: disassemble: core instruction s...test sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Load/Store register imm...backends.aarch64.encoding.LoadStoreRegImmldr
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Load/Store register imm...backends.aarch64.encoding.LoadStoreRegImmstr
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Logical shifted registerbackends.aarch64.encoding.LogicalShiftedRegisterandReg
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Logical shifted registerbackends.aarch64.encoding.LogicalShiftedRegistereorReg
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: disassemble: core instruction s...test sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Logical shifted registerbackends.aarch64.encoding.LogicalShiftedRegisterorrRegbackends.aarch64.encoding.LogicalShiftedRegistermovReg
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callsbackends.aarch64.encoding.LogicalShiftedRegistermovRegtest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Logical shifted registerbackends.aarch64.encoding.LogicalShiftedRegisterorrReg
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Move widebackends.aarch64.encoding.MoveWidemovk
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Move widebackends.aarch64.encoding.MoveWidemovn
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: disassemble: core instruction s...test sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Move widebackends.aarch64.encoding.MoveWidemovz
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: disassemble: core instruction s...test sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Unconditional branch im...test sourcelib.pluck.src.bif.transpilertest: transpile conditional network a...test sourcelib.pluck.src.evaluatortest: factor WeightDD composes multip...test sourcelib.pluck.src.evaluatortest: factor WeightDD respects branch...+8 morebackends.aarch64.encoding.UnconditionalBranchImmb
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Unconditional branch im...backends.aarch64.encoding.UnconditionalBranchImmbl
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Unconditional branch re...backends.aarch64.encoding.UnconditionalBranchRegblr
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Unconditional branch re...backends.aarch64.encoding.UnconditionalBranchRegbr
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callsbackends.aarch64.encoding.UnconditionalBranchRegretLrbackends.aarch64.encoding.UnconditionalBranchRegret
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallstest sourcelib.choir.src.backends.aarch64.encoding.instr...test: RET encodingtest sourcelib.choir.src.backends.aarch64.encoding.instr...test: disassemble: core instruction s...test sourcelib.choir.src.backends.aarch64.encoding.instr...test: golden: Unconditional branch re...backends.aarch64.encoding.UnconditionalBranchRegretbackends.aarch64.encoding.UnconditionalBranchRegretLr
Static calls · unresolved targets: 1 · external targets: 0.

Source: lib/choir/src/backends/aarch64/encoding/root.zig

zig
const instruction = @import("instruction.zig");pub const MoveWideOpcode = instruction.MoveWideOpcode;pub const LogicalOpcode = instruction.LogicalOpcode;pub const AddSubShift = instruction.AddSubShift;pub const AddSubExtend = instruction.AddSubExtend;pub const LogicalShift = instruction.LogicalShift;pub const DataProcessing2SourceOpcode = instruction.DataProcessing2SourceOpcode;pub const LoadStoreFPSize = instruction.LoadStoreFPSize;pub const LoadStorePairMode = instruction.LoadStorePairMode;pub const LoadStorePairFPSize = instruction.LoadStorePairFPSize;pub const FP1SourceOpcode = instruction.FP1SourceOpcode;pub const FP2SourceOpcode = instruction.FP2SourceOpcode;pub const FPImmediateType = instruction.FPImmediateType;pub const Instruction = instruction.Instruction;pub const DataProcessingImmediate = instruction.DataProcessingImmediate;pub const AddSubImmediate = instruction.AddSubImmediate;pub const MoveWide = instruction.MoveWide;pub const LogicalImmediate = instruction.LogicalImmediate;pub const DataProcessingRegister = instruction.DataProcessingRegister;pub const AddSubShiftedRegister = instruction.AddSubShiftedRegister;pub const AddSubExtendedRegister = instruction.AddSubExtendedRegister;pub const LogicalShiftedRegister = instruction.LogicalShiftedRegister;pub const DataProcessing2Source = instruction.DataProcessing2Source;pub const DataProcessing3Source = instruction.DataProcessing3Source;pub const ConditionalSelect = instruction.ConditionalSelect;pub const LoadStore = instruction.LoadStore;pub const LoadStoreRegImm = instruction.LoadStoreRegImm;pub const LoadStoreRegImmFP = instruction.LoadStoreRegImmFP;pub const LoadStorePair = instruction.LoadStorePair;pub const LoadStorePairFP = instruction.LoadStorePairFP;pub const Branch = instruction.Branch;pub const UnconditionalBranchImm = instruction.UnconditionalBranchImm;pub const ConditionalBranch = instruction.ConditionalBranch;pub const UnconditionalBranchReg = instruction.UnconditionalBranchReg;pub const FPDataProcessing = instruction.FPDataProcessing;pub const FP1Source = instruction.FP1Source;pub const FP2Source = instruction.FP2Source;pub const FPCompare = instruction.FPCompare;pub const FPConversion = instruction.FPConversion;pub const FPImmediate = instruction.FPImmediate;pub const FMovGeneral = instruction.FMovGeneral;pub const Condition = instruction.Condition;

Source: lib/choir/src/backends/aarch64/root.zig:2

zig
pub const encoding = @import("encoding/root.zig");

Also reachable as

dialects.aarch64.encoding.

Complete caller list for backends.aarch64.encoding.UnconditionalBranchImm.b

13 direct callers.

Audit

Definitions119
Public names247
Members293
Version26.7.0
Revisiondaab053ee433