jon.recoil.org

Module Llvm_ir.Instruction

type switch_branch = {
  1. index : Value.t;
  2. label : Value.t;
}
type unary_op =
  1. | Fneg
type binary_op =
  1. | Add
  2. | Sub
  3. | Mul
  4. | Udiv
  5. | Sdiv
  6. | Urem
  7. | Srem
  8. | Fadd
  9. | Fsub
  10. | Fmul
  11. | Fdiv
  12. | Frem
  13. | Shl
  14. | Lshr
  15. | Ashr
  16. | And
  17. | Or
  18. | Xor
type atomicrmw_op =
  1. | Atomicrmw_add
  2. | Atomicrmw_sub
  3. | Atomicrmw_and
  4. | Atomicrmw_or
  5. | Atomicrmw_xor
  6. | Atomicrmw_xchg
type convert_op =
  1. | Sext
  2. | Zext
  3. | Trunc
  4. | Fpext
  5. | Fptrunc
  6. | Fptoui
  7. | Fptosi
  8. | Uitofp
  9. | Sitofp
  10. | Inttoptr
  11. | Ptrtoint
  12. | Ptrtoaddr
  13. | Addrspacecast
  14. | Bitcast
type icmp_cond =
  1. | Ieq
  2. | Ine
  3. | Iugt
  4. | Iuge
  5. | Iult
  6. | Iule
  7. | Isgt
  8. | Isge
  9. | Islt
  10. | Isle
type fcmp_cond =
  1. | Ffalse
  2. | Foeq
  3. | Fogt
  4. | Foge
  5. | Folt
  6. | Fole
  7. | Fone
  8. | Ford
  9. | Fueq
  10. | Fugt
  11. | Fuge
  12. | Fult
  13. | Fule
  14. | Fune
  15. | Funo
  16. | Ftrue
val binary_op_to_string : binary_op -> string
val unary_op_to_string : unary_op -> string
val convert_op_to_string : convert_op -> string
val icmp_cond_to_string : icmp_cond -> string
val icmp_cond_of_ocaml : Cmm.integer_comparison -> icmp_cond
val fcmp_cond_to_string : fcmp_cond -> string
val fcmp_cond_of_ocaml : Cmm.float_comparison -> fcmp_cond
val atomicrmw_op_to_string : atomicrmw_op -> string
type op
type t
val op_res_type : op -> Type.Or_void.t
val with_res : op -> Ident.t -> t
val without_res : op -> t
val get_res_value : t -> Value.t option
val ret : Value.t -> op
val br : Value.t -> op
val br_cond : cond:Value.t -> ifso:Value.t -> ifnot:Value.t -> op
val switch : discr:Value.t -> default:Value.t -> branches:switch_branch list -> op
val unreachable : op
val unary : unary_op -> arg:Value.t -> op
val binary : binary_op -> arg1:Value.t -> arg2:Value.t -> op
val convert : convert_op -> arg:Value.t -> to_:Type.t -> op
val icmp : icmp_cond -> arg1:Value.t -> arg2:Value.t -> op
val fcmp : fcmp_cond -> arg1:Value.t -> arg2:Value.t -> op
val extractelement : vector:Value.t -> index:Value.t -> op
val insertelement : vector:Value.t -> index:Value.t -> to_insert:Value.t -> op
val extractvalue : aggregate:Value.t -> indices:int list -> op
val insertvalue : aggregate:Value.t -> indices:int list -> to_insert:Value.t -> op
val alloca : ?count:Value.t -> Type.t -> op
val load : ptr:Value.t -> typ:Type.t -> op
val store : ptr:Value.t -> to_store:Value.t -> op
val getelementptr : base_type:Type.t -> base_ptr:Value.t -> indices:Value.t list -> op
val cmpxchg : ptr:Value.t -> compare_with:Value.t -> set_if_equal:Value.t -> op
val atomicrmw : atomicrmw_op -> ptr:Value.t -> arg:Value.t -> op
val select : cond:Value.t -> ifso:Value.t -> ifnot:Value.t -> op
val call : func:Ident.t -> args:Value.t list -> res_type:Type.Or_void.t -> attrs:Fn_attr.t list -> cc:Calling_conventions.t -> musttail:bool -> op
val inline_asm : args:Value.t list -> res_type:Type.Or_void.t -> asm:string -> constraints:string -> sideeffect:bool -> op
val pp_t : ?comment:string -> Format.formatter -> t -> unit