1 //! Lowering rules for S390x.
2 
3 use crate::ir::Inst as IRInst;
4 use crate::isa::s390x::S390xBackend;
5 use crate::isa::s390x::inst::Inst;
6 use crate::machinst::{InstOutput, Lower, LowerBackend, MachLabel};
7 
8 pub mod isle;
9 
10 //=============================================================================
11 // Lowering-backend trait implementation.
12 
13 impl LowerBackend for S390xBackend {
14     type MInst = Inst;
15 
lower(&self, ctx: &mut Lower<Inst>, ir_inst: IRInst) -> Option<InstOutput>16     fn lower(&self, ctx: &mut Lower<Inst>, ir_inst: IRInst) -> Option<InstOutput> {
17         isle::lower(ctx, self, ir_inst)
18     }
19 
lower_branch( &self, ctx: &mut Lower<Inst>, ir_inst: IRInst, targets: &[MachLabel], ) -> Option<()>20     fn lower_branch(
21         &self,
22         ctx: &mut Lower<Inst>,
23         ir_inst: IRInst,
24         targets: &[MachLabel],
25     ) -> Option<()> {
26         isle::lower_branch(ctx, self, ir_inst, targets)
27     }
28 }
29