IR.BinopThe Smallfoot Intermediate Language: Binary Operators
type t = | PlusA of Typ.ikind optionarithmetic +
*)| PlusPIpointer + integer
*)| MinusA of Typ.ikind optionarithmetic -
*)| MinusPIpointer - integer
*)| MinusPPpointer - pointer
*)| Mult of Typ.ikind option*
*)| DivI/ for integers
*)| DivF/ for floats
*)| Mod%
*)| Shiftltshift left
*)| Shiftrtshift right
*)| Lt< (arithmetic comparison)
*)| Gt> (arithmetic comparison)
*)| Le<= (arithmetic comparison)
*)| Ge>= (arithmetic comparison)
*)| Eq== (arithmetic comparison)
*)| Ne!= (arithmetic comparison)
*)| BAndbitwise and
*)| BXorexclusive-or
*)| BOrinclusive-or
*)| LAndlogical and. Does not always evaluate both operands.
*)| LOrlogical or. Does not always evaluate both operands.
*)Binary operations
include Ppx_compare_lib.Comparable.S with type t := tval compare : t Base__Ppx_compare_lib.compareval str : IStdlib.Pp.env -> t -> stringval pp : IStdlib.IStd.Formatter.t -> t -> unitval injective : t -> boolThis function returns true if the operation is injective wrt. each argument: op(e,-) and op(-, e) is injective for all e. The return value false means "don't know".
val is_zero_runit : t -> boolThis function returns true if 0 is the right unit of binop. The return value false means "don't know".