use crate::reg::Reg;
use cranelift_codegen::VCodeConstant;
#[derive(Debug, Copy, Clone)]
pub(crate) enum Address {
Offset { base: Reg, offset: u32 },
Const(VCodeConstant),
ImmRegRegShift {
simm32: i32,
base: Reg,
index: Reg,
shift: u8,
},
}
impl Address {
pub fn offset(base: Reg, offset: u32) -> Self {
Self::Offset { base, offset }
}
pub fn constant(data: VCodeConstant) -> Self {
Self::Const(data)
}
pub fn is_offset(&self) -> bool {
match self {
Self::Offset { .. } => true,
_ => false,
}
}
}