[AArch64] Port atomic rmw to ISLE (#4021)
Also fix and extend the current implementation: - AtomicRMWOp::Clr != AtomicRmwOp::And, as the input needs to be inverted first. - Inputs to the cmp for the RMWLoop case are sign-extended when needed. - Lower Xchg to Swp. - Lower Sub to Add with a negated input. - Added more runtests. Copyright (c) 2022, Arm Limited.
This commit is contained in:
@@ -120,6 +120,11 @@ macro_rules! isle_prelude_methods {
|
||||
self.lower_ctx.put_value_in_regs(val)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn ensure_in_vreg(&mut self, reg: Reg, ty: Type) -> Reg {
|
||||
self.lower_ctx.ensure_in_vreg(reg, ty)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn value_regs_get(&mut self, regs: ValueRegs, i: usize) -> Reg {
|
||||
regs.regs()[i]
|
||||
|
||||
Reference in New Issue
Block a user