ShRSIOperation

Struct ShRSIOperation 

Source
pub struct ShRSIOperation<'c> { /* private fields */ }
Expand description

A shrsi operation. Signed integer right-shift.

The shrsi operation shifts an integer value of the first operand to the right by the value of the second operand. The first operand is interpreted as signed, and the second operand is interpreter as unsigned. The high order bits in the output are filled with copies of the most-significant bit of the shifted value (which means that the sign of the value is preserved). If the value of the second operand is greater or equal than bitwidth of the first operand, then the operation returns poison.

If the exact attribute is present, the result value of shrsi is a poison value if any of the bits shifted out are non-zero.

Example:

%1 = arith.constant 160 : i8         // %1 is 0b10100000
%2 = arith.constant 3 : i8
%3 = arith.shrsi %1, %2 exact : i8   // %3 is 0b11110100
%4 = arith.constant 98 : i8          // %4 is 0b01100010
%5 = arith.shrsi %4, %2 : i8         // %5 is 0b00001100

Implementations§

Source§

impl<'c> ShRSIOperation<'c>

Source

pub fn name() -> &'static str

Returns a name.

Source

pub fn as_operation(&self) -> &Operation<'c>

Returns a generic operation.

Source

pub fn builder( context: &'c Context, location: Location<'c>, ) -> ShRSIOperationBuilder<'c, Unset, Unset>

Creates a builder.

Source

pub fn result(&self) -> Result<OperationResult<'c, '_>, Error>

Source

pub fn lhs(&self) -> Result<Value<'c, '_>, Error>

Source

pub fn rhs(&self) -> Result<Value<'c, '_>, Error>

Source

pub fn is_exact(&self) -> Result<Attribute<'c>, Error>

Source

pub fn set_is_exact(&mut self, value: Attribute<'c>)

Source

pub fn remove_is_exact(&mut self) -> Result<(), Error>

Trait Implementations§

Source§

impl<'c> Clone for ShRSIOperation<'c>

Source§

fn clone(&self) -> ShRSIOperation<'c>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'c> Debug for ShRSIOperation<'c>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'b> From<ShRSIOperation<'b>> for ArithDialectOperation<'b>

Source§

fn from(op: ShRSIOperation<'b>) -> Self

Converts to this type from the input type.
Source§

impl<'c> From<ShRSIOperation<'c>> for Operation<'c>

Source§

fn from(operation: ShRSIOperation<'c>) -> Self

Converts to this type from the input type.
Source§

impl<'c> PartialEq for ShRSIOperation<'c>

Source§

fn eq(&self, other: &ShRSIOperation<'c>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'c> TryFrom<Operation<'c>> for ShRSIOperation<'c>

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(operation: Operation<'c>) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl<'c> Eq for ShRSIOperation<'c>

Source§

impl<'c> StructuralPartialEq for ShRSIOperation<'c>

Auto Trait Implementations§

§

impl<'c> Freeze for ShRSIOperation<'c>

§

impl<'c> RefUnwindSafe for ShRSIOperation<'c>

§

impl<'c> !Send for ShRSIOperation<'c>

§

impl<'c> !Sync for ShRSIOperation<'c>

§

impl<'c> Unpin for ShRSIOperation<'c>

§

impl<'c> UnwindSafe for ShRSIOperation<'c>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.