parent
d561a84d48
commit
9aac0c9ae3
@ -6,7 +6,9 @@
|
||||
use rustc_span::def_id::LocalDefId;
|
||||
use rustc_span::Symbol;
|
||||
use rustc_target::abi::FieldIdx;
|
||||
use rustc_target::asm::{InlineAsmReg, InlineAsmRegClass, InlineAsmRegOrRegClass, InlineAsmType};
|
||||
use rustc_target::asm::{
|
||||
InlineAsmReg, InlineAsmRegClass, InlineAsmRegOrRegClass, InlineAsmType, ModifierInfo,
|
||||
};
|
||||
|
||||
pub struct InlineAsmCtxt<'a, 'tcx> {
|
||||
tcx: TyCtxt<'tcx>,
|
||||
@ -253,8 +255,11 @@ fn check_asm_operand_type(
|
||||
}
|
||||
|
||||
// Check whether a modifier is suggested for using this type.
|
||||
if let Some((suggested_modifier, suggested_result)) =
|
||||
reg_class.suggest_modifier(asm_arch, asm_ty)
|
||||
if let Some(ModifierInfo {
|
||||
modifier: suggested_modifier,
|
||||
result: suggested_result,
|
||||
size: suggested_size,
|
||||
}) = reg_class.suggest_modifier(asm_arch, asm_ty)
|
||||
{
|
||||
// Search for any use of this operand without a modifier and emit
|
||||
// the suggestion for them.
|
||||
@ -268,8 +273,11 @@ fn check_asm_operand_type(
|
||||
}
|
||||
}
|
||||
if !spans.is_empty() {
|
||||
let (default_modifier, default_result) =
|
||||
reg_class.default_modifier(asm_arch).unwrap();
|
||||
let ModifierInfo {
|
||||
modifier: default_modifier,
|
||||
result: default_result,
|
||||
size: default_size,
|
||||
} = reg_class.default_modifier(asm_arch).unwrap();
|
||||
self.tcx.node_span_lint(
|
||||
lint::builtin::ASM_SUB_REGISTER,
|
||||
expr.hir_id,
|
||||
@ -278,10 +286,10 @@ fn check_asm_operand_type(
|
||||
|lint| {
|
||||
lint.span_label(expr.span, "for this argument");
|
||||
lint.help(format!(
|
||||
"use `{{{idx}:{suggested_modifier}}}` to have the register formatted as `{suggested_result}`",
|
||||
"use `{{{idx}:{suggested_modifier}}}` to have the register formatted as `{suggested_result}` (for {suggested_size}-bit values)",
|
||||
));
|
||||
lint.help(format!(
|
||||
"or use `{{{idx}:{default_modifier}}}` to keep the default formatting of `{default_result}`",
|
||||
"or use `{{{idx}:{default_modifier}}}` to keep the default formatting of `{default_result}` (for {default_size}-bit values)",
|
||||
));
|
||||
},
|
||||
);
|
||||
|
@ -1,4 +1,4 @@
|
||||
use super::{InlineAsmArch, InlineAsmType};
|
||||
use super::{InlineAsmArch, InlineAsmType, ModifierInfo};
|
||||
use crate::spec::{RelocModel, Target};
|
||||
use rustc_data_structures::fx::FxIndexSet;
|
||||
use rustc_macros::HashStable_Generic;
|
||||
@ -27,32 +27,28 @@ pub fn suggest_class(self, _arch: InlineAsmArch, _ty: InlineAsmType) -> Option<S
|
||||
None
|
||||
}
|
||||
|
||||
pub fn suggest_modifier(
|
||||
self,
|
||||
_arch: InlineAsmArch,
|
||||
ty: InlineAsmType,
|
||||
) -> Option<(char, &'static str)> {
|
||||
pub fn suggest_modifier(self, _arch: InlineAsmArch, ty: InlineAsmType) -> Option<ModifierInfo> {
|
||||
match self {
|
||||
Self::reg => match ty.size().bits() {
|
||||
64 => None,
|
||||
_ => Some(('w', "w0")),
|
||||
_ => Some(('w', "w0", 32).into()),
|
||||
},
|
||||
Self::vreg | Self::vreg_low16 => match ty.size().bits() {
|
||||
8 => Some(('b', "b0")),
|
||||
16 => Some(('h', "h0")),
|
||||
32 => Some(('s', "s0")),
|
||||
64 => Some(('d', "d0")),
|
||||
128 => Some(('q', "q0")),
|
||||
8 => Some(('b', "b0", 8).into()),
|
||||
16 => Some(('h', "h0", 16).into()),
|
||||
32 => Some(('s', "s0", 32).into()),
|
||||
64 => Some(('d', "d0", 64).into()),
|
||||
128 => Some(('q', "q0", 128).into()),
|
||||
_ => None,
|
||||
},
|
||||
Self::preg => None,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<(char, &'static str)> {
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<ModifierInfo> {
|
||||
match self {
|
||||
Self::reg => Some(('x', "x0")),
|
||||
Self::vreg | Self::vreg_low16 => Some(('v', "v0")),
|
||||
Self::reg => Some(('x', "x0", 64).into()),
|
||||
Self::vreg | Self::vreg_low16 => Some(('v', "v0", 128).into()),
|
||||
Self::preg => None,
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
use super::{InlineAsmArch, InlineAsmType};
|
||||
use super::{InlineAsmArch, InlineAsmType, ModifierInfo};
|
||||
use crate::spec::{RelocModel, Target};
|
||||
use rustc_data_structures::fx::FxIndexSet;
|
||||
use rustc_macros::HashStable_Generic;
|
||||
@ -35,11 +35,11 @@ pub fn suggest_modifier(
|
||||
self,
|
||||
_arch: InlineAsmArch,
|
||||
_ty: InlineAsmType,
|
||||
) -> Option<(char, &'static str)> {
|
||||
) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<(char, &'static str)> {
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
use super::{InlineAsmArch, InlineAsmType};
|
||||
use super::{InlineAsmArch, InlineAsmType, ModifierInfo};
|
||||
use rustc_macros::HashStable_Generic;
|
||||
use rustc_span::Symbol;
|
||||
use std::fmt;
|
||||
@ -29,11 +29,11 @@ pub fn suggest_modifier(
|
||||
self,
|
||||
_arch: InlineAsmArch,
|
||||
_ty: InlineAsmType,
|
||||
) -> Option<(char, &'static str)> {
|
||||
) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<(char, &'static str)> {
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
use super::{InlineAsmArch, InlineAsmType};
|
||||
use super::{InlineAsmArch, InlineAsmType, ModifierInfo};
|
||||
use rustc_macros::HashStable_Generic;
|
||||
use rustc_span::Symbol;
|
||||
use std::fmt;
|
||||
@ -23,11 +23,11 @@ pub fn suggest_modifier(
|
||||
self,
|
||||
_arch: InlineAsmArch,
|
||||
_ty: InlineAsmType,
|
||||
) -> Option<(char, &'static str)> {
|
||||
) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<(char, &'static str)> {
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
use super::{InlineAsmArch, InlineAsmType};
|
||||
use super::{InlineAsmArch, InlineAsmType, ModifierInfo};
|
||||
use rustc_macros::HashStable_Generic;
|
||||
use rustc_span::Symbol;
|
||||
use std::fmt;
|
||||
@ -23,11 +23,11 @@ pub fn suggest_modifier(
|
||||
self,
|
||||
_arch: InlineAsmArch,
|
||||
_ty: InlineAsmType,
|
||||
) -> Option<(char, &'static str)> {
|
||||
) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<(char, &'static str)> {
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
use super::{InlineAsmArch, InlineAsmType};
|
||||
use super::{InlineAsmArch, InlineAsmType, ModifierInfo};
|
||||
use rustc_macros::HashStable_Generic;
|
||||
use rustc_span::Symbol;
|
||||
use std::fmt;
|
||||
@ -22,11 +22,11 @@ pub fn suggest_modifier(
|
||||
self,
|
||||
_arch: InlineAsmArch,
|
||||
_ty: InlineAsmType,
|
||||
) -> Option<(char, &'static str)> {
|
||||
) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<(char, &'static str)> {
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
use super::{InlineAsmArch, InlineAsmType};
|
||||
use super::{InlineAsmArch, InlineAsmType, ModifierInfo};
|
||||
use rustc_macros::HashStable_Generic;
|
||||
use rustc_span::Symbol;
|
||||
use std::fmt;
|
||||
@ -23,11 +23,11 @@ pub fn suggest_modifier(
|
||||
self,
|
||||
_arch: InlineAsmArch,
|
||||
_ty: InlineAsmType,
|
||||
) -> Option<(char, &'static str)> {
|
||||
) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<(char, &'static str)> {
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
use super::{InlineAsmArch, InlineAsmType};
|
||||
use super::{InlineAsmArch, InlineAsmType, ModifierInfo};
|
||||
use rustc_macros::HashStable_Generic;
|
||||
use rustc_span::Symbol;
|
||||
use std::fmt;
|
||||
@ -24,11 +24,11 @@ pub fn suggest_modifier(
|
||||
self,
|
||||
_arch: InlineAsmArch,
|
||||
_ty: InlineAsmType,
|
||||
) -> Option<(char, &'static str)> {
|
||||
) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<(char, &'static str)> {
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
use super::{InlineAsmArch, InlineAsmType};
|
||||
use super::{InlineAsmArch, InlineAsmType, ModifierInfo};
|
||||
use rustc_macros::HashStable_Generic;
|
||||
use rustc_span::Symbol;
|
||||
use std::fmt;
|
||||
@ -23,11 +23,11 @@ pub fn suggest_modifier(
|
||||
self,
|
||||
_arch: InlineAsmArch,
|
||||
_ty: InlineAsmType,
|
||||
) -> Option<(char, &'static str)> {
|
||||
) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<(char, &'static str)> {
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,18 @@
|
||||
use std::fmt;
|
||||
use std::str::FromStr;
|
||||
|
||||
pub struct ModifierInfo {
|
||||
pub modifier: char,
|
||||
pub result: &'static str,
|
||||
pub size: u64,
|
||||
}
|
||||
|
||||
impl From<(char, &'static str, u64)> for ModifierInfo {
|
||||
fn from(value: (char, &'static str, u64)) -> Self {
|
||||
Self { modifier: value.0, result: value.1, size: value.2 }
|
||||
}
|
||||
}
|
||||
|
||||
macro_rules! def_reg_class {
|
||||
($arch:ident $arch_regclass:ident {
|
||||
$(
|
||||
@ -512,11 +524,7 @@ pub fn suggest_class(self, arch: InlineAsmArch, ty: InlineAsmType) -> Option<Sel
|
||||
/// Such suggestions are useful if a type smaller than the full register
|
||||
/// size is used and a modifier can be used to point to the subregister of
|
||||
/// the correct size.
|
||||
pub fn suggest_modifier(
|
||||
self,
|
||||
arch: InlineAsmArch,
|
||||
ty: InlineAsmType,
|
||||
) -> Option<(char, &'static str)> {
|
||||
pub fn suggest_modifier(self, arch: InlineAsmArch, ty: InlineAsmType) -> Option<ModifierInfo> {
|
||||
match self {
|
||||
Self::X86(r) => r.suggest_modifier(arch, ty),
|
||||
Self::Arm(r) => r.suggest_modifier(arch, ty),
|
||||
@ -545,7 +553,7 @@ pub fn suggest_modifier(
|
||||
/// This is only needed when the register class can suggest a modifier, so
|
||||
/// that the user can be shown how to get the default behavior without a
|
||||
/// warning.
|
||||
pub fn default_modifier(self, arch: InlineAsmArch) -> Option<(char, &'static str)> {
|
||||
pub fn default_modifier(self, arch: InlineAsmArch) -> Option<ModifierInfo> {
|
||||
match self {
|
||||
Self::X86(r) => r.default_modifier(arch),
|
||||
Self::Arm(r) => r.default_modifier(arch),
|
||||
|
@ -1,4 +1,4 @@
|
||||
use super::{InlineAsmArch, InlineAsmType};
|
||||
use super::{InlineAsmArch, InlineAsmType, ModifierInfo};
|
||||
use rustc_macros::HashStable_Generic;
|
||||
use rustc_span::Symbol;
|
||||
use std::fmt;
|
||||
@ -22,11 +22,11 @@ pub fn suggest_modifier(
|
||||
self,
|
||||
_arch: InlineAsmArch,
|
||||
_ty: InlineAsmType,
|
||||
) -> Option<(char, &'static str)> {
|
||||
) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<(char, &'static str)> {
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
use super::{InlineAsmArch, InlineAsmType};
|
||||
use super::{InlineAsmArch, InlineAsmType, ModifierInfo};
|
||||
use rustc_macros::HashStable_Generic;
|
||||
use rustc_span::Symbol;
|
||||
|
||||
@ -23,11 +23,11 @@ pub fn suggest_modifier(
|
||||
self,
|
||||
_arch: InlineAsmArch,
|
||||
_ty: InlineAsmType,
|
||||
) -> Option<(char, &'static str)> {
|
||||
) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<(char, &'static str)> {
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
use super::{InlineAsmArch, InlineAsmType};
|
||||
use super::{InlineAsmArch, InlineAsmType, ModifierInfo};
|
||||
use rustc_macros::HashStable_Generic;
|
||||
use rustc_span::Symbol;
|
||||
use std::fmt;
|
||||
@ -26,11 +26,11 @@ pub fn suggest_modifier(
|
||||
self,
|
||||
_arch: InlineAsmArch,
|
||||
_ty: InlineAsmType,
|
||||
) -> Option<(char, &'static str)> {
|
||||
) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<(char, &'static str)> {
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
use super::{InlineAsmArch, InlineAsmType};
|
||||
use super::{InlineAsmArch, InlineAsmType, ModifierInfo};
|
||||
use crate::spec::{RelocModel, Target};
|
||||
use rustc_data_structures::fx::FxIndexSet;
|
||||
use rustc_macros::HashStable_Generic;
|
||||
@ -26,11 +26,11 @@ pub fn suggest_modifier(
|
||||
self,
|
||||
_arch: InlineAsmArch,
|
||||
_ty: InlineAsmType,
|
||||
) -> Option<(char, &'static str)> {
|
||||
) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<(char, &'static str)> {
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
use super::{InlineAsmArch, InlineAsmType};
|
||||
use super::{InlineAsmArch, InlineAsmType, ModifierInfo};
|
||||
use rustc_macros::HashStable_Generic;
|
||||
use rustc_span::Symbol;
|
||||
use std::fmt;
|
||||
@ -24,11 +24,11 @@ pub fn suggest_modifier(
|
||||
self,
|
||||
_arch: InlineAsmArch,
|
||||
_ty: InlineAsmType,
|
||||
) -> Option<(char, &'static str)> {
|
||||
) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<(char, &'static str)> {
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
use super::{InlineAsmArch, InlineAsmType};
|
||||
use super::{InlineAsmArch, InlineAsmType, ModifierInfo};
|
||||
use rustc_macros::HashStable_Generic;
|
||||
use rustc_span::Symbol;
|
||||
|
||||
@ -21,11 +21,11 @@ pub fn suggest_modifier(
|
||||
self,
|
||||
_arch: InlineAsmArch,
|
||||
_ty: InlineAsmType,
|
||||
) -> Option<(char, &'static str)> {
|
||||
) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<(char, &'static str)> {
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
use super::{InlineAsmArch, InlineAsmType};
|
||||
use super::{InlineAsmArch, InlineAsmType, ModifierInfo};
|
||||
use rustc_macros::HashStable_Generic;
|
||||
use rustc_span::Symbol;
|
||||
|
||||
@ -21,11 +21,11 @@ pub fn suggest_modifier(
|
||||
self,
|
||||
_arch: InlineAsmArch,
|
||||
_ty: InlineAsmType,
|
||||
) -> Option<(char, &'static str)> {
|
||||
) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<(char, &'static str)> {
|
||||
pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<ModifierInfo> {
|
||||
None
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
use super::{InlineAsmArch, InlineAsmType};
|
||||
use super::{InlineAsmArch, InlineAsmType, ModifierInfo};
|
||||
use crate::spec::{RelocModel, Target};
|
||||
use rustc_data_structures::fx::FxIndexSet;
|
||||
use rustc_macros::HashStable_Generic;
|
||||
@ -53,32 +53,28 @@ pub fn suggest_class(self, _arch: InlineAsmArch, ty: InlineAsmType) -> Option<Se
|
||||
}
|
||||
}
|
||||
|
||||
pub fn suggest_modifier(
|
||||
self,
|
||||
arch: InlineAsmArch,
|
||||
ty: InlineAsmType,
|
||||
) -> Option<(char, &'static str)> {
|
||||
pub fn suggest_modifier(self, arch: InlineAsmArch, ty: InlineAsmType) -> Option<ModifierInfo> {
|
||||
match self {
|
||||
Self::reg => match ty.size().bits() {
|
||||
16 => Some(('x', "ax")),
|
||||
32 if arch == InlineAsmArch::X86_64 => Some(('e', "eax")),
|
||||
16 => Some(('x', "ax", 16).into()),
|
||||
32 if arch == InlineAsmArch::X86_64 => Some(('e', "eax", 32).into()),
|
||||
_ => None,
|
||||
},
|
||||
Self::reg_abcd => match ty.size().bits() {
|
||||
16 => Some(('x', "ax")),
|
||||
32 if arch == InlineAsmArch::X86_64 => Some(('e', "eax")),
|
||||
16 => Some(('x', "ax", 16).into()),
|
||||
32 if arch == InlineAsmArch::X86_64 => Some(('e', "eax", 32).into()),
|
||||
_ => None,
|
||||
},
|
||||
Self::reg_byte => None,
|
||||
Self::xmm_reg => None,
|
||||
Self::ymm_reg => match ty.size().bits() {
|
||||
256 => None,
|
||||
_ => Some(('x', "xmm0")),
|
||||
_ => Some(('x', "xmm0", 128).into()),
|
||||
},
|
||||
Self::zmm_reg => match ty.size().bits() {
|
||||
512 => None,
|
||||
256 => Some(('y', "ymm0")),
|
||||
_ => Some(('x', "xmm0")),
|
||||
256 => Some(('y', "ymm0", 256).into()),
|
||||
_ => Some(('x', "xmm0", 128).into()),
|
||||
},
|
||||
Self::kreg | Self::kreg0 => None,
|
||||
Self::mmx_reg | Self::x87_reg => None,
|
||||
@ -86,19 +82,19 @@ pub fn suggest_modifier(
|
||||
}
|
||||
}
|
||||
|
||||
pub fn default_modifier(self, arch: InlineAsmArch) -> Option<(char, &'static str)> {
|
||||
pub fn default_modifier(self, arch: InlineAsmArch) -> Option<ModifierInfo> {
|
||||
match self {
|
||||
Self::reg | Self::reg_abcd => {
|
||||
if arch == InlineAsmArch::X86_64 {
|
||||
Some(('r', "rax"))
|
||||
Some(('r', "rax", 64).into())
|
||||
} else {
|
||||
Some(('e', "eax"))
|
||||
Some(('e', "eax", 32).into())
|
||||
}
|
||||
}
|
||||
Self::reg_byte => None,
|
||||
Self::xmm_reg => Some(('x', "xmm0")),
|
||||
Self::ymm_reg => Some(('y', "ymm0")),
|
||||
Self::zmm_reg => Some(('z', "zmm0")),
|
||||
Self::xmm_reg => Some(('x', "xmm0", 128).into()),
|
||||
Self::ymm_reg => Some(('y', "ymm0", 256).into()),
|
||||
Self::zmm_reg => Some(('z', "zmm0", 512).into()),
|
||||
Self::kreg | Self::kreg0 => None,
|
||||
Self::mmx_reg | Self::x87_reg => None,
|
||||
Self::tmm_reg => None,
|
||||
|
Loading…
Reference in New Issue
Block a user