[−][src]Enum souper_ir::ast::Instruction
A Souper instruction.
Variants
Wrapping integer addition.
Integer addition where signed overflow is undefined behavior.
Integer addition where unsigned overflow is undefined behavior.
Integer addition where any kind of overflow is undefined behavior.
Wrapping integer subtraction.
Integer subtraction where signed overflow is undefined behavior.
Integer subtraction where unsigned overflow is undefined behavior.
Integer subtraction where any kind of overflow is undefined behavior.
Wrapping integer multiplication.
Integer multiplication where signed overflow is undefined behavior.
Integer multiplication where unsigned overflow is undefined behavior.
Integer multiplication where any kind of overflow is undefined behavior.
Unsigned integer division.
Signed integer division.
Unsigned division where a
must be exactly divisible by b
. If a
is
not exactly divisible by b
, then the result is undefined behavior.
Signed division where a
must be exactly divisible by b
. If a
is
not exactly divisible by b
, then the result is undefined behavior.
Unsigned integer remainder.
Signed integer remainder.
Bit-wise and.
Bit-wise or.
Bit-wise xor.
Bit shift left. Undefined behavior if b
is greater than or equal to bitwidth(a)
.
Bit shift left where shifting out any non-sign bits is undefined behavior.
Bit shift left where shifting out any non-zero bits is undefined behavior.
Bit shift left where shifting out any non-zero or non-sign bits is undefined behavior.
Logical bit shift right (fills left b
bits with zero). Undefined
behavior if b
is greater than or equal to bitwidth(a)
.
Logical bit shift right (fills left b
bits with zero) where it is
undefined behavior if any bits shifted out are non-zero.
Arithmetic bit shift right (sign extends the left b
bits).
Arithmetic bit shift right (fills left b
bits with zero) where it is
undefined behavior if any bits shifted out are non-zero.
If a
is 1, then evaluates to b
, otherwise evaluates to c
.
Zero extend a
.
Fields of Zext
a: Operand
Sign extend a
.
Fields of Sext
a: Operand
Truncate a
.
Fields of Trunc
a: Operand
a == b
.
a != b
Unsigned less than.
Signed less than.
Unsigned less than or equal.
Signed less than or equal.
Count the number of 1 bits in a
.
Fields of Ctpop
a: Operand
Swap bytes in a
, e.g. 0xaabbccdd
becomes 0xddccbbaa
.
Fields of Bswap
a: Operand
Reverse the bits in a
.
Fields of BitReverse
a: Operand
Count trailing zero bits in a
.
Fields of Cttz
a: Operand
Count leading one bits in a
.
Fields of Ctlz
a: Operand
Left funnel shift.
Right funnel shift.
Wrapping signed integer addition of a
and b
where the result is
extended by one bit which indicates whether the addition overflowed.
Wrapping unsigned integer addition of a
and b
where the result is
extended by one bit which indicates whether the addition overflowed.
Wrapping signed integer subtraction of a
and b
where the result is
extended by one bit which indicates whether the subtraction overflowed.
Wrapping unsigned integer subtraction of a
and b
where the result is
extended by one bit which indicates whether the subtraction overflowed.
Wrapping signed integer multiplication of a
and b
where the result
is extended by one bit which indicates whether the multiplication
overflowed.
Wrapping unsigned integer multiplication of a
and b
where the result
is extended by one bit which indicates whether the multiplication
overflowed.
Signed saturating integer addition.
Unsigned saturating integer addition.
Signed saturating integer subtraction.
Unsigned saturating integer subtraction.
Extract the b
th value from a
.
A hole reserved for an unknown instruction or value.
If a
is a poison or undef value, returns an arbitrary but fixed
value. Otherwise returns a
.
Fields of Freeze
a: Operand
Trait Implementations
impl Clone for Instruction
[src]
fn clone(&self) -> Instruction
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Copy for Instruction
[src]
impl Debug for Instruction
[src]
impl From<Instruction> for AssignmentRhs
[src]
fn from(i: Instruction) -> Self
[src]
impl Parse for Instruction
[src]
impl Peek for Instruction
[src]
Auto Trait Implementations
impl RefUnwindSafe for Instruction
impl Send for Instruction
impl Sync for Instruction
impl Unpin for Instruction
impl UnwindSafe for Instruction
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,