summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com>2022-06-16 15:25:27 -0400
committerTakashi Kokubun <takashikkbn@gmail.com>2022-08-29 08:46:57 -0700
commit084d4bb19228eed3e89663a2d24ab3accaa1a4ee (patch)
treedd311304d0422ce6510bbefc857cdb2c94faa0ff
parent4932a6ef755ae4cc473666c8757f7c51ac8c2902 (diff)
Implement X86Reg::sub_reg() method
-rw-r--r--yjit/src/asm/x86_64/mod.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/yjit/src/asm/x86_64/mod.rs b/yjit/src/asm/x86_64/mod.rs
index 399c2e8c7e..ca2a2f6e1f 100644
--- a/yjit/src/asm/x86_64/mod.rs
+++ b/yjit/src/asm/x86_64/mod.rs
@@ -88,6 +88,25 @@ pub enum X86Opnd
IPRel(i32)
}
+impl X86Reg {
+ fn sub_reg(&self, num_bits: u8) -> Self {
+ assert!(
+ num_bits == 8 ||
+ num_bits == 16 ||
+ num_bits == 32 ||
+ num_bits == 64
+ );
+
+ assert!(num_bits <= self.num_bits);
+
+ Self {
+ num_bits,
+ reg_type: self.reg_type,
+ reg_no: self.reg_no
+ }
+ }
+}
+
impl X86Opnd {
fn rex_needed(&self) -> bool {
match self {