Fix PReg indexing with >32 pregs
This commit is contained in:
@@ -108,13 +108,13 @@ impl PReg {
|
|||||||
/// all PRegs and index it efficiently.
|
/// all PRegs and index it efficiently.
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pub fn index(self) -> usize {
|
pub fn index(self) -> usize {
|
||||||
((self.class as u8 as usize) << 5) | (self.hw_enc as usize)
|
((self.class as u8 as usize) << Self::MAX_BITS) | (self.hw_enc as usize)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Construct a PReg from the value returned from `.index()`.
|
/// Construct a PReg from the value returned from `.index()`.
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pub fn from_index(index: usize) -> Self {
|
pub fn from_index(index: usize) -> Self {
|
||||||
let class = (index >> 5) & 1;
|
let class = (index >> Self::MAX_BITS) & 1;
|
||||||
let class = match class {
|
let class = match class {
|
||||||
0 => RegClass::Int,
|
0 => RegClass::Int,
|
||||||
1 => RegClass::Float,
|
1 => RegClass::Float,
|
||||||
|
|||||||
Reference in New Issue
Block a user