Module DSL.Acc
val set_emit_instruction : emit_instruction:(Instruction.t -> unit) -> unitSet a callback to receive instructions for binary emission (JIT).
val ins :
('num, 'operands) Instruction_name.t ->
('num, 'operands) many ->
unitPasses the instruction to the function provided to set_emit_string. Also passes to set_emit_instruction callback if set. (Can't directly reference Emitaux due to a circular dependency.)
val with_measuring : f:(unit -> unit) -> measurementExecute f with emission disabled, counting how many instructions would be emitted and tracking the minimum max_displacement across any conditional branches.
val ins1 : (singleton, 'a) Instruction_name.t -> 'a Operand.t -> unitval ins2 :
(pair, 'a * 'b) Instruction_name.t ->
'a Operand.t ->
'b Operand.t ->
unitval ins3 :
(triple, 'a * 'b * 'c) Instruction_name.t ->
'a Operand.t ->
'b Operand.t ->
'c Operand.t ->
unitval ins0 : (singleton, unit) Instruction_name.t -> unitmodule Tupled : sig ... endTupled versions of ins2/ins3/ins4 for convenience with helper functions that return tuples.
Expansion of instructions that are aliases
val ins_mov_from_sp :
dst:[ `Reg of [ `GP of [< `FP | `SP | `X ] ] ] Operand.t ->
unitval ins_mov_to_sp :
src:[ `Reg of [ `GP of [< `FP | `SP | `X ] ] ] Operand.t ->
unitval ins_mov_vector :
[ `Reg of
[ `Neon of
[ `Vector of ([< any_vector ] as 'v) * ([< any_width ] as 'w) ] ] ]
Operand.t ->
[ `Reg of [ `Neon of [ `Vector of 'v * 'w ] ] ] Operand.t ->
unit