diff options
| -rw-r--r-- | yjit/src/backend/ir.rs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/yjit/src/backend/ir.rs b/yjit/src/backend/ir.rs index a441303d64..785ea7a9aa 100644 --- a/yjit/src/backend/ir.rs +++ b/yjit/src/backend/ir.rs @@ -175,17 +175,27 @@ impl Opnd } } - /// Constant pointer operand + /// Constructor for constant pointer operand pub fn const_ptr(ptr: *const u8) -> Self { Opnd::UImm(ptr as u64) } + /// Unwrap a register operand pub fn unwrap_reg(&self) -> Reg { match self { Opnd::Reg(reg) => *reg, _ => unreachable!("trying to unwrap {:?} into reg", self) } } + + /// Get the size in bits for register/memory operands + pub fn rm_num_bits(&self) -> u8 { + match self { + Opnd::Reg(reg) => reg.num_bits, + Opnd::Mem(mem) => mem.num_bits, + _ => unreachable!() + } + } } impl From<usize> for Opnd { |
