winch_codegen/isa/x64/
address.rs1use crate::reg::Reg;
4use cranelift_codegen::ir::Constant;
5
6#[derive(Debug, Copy, Clone)]
8pub(crate) enum Address {
9 Offset { base: Reg, offset: u32 },
11 Const(Constant),
13 ImmRegRegShift {
15 simm32: i32,
16 base: Reg,
17 index: Reg,
18 shift: u8,
19 },
20}
21
22impl Address {
23 pub fn offset(base: Reg, offset: u32) -> Self {
25 Self::Offset { base, offset }
26 }
27
28 pub fn constant(data: Constant) -> Self {
30 Self::Const(data)
31 }
32
33 pub fn is_offset(&self) -> bool {
35 match self {
36 Self::Offset { .. } => true,
37 _ => false,
38 }
39 }
40}