Module IR.IntLit

module F = Stdlib.Format
type t

signed and unsigned integer literals

val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
include Sexplib0.Sexpable.S with type t := t
val t_of_sexp : Sexplib0__.Sexp.t -> t
val sexp_of_t : t -> Sexplib0__.Sexp.t
include Ppx_hash_lib.Hashable.S with type t := t
val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
val hash_normalize : t -> t
val hash_normalize_opt : t option -> t option
val hash_normalize_list : t list -> t list
exception OversizedShift
val add : t -> t -> t
val compare : t -> t -> int

compare integers ignoring the distinction between pointers and non-pointers

val compare_value : t -> t -> int

compare the value of the integers, notice this is different from const compare, which distinguished between signed and unsigned +1

val div : t -> t -> t
val eq : t -> t -> bool
val equal : t -> t -> bool

an alias for eq, for convenience

val of_int : int -> t
val of_big_int : Z.t -> t
val of_int32 : int32 -> t
val of_int64 : int64 -> t
val of_string : string -> t
val geq : t -> t -> bool
val gt : t -> t -> bool
val isminusone : t -> bool
val isnegative : t -> bool
val isnull : t -> bool
val isone : t -> bool
val iszero : t -> bool
val leq : t -> t -> bool
val logand : t -> t -> t
val lognot : t -> t
val logor : t -> t -> t
val logxor : t -> t -> t
val lt : t -> t -> bool
val minus_one : t
val mul : t -> t -> t
val neg : t -> t
val neq : t -> t -> bool
val null : t

null behaves like zero except for the function isnull

val one : t
val pp : F.formatter -> t -> unit
val rem : t -> t -> t
val shift_left : t -> t -> t
val shift_right : t -> t -> t
val sub : t -> t -> t
val max : t -> t -> t
val min : t -> t -> t
val to_int : t -> int option
val to_int_exn : t -> int
val to_big_int : t -> Z.t
val to_float : t -> float
val to_signed : t -> t option
val to_string : t -> string

convert to signed if the value is representable

val two : t
val zero : t