Simplify LowerBackend interface (#5432)
* Refactor lower_branch to have Unit result Branches cannot have any output, so it is more straightforward to have the ISLE term return Unit instead of InstOutput. Also provide a new `emit_side_effect` term to simplify implementation of `lower_branch` rules with Unit result. * Simplify LowerBackend interface Move all remaining asserts from the LowerBackend::lower and ::lower_branch_group into the common call site. Change return value of ::lower to Option<InstOutput>, and return value of ::lower_branch_group to Option<()> to match ISLE term signature. Only pass the first branch into ::lower_branch_group and rename it to ::lower_branch. As a result of all those changes, LowerBackend routines now consists solely to calls to the corresponding ISLE routines.
This commit is contained in:
@@ -140,7 +140,7 @@ macro_rules! isle_lower_prelude_methods {
|
||||
_ => None,
|
||||
};
|
||||
if let Some(insn) = insn {
|
||||
if let Ok(regs) = self.backend.lower(self.lower_ctx, insn) {
|
||||
if let Some(regs) = self.backend.lower(self.lower_ctx, insn) {
|
||||
assert!(regs.len() == 1);
|
||||
return regs[0];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user