use crate::code_asm::op_state::CodeAsmOpState;
use crate::Register;
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
#[rustfmt::skip]
#[repr(transparent)]
pub struct AsmRegister8 {
register: Register,
}
#[rustfmt::skip]
impl AsmRegister8 {
#[must_use]
#[inline]
pub(crate) const fn new(register: Register) -> Self {
Self { register }
}
#[must_use]
#[inline]
pub(crate) fn register(&self) -> Register {
self.register
}
}
#[rustfmt::skip]
impl From<AsmRegister8> for Register {
#[inline]
fn from(reg: AsmRegister8) -> Self {
reg.register
}
}
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
#[rustfmt::skip]
#[repr(transparent)]
pub struct AsmRegister16 {
register: Register,
}
#[rustfmt::skip]
impl AsmRegister16 {
#[must_use]
#[inline]
pub(crate) const fn new(register: Register) -> Self {
Self { register }
}
#[must_use]
#[inline]
pub(crate) fn register(&self) -> Register {
self.register
}
}
#[rustfmt::skip]
impl From<AsmRegister16> for Register {
#[inline]
fn from(reg: AsmRegister16) -> Self {
reg.register
}
}
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
#[rustfmt::skip]
pub struct AsmRegister32 {
register: Register,
state: CodeAsmOpState,
}
#[rustfmt::skip]
impl AsmRegister32 {
#[must_use]
#[inline]
pub(crate) const fn new(register: Register) -> Self {
Self { register, state: CodeAsmOpState::new() }
}
#[must_use]
#[inline]
pub(crate) fn register(&self) -> Register {
self.register
}
#[must_use]
#[inline]
pub(crate) fn state(&self) -> CodeAsmOpState {
self.state
}
#[must_use]
#[inline]
pub fn k1(mut self) -> Self {
self.state.set_k1();
self
}
#[must_use]
#[inline]
pub fn k2(mut self) -> Self {
self.state.set_k2();
self
}
#[must_use]
#[inline]
pub fn k3(mut self) -> Self {
self.state.set_k3();
self
}
#[must_use]
#[inline]
pub fn k4(mut self) -> Self {
self.state.set_k4();
self
}
#[must_use]
#[inline]
pub fn k5(mut self) -> Self {
self.state.set_k5();
self
}
#[must_use]
#[inline]
pub fn k6(mut self) -> Self {
self.state.set_k6();
self
}
#[must_use]
#[inline]
pub fn k7(mut self) -> Self {
self.state.set_k7();
self
}
#[must_use]
#[inline]
pub fn z(mut self) -> Self {
self.state.set_zeroing_masking();
self
}
#[must_use]
#[inline]
pub fn sae(mut self) -> Self {
self.state.set_suppress_all_exceptions();
self
}
#[must_use]
#[inline]
pub fn rn_sae(mut self) -> Self {
self.state.rn_sae();
self
}
#[must_use]
#[inline]
pub fn rd_sae(mut self) -> Self {
self.state.rd_sae();
self
}
#[must_use]
#[inline]
pub fn ru_sae(mut self) -> Self {
self.state.ru_sae();
self
}
#[must_use]
#[inline]
pub fn rz_sae(mut self) -> Self {
self.state.rz_sae();
self
}
}
#[rustfmt::skip]
impl From<AsmRegister32> for Register {
#[inline]
fn from(reg: AsmRegister32) -> Self {
reg.register
}
}
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
#[rustfmt::skip]
pub struct AsmRegister64 {
register: Register,
state: CodeAsmOpState,
}
#[rustfmt::skip]
impl AsmRegister64 {
#[must_use]
#[inline]
pub(crate) const fn new(register: Register) -> Self {
Self { register, state: CodeAsmOpState::new() }
}
#[must_use]
#[inline]
pub(crate) fn register(&self) -> Register {
self.register
}
#[must_use]
#[inline]
pub(crate) fn state(&self) -> CodeAsmOpState {
self.state
}
#[must_use]
#[inline]
pub fn k1(mut self) -> Self {
self.state.set_k1();
self
}
#[must_use]
#[inline]
pub fn k2(mut self) -> Self {
self.state.set_k2();
self
}
#[must_use]
#[inline]
pub fn k3(mut self) -> Self {
self.state.set_k3();
self
}
#[must_use]
#[inline]
pub fn k4(mut self) -> Self {
self.state.set_k4();
self
}
#[must_use]
#[inline]
pub fn k5(mut self) -> Self {
self.state.set_k5();
self
}
#[must_use]
#[inline]
pub fn k6(mut self) -> Self {
self.state.set_k6();
self
}
#[must_use]
#[inline]
pub fn k7(mut self) -> Self {
self.state.set_k7();
self
}
#[must_use]
#[inline]
pub fn z(mut self) -> Self {
self.state.set_zeroing_masking();
self
}
#[must_use]
#[inline]
pub fn sae(mut self) -> Self {
self.state.set_suppress_all_exceptions();
self
}
#[must_use]
#[inline]
pub fn rn_sae(mut self) -> Self {
self.state.rn_sae();
self
}
#[must_use]
#[inline]
pub fn rd_sae(mut self) -> Self {
self.state.rd_sae();
self
}
#[must_use]
#[inline]
pub fn ru_sae(mut self) -> Self {
self.state.ru_sae();
self
}
#[must_use]
#[inline]
pub fn rz_sae(mut self) -> Self {
self.state.rz_sae();
self
}
}
#[rustfmt::skip]
impl From<AsmRegister64> for Register {
#[inline]
fn from(reg: AsmRegister64) -> Self {
reg.register
}
}
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
#[rustfmt::skip]
#[repr(transparent)]
pub struct AsmRegisterSegment {
register: Register,
}
#[rustfmt::skip]
impl AsmRegisterSegment {
#[must_use]
#[inline]
pub(crate) const fn new(register: Register) -> Self {
Self { register }
}
#[must_use]
#[inline]
pub(crate) fn register(&self) -> Register {
self.register
}
}
#[rustfmt::skip]
impl From<AsmRegisterSegment> for Register {
#[inline]
fn from(reg: AsmRegisterSegment) -> Self {
reg.register
}
}
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
#[rustfmt::skip]
#[repr(transparent)]
pub struct AsmRegisterCr {
register: Register,
}
#[rustfmt::skip]
impl AsmRegisterCr {
#[must_use]
#[inline]
pub(crate) const fn new(register: Register) -> Self {
Self { register }
}
#[must_use]
#[inline]
pub(crate) fn register(&self) -> Register {
self.register
}
}
#[rustfmt::skip]
impl From<AsmRegisterCr> for Register {
#[inline]
fn from(reg: AsmRegisterCr) -> Self {
reg.register
}
}
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
#[rustfmt::skip]
#[repr(transparent)]
pub struct AsmRegisterDr {
register: Register,
}
#[rustfmt::skip]
impl AsmRegisterDr {
#[must_use]
#[inline]
pub(crate) const fn new(register: Register) -> Self {
Self { register }
}
#[must_use]
#[inline]
pub(crate) fn register(&self) -> Register {
self.register
}
}
#[rustfmt::skip]
impl From<AsmRegisterDr> for Register {
#[inline]
fn from(reg: AsmRegisterDr) -> Self {
reg.register
}
}
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
#[rustfmt::skip]
#[repr(transparent)]
pub struct AsmRegisterTr {
register: Register,
}
#[rustfmt::skip]
impl AsmRegisterTr {
#[must_use]
#[inline]
pub(crate) const fn new(register: Register) -> Self {
Self { register }
}
#[must_use]
#[inline]
pub(crate) fn register(&self) -> Register {
self.register
}
}
#[rustfmt::skip]
impl From<AsmRegisterTr> for Register {
#[inline]
fn from(reg: AsmRegisterTr) -> Self {
reg.register
}
}
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
#[rustfmt::skip]
#[repr(transparent)]
pub struct AsmRegisterSt {
register: Register,
}
#[rustfmt::skip]
impl AsmRegisterSt {
#[must_use]
#[inline]
pub(crate) const fn new(register: Register) -> Self {
Self { register }
}
#[must_use]
#[inline]
pub(crate) fn register(&self) -> Register {
self.register
}
}
#[rustfmt::skip]
impl From<AsmRegisterSt> for Register {
#[inline]
fn from(reg: AsmRegisterSt) -> Self {
reg.register
}
}
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
#[rustfmt::skip]
#[repr(transparent)]
pub struct AsmRegisterMm {
register: Register,
}
#[rustfmt::skip]
impl AsmRegisterMm {
#[must_use]
#[inline]
pub(crate) const fn new(register: Register) -> Self {
Self { register }
}
#[must_use]
#[inline]
pub(crate) fn register(&self) -> Register {
self.register
}
}
#[rustfmt::skip]
impl From<AsmRegisterMm> for Register {
#[inline]
fn from(reg: AsmRegisterMm) -> Self {
reg.register
}
}
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
#[rustfmt::skip]
pub struct AsmRegisterXmm {
register: Register,
state: CodeAsmOpState,
}
#[rustfmt::skip]
impl AsmRegisterXmm {
#[must_use]
#[inline]
pub(crate) const fn new(register: Register) -> Self {
Self { register, state: CodeAsmOpState::new() }
}
#[must_use]
#[inline]
pub(crate) fn register(&self) -> Register {
self.register
}
#[must_use]
#[inline]
pub(crate) fn state(&self) -> CodeAsmOpState {
self.state
}
#[must_use]
#[inline]
pub fn k1(mut self) -> Self {
self.state.set_k1();
self
}
#[must_use]
#[inline]
pub fn k2(mut self) -> Self {
self.state.set_k2();
self
}
#[must_use]
#[inline]
pub fn k3(mut self) -> Self {
self.state.set_k3();
self
}
#[must_use]
#[inline]
pub fn k4(mut self) -> Self {
self.state.set_k4();
self
}
#[must_use]
#[inline]
pub fn k5(mut self) -> Self {
self.state.set_k5();
self
}
#[must_use]
#[inline]
pub fn k6(mut self) -> Self {
self.state.set_k6();
self
}
#[must_use]
#[inline]
pub fn k7(mut self) -> Self {
self.state.set_k7();
self
}
#[must_use]
#[inline]
pub fn z(mut self) -> Self {
self.state.set_zeroing_masking();
self
}
#[must_use]
#[inline]
pub fn sae(mut self) -> Self {
self.state.set_suppress_all_exceptions();
self
}
#[must_use]
#[inline]
pub fn rn_sae(mut self) -> Self {
self.state.rn_sae();
self
}
#[must_use]
#[inline]
pub fn rd_sae(mut self) -> Self {
self.state.rd_sae();
self
}
#[must_use]
#[inline]
pub fn ru_sae(mut self) -> Self {
self.state.ru_sae();
self
}
#[must_use]
#[inline]
pub fn rz_sae(mut self) -> Self {
self.state.rz_sae();
self
}
}
#[rustfmt::skip]
impl From<AsmRegisterXmm> for Register {
#[inline]
fn from(reg: AsmRegisterXmm) -> Self {
reg.register
}
}
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
#[rustfmt::skip]
pub struct AsmRegisterYmm {
register: Register,
state: CodeAsmOpState,
}
#[rustfmt::skip]
impl AsmRegisterYmm {
#[must_use]
#[inline]
pub(crate) const fn new(register: Register) -> Self {
Self { register, state: CodeAsmOpState::new() }
}
#[must_use]
#[inline]
pub(crate) fn register(&self) -> Register {
self.register
}
#[must_use]
#[inline]
pub(crate) fn state(&self) -> CodeAsmOpState {
self.state
}
#[must_use]
#[inline]
pub fn k1(mut self) -> Self {
self.state.set_k1();
self
}
#[must_use]
#[inline]
pub fn k2(mut self) -> Self {
self.state.set_k2();
self
}
#[must_use]
#[inline]
pub fn k3(mut self) -> Self {
self.state.set_k3();
self
}
#[must_use]
#[inline]
pub fn k4(mut self) -> Self {
self.state.set_k4();
self
}
#[must_use]
#[inline]
pub fn k5(mut self) -> Self {
self.state.set_k5();
self
}
#[must_use]
#[inline]
pub fn k6(mut self) -> Self {
self.state.set_k6();
self
}
#[must_use]
#[inline]
pub fn k7(mut self) -> Self {
self.state.set_k7();
self
}
#[must_use]
#[inline]
pub fn z(mut self) -> Self {
self.state.set_zeroing_masking();
self
}
#[must_use]
#[inline]
pub fn sae(mut self) -> Self {
self.state.set_suppress_all_exceptions();
self
}
#[must_use]
#[inline]
pub fn rn_sae(mut self) -> Self {
self.state.rn_sae();
self
}
#[must_use]
#[inline]
pub fn rd_sae(mut self) -> Self {
self.state.rd_sae();
self
}
#[must_use]
#[inline]
pub fn ru_sae(mut self) -> Self {
self.state.ru_sae();
self
}
#[must_use]
#[inline]
pub fn rz_sae(mut self) -> Self {
self.state.rz_sae();
self
}
}
#[rustfmt::skip]
impl From<AsmRegisterYmm> for Register {
#[inline]
fn from(reg: AsmRegisterYmm) -> Self {
reg.register
}
}
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
#[rustfmt::skip]
pub struct AsmRegisterZmm {
register: Register,
state: CodeAsmOpState,
}
#[rustfmt::skip]
impl AsmRegisterZmm {
#[must_use]
#[inline]
pub(crate) const fn new(register: Register) -> Self {
Self { register, state: CodeAsmOpState::new() }
}
#[must_use]
#[inline]
pub(crate) fn register(&self) -> Register {
self.register
}
#[must_use]
#[inline]
pub(crate) fn state(&self) -> CodeAsmOpState {
self.state
}
#[must_use]
#[inline]
pub fn k1(mut self) -> Self {
self.state.set_k1();
self
}
#[must_use]
#[inline]
pub fn k2(mut self) -> Self {
self.state.set_k2();
self
}
#[must_use]
#[inline]
pub fn k3(mut self) -> Self {
self.state.set_k3();
self
}
#[must_use]
#[inline]
pub fn k4(mut self) -> Self {
self.state.set_k4();
self
}
#[must_use]
#[inline]
pub fn k5(mut self) -> Self {
self.state.set_k5();
self
}
#[must_use]
#[inline]
pub fn k6(mut self) -> Self {
self.state.set_k6();
self
}
#[must_use]
#[inline]
pub fn k7(mut self) -> Self {
self.state.set_k7();
self
}
#[must_use]
#[inline]
pub fn z(mut self) -> Self {
self.state.set_zeroing_masking();
self
}
#[must_use]
#[inline]
pub fn sae(mut self) -> Self {
self.state.set_suppress_all_exceptions();
self
}
#[must_use]
#[inline]
pub fn rn_sae(mut self) -> Self {
self.state.rn_sae();
self
}
#[must_use]
#[inline]
pub fn rd_sae(mut self) -> Self {
self.state.rd_sae();
self
}
#[must_use]
#[inline]
pub fn ru_sae(mut self) -> Self {
self.state.ru_sae();
self
}
#[must_use]
#[inline]
pub fn rz_sae(mut self) -> Self {
self.state.rz_sae();
self
}
}
#[rustfmt::skip]
impl From<AsmRegisterZmm> for Register {
#[inline]
fn from(reg: AsmRegisterZmm) -> Self {
reg.register
}
}
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
#[rustfmt::skip]
#[repr(transparent)]
pub struct AsmRegisterTmm {
register: Register,
}
#[rustfmt::skip]
impl AsmRegisterTmm {
#[must_use]
#[inline]
pub(crate) const fn new(register: Register) -> Self {
Self { register }
}
#[must_use]
#[inline]
pub(crate) fn register(&self) -> Register {
self.register
}
}
#[rustfmt::skip]
impl From<AsmRegisterTmm> for Register {
#[inline]
fn from(reg: AsmRegisterTmm) -> Self {
reg.register
}
}
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
#[rustfmt::skip]
pub struct AsmRegisterK {
register: Register,
state: CodeAsmOpState,
}
#[rustfmt::skip]
impl AsmRegisterK {
#[must_use]
#[inline]
pub(crate) const fn new(register: Register) -> Self {
Self { register, state: CodeAsmOpState::new() }
}
#[must_use]
#[inline]
pub(crate) fn register(&self) -> Register {
self.register
}
#[must_use]
#[inline]
pub(crate) fn state(&self) -> CodeAsmOpState {
self.state
}
#[must_use]
#[inline]
pub fn k1(mut self) -> Self {
self.state.set_k1();
self
}
#[must_use]
#[inline]
pub fn k2(mut self) -> Self {
self.state.set_k2();
self
}
#[must_use]
#[inline]
pub fn k3(mut self) -> Self {
self.state.set_k3();
self
}
#[must_use]
#[inline]
pub fn k4(mut self) -> Self {
self.state.set_k4();
self
}
#[must_use]
#[inline]
pub fn k5(mut self) -> Self {
self.state.set_k5();
self
}
#[must_use]
#[inline]
pub fn k6(mut self) -> Self {
self.state.set_k6();
self
}
#[must_use]
#[inline]
pub fn k7(mut self) -> Self {
self.state.set_k7();
self
}
#[must_use]
#[inline]
pub fn z(mut self) -> Self {
self.state.set_zeroing_masking();
self
}
#[must_use]
#[inline]
pub fn sae(mut self) -> Self {
self.state.set_suppress_all_exceptions();
self
}
#[must_use]
#[inline]
pub fn rn_sae(mut self) -> Self {
self.state.rn_sae();
self
}
#[must_use]
#[inline]
pub fn rd_sae(mut self) -> Self {
self.state.rd_sae();
self
}
#[must_use]
#[inline]
pub fn ru_sae(mut self) -> Self {
self.state.ru_sae();
self
}
#[must_use]
#[inline]
pub fn rz_sae(mut self) -> Self {
self.state.rz_sae();
self
}
}
#[rustfmt::skip]
impl From<AsmRegisterK> for Register {
#[inline]
fn from(reg: AsmRegisterK) -> Self {
reg.register
}
}
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
#[rustfmt::skip]
#[repr(transparent)]
pub struct AsmRegisterBnd {
register: Register,
}
#[rustfmt::skip]
impl AsmRegisterBnd {
#[must_use]
#[inline]
pub(crate) const fn new(register: Register) -> Self {
Self { register }
}
#[must_use]
#[inline]
pub(crate) fn register(&self) -> Register {
self.register
}
}
#[rustfmt::skip]
impl From<AsmRegisterBnd> for Register {
#[inline]
fn from(reg: AsmRegisterBnd) -> Self {
reg.register
}
}