cranelift_assembler_x64/
inst.rs

1//! Expose all known instructions as Rust `struct`s; this is generated in
2//! `build.rs`.
3//!
4//! See also: [`Inst`], an `enum` containing all these instructions.
5
6use crate::api::{AsReg, CodeSink, KnownOffsetTable, RegisterVisitor, Registers};
7use crate::gpr::{self, Gpr, Size};
8use crate::imm::{Extension, Imm16, Imm32, Imm8, Simm32, Simm8};
9use crate::mem::{emit_modrm_sib_disp, GprMem, XmmMem};
10use crate::rex::{self, RexFlags};
11use crate::xmm::Xmm;
12
13// Include code generated by the `meta` crate.
14include!(concat!(env!("OUT_DIR"), "/assembler.rs"));
15
16/// Helper function to make code generation simpler.
17fn emit_modrm(buffer: &mut impl CodeSink, enc_reg_g: u8, rm_e: u8) {
18    let modrm = rex::encode_modrm(0b11, enc_reg_g & 7, rm_e & 7);
19    buffer.put1(modrm);
20}