func @add = <{T: Type, MAY_WRAP: Bool}> (lhs: T, rhs: T) -> T;
Integer addition. T
must be integral
or a vector
of integral
.
Wrapping when MAY_WRAP
is false
is undefined behavior
.
func @addWrap = <{T: Type}> (lhs: T, rhs: T) -> (result: T, wrapped: Bool);
Integer addition where wrapped
is true
if wrapping occured. T
must be integral
or a vector
of integral
.
func @addSat = <{T: Type}> (lhs: T, rhs: T) -> T;
Integer saturating addition. T
must be integral
or a vector
of integral
.
func @fadd = <{T: Type}> (lhs: T, rhs: T) -> T;
Float addition. T
must be floating-point
or a vector
of floating-point
.
func @sub = <{T: Type, MAY_WRAP: Bool}> (lhs: T, rhs: T) -> T;
Integer subtraction. T
must be integral
or a vector
of integral
.
Wrapping when MAY_WRAP
is false
is undefined behavior
.
func @subWrap = <{T: Type}> (lhs: T, rhs: T) -> (result: T, wrapped: Bool);
Integer subtraction where wrapped
is true
if wrapping occured. T
must be integral
or a vector
of integral
.
func @subSat = <{T: Type}> (lhs: T, rhs: T) -> T;
Integer saturating subtraction. T
must be integral
or a vector
of integral
.
func @fsub = <{T: Type}> (lhs: T, rhs: T) -> T;
Float subtraction. T
must be floating-point
or a vector
of floating-point
.
func @mul = <{T: Type, MAY_WRAP: Bool}> (lhs: T, rhs: T) -> T;
Integer multiplication. T
must be integral
or a vector
of integral
.
Wrapping when MAY_WRAP
is false
is undefined behavior
.
func @mulWrap = <{T: Type}> (lhs: T, rhs: T) -> (result: T, wrapped: Bool);
Integer multiplication where wrapped
is true
if wrapping occured. T
must be integral
or a vector
of integral
.
func @mulSat = <{T: Type}> (lhs: T, rhs: T) -> T;
Integer saturating multiplication. T
must be integral
or a vector
of integral
.
func @fmul = <{T: Type}> (lhs: T, rhs: T) -> T;
Float multiplication. T
must be floating-point
or a vector
of floating-point
.
func @div = <{T: Type, IS_EXACT: Bool}> (lhs: T, rhs: T) -> T;
Integer division. T
must be integral
or a vector
of integral
.
If IS_EXACT
is true
, it is undefined behavior
if (@div<{TYPE, true}>(a, b) * b) != a
.
func @fdiv = <{T: Type}> (lhs: T, rhs: T) -> T;
Float division. T
must be floating-point
or a vector
of floating-point
.
func @rem = <{T: Type}> (lhs: T, rhs: T) -> T;
Division remainder. T
must be integral
, a vector
of integral
, floating-point
, or a vector
of floating-point
.
func @fneg = <{T: Type}> (arg: T) -> T;
Float negation. T
must be floating-point
or a vector
of floating-point
.