Implement missing ABI structures in StableMIR
This commit is contained in:
parent
6db96de66c
commit
e3ac2c68b8
6 changed files with 274 additions and 26 deletions
|
@ -30,21 +30,29 @@ pub enum Endian {
|
|||
}
|
||||
|
||||
/// Represent the size of a component.
|
||||
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord)]
|
||||
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
|
||||
pub struct MachineSize {
|
||||
num_bits: usize,
|
||||
}
|
||||
|
||||
impl MachineSize {
|
||||
#[inline(always)]
|
||||
pub fn bytes(self) -> usize {
|
||||
self.num_bits / 8
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pub fn bits(self) -> usize {
|
||||
self.num_bits
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pub fn from_bits(num_bits: usize) -> MachineSize {
|
||||
MachineSize { num_bits }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn unsigned_int_max(self) -> Option<u128> {
|
||||
(self.num_bits <= 128).then(|| u128::MAX >> (128 - self.bits()))
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue