summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com>2022-06-16 15:34:17 -0400
committerTakashi Kokubun <takashikkbn@gmail.com>2022-08-29 08:46:57 -0700
commit67de662c4419d4d115f40f8d3ed0c295b581dcf0 (patch)
treecdef5827a67e62bc87360dba7a71ff8a3f91537b
parent084d4bb19228eed3e89663a2d24ab3accaa1a4ee (diff)
Add Opnd.rm_num_bits() method
-rw-r--r--yjit/src/backend/ir.rs12
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 {