cranelift_codegen/machinst/
inst_common.rs1use crate::ir::{self, Inst as IRInst};
4
5#[derive(Clone, Copy, Debug, PartialEq, Eq)]
13pub(crate) struct InsnInput {
14 pub(crate) insn: IRInst,
15 pub(crate) input: usize,
16}
17
18#[derive(Clone, Copy, Debug, PartialEq, Eq)]
20pub(crate) struct InsnOutput {
21 pub(crate) insn: IRInst,
22 pub(crate) output: usize,
23}
24
25#[derive(Clone, Copy, Debug, PartialEq, Eq)]
30#[repr(u8)]
31pub enum MachAtomicRmwOp {
32 Add,
34 Sub,
36 And,
38 Nand,
40 Or,
42 Xor,
44 Xchg,
46 Umin,
48 Umax,
50 Smin,
52 Smax,
54}
55
56impl MachAtomicRmwOp {
57 pub fn from(ir_op: ir::AtomicRmwOp) -> Self {
60 match ir_op {
61 ir::AtomicRmwOp::Add => MachAtomicRmwOp::Add,
62 ir::AtomicRmwOp::Sub => MachAtomicRmwOp::Sub,
63 ir::AtomicRmwOp::And => MachAtomicRmwOp::And,
64 ir::AtomicRmwOp::Nand => MachAtomicRmwOp::Nand,
65 ir::AtomicRmwOp::Or => MachAtomicRmwOp::Or,
66 ir::AtomicRmwOp::Xor => MachAtomicRmwOp::Xor,
67 ir::AtomicRmwOp::Xchg => MachAtomicRmwOp::Xchg,
68 ir::AtomicRmwOp::Umin => MachAtomicRmwOp::Umin,
69 ir::AtomicRmwOp::Umax => MachAtomicRmwOp::Umax,
70 ir::AtomicRmwOp::Smin => MachAtomicRmwOp::Smin,
71 ir::AtomicRmwOp::Smax => MachAtomicRmwOp::Smax,
72 }
73 }
74}