machv_emit

Reusable MachV machine-code emitter

compiler
machine-code
emitter
jit
moon add Milky2018/machv_emit@0.2.2
Download zip
Author
Version
0.2.2
License
Apache-2.0
Last updated
last month
Downloads
23
README

#machv_emit

Reusable MachV machine-code emitter.

machv_emit turns allocated MachV functions into machine-code objects and relocation/fixup metadata. It is intended for embedders that want to supply their own runtime-symbol resolution and executable-memory policy.

#Packages

  • Milky2018/machv_emit: machine-code objects, emission entry points, stack-frame handling, relocation/fixup metadata, and target dispatch.
  • Milky2018/machv_emit/isaregs: emitter-facing ISA register helpers.

#When to use it

Use machv_emit after a MachV function has been lowered and allocated. The emitter produces bytes plus symbolic metadata; it does not decide how runtime helper names become process addresses or how executable memory is allocated.

#Example: emit target-specific bytes

MachineCode can also be used directly by embedders that need small stubs or tests. Pass the ISA explicitly so the generated bytes are independent of the machine running the test.

///|
test "emit a tiny AArch64 return stub" {
let code = MachineCode::MachineCode(isa=AArch64, record_disasm=false)
code.emit_ret(30)
let bytes = code.get_bytes()
inspect(bytes.length(), content="4")
inspect(code.current_pos(), content="4")
}

#Example: collect relocation metadata

Runtime and function-address fixups stay symbolic so callers can resolve them after emission.

///|
test "record an unresolved external call fixup" {
let code = MachineCode::MachineCode(isa=AMD64, record_disasm=false)
code.emit_byte(0xe8)
code.add_external_call_fixup(1, ExternalName("env.print_i32"))
for _ in 0..<4 {
code.emit_byte(0)
}
inspect(code.get_bytes().length(), content="5")
inspect(code.get_call_fixups().length(), content="1")
}

#Emitter output

The emitter returns machine-code bytes together with relocation, call-fixup, trap, and stack-frame metadata. A caller can then resolve symbols, allocate executable memory, and install the generated code according to its runtime policy.

#
Amd64ConstEntry

type Amd64ConstEntry

#
CallFixup

pub(all) struct CallFixup {
offset : Int
target :
RelocTarget

veneer_offset : Int
} derive(Eq,
Debug
)

Fixup for direct function call branches

#
CondCode

pub(all) enum CondCode {
EQ
NE
HS
LO
MI
PL
VS
VC
HI
LS
GE
LT
GT
LE
AL
}

AArch64 condition codes

#
CondCode::to_int

fn CondCode::to_int(self : CondCode) -> Int

#
EmitStackFrame

pub struct EmitStackFrame {
setup_area_size : Int
gpr_save_size : Int
fpr_save_size : Int
spill_size : Int
outgoing_args_size : Int
gpr_save_offset : Int
fpr_save_offset : Int
spill_offset : Int
outgoing_args_offset : Int
total_size : Int
frame_size : Int
saved_gprs : Array[Int]
saved_fprs : Array[Int]
has_setup_area : Bool
needs_context_reg : Bool
cache_context_0 : Bool
cache_context_1 : Bool
embedding_abi :
EmbeddingABI
?
}

Encapsulates the stack frame layout for a JIT-compiled function

#
EmitStackFrame::build

fn EmitStackFrame::build(clobbered_gprs : Array[Int], clobbered_fprs : Array[Int], num_spill_slots : Int, has_calls? : Bool, outgoing_args_size? : Int, needs_context_reg? : Bool, cache_context_0? : Bool, cache_context_1? : Bool, force_frame_setup? : Bool, has_incoming_stack_args? : Bool, embedding_abi? :
EmbeddingABI
?, isa? :
ISA
) -> EmitStackFrame

Build a EmitStackFrame from function metadata

Parameters:
  • clobbered_gprs: GPRs that are clobbered and need saving (callee-saved only)
  • clobbered_fprs: FPRs that are clobbered and need saving (callee-saved only)
  • num_spill_slots: Number of spill slots needed
  • has_calls: Whether function contains calls (requires FP/LR save)
  • outgoing_args_size: Stack space needed for outgoing call arguments
  • needs_context_reg: Whether function uses context (pinned reg)
  • has_incoming_stack_args: Whether function reads any stack parameters

#
EmitStackFrame::context_cache_0_index

fn EmitStackFrame::context_cache_0_index(self : EmitStackFrame) -> Int?

#
EmitStackFrame::context_cache_1_index

fn EmitStackFrame::context_cache_1_index(self : EmitStackFrame) -> Int?

#
EmitStackFrame::context_reg_index

fn EmitStackFrame::context_reg_index(self : EmitStackFrame) -> Int

#
EmitStackFrame::extra_results_ptr_index

fn EmitStackFrame::extra_results_ptr_index(self : EmitStackFrame) -> Int?

#
EmitStackFrame::get_fpr_save_offset

fn EmitStackFrame::get_fpr_save_offset(self : EmitStackFrame, reg_idx : Int) -> Int

Get the offset for saving a specific FPR (relative to SP after frame setup)

#
EmitStackFrame::get_gpr_save_offset

fn EmitStackFrame::get_gpr_save_offset(self : EmitStackFrame, reg_idx : Int) -> Int

Get the offset for saving a specific GPR (relative to SP after frame setup)

#
EmitStackFrame::get_outgoing_arg_offset

fn EmitStackFrame::get_outgoing_arg_offset(self : EmitStackFrame, arg_offset : Int) -> Int

Get the stack offset for outgoing arguments

#
EmitStackFrame::get_spill_offset

fn EmitStackFrame::get_spill_offset(self : EmitStackFrame, slot_idx : Int) -> Int

Get the stack offset for a spill slot index

#
EmitStackFrame::require_call_conv_layout

#
EmitStackFrame::require_context_reg

#
EmitStackFrame::require_embedding_abi

#
EmitStackFrame::require_embedding_context_layout

#
EmitTarget

pub(all) enum EmitTarget {
AArch64
X64
} derive(Eq,
Debug
)

#
Fixup

type Fixup

A fixup for a forward branch

#
FixupKind

pub(all) enum FixupKind {
Branch26
Branch19
}

Kind of fixup

#
FuncAddrFixup

pub(all) struct FuncAddrFixup {
offset : Int
target :
RelocTarget

reg : Int
} derive(Eq,
Debug
)

Fixup for direct function address loads

#
Instruction

type Instruction

AArch64 Instruction enum - covers all instruction types

#
Instruction::emit

fn Instruction::emit(self : Instruction, mc : MachineCode) -> Unit

#
MachineCode

pub struct MachineCode {
isa :
ISA

bytes : Array[Int]
pos : Int
labels : Map[Int, Int]
next_internal_label : Int
fixups : Array[Fixup]
x86_rel32_fixups : Array[X86Rel32Fixup]
func_addr_fixups : Array[FuncAddrFixup]
call_fixups : Array[CallFixup]
gc_safepoint_offsets : Array[Int]
gc_safepoint_root_counts : Array[Int]
gc_safepoint_root_indices : Array[Array[Int]]
amd64_const_labels : Map[String, Int]
amd64_const_entries : Array[Amd64ConstEntry]
disasm : Array[(Int, String)]
record_disasm : Bool
debug_prev_func_idx_spill_offset : Int
}

A buffer for accumulating machine code bytes

#
MachineCode::MachineCode

fn MachineCode::MachineCode(isa? :
ISA
, record_disasm? : Bool) -> MachineCode

#
MachineCode::add_call_fixup

fn MachineCode::add_call_fixup(self : MachineCode, offset : Int, symbol :
CodeSymbol
, veneer_offset? : Int) -> Unit

Add a fixup for a direct call to an embedding-owned code symbol.

#
MachineCode::add_call_target_fixup

fn MachineCode::add_call_target_fixup(self : MachineCode, offset : Int, target :
RelocTarget
, veneer_offset? : Int) -> Unit

Add a fixup for a relocatable direct call.

#
MachineCode::add_code_addr_fixup

fn MachineCode::add_code_addr_fixup(self : MachineCode, offset : Int, symbol :
CodeSymbol
, reg : Int) -> Unit

Add a fixup for an embedding-owned code address load.

#
MachineCode::add_external_call_fixup

fn MachineCode::add_external_call_fixup(self : MachineCode, offset : Int, symbol :
ExternalName
, veneer_offset? : Int) -> Unit

Add a fixup for a direct call to an external symbol.

#
MachineCode::add_external_func_addr_fixup

fn MachineCode::add_external_func_addr_fixup(self : MachineCode, offset : Int, symbol :
ExternalName
, reg : Int) -> Unit

Add a fixup for an external function address load.

#
MachineCode::add_fixup

fn MachineCode::add_fixup(self : MachineCode, target_block : Int, kind : FixupKind) -> Unit

Add a fixup for a forward branch

#
MachineCode::add_func_addr_target_fixup

fn MachineCode::add_func_addr_target_fixup(self : MachineCode, offset : Int, target :
RelocTarget
, reg : Int) -> Unit

Add a fixup for a relocatable function address load.

#
MachineCode::add_x86_rel32_fixup

fn MachineCode::add_x86_rel32_fixup(self : MachineCode, target_block : Int, disp_offset : Int, next_ip_offset : Int) -> Unit

Add an x86_64 rel32 fixup for a forward branch.

#
MachineCode::align

fn MachineCode::align(self : MachineCode, alignment : Int) -> Unit

Align the code buffer to a given boundary Pads with NOP instructions (AArch64 NOP = 0xD503201F)

#
MachineCode::align_block

fn MachineCode::align_block(self : MachineCode) -> Unit

Align to basic block boundary (typically 4 bytes for AArch64 instructions)

#
MachineCode::align_function

fn MachineCode::align_function(self : MachineCode) -> Unit

Align to function boundary (typically 16 bytes on AArch64)

#
MachineCode::annotate

fn MachineCode::annotate(self : MachineCode, text : String) -> Unit

Add a disassembly annotation at the current position

#
MachineCode::current_pos

fn MachineCode::current_pos(self : MachineCode) -> Int

Current position in the buffer

#
MachineCode::define_label

fn MachineCode::define_label(self : MachineCode, block_id : Int) -> Unit

Define a label at the current position

#
MachineCode::dump_disasm

fn MachineCode::dump_disasm(self : MachineCode) -> String

Dump disassembly with hex bytes

#
MachineCode::emit_add_imm

fn MachineCode::emit_add_imm(self : MachineCode, rd : Int, rn : Int, imm12 : Int) -> Unit

#
MachineCode::emit_add_imm32

fn MachineCode::emit_add_imm32(self : MachineCode, rd : Int, rn : Int, imm : Int) -> Unit

#
MachineCode::emit_add_imm32_shifted12

fn MachineCode::emit_add_imm32_shifted12(self : MachineCode, rd : Int, rn : Int, imm12 : Int) -> Unit

#
MachineCode::emit_add_imm_shifted12

fn MachineCode::emit_add_imm_shifted12(self : MachineCode, rd : Int, rn : Int, imm12 : Int) -> Unit

Emit ADD with immediate shifted left by 12 bits

#
MachineCode::emit_add_reg

fn MachineCode::emit_add_reg(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_add_reg32

fn MachineCode::emit_add_reg32(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_add_shifted

fn MachineCode::emit_add_shifted(self : MachineCode, rd : Int, rn : Int, rm : Int, shift :
ShiftType
, amount : Int) -> Unit

#
MachineCode::emit_add_shifted32

fn MachineCode::emit_add_shifted32(self : MachineCode, rd : Int, rn : Int, rm : Int, shift :
ShiftType
, amount : Int) -> Unit

#
MachineCode::emit_add_sxtw

fn MachineCode::emit_add_sxtw(self : MachineCode, rd : Int, rn : Int, rm : Int, shift : Int) -> Unit

#
MachineCode::emit_add_uxtw

fn MachineCode::emit_add_uxtw(self : MachineCode, rd : Int, rn : Int, rm : Int, shift : Int) -> Unit

#
MachineCode::emit_addv_b

fn MachineCode::emit_addv_b(self : MachineCode, rd : Int, rn : Int) -> Unit

ADDV Bd, Vn.8B - sum all bytes into Bd

#
MachineCode::emit_adr

fn MachineCode::emit_adr(self : MachineCode, rd : Int, offset : Int) -> Unit

#
MachineCode::emit_amd64_const_pool

fn MachineCode::emit_amd64_const_pool(self : MachineCode) -> Unit

#
MachineCode::emit_and_imm

fn MachineCode::emit_and_imm(self : MachineCode, rd : Int, rn : Int, imm_bits : Int) -> Unit

#
MachineCode::emit_and_imm32

fn MachineCode::emit_and_imm32(self : MachineCode, rd : Int, rn : Int, imm_bits : Int) -> Unit

#
MachineCode::emit_and_reg

fn MachineCode::emit_and_reg(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_and_reg32

fn MachineCode::emit_and_reg32(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_and_shifted

fn MachineCode::emit_and_shifted(self : MachineCode, rd : Int, rn : Int, rm : Int, shift :
ShiftType
, amount : Int) -> Unit

#
MachineCode::emit_and_shifted32

fn MachineCode::emit_and_shifted32(self : MachineCode, rd : Int, rn : Int, rm : Int, shift :
ShiftType
, amount : Int) -> Unit

#
MachineCode::emit_asr_imm

fn MachineCode::emit_asr_imm(self : MachineCode, rd : Int, rn : Int, shift : Int) -> Unit

#
MachineCode::emit_asr_imm32

fn MachineCode::emit_asr_imm32(self : MachineCode, rd : Int, rn : Int, shift : Int) -> Unit

#
MachineCode::emit_asr_reg

fn MachineCode::emit_asr_reg(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_asr_reg32

fn MachineCode::emit_asr_reg32(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_b

fn MachineCode::emit_b(self : MachineCode, target_block : Int) -> Unit

#
MachineCode::emit_b_cond

fn MachineCode::emit_b_cond(self : MachineCode, cond : Int, target_block : Int) -> Unit

#
MachineCode::emit_bic_reg

fn MachineCode::emit_bic_reg(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_bic_reg32

fn MachineCode::emit_bic_reg32(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_bl

fn MachineCode::emit_bl(self : MachineCode, target_block : Int) -> Unit

#
MachineCode::emit_bl_code

fn MachineCode::emit_bl_code(self : MachineCode, symbol :
CodeSymbol
) -> Unit

Emit a direct BL with a relocation fixup to an embedding-owned code symbol.

#
MachineCode::emit_bl_external

fn MachineCode::emit_bl_external(self : MachineCode, symbol :
ExternalName
) -> Unit

Emit a direct BL with a relocation fixup to an external symbol.

#
MachineCode::emit_bl_target

fn MachineCode::emit_bl_target(self : MachineCode, target :
RelocTarget
) -> Unit

Emit a direct BL with a relocation fixup.

#
MachineCode::emit_blr

fn MachineCode::emit_blr(self : MachineCode, rn : Int) -> Unit

#
MachineCode::emit_br

fn MachineCode::emit_br(self : MachineCode, rn : Int) -> Unit

#
MachineCode::emit_byte

fn MachineCode::emit_byte(self : MachineCode, b : Int) -> Unit

Emit a single byte

#
MachineCode::emit_cbnz

fn MachineCode::emit_cbnz(self : MachineCode, rt : Int, target_block : Int) -> Unit

#
MachineCode::emit_cbnz32

fn MachineCode::emit_cbnz32(self : MachineCode, rt : Int, target_block : Int) -> Unit

#
MachineCode::emit_cbz

fn MachineCode::emit_cbz(self : MachineCode, rt : Int, target_block : Int) -> Unit

#
MachineCode::emit_cbz32

fn MachineCode::emit_cbz32(self : MachineCode, rt : Int, target_block : Int) -> Unit

#
MachineCode::emit_clz

fn MachineCode::emit_clz(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_clz32

fn MachineCode::emit_clz32(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_cmp_imm

fn MachineCode::emit_cmp_imm(self : MachineCode, rn : Int, imm : Int) -> Unit

#
MachineCode::emit_cmp_imm32

fn MachineCode::emit_cmp_imm32(self : MachineCode, rn : Int, imm : Int) -> Unit

#
MachineCode::emit_cmp_reg

fn MachineCode::emit_cmp_reg(self : MachineCode, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_cmp_reg32

fn MachineCode::emit_cmp_reg32(self : MachineCode, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_cnt_8b

fn MachineCode::emit_cnt_8b(self : MachineCode, rd : Int, rn : Int) -> Unit

CNT Vd.8B, Vn.8B - count bits in each byte

#
MachineCode::emit_csel

fn MachineCode::emit_csel(self : MachineCode, rd : Int, rn : Int, rm : Int, cond : Int) -> Unit

#
MachineCode::emit_cset

fn MachineCode::emit_cset(self : MachineCode, rd : Int, cond : Int) -> Unit

#
MachineCode::emit_dmb_ish

fn MachineCode::emit_dmb_ish(self : MachineCode) -> Unit

#
MachineCode::emit_eon_reg

fn MachineCode::emit_eon_reg(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_eon_reg32

fn MachineCode::emit_eon_reg32(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_eor_imm

fn MachineCode::emit_eor_imm(self : MachineCode, rd : Int, rn : Int, imm_bits : Int) -> Unit

#
MachineCode::emit_eor_imm32

fn MachineCode::emit_eor_imm32(self : MachineCode, rd : Int, rn : Int, imm_bits : Int) -> Unit

#
MachineCode::emit_eor_reg

fn MachineCode::emit_eor_reg(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_eor_reg32

fn MachineCode::emit_eor_reg32(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_eor_shifted

fn MachineCode::emit_eor_shifted(self : MachineCode, rd : Int, rn : Int, rm : Int, shift :
ShiftType
, amount : Int) -> Unit

#
MachineCode::emit_eor_shifted32

fn MachineCode::emit_eor_shifted32(self : MachineCode, rd : Int, rn : Int, rm : Int, shift :
ShiftType
, amount : Int) -> Unit

#
MachineCode::emit_ext_16b

fn MachineCode::emit_ext_16b(self : MachineCode, rd : Int, rn : Int, rm : Int, imm : Int) -> Unit

EXT Vd.16B, Vn.16B, Vm.16B, #imm Extract and concatenate bytes from two vectors imm is the byte offset (0-15)

#
MachineCode::emit_extr_imm

fn MachineCode::emit_extr_imm(self : MachineCode, rd : Int, rn : Int, rm : Int, shift : Int) -> Unit

#
MachineCode::emit_extr_imm32

fn MachineCode::emit_extr_imm32(self : MachineCode, rd : Int, rn : Int, rm : Int, shift : Int) -> Unit

#
MachineCode::emit_fabs_d

fn MachineCode::emit_fabs_d(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_fabs_s

fn MachineCode::emit_fabs_s(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_fadd_d

fn MachineCode::emit_fadd_d(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_fadd_s

fn MachineCode::emit_fadd_s(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_fcmp_d

fn MachineCode::emit_fcmp_d(self : MachineCode, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_fcmp_s

fn MachineCode::emit_fcmp_s(self : MachineCode, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_fcsel_d

fn MachineCode::emit_fcsel_d(self : MachineCode, rd : Int, rn : Int, rm : Int, cond : Int) -> Unit

#
MachineCode::emit_fcsel_s

fn MachineCode::emit_fcsel_s(self : MachineCode, rd : Int, rn : Int, rm : Int, cond : Int) -> Unit

#
MachineCode::emit_fcvt_d_s

fn MachineCode::emit_fcvt_d_s(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_fcvt_s_d

fn MachineCode::emit_fcvt_s_d(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_fcvtzs

fn MachineCode::emit_fcvtzs(self : MachineCode, rd : Int, rn : Int, int64~ : Bool, double~ : Bool) -> Unit

#
MachineCode::emit_fcvtzu

fn MachineCode::emit_fcvtzu(self : MachineCode, rd : Int, rn : Int, int64~ : Bool, double~ : Bool) -> Unit

#
MachineCode::emit_fdiv_d

fn MachineCode::emit_fdiv_d(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_fdiv_s

fn MachineCode::emit_fdiv_s(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_fmax_d

fn MachineCode::emit_fmax_d(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_fmax_s

fn MachineCode::emit_fmax_s(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_fmaxnm_d

fn MachineCode::emit_fmaxnm_d(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_fmaxnm_s

fn MachineCode::emit_fmaxnm_s(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_fmin_d

fn MachineCode::emit_fmin_d(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_fmin_s

fn MachineCode::emit_fmin_s(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_fminnm_d

fn MachineCode::emit_fminnm_d(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_fminnm_s

fn MachineCode::emit_fminnm_s(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_fmov_d

fn MachineCode::emit_fmov_d(self : MachineCode, rd : Int, rm : Int) -> Unit

#
MachineCode::emit_fmov_d_to_x

fn MachineCode::emit_fmov_d_to_x(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_fmov_s

fn MachineCode::emit_fmov_s(self : MachineCode, rd : Int, rm : Int) -> Unit

#
MachineCode::emit_fmov_s_to_w

fn MachineCode::emit_fmov_s_to_w(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_fmov_w_to_s

fn MachineCode::emit_fmov_w_to_s(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_fmov_x_to_d

fn MachineCode::emit_fmov_x_to_d(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_fmul_d

fn MachineCode::emit_fmul_d(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_fmul_s

fn MachineCode::emit_fmul_s(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_fneg_d

fn MachineCode::emit_fneg_d(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_fneg_s

fn MachineCode::emit_fneg_s(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_frintm_d

fn MachineCode::emit_frintm_d(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_frintm_s

fn MachineCode::emit_frintm_s(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_frintn_d

fn MachineCode::emit_frintn_d(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_frintn_s

fn MachineCode::emit_frintn_s(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_frintp_d

fn MachineCode::emit_frintp_d(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_frintp_s

fn MachineCode::emit_frintp_s(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_frintz_d

fn MachineCode::emit_frintz_d(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_frintz_s

fn MachineCode::emit_frintz_s(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_fsqrt_d

fn MachineCode::emit_fsqrt_d(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_fsqrt_s

fn MachineCode::emit_fsqrt_s(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_fsub_d

fn MachineCode::emit_fsub_d(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_fsub_s

fn MachineCode::emit_fsub_s(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_inst

fn MachineCode::emit_inst(self : MachineCode, b0 : Int, b1 : Int, b2 : Int, b3 : Int) -> Unit

Emit 4 bytes (instruction) as 4 separate bytes

#
MachineCode::emit_ldp_d_offset

fn MachineCode::emit_ldp_d_offset(self : MachineCode, rt1 : Int, rt2 : Int, rn : Int, offset : Int) -> Unit

Emit LDP for FPR pairs (64-bit D registers) with signed offset

#
MachineCode::emit_ldp_d_post

fn MachineCode::emit_ldp_d_post(self : MachineCode, rt1 : Int, rt2 : Int, rn : Int, imm : Int) -> Unit

Emit LDP for FPR pairs with post-indexed addressing: LDP Dt1, Dt2, [Xn], #imm

#
MachineCode::emit_ldp_offset

fn MachineCode::emit_ldp_offset(self : MachineCode, rt1 : Int, rt2 : Int, rn : Int, offset : Int) -> Unit

Emit LDP with signed offset (not pre/post indexed)

#
MachineCode::emit_ldp_post

fn MachineCode::emit_ldp_post(self : MachineCode, rt1 : Int, rt2 : Int, rn : Int, imm : Int) -> Unit

#
MachineCode::emit_ldr_d_imm

fn MachineCode::emit_ldr_d_imm(self : MachineCode, rt : Int, rn : Int, imm12 : Int) -> Unit

#
MachineCode::emit_ldr_d_post

fn MachineCode::emit_ldr_d_post(self : MachineCode, rt : Int, rn : Int, simm9 : Int) -> Unit

Emit LDR for FPR with post-indexed addressing: LDR Dt, [Xn], #simm9

#
MachineCode::emit_ldr_imm

fn MachineCode::emit_ldr_imm(self : MachineCode, rt : Int, rn : Int, imm12 : Int) -> Unit

#
MachineCode::emit_ldr_imm_signed

fn MachineCode::emit_ldr_imm_signed(self : MachineCode, rt : Int, rn : Int, simm9 : Int) -> Unit

#
MachineCode::emit_ldr_post

fn MachineCode::emit_ldr_post(self : MachineCode, rt : Int, rn : Int, simm9 : Int) -> Unit

Emit LDR with post-indexed addressing: LDR Xt, [Xn], #simm9

#
MachineCode::emit_ldr_q_imm

fn MachineCode::emit_ldr_q_imm(self : MachineCode, rt : Int, rn : Int, imm : Int) -> Unit

LDR Qt, [Xn, #imm] (128-bit Q-register load)

#
MachineCode::emit_ldr_reg_offset

fn MachineCode::emit_ldr_reg_offset(self : MachineCode, rt : Int, rn : Int, rm : Int, option : Int, size_bits : Int, shift : Int) -> Unit

#
MachineCode::emit_ldr_reg_scaled

fn MachineCode::emit_ldr_reg_scaled(self : MachineCode, rt : Int, rn : Int, rm : Int, shift : Int) -> Unit

#
MachineCode::emit_ldr_s_imm

fn MachineCode::emit_ldr_s_imm(self : MachineCode, rt : Int, rn : Int, imm12 : Int) -> Unit

#
MachineCode::emit_ldr_w_imm

fn MachineCode::emit_ldr_w_imm(self : MachineCode, rt : Int, rn : Int, imm12 : Int) -> Unit

#
MachineCode::emit_ldr_w_reg_scaled

fn MachineCode::emit_ldr_w_reg_scaled(self : MachineCode, rt : Int, rn : Int, rm : Int, shift : Int) -> Unit

#
MachineCode::emit_ldrb_imm

fn MachineCode::emit_ldrb_imm(self : MachineCode, rt : Int, rn : Int, imm12 : Int) -> Unit

#
MachineCode::emit_ldrb_reg

fn MachineCode::emit_ldrb_reg(self : MachineCode, rt : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_ldrh_imm

fn MachineCode::emit_ldrh_imm(self : MachineCode, rt : Int, rn : Int, imm12 : Int) -> Unit

#
MachineCode::emit_ldrh_reg

fn MachineCode::emit_ldrh_reg(self : MachineCode, rt : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_ldrsb_w_imm

fn MachineCode::emit_ldrsb_w_imm(self : MachineCode, rt : Int, rn : Int, imm12 : Int) -> Unit

#
MachineCode::emit_ldrsb_x_imm

fn MachineCode::emit_ldrsb_x_imm(self : MachineCode, rt : Int, rn : Int, imm12 : Int) -> Unit

#
MachineCode::emit_ldrsh_w_imm

fn MachineCode::emit_ldrsh_w_imm(self : MachineCode, rt : Int, rn : Int, imm12 : Int) -> Unit

#
MachineCode::emit_ldrsh_x_imm

fn MachineCode::emit_ldrsh_x_imm(self : MachineCode, rt : Int, rn : Int, imm12 : Int) -> Unit

#
MachineCode::emit_ldrsw_imm

fn MachineCode::emit_ldrsw_imm(self : MachineCode, rt : Int, rn : Int, imm12 : Int) -> Unit

#
MachineCode::emit_load_imm64

fn MachineCode::emit_load_imm64(self : MachineCode, rd : Int, imm : Int64) -> Unit

#
MachineCode::emit_load_imm64_fixed

fn MachineCode::emit_load_imm64_fixed(self : MachineCode, rd : Int, imm : Int64) -> Unit

Load 64-bit immediate with fixed 4 instructions (MOVZ + 3 MOVKs or NOPs). Use this when you need a predictable instruction count for branch offset calculations.

#
MachineCode::emit_lsl_imm

fn MachineCode::emit_lsl_imm(self : MachineCode, rd : Int, rn : Int, shift : Int) -> Unit

#
MachineCode::emit_lsl_imm32

fn MachineCode::emit_lsl_imm32(self : MachineCode, rd : Int, rn : Int, shift : Int) -> Unit

#
MachineCode::emit_lsl_reg

fn MachineCode::emit_lsl_reg(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_lsl_reg32

fn MachineCode::emit_lsl_reg32(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_lsr_imm

fn MachineCode::emit_lsr_imm(self : MachineCode, rd : Int, rn : Int, shift : Int) -> Unit

#
MachineCode::emit_lsr_imm32

fn MachineCode::emit_lsr_imm32(self : MachineCode, rd : Int, rn : Int, shift : Int) -> Unit

#
MachineCode::emit_lsr_reg

fn MachineCode::emit_lsr_reg(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_lsr_reg32

fn MachineCode::emit_lsr_reg32(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_madd

fn MachineCode::emit_madd(self : MachineCode, rd : Int, rn : Int, rm : Int, ra : Int) -> Unit

#
MachineCode::emit_madd32

fn MachineCode::emit_madd32(self : MachineCode, rd : Int, rn : Int, rm : Int, ra : Int) -> Unit

#
MachineCode::emit_mneg

fn MachineCode::emit_mneg(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_mneg32

fn MachineCode::emit_mneg32(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_mov_reg

fn MachineCode::emit_mov_reg(self : MachineCode, rd : Int, rm : Int) -> Unit

#
MachineCode::emit_mov_reg32

fn MachineCode::emit_mov_reg32(self : MachineCode, rd : Int, rm : Int) -> Unit

#
MachineCode::emit_movk

fn MachineCode::emit_movk(self : MachineCode, rd : Int, imm16 : Int, shift : Int) -> Unit

#
MachineCode::emit_movz

fn MachineCode::emit_movz(self : MachineCode, rd : Int, imm16 : Int, shift : Int) -> Unit

#
MachineCode::emit_msub

fn MachineCode::emit_msub(self : MachineCode, rd : Int, rn : Int, rm : Int, ra : Int) -> Unit

#
MachineCode::emit_msub32

fn MachineCode::emit_msub32(self : MachineCode, rd : Int, rn : Int, rm : Int, ra : Int) -> Unit

#
MachineCode::emit_mul

fn MachineCode::emit_mul(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_mul32

fn MachineCode::emit_mul32(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_mvn

fn MachineCode::emit_mvn(self : MachineCode, rd : Int, rm : Int) -> Unit

#
MachineCode::emit_mvn32

fn MachineCode::emit_mvn32(self : MachineCode, rd : Int, rm : Int) -> Unit

#
MachineCode::emit_nop

fn MachineCode::emit_nop(self : MachineCode) -> Unit

#
MachineCode::emit_orn_reg

fn MachineCode::emit_orn_reg(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_orn_reg32

fn MachineCode::emit_orn_reg32(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_orr_imm

fn MachineCode::emit_orr_imm(self : MachineCode, rd : Int, rn : Int, imm_bits : Int) -> Unit

#
MachineCode::emit_orr_imm32

fn MachineCode::emit_orr_imm32(self : MachineCode, rd : Int, rn : Int, imm_bits : Int) -> Unit

#
MachineCode::emit_orr_reg

fn MachineCode::emit_orr_reg(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_orr_reg32

fn MachineCode::emit_orr_reg32(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_orr_shifted

fn MachineCode::emit_orr_shifted(self : MachineCode, rd : Int, rn : Int, rm : Int, shift :
ShiftType
, amount : Int) -> Unit

#
MachineCode::emit_orr_shifted32

fn MachineCode::emit_orr_shifted32(self : MachineCode, rd : Int, rn : Int, rm : Int, shift :
ShiftType
, amount : Int) -> Unit

#
MachineCode::emit_rbit

fn MachineCode::emit_rbit(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_rbit32

fn MachineCode::emit_rbit32(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_ret

fn MachineCode::emit_ret(self : MachineCode, rn : Int) -> Unit

#
MachineCode::emit_ror_imm

fn MachineCode::emit_ror_imm(self : MachineCode, rd : Int, rn : Int, shift : Int) -> Unit

#
MachineCode::emit_ror_imm32

fn MachineCode::emit_ror_imm32(self : MachineCode, rd : Int, rn : Int, shift : Int) -> Unit

#
MachineCode::emit_ror_reg

fn MachineCode::emit_ror_reg(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_ror_reg32

fn MachineCode::emit_ror_reg32(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_scvtf

fn MachineCode::emit_scvtf(self : MachineCode, rd : Int, rn : Int, int64~ : Bool, double~ : Bool) -> Unit

#
MachineCode::emit_sdiv

fn MachineCode::emit_sdiv(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_sdiv32

fn MachineCode::emit_sdiv32(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_smulh

fn MachineCode::emit_smulh(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

SMULH Xd, Xn, Xm - Signed multiply high (64-bit)

#
MachineCode::emit_smull

fn MachineCode::emit_smull(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

SMULL Xd, Wn, Wm - Signed 32x32->64 multiply

#
MachineCode::emit_stp_d_offset

fn MachineCode::emit_stp_d_offset(self : MachineCode, rt1 : Int, rt2 : Int, rn : Int, offset : Int) -> Unit

Emit STP for FPR pairs (64-bit D registers) with signed offset

#
MachineCode::emit_stp_d_pre

fn MachineCode::emit_stp_d_pre(self : MachineCode, rt1 : Int, rt2 : Int, rn : Int, imm : Int) -> Unit

Emit STP for FPR pairs with pre-indexed addressing: STP Dt1, Dt2, [Xn, #imm]!

#
MachineCode::emit_stp_offset

fn MachineCode::emit_stp_offset(self : MachineCode, rt1 : Int, rt2 : Int, rn : Int, offset : Int) -> Unit

Emit STP with signed offset (not pre/post indexed)

#
MachineCode::emit_stp_pre

fn MachineCode::emit_stp_pre(self : MachineCode, rt1 : Int, rt2 : Int, rn : Int, imm : Int) -> Unit

#
MachineCode::emit_str_d_imm

fn MachineCode::emit_str_d_imm(self : MachineCode, rt : Int, rn : Int, imm12 : Int) -> Unit

#
MachineCode::emit_str_d_pre

fn MachineCode::emit_str_d_pre(self : MachineCode, rt : Int, rn : Int, simm9 : Int) -> Unit

Emit STR for FPR with pre-indexed addressing: STR Dt, [Xn, #simm9]!

#
MachineCode::emit_str_imm

fn MachineCode::emit_str_imm(self : MachineCode, rt : Int, rn : Int, imm12 : Int) -> Unit

#
MachineCode::emit_str_pre

fn MachineCode::emit_str_pre(self : MachineCode, rt : Int, rn : Int, simm9 : Int) -> Unit

Emit STR with pre-indexed addressing: STR Xt, [Xn, #simm9]!

#
MachineCode::emit_str_q_imm

fn MachineCode::emit_str_q_imm(self : MachineCode, rt : Int, rn : Int, imm : Int) -> Unit

STR Qt, [Xn, #imm] (128-bit Q-register store)

#
MachineCode::emit_str_reg_offset

fn MachineCode::emit_str_reg_offset(self : MachineCode, rt : Int, rn : Int, rm : Int, option : Int, size_bits : Int, shift : Int) -> Unit

#
MachineCode::emit_str_reg_scaled

fn MachineCode::emit_str_reg_scaled(self : MachineCode, rt : Int, rn : Int, rm : Int, shift : Int) -> Unit

#
MachineCode::emit_str_s_imm

fn MachineCode::emit_str_s_imm(self : MachineCode, rt : Int, rn : Int, imm12 : Int) -> Unit

#
MachineCode::emit_str_w_imm

fn MachineCode::emit_str_w_imm(self : MachineCode, rt : Int, rn : Int, imm12 : Int) -> Unit

#
MachineCode::emit_str_w_reg_scaled

fn MachineCode::emit_str_w_reg_scaled(self : MachineCode, rt : Int, rn : Int, rm : Int, shift : Int) -> Unit

#
MachineCode::emit_strb_imm

fn MachineCode::emit_strb_imm(self : MachineCode, rt : Int, rn : Int, imm12 : Int) -> Unit

#
MachineCode::emit_strb_reg

fn MachineCode::emit_strb_reg(self : MachineCode, rt : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_strh_imm

fn MachineCode::emit_strh_imm(self : MachineCode, rt : Int, rn : Int, imm12 : Int) -> Unit

#
MachineCode::emit_strh_reg

fn MachineCode::emit_strh_reg(self : MachineCode, rt : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_sub_imm

fn MachineCode::emit_sub_imm(self : MachineCode, rd : Int, rn : Int, imm12 : Int) -> Unit

#
MachineCode::emit_sub_imm32

fn MachineCode::emit_sub_imm32(self : MachineCode, rd : Int, rn : Int, imm : Int) -> Unit

#
MachineCode::emit_sub_imm32_shifted12

fn MachineCode::emit_sub_imm32_shifted12(self : MachineCode, rd : Int, rn : Int, imm12 : Int) -> Unit

#
MachineCode::emit_sub_imm_shifted12

fn MachineCode::emit_sub_imm_shifted12(self : MachineCode, rd : Int, rn : Int, imm12 : Int) -> Unit

#
MachineCode::emit_sub_reg

fn MachineCode::emit_sub_reg(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_sub_reg32

fn MachineCode::emit_sub_reg32(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_sub_shifted

fn MachineCode::emit_sub_shifted(self : MachineCode, rd : Int, rn : Int, rm : Int, shift :
ShiftType
, amount : Int) -> Unit

#
MachineCode::emit_sub_shifted32

fn MachineCode::emit_sub_shifted32(self : MachineCode, rd : Int, rn : Int, rm : Int, shift :
ShiftType
, amount : Int) -> Unit

#
MachineCode::emit_sub_sxtw

fn MachineCode::emit_sub_sxtw(self : MachineCode, rd : Int, rn : Int, rm : Int, shift : Int) -> Unit

#
MachineCode::emit_sub_uxtw

fn MachineCode::emit_sub_uxtw(self : MachineCode, rd : Int, rn : Int, rm : Int, shift : Int) -> Unit

#
MachineCode::emit_sxtb_w

fn MachineCode::emit_sxtb_w(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_sxtb_x

fn MachineCode::emit_sxtb_x(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_sxth_w

fn MachineCode::emit_sxth_w(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_sxth_x

fn MachineCode::emit_sxth_x(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_sxtw

fn MachineCode::emit_sxtw(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_ucvtf

fn MachineCode::emit_ucvtf(self : MachineCode, rd : Int, rn : Int, int64~ : Bool, double~ : Bool) -> Unit

#
MachineCode::emit_udiv

fn MachineCode::emit_udiv(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_udiv32

fn MachineCode::emit_udiv32(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

#
MachineCode::emit_umulh

fn MachineCode::emit_umulh(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

UMULH Xd, Xn, Xm - Unsigned multiply high (64-bit)

#
MachineCode::emit_umull

fn MachineCode::emit_umull(self : MachineCode, rd : Int, rn : Int, rm : Int) -> Unit

UMULL Xd, Wn, Wm - Unsigned 32x32->64 multiply

#
MachineCode::emit_uxtb_w

fn MachineCode::emit_uxtb_w(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_uxtb_x

fn MachineCode::emit_uxtb_x(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_uxth_w

fn MachineCode::emit_uxth_w(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::emit_uxth_x

fn MachineCode::emit_uxth_x(self : MachineCode, rd : Int, rn : Int) -> Unit

#
MachineCode::get_bytes

fn MachineCode::get_bytes(self : MachineCode) -> Array[Int]

Get the generated bytes

#
MachineCode::get_call_fixups

fn MachineCode::get_call_fixups(self : MachineCode) -> Array[CallFixup]

Get direct function call fixups

#
MachineCode::get_func_addr_fixups

fn MachineCode::get_func_addr_fixups(self : MachineCode) -> Array[FuncAddrFixup]

Get direct function address fixups

#
MachineCode::get_gc_safepoint_offsets

fn MachineCode::get_gc_safepoint_offsets(self : MachineCode) -> Array[Int]

Get recorded GC safepoint offsets.

#
MachineCode::get_gc_safepoint_root_counts

fn MachineCode::get_gc_safepoint_root_counts(self : MachineCode) -> Array[Int]

Get recorded GC safepoint root counts.

#
MachineCode::get_gc_safepoint_root_indices

fn MachineCode::get_gc_safepoint_root_indices(self : MachineCode) -> Array[Array[Int]]

Get recorded GC safepoint root indices.

#
MachineCode::hex_dump

fn MachineCode::hex_dump(self : MachineCode) -> String

Print machine code as hex dump

#
MachineCode::intern_amd64_const

fn MachineCode::intern_amd64_const(self : MachineCode, data : Bytes, align : Int) -> Int

#
MachineCode::intern_amd64_const_f32

fn MachineCode::intern_amd64_const_f32(self : MachineCode, bits : Int) -> Int

#
MachineCode::intern_amd64_const_f64

fn MachineCode::intern_amd64_const_f64(self : MachineCode, bits : Int64) -> Int

#
MachineCode::new_internal_label

fn MachineCode::new_internal_label(self : MachineCode) -> Int

#
MachineCode::record_gc_safepoint

fn MachineCode::record_gc_safepoint(self : MachineCode, offset : Int, root_count? : Int, root_indices? : Array[Int]) -> Int

Record a GC safepoint at current code offset.

#
MachineCode::resolve_fixups

fn MachineCode::resolve_fixups(self : MachineCode) -> Unit

Resolve all pending fixups

#
MachineCode::set_debug_prev_func_idx_spill_offset

fn MachineCode::set_debug_prev_func_idx_spill_offset(self : MachineCode, offset : Int) -> Unit

#
MachineCode::size

fn MachineCode::size(self : MachineCode) -> Int

Get size in bytes

#
MachineCode::x86_emit_add_r32_imm32

fn MachineCode::x86_emit_add_r32_imm32(self : MachineCode, dst : Int, imm : Int) -> Unit

#
MachineCode::x86_emit_add_r32_imm8

fn MachineCode::x86_emit_add_r32_imm8(self : MachineCode, dst : Int, imm : Int) -> Unit

#
MachineCode::x86_emit_add_r_imm32

fn MachineCode::x86_emit_add_r_imm32(self : MachineCode, dst : Int, imm : Int) -> Unit

#
MachineCode::x86_emit_add_r_imm8

fn MachineCode::x86_emit_add_r_imm8(self : MachineCode, dst : Int, imm : Int) -> Unit

#
MachineCode::x86_emit_add_rr

fn MachineCode::x86_emit_add_rr(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_add_rr32

fn MachineCode::x86_emit_add_rr32(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_add_rsp_imm32

fn MachineCode::x86_emit_add_rsp_imm32(self : MachineCode, imm : Int) -> Unit

#
MachineCode::x86_emit_addpd_xmm_xmm

fn MachineCode::x86_emit_addpd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_addps_xmm_xmm

fn MachineCode::x86_emit_addps_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_addsd_xmm_xmm

fn MachineCode::x86_emit_addsd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_addss_xmm_xmm

fn MachineCode::x86_emit_addss_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_and_r_imm8_sxb64

fn MachineCode::x86_emit_and_r_imm8_sxb64(self : MachineCode, reg : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_and_rr

fn MachineCode::x86_emit_and_rr(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_and_rr32

fn MachineCode::x86_emit_and_rr32(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_andpd_xmm_xmm

fn MachineCode::x86_emit_andpd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_andps_xmm_xmm

fn MachineCode::x86_emit_andps_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_bsr_r32_r32

fn MachineCode::x86_emit_bsr_r32_r32(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_bsr_r64_r64

fn MachineCode::x86_emit_bsr_r64_r64(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_call_r64

fn MachineCode::x86_emit_call_r64(self : MachineCode, reg : Int) -> Unit

#
MachineCode::x86_emit_cdq

fn MachineCode::x86_emit_cdq(self : MachineCode) -> Unit

#
MachineCode::x86_emit_cmovcc_rr

fn MachineCode::x86_emit_cmovcc_rr(self : MachineCode, cond :
Cond
, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_cmovcc_rr32

fn MachineCode::x86_emit_cmovcc_rr32(self : MachineCode, cond :
Cond
, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_cmp_r32_imm32

fn MachineCode::x86_emit_cmp_r32_imm32(self : MachineCode, reg : Int, imm : Int) -> Unit

#
MachineCode::x86_emit_cmp_r_imm32

fn MachineCode::x86_emit_cmp_r_imm32(self : MachineCode, reg : Int, imm : Int) -> Unit

#
MachineCode::x86_emit_cmp_rr

fn MachineCode::x86_emit_cmp_rr(self : MachineCode, lhs : Int, rhs : Int) -> Unit

#
MachineCode::x86_emit_cmp_rr32

fn MachineCode::x86_emit_cmp_rr32(self : MachineCode, lhs : Int, rhs : Int) -> Unit

#
MachineCode::x86_emit_cmppd_xmm_xmm_imm8

fn MachineCode::x86_emit_cmppd_xmm_xmm_imm8(self : MachineCode, dst_xmm : Int, src_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_cmpps_xmm_xmm_imm8

fn MachineCode::x86_emit_cmpps_xmm_xmm_imm8(self : MachineCode, dst_xmm : Int, src_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_cqo

fn MachineCode::x86_emit_cqo(self : MachineCode) -> Unit

#
MachineCode::x86_emit_cvtdq2pd_xmm_xmm

fn MachineCode::x86_emit_cvtdq2pd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_cvtdq2ps_xmm_xmm

fn MachineCode::x86_emit_cvtdq2ps_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_cvtpd2ps_xmm_xmm

fn MachineCode::x86_emit_cvtpd2ps_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_cvtps2pd_xmm_xmm

fn MachineCode::x86_emit_cvtps2pd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_cvtsd2ss_xmm_xmm

fn MachineCode::x86_emit_cvtsd2ss_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_cvtsi2sd_xmm_r32

fn MachineCode::x86_emit_cvtsi2sd_xmm_r32(self : MachineCode, dst_xmm : Int, src : Int) -> Unit

#
MachineCode::x86_emit_cvtsi2sd_xmm_r64

fn MachineCode::x86_emit_cvtsi2sd_xmm_r64(self : MachineCode, dst_xmm : Int, src : Int) -> Unit

#
MachineCode::x86_emit_cvtsi2ss_xmm_r32

fn MachineCode::x86_emit_cvtsi2ss_xmm_r32(self : MachineCode, dst_xmm : Int, src : Int) -> Unit

#
MachineCode::x86_emit_cvtsi2ss_xmm_r64

fn MachineCode::x86_emit_cvtsi2ss_xmm_r64(self : MachineCode, dst_xmm : Int, src : Int) -> Unit

#
MachineCode::x86_emit_cvtss2sd_xmm_xmm

fn MachineCode::x86_emit_cvtss2sd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_cvttpd2dq_xmm_xmm

fn MachineCode::x86_emit_cvttpd2dq_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_cvttps2dq_xmm_xmm

fn MachineCode::x86_emit_cvttps2dq_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_cvttsd2si_r32_xmm

fn MachineCode::x86_emit_cvttsd2si_r32_xmm(self : MachineCode, dst : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_cvttsd2si_r64_xmm

fn MachineCode::x86_emit_cvttsd2si_r64_xmm(self : MachineCode, dst : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_cvttss2si_r32_xmm

fn MachineCode::x86_emit_cvttss2si_r32_xmm(self : MachineCode, dst : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_cvttss2si_r64_xmm

fn MachineCode::x86_emit_cvttss2si_r64_xmm(self : MachineCode, dst : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_div_r32

fn MachineCode::x86_emit_div_r32(self : MachineCode, divisor : Int) -> Unit

#
MachineCode::x86_emit_div_r64

fn MachineCode::x86_emit_div_r64(self : MachineCode, divisor : Int) -> Unit

#
MachineCode::x86_emit_divpd_xmm_xmm

fn MachineCode::x86_emit_divpd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_divps_xmm_xmm

fn MachineCode::x86_emit_divps_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_divsd_xmm_xmm

fn MachineCode::x86_emit_divsd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_divss_xmm_xmm

fn MachineCode::x86_emit_divss_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_idiv_r32

fn MachineCode::x86_emit_idiv_r32(self : MachineCode, divisor : Int) -> Unit

#
MachineCode::x86_emit_idiv_r64

fn MachineCode::x86_emit_idiv_r64(self : MachineCode, divisor : Int) -> Unit

#
MachineCode::x86_emit_imul1_r64

fn MachineCode::x86_emit_imul1_r64(self : MachineCode, src : Int) -> Unit

#
MachineCode::x86_emit_imul_rr

fn MachineCode::x86_emit_imul_rr(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_imul_rr32

fn MachineCode::x86_emit_imul_rr32(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_insertps_xmm_xmm_imm8

fn MachineCode::x86_emit_insertps_xmm_xmm_imm8(self : MachineCode, dst_xmm : Int, src_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_jcc_rel32

fn MachineCode::x86_emit_jcc_rel32(self : MachineCode, cond :
Cond
, target_block : Int) -> Unit

#
MachineCode::x86_emit_jmp_r64

fn MachineCode::x86_emit_jmp_r64(self : MachineCode, reg : Int) -> Unit

#
MachineCode::x86_emit_jmp_rel32

fn MachineCode::x86_emit_jmp_rel32(self : MachineCode, target_block : Int) -> Unit

#
MachineCode::x86_emit_lea_r32_base_index_scale_disp

fn MachineCode::x86_emit_lea_r32_base_index_scale_disp(self : MachineCode, dst : Int, base : Int, index : Int, scale : Int, disp : Int) -> Unit

#
MachineCode::x86_emit_lea_r64_base_index_scale_disp

fn MachineCode::x86_emit_lea_r64_base_index_scale_disp(self : MachineCode, dst : Int, base : Int, index : Int, scale : Int, disp : Int) -> Unit

#
MachineCode::x86_emit_lea_r64_riprel32

fn MachineCode::x86_emit_lea_r64_riprel32(self : MachineCode, dst : Int, target_label : Int) -> Unit

#
MachineCode::x86_emit_maxpd_xmm_xmm

fn MachineCode::x86_emit_maxpd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_maxps_xmm_xmm

fn MachineCode::x86_emit_maxps_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_maxsd_xmm_xmm

fn MachineCode::x86_emit_maxsd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_maxss_xmm_xmm

fn MachineCode::x86_emit_maxss_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_minpd_xmm_xmm

fn MachineCode::x86_emit_minpd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_minps_xmm_xmm

fn MachineCode::x86_emit_minps_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_minsd_xmm_xmm

fn MachineCode::x86_emit_minsd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_minss_xmm_xmm

fn MachineCode::x86_emit_minss_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_mov_imm64

fn MachineCode::x86_emit_mov_imm64(self : MachineCode, dst : Int, imm : Int64) -> Unit

#
MachineCode::x86_emit_mov_m16_r16

fn MachineCode::x86_emit_mov_m16_r16(self : MachineCode, base : Int, disp : Int, src : Int) -> Unit

#
MachineCode::x86_emit_mov_m16_r16_base_index_scale_disp

fn MachineCode::x86_emit_mov_m16_r16_base_index_scale_disp(self : MachineCode, base : Int, index : Int, scale : Int, disp : Int, src : Int) -> Unit

#
MachineCode::x86_emit_mov_m32_r32

fn MachineCode::x86_emit_mov_m32_r32(self : MachineCode, base : Int, disp : Int, src : Int) -> Unit

#
MachineCode::x86_emit_mov_m32_r32_base_index_scale_disp

fn MachineCode::x86_emit_mov_m32_r32_base_index_scale_disp(self : MachineCode, base : Int, index : Int, scale : Int, disp : Int, src : Int) -> Unit

#
MachineCode::x86_emit_mov_m64_r64

fn MachineCode::x86_emit_mov_m64_r64(self : MachineCode, base : Int, disp : Int, src : Int) -> Unit

#
MachineCode::x86_emit_mov_m64_r64_base_index_scale_disp

fn MachineCode::x86_emit_mov_m64_r64_base_index_scale_disp(self : MachineCode, base : Int, index : Int, scale : Int, disp : Int, src : Int) -> Unit

#
MachineCode::x86_emit_mov_m8_r8

fn MachineCode::x86_emit_mov_m8_r8(self : MachineCode, base : Int, disp : Int, src : Int) -> Unit

#
MachineCode::x86_emit_mov_m8_r8_base_index_scale_disp

fn MachineCode::x86_emit_mov_m8_r8_base_index_scale_disp(self : MachineCode, base : Int, index : Int, scale : Int, disp : Int, src : Int) -> Unit

#
MachineCode::x86_emit_mov_r32_m32

fn MachineCode::x86_emit_mov_r32_m32(self : MachineCode, dst : Int, base : Int, disp : Int) -> Unit

#
MachineCode::x86_emit_mov_r32_m32_base_index_scale_disp

fn MachineCode::x86_emit_mov_r32_m32_base_index_scale_disp(self : MachineCode, dst : Int, base : Int, index : Int, scale : Int, disp : Int) -> Unit

#
MachineCode::x86_emit_mov_r64_m64

fn MachineCode::x86_emit_mov_r64_m64(self : MachineCode, dst : Int, base : Int, disp : Int) -> Unit

#
MachineCode::x86_emit_mov_r64_m64_base_index_scale_disp

fn MachineCode::x86_emit_mov_r64_m64_base_index_scale_disp(self : MachineCode, dst : Int, base : Int, index : Int, scale : Int, disp : Int) -> Unit

#
MachineCode::x86_emit_mov_rr

fn MachineCode::x86_emit_mov_rr(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_mov_rr32

fn MachineCode::x86_emit_mov_rr32(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_movaps_xmm_xmm

fn MachineCode::x86_emit_movaps_xmm_xmm(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_movd_r32_xmm

fn MachineCode::x86_emit_movd_r32_xmm(self : MachineCode, dst : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_movd_xmm_r32

fn MachineCode::x86_emit_movd_xmm_r32(self : MachineCode, dst_xmm : Int, src : Int) -> Unit

#
MachineCode::x86_emit_movdqu_m128_xmm

fn MachineCode::x86_emit_movdqu_m128_xmm(self : MachineCode, base : Int, disp : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_movdqu_m128_xmm_base_index_scale_disp

fn MachineCode::x86_emit_movdqu_m128_xmm_base_index_scale_disp(self : MachineCode, base : Int, index : Int, scale : Int, disp : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_movdqu_xmm_m128

fn MachineCode::x86_emit_movdqu_xmm_m128(self : MachineCode, dst_xmm : Int, base : Int, disp : Int) -> Unit

#
MachineCode::x86_emit_movdqu_xmm_m128_base_index_scale_disp

fn MachineCode::x86_emit_movdqu_xmm_m128_base_index_scale_disp(self : MachineCode, dst_xmm : Int, base : Int, index : Int, scale : Int, disp : Int) -> Unit

#
MachineCode::x86_emit_movlhps_xmm_xmm

fn MachineCode::x86_emit_movlhps_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_movmskpd_r32_xmm

fn MachineCode::x86_emit_movmskpd_r32_xmm(self : MachineCode, dst : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_movmskps_r32_xmm

fn MachineCode::x86_emit_movmskps_r32_xmm(self : MachineCode, dst : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_movq_r64_xmm

fn MachineCode::x86_emit_movq_r64_xmm(self : MachineCode, dst : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_movq_xmm_r64

fn MachineCode::x86_emit_movq_xmm_r64(self : MachineCode, dst_xmm : Int, src : Int) -> Unit

#
MachineCode::x86_emit_movsd_m64_xmm

fn MachineCode::x86_emit_movsd_m64_xmm(self : MachineCode, base : Int, disp : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_movsd_m64_xmm_base_index_scale_disp

fn MachineCode::x86_emit_movsd_m64_xmm_base_index_scale_disp(self : MachineCode, base : Int, index : Int, scale : Int, disp : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_movsd_xmm_m64

fn MachineCode::x86_emit_movsd_xmm_m64(self : MachineCode, dst_xmm : Int, base : Int, disp : Int) -> Unit

#
MachineCode::x86_emit_movsd_xmm_m64_base_index_scale_disp

fn MachineCode::x86_emit_movsd_xmm_m64_base_index_scale_disp(self : MachineCode, dst_xmm : Int, base : Int, index : Int, scale : Int, disp : Int) -> Unit

#
MachineCode::x86_emit_movsd_xmm_xmm

fn MachineCode::x86_emit_movsd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_movss_m32_xmm

fn MachineCode::x86_emit_movss_m32_xmm(self : MachineCode, base : Int, disp : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_movss_m32_xmm_base_index_scale_disp

fn MachineCode::x86_emit_movss_m32_xmm_base_index_scale_disp(self : MachineCode, base : Int, index : Int, scale : Int, disp : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_movss_xmm_m32

fn MachineCode::x86_emit_movss_xmm_m32(self : MachineCode, dst_xmm : Int, base : Int, disp : Int) -> Unit

#
MachineCode::x86_emit_movss_xmm_m32_base_index_scale_disp

fn MachineCode::x86_emit_movss_xmm_m32_base_index_scale_disp(self : MachineCode, dst_xmm : Int, base : Int, index : Int, scale : Int, disp : Int) -> Unit

#
MachineCode::x86_emit_movss_xmm_xmm

fn MachineCode::x86_emit_movss_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_movsx_r32_r16

fn MachineCode::x86_emit_movsx_r32_r16(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_movsx_r32_r8

fn MachineCode::x86_emit_movsx_r32_r8(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_movsx_r64_m16

fn MachineCode::x86_emit_movsx_r64_m16(self : MachineCode, dst : Int, base : Int, disp : Int) -> Unit

#
MachineCode::x86_emit_movsx_r64_m16_base_index_scale_disp

fn MachineCode::x86_emit_movsx_r64_m16_base_index_scale_disp(self : MachineCode, dst : Int, base : Int, index : Int, scale : Int, disp : Int) -> Unit

#
MachineCode::x86_emit_movsx_r64_m8

fn MachineCode::x86_emit_movsx_r64_m8(self : MachineCode, dst : Int, base : Int, disp : Int) -> Unit

#
MachineCode::x86_emit_movsx_r64_m8_base_index_scale_disp

fn MachineCode::x86_emit_movsx_r64_m8_base_index_scale_disp(self : MachineCode, dst : Int, base : Int, index : Int, scale : Int, disp : Int) -> Unit

#
MachineCode::x86_emit_movsx_r64_r16

fn MachineCode::x86_emit_movsx_r64_r16(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_movsx_r64_r8

fn MachineCode::x86_emit_movsx_r64_r8(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_movsxd_r64_m32

fn MachineCode::x86_emit_movsxd_r64_m32(self : MachineCode, dst : Int, base : Int, disp : Int) -> Unit

#
MachineCode::x86_emit_movsxd_r64_r32

fn MachineCode::x86_emit_movsxd_r64_r32(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_movzx_r32_m16

fn MachineCode::x86_emit_movzx_r32_m16(self : MachineCode, dst : Int, base : Int, disp : Int) -> Unit

#
MachineCode::x86_emit_movzx_r32_m16_base_index_scale_disp

fn MachineCode::x86_emit_movzx_r32_m16_base_index_scale_disp(self : MachineCode, dst : Int, base : Int, index : Int, scale : Int, disp : Int) -> Unit

#
MachineCode::x86_emit_movzx_r32_m8

fn MachineCode::x86_emit_movzx_r32_m8(self : MachineCode, dst : Int, base : Int, disp : Int) -> Unit

#
MachineCode::x86_emit_movzx_r32_m8_base_index_scale_disp

fn MachineCode::x86_emit_movzx_r32_m8_base_index_scale_disp(self : MachineCode, dst : Int, base : Int, index : Int, scale : Int, disp : Int) -> Unit

#
MachineCode::x86_emit_movzx_r32_r16

fn MachineCode::x86_emit_movzx_r32_r16(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_movzx_r32_r8

fn MachineCode::x86_emit_movzx_r32_r8(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_mul_r64

fn MachineCode::x86_emit_mul_r64(self : MachineCode, src : Int) -> Unit

#
MachineCode::x86_emit_mulpd_xmm_xmm

fn MachineCode::x86_emit_mulpd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_mulps_xmm_xmm

fn MachineCode::x86_emit_mulps_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_mulsd_xmm_xmm

fn MachineCode::x86_emit_mulsd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_mulss_xmm_xmm

fn MachineCode::x86_emit_mulss_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_neg_r32

fn MachineCode::x86_emit_neg_r32(self : MachineCode, reg : Int) -> Unit

#
MachineCode::x86_emit_neg_r64

fn MachineCode::x86_emit_neg_r64(self : MachineCode, reg : Int) -> Unit

#
MachineCode::x86_emit_not_r32

fn MachineCode::x86_emit_not_r32(self : MachineCode, reg : Int) -> Unit

#
MachineCode::x86_emit_not_r64

fn MachineCode::x86_emit_not_r64(self : MachineCode, reg : Int) -> Unit

#
MachineCode::x86_emit_or_rr

fn MachineCode::x86_emit_or_rr(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_or_rr32

fn MachineCode::x86_emit_or_rr32(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_orpd_xmm_xmm

fn MachineCode::x86_emit_orpd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_orps_xmm_xmm

fn MachineCode::x86_emit_orps_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pabsb_xmm_xmm

fn MachineCode::x86_emit_pabsb_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pabsd_xmm_xmm

fn MachineCode::x86_emit_pabsd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pabsw_xmm_xmm

fn MachineCode::x86_emit_pabsw_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_packssdw_xmm_xmm

fn MachineCode::x86_emit_packssdw_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_packsswb_xmm_xmm

fn MachineCode::x86_emit_packsswb_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_packusdw_xmm_xmm

fn MachineCode::x86_emit_packusdw_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_packuswb_xmm_xmm

fn MachineCode::x86_emit_packuswb_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_padd_xmm_xmm

fn MachineCode::x86_emit_padd_xmm_xmm(self : MachineCode, lane_size :
LaneSize
, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_paddsb_xmm_xmm

fn MachineCode::x86_emit_paddsb_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_paddsw_xmm_xmm

fn MachineCode::x86_emit_paddsw_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_paddusb_xmm_xmm

fn MachineCode::x86_emit_paddusb_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_paddusw_xmm_xmm

fn MachineCode::x86_emit_paddusw_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_palignr_xmm_xmm_imm8

fn MachineCode::x86_emit_palignr_xmm_xmm_imm8(self : MachineCode, dst_xmm : Int, src_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_pand_xmm_xmm

fn MachineCode::x86_emit_pand_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pandn_xmm_xmm

fn MachineCode::x86_emit_pandn_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pavgb_xmm_xmm

fn MachineCode::x86_emit_pavgb_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pavgw_xmm_xmm

fn MachineCode::x86_emit_pavgw_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pcmpeq_xmm_xmm

fn MachineCode::x86_emit_pcmpeq_xmm_xmm(self : MachineCode, lane_size :
LaneSize
, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pcmpeqd_xmm_xmm

fn MachineCode::x86_emit_pcmpeqd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pcmpgt_xmm_xmm

fn MachineCode::x86_emit_pcmpgt_xmm_xmm(self : MachineCode, lane_size :
LaneSize
, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pextrb_r32_xmm_imm8

fn MachineCode::x86_emit_pextrb_r32_xmm_imm8(self : MachineCode, dst : Int, src_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_pextrd_r32_xmm_imm8

fn MachineCode::x86_emit_pextrd_r32_xmm_imm8(self : MachineCode, dst : Int, src_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_pextrq_r64_xmm_imm8

fn MachineCode::x86_emit_pextrq_r64_xmm_imm8(self : MachineCode, dst : Int, src_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_pextrw_r32_xmm_imm8

fn MachineCode::x86_emit_pextrw_r32_xmm_imm8(self : MachineCode, dst : Int, src_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_pinsrb_xmm_r32_imm8

fn MachineCode::x86_emit_pinsrb_xmm_r32_imm8(self : MachineCode, dst_xmm : Int, src : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_pinsrd_xmm_r32_imm8

fn MachineCode::x86_emit_pinsrd_xmm_r32_imm8(self : MachineCode, dst_xmm : Int, src : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_pinsrq_xmm_r64_imm8

fn MachineCode::x86_emit_pinsrq_xmm_r64_imm8(self : MachineCode, dst_xmm : Int, src : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_pinsrw_xmm_r32_imm8

fn MachineCode::x86_emit_pinsrw_xmm_r32_imm8(self : MachineCode, dst_xmm : Int, src : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_pmaddubsw_xmm_xmm

fn MachineCode::x86_emit_pmaddubsw_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pmaddwd_xmm_xmm

fn MachineCode::x86_emit_pmaddwd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pmaxsb_xmm_xmm

fn MachineCode::x86_emit_pmaxsb_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pmaxsd_xmm_xmm

fn MachineCode::x86_emit_pmaxsd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pmaxsw_xmm_xmm

fn MachineCode::x86_emit_pmaxsw_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pmaxub_xmm_xmm

fn MachineCode::x86_emit_pmaxub_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pmaxud_xmm_xmm

fn MachineCode::x86_emit_pmaxud_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pmaxuw_xmm_xmm

fn MachineCode::x86_emit_pmaxuw_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pminsb_xmm_xmm

fn MachineCode::x86_emit_pminsb_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pminsd_xmm_xmm

fn MachineCode::x86_emit_pminsd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pminsw_xmm_xmm

fn MachineCode::x86_emit_pminsw_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pminub_xmm_xmm

fn MachineCode::x86_emit_pminub_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pminud_xmm_xmm

fn MachineCode::x86_emit_pminud_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pminuw_xmm_xmm

fn MachineCode::x86_emit_pminuw_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pmovmskb_r32_xmm

fn MachineCode::x86_emit_pmovmskb_r32_xmm(self : MachineCode, dst : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pmovsxbw_xmm_xmm

fn MachineCode::x86_emit_pmovsxbw_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pmovsxdq_xmm_xmm

fn MachineCode::x86_emit_pmovsxdq_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pmovsxwd_xmm_xmm

fn MachineCode::x86_emit_pmovsxwd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pmovzxbw_xmm_xmm

fn MachineCode::x86_emit_pmovzxbw_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pmovzxdq_xmm_xmm

fn MachineCode::x86_emit_pmovzxdq_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pmovzxwd_xmm_xmm

fn MachineCode::x86_emit_pmovzxwd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pmuldq_xmm_xmm

fn MachineCode::x86_emit_pmuldq_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pmulhrsw_xmm_xmm

fn MachineCode::x86_emit_pmulhrsw_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pmulhuw_xmm_xmm

fn MachineCode::x86_emit_pmulhuw_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pmulhw_xmm_xmm

fn MachineCode::x86_emit_pmulhw_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pmulld_xmm_xmm

fn MachineCode::x86_emit_pmulld_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pmullw_xmm_xmm

fn MachineCode::x86_emit_pmullw_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pmuludq_xmm_xmm

fn MachineCode::x86_emit_pmuludq_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pop_r64

fn MachineCode::x86_emit_pop_r64(self : MachineCode, reg : Int) -> Unit

#
MachineCode::x86_emit_por_xmm_xmm

fn MachineCode::x86_emit_por_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pshufb_xmm_xmm

fn MachineCode::x86_emit_pshufb_xmm_xmm(self : MachineCode, dst_xmm : Int, mask_xmm : Int) -> Unit

#
MachineCode::x86_emit_pshufd_xmm_xmm_imm8

fn MachineCode::x86_emit_pshufd_xmm_xmm_imm8(self : MachineCode, dst_xmm : Int, src_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_pshuflw_xmm_xmm_imm8

fn MachineCode::x86_emit_pshuflw_xmm_xmm_imm8(self : MachineCode, dst_xmm : Int, src_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_psll_xmm_xmm

fn MachineCode::x86_emit_psll_xmm_xmm(self : MachineCode, lane_size :
LaneSize
, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_pslld_xmm_imm8

fn MachineCode::x86_emit_pslld_xmm_imm8(self : MachineCode, dst_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_psllq_xmm_imm8

fn MachineCode::x86_emit_psllq_xmm_imm8(self : MachineCode, dst_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_psllw_xmm_imm8

fn MachineCode::x86_emit_psllw_xmm_imm8(self : MachineCode, dst_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_psra_xmm_xmm

fn MachineCode::x86_emit_psra_xmm_xmm(self : MachineCode, lane_size :
LaneSize
, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_psrad_xmm_imm8

fn MachineCode::x86_emit_psrad_xmm_imm8(self : MachineCode, dst_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_psrl_xmm_xmm

fn MachineCode::x86_emit_psrl_xmm_xmm(self : MachineCode, lane_size :
LaneSize
, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_psrld_xmm_imm8

fn MachineCode::x86_emit_psrld_xmm_imm8(self : MachineCode, dst_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_psrlq_xmm_imm8

fn MachineCode::x86_emit_psrlq_xmm_imm8(self : MachineCode, dst_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_psrlw_xmm_imm8

fn MachineCode::x86_emit_psrlw_xmm_imm8(self : MachineCode, dst_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_psub_xmm_xmm

fn MachineCode::x86_emit_psub_xmm_xmm(self : MachineCode, lane_size :
LaneSize
, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_psubsb_xmm_xmm

fn MachineCode::x86_emit_psubsb_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_psubsw_xmm_xmm

fn MachineCode::x86_emit_psubsw_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_psubusb_xmm_xmm

fn MachineCode::x86_emit_psubusb_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_psubusw_xmm_xmm

fn MachineCode::x86_emit_psubusw_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_punpckhbw_xmm_xmm

fn MachineCode::x86_emit_punpckhbw_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_punpckhdq_xmm_xmm

fn MachineCode::x86_emit_punpckhdq_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_punpckhwd_xmm_xmm

fn MachineCode::x86_emit_punpckhwd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_punpcklbw_xmm_xmm

fn MachineCode::x86_emit_punpcklbw_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_punpckldq_xmm_xmm

fn MachineCode::x86_emit_punpckldq_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_punpcklwd_xmm_xmm

fn MachineCode::x86_emit_punpcklwd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_push_r64

fn MachineCode::x86_emit_push_r64(self : MachineCode, reg : Int) -> Unit

#
MachineCode::x86_emit_pxor_xmm_xmm

fn MachineCode::x86_emit_pxor_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_ret

fn MachineCode::x86_emit_ret(self : MachineCode) -> Unit

#
MachineCode::x86_emit_ror_r32_cl

fn MachineCode::x86_emit_ror_r32_cl(self : MachineCode, dst : Int) -> Unit

#
MachineCode::x86_emit_ror_r32_imm8

fn MachineCode::x86_emit_ror_r32_imm8(self : MachineCode, dst : Int, imm : Int) -> Unit

#
MachineCode::x86_emit_ror_r_cl

fn MachineCode::x86_emit_ror_r_cl(self : MachineCode, dst : Int) -> Unit

#
MachineCode::x86_emit_ror_r_imm8

fn MachineCode::x86_emit_ror_r_imm8(self : MachineCode, dst : Int, imm : Int) -> Unit

#
MachineCode::x86_emit_roundpd_xmm_xmm_imm8

fn MachineCode::x86_emit_roundpd_xmm_xmm_imm8(self : MachineCode, dst_xmm : Int, src_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_roundps_xmm_xmm_imm8

fn MachineCode::x86_emit_roundps_xmm_xmm_imm8(self : MachineCode, dst_xmm : Int, src_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_roundsd_xmm_xmm_imm8

fn MachineCode::x86_emit_roundsd_xmm_xmm_imm8(self : MachineCode, dst_xmm : Int, src_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_roundss_xmm_xmm_imm8

fn MachineCode::x86_emit_roundss_xmm_xmm_imm8(self : MachineCode, dst_xmm : Int, src_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_sar_r32_cl

fn MachineCode::x86_emit_sar_r32_cl(self : MachineCode, dst : Int) -> Unit

#
MachineCode::x86_emit_sar_r32_imm8

fn MachineCode::x86_emit_sar_r32_imm8(self : MachineCode, dst : Int, imm : Int) -> Unit

#
MachineCode::x86_emit_sar_r_cl

fn MachineCode::x86_emit_sar_r_cl(self : MachineCode, dst : Int) -> Unit

#
MachineCode::x86_emit_sar_r_imm8

fn MachineCode::x86_emit_sar_r_imm8(self : MachineCode, dst : Int, imm : Int) -> Unit

#
MachineCode::x86_emit_setcc_r8

fn MachineCode::x86_emit_setcc_r8(self : MachineCode, cond :
Cond
, dst : Int) -> Unit

#
MachineCode::x86_emit_shl_r32_cl

fn MachineCode::x86_emit_shl_r32_cl(self : MachineCode, dst : Int) -> Unit

#
MachineCode::x86_emit_shl_r32_imm8

fn MachineCode::x86_emit_shl_r32_imm8(self : MachineCode, dst : Int, imm : Int) -> Unit

#
MachineCode::x86_emit_shl_r_cl

fn MachineCode::x86_emit_shl_r_cl(self : MachineCode, dst : Int) -> Unit

#
MachineCode::x86_emit_shl_r_imm8

fn MachineCode::x86_emit_shl_r_imm8(self : MachineCode, dst : Int, imm : Int) -> Unit

#
MachineCode::x86_emit_shld_r32_imm8

fn MachineCode::x86_emit_shld_r32_imm8(self : MachineCode, dst : Int, src : Int, imm : Int) -> Unit

#
MachineCode::x86_emit_shld_r_imm8

fn MachineCode::x86_emit_shld_r_imm8(self : MachineCode, dst : Int, src : Int, imm : Int) -> Unit

#
MachineCode::x86_emit_shr_r32_cl

fn MachineCode::x86_emit_shr_r32_cl(self : MachineCode, dst : Int) -> Unit

#
MachineCode::x86_emit_shr_r32_imm8

fn MachineCode::x86_emit_shr_r32_imm8(self : MachineCode, dst : Int, imm : Int) -> Unit

#
MachineCode::x86_emit_shr_r_cl

fn MachineCode::x86_emit_shr_r_cl(self : MachineCode, dst : Int) -> Unit

#
MachineCode::x86_emit_shr_r_imm8

fn MachineCode::x86_emit_shr_r_imm8(self : MachineCode, dst : Int, imm : Int) -> Unit

#
MachineCode::x86_emit_shrd_r32_imm8

fn MachineCode::x86_emit_shrd_r32_imm8(self : MachineCode, dst : Int, src : Int, imm : Int) -> Unit

#
MachineCode::x86_emit_shrd_r_imm8

fn MachineCode::x86_emit_shrd_r_imm8(self : MachineCode, dst : Int, src : Int, imm : Int) -> Unit

#
MachineCode::x86_emit_shufpd_xmm_xmm_imm8

fn MachineCode::x86_emit_shufpd_xmm_xmm_imm8(self : MachineCode, dst_xmm : Int, src_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_shufps_xmm_xmm_imm8

fn MachineCode::x86_emit_shufps_xmm_xmm_imm8(self : MachineCode, dst_xmm : Int, src_xmm : Int, imm8 : Int) -> Unit

#
MachineCode::x86_emit_sqrtpd_xmm_xmm

fn MachineCode::x86_emit_sqrtpd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_sqrtps_xmm_xmm

fn MachineCode::x86_emit_sqrtps_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_sqrtsd_xmm_xmm

fn MachineCode::x86_emit_sqrtsd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_sqrtss_xmm_xmm

fn MachineCode::x86_emit_sqrtss_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_sub_r32_imm32

fn MachineCode::x86_emit_sub_r32_imm32(self : MachineCode, dst : Int, imm : Int) -> Unit

#
MachineCode::x86_emit_sub_r32_imm8

fn MachineCode::x86_emit_sub_r32_imm8(self : MachineCode, dst : Int, imm : Int) -> Unit

#
MachineCode::x86_emit_sub_r_imm32

fn MachineCode::x86_emit_sub_r_imm32(self : MachineCode, dst : Int, imm : Int) -> Unit

#
MachineCode::x86_emit_sub_r_imm8

fn MachineCode::x86_emit_sub_r_imm8(self : MachineCode, dst : Int, imm : Int) -> Unit

#
MachineCode::x86_emit_sub_rr

fn MachineCode::x86_emit_sub_rr(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_sub_rr32

fn MachineCode::x86_emit_sub_rr32(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_sub_rsp_imm32

fn MachineCode::x86_emit_sub_rsp_imm32(self : MachineCode, imm : Int) -> Unit

#
MachineCode::x86_emit_subpd_xmm_xmm

fn MachineCode::x86_emit_subpd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_subps_xmm_xmm

fn MachineCode::x86_emit_subps_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_subsd_xmm_xmm

fn MachineCode::x86_emit_subsd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_subss_xmm_xmm

fn MachineCode::x86_emit_subss_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_test_rr

fn MachineCode::x86_emit_test_rr(self : MachineCode, lhs : Int, rhs : Int) -> Unit

#
MachineCode::x86_emit_test_rr32

fn MachineCode::x86_emit_test_rr32(self : MachineCode, lhs : Int, rhs : Int) -> Unit

#
MachineCode::x86_emit_trap_imm16

fn MachineCode::x86_emit_trap_imm16(self : MachineCode, imm16 : Int) -> Unit

Emit a trap instruction with a 16-bit payload.

Encoding: INT3 (0xCC) followed by imm16 (little-endian). The embedding trap handler owns the payload policy.

#
MachineCode::x86_emit_ucomisd_xmm_xmm

fn MachineCode::x86_emit_ucomisd_xmm_xmm(self : MachineCode, lhs_xmm : Int, rhs_xmm : Int) -> Unit

#
MachineCode::x86_emit_ucomiss_xmm_xmm

fn MachineCode::x86_emit_ucomiss_xmm_xmm(self : MachineCode, lhs_xmm : Int, rhs_xmm : Int) -> Unit

#
MachineCode::x86_emit_unpcklps_xmm_xmm

fn MachineCode::x86_emit_unpcklps_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_xor_rr

fn MachineCode::x86_emit_xor_rr(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_xor_rr32

fn MachineCode::x86_emit_xor_rr32(self : MachineCode, dst : Int, src : Int) -> Unit

#
MachineCode::x86_emit_xorpd_xmm_xmm

fn MachineCode::x86_emit_xorpd_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
MachineCode::x86_emit_xorps_xmm_xmm

fn MachineCode::x86_emit_xorps_xmm_xmm(self : MachineCode, dst_xmm : Int, src_xmm : Int) -> Unit

#
StackAdjustStep

pub(all) struct StackAdjustStep {
amount : Int
probe_after : Bool
} derive(Eq,
Debug
)

#
X86Rel32Fixup

type X86Rel32Fixup

x86_64 rel32 fixup for forward branches (jmp/jcc rel32).

disp_offset is the start of the 4-byte displacement field. next_ip_offset is the offset of the instruction end (RIP after the branch).

#
emit_function

fn emit_function(func :
Function
, isa? :
ISA
, debug_func_idx? : Int?, force_frame_setup? : Bool, embedding_abi? :
EmbeddingABI
?, record_disasm? : Bool) -> MachineCode

Emit machine code for a MachV function

#
emit_function_with_regalloc

fn emit_function_with_regalloc(func :
Function
, output :
Output
, isa? :
ISA
, debug_func_idx? : Int?, force_frame_setup? : Bool, embedding_abi? :
EmbeddingABI
?, record_disasm? : Bool) -> MachineCode

Emit machine code using the Cranelift-style regalloc output.

#
fits_signed_i32

fn fits_signed_i32(value : Int) -> Bool

#
fits_signed_i8

fn fits_signed_i8(value : Int) -> Bool

#
format_disassembly

fn format_disassembly(code : Array[Int], label_offsets : Array[(Int, Int)], annotations : Array[(Int, String)]) -> String

#
plan_signed_i8_chunks

fn plan_signed_i8_chunks(value : Int) -> Array[Int]

#
plan_stack_pointer_adjustment

fn plan_stack_pointer_adjustment(amount : Int, page_size? : Int) -> Array[StackAdjustStep]