diff options
author | Maxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com> | 2022-06-16 15:34:17 -0400 |
---|---|---|
committer | Takashi Kokubun <takashikkbn@gmail.com> | 2022-08-29 08:46:57 -0700 |
commit | 67de662c4419d4d115f40f8d3ed0c295b581dcf0 (patch) | |
tree | cdef5827a67e62bc87360dba7a71ff8a3f91537b | |
parent | 084d4bb19228eed3e89663a2d24ab3accaa1a4ee (diff) |
Add Opnd.rm_num_bits() method
-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 { |