Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
0e4beba
Add basic triagebot configuration
Urgau Jan 29, 2026
bad7930
Merge pull request #504 from Urgau/triagebot-config
calebzulawski Jan 29, 2026
01f91e4
Add `Select` and `ToBytes` to prelude
okaneco Feb 7, 2026
e797bc7
Merge pull request #506 from okaneco/prelude
programmerjake Feb 8, 2026
a8af194
docs(simd): fix `load_select_or_default` documentation
b01o Feb 8, 2026
08aa04d
show both kinds of masking-out elements in the example
b01o Feb 8, 2026
81dcf4c
more clear example
b01o Feb 8, 2026
b6a0170
Merge pull request #507 from b01o/fix-doc-simd-load-select-or-default
programmerjake Feb 8, 2026
af51712
Fix typos in documentation
him2him2 Feb 10, 2026
b8bef67
Merge pull request #508 from him2him2/fix-typos
programmerjake Feb 10, 2026
e66819d
Add round_ties_even to StdFloat trait
zRedShift Feb 21, 2026
dc5ab0d
update `proptest` from `0.10` to `1.0`
folkertdev Mar 14, 2026
5c37faf
Add tests for `Mask::first_set`
Kmeakin Mar 14, 2026
b99b62c
Optimize `Mask::first_set`
Kmeakin Mar 14, 2026
7d6df68
Merge pull request #511 from folkertdev/update-proptest
calebzulawski Mar 14, 2026
3bc9bcf
Merge pull request #512 from Kmeakin/km/simd-first-set
calebzulawski Mar 14, 2026
99e9d40
Merge pull request #510 from zRedShift/add-round-ties-even
calebzulawski Mar 15, 2026
ed150fb
bump toolchain to `nightly-2026-03-18`
folkertdev Mar 18, 2026
0c17257
Merge pull request #514 from folkertdev/toolchain-bump
calebzulawski Mar 19, 2026
8ada24a
Add support for Hexagon HVX (#509)
androm3da Mar 27, 2026
63d7f8e
Initial methods to start on transmute v2
scottmcm Apr 10, 2026
6bcd172
add `cfg(target_object_format = "...")`
Apr 10, 2026
9371fea
fix spurious test failure in `metadata_access_times`
mattiapitossi Apr 11, 2026
8998c11
add next-solver min-specialization region-resolution regression test
TaKO8Ki Apr 11, 2026
40a3ed1
propagate region resolution failures
TaKO8Ki Apr 11, 2026
0557e34
Add `f16` vector support (#513)
folkertdev Apr 11, 2026
a133bb8
replace @ ty::AliasTy matches with just args
WilliamTakeshi Apr 11, 2026
aa656a9
Merge commit '0557e3478104037c76c2e5be7ea21e56ebbaff6e' into sync-fro…
folkertdev Apr 11, 2026
c4e4156
Reduce size of `ImportData`
mejrs Apr 11, 2026
d83352b
Rollup merge of #155084 - scottmcm:add-transmute-prefix, r=Mark-Simul…
jhpratt Apr 12, 2026
1700a21
Rollup merge of #155126 - folkertdev:target-object-format, r=Urgau
jhpratt Apr 12, 2026
d82e5e6
Rollup merge of #155165 - folkertdev:sync-from-portable-simd-2026-04-…
jhpratt Apr 12, 2026
af4f14b
Rollup merge of #153871 - mattiapitossi:issue-148408, r=Mark-Simulacrum
jhpratt Apr 12, 2026
6d7015c
Rollup merge of #155150 - WilliamTakeshi:alias-ty-args-binding, r=Waf…
jhpratt Apr 12, 2026
22328dc
Rollup merge of #155159 - TaKO8Ki:min-specialization-next-solver-regi…
jhpratt Apr 12, 2026
040b6db
Rollup merge of #155167 - mejrs:box_directive, r=Kivooeo
jhpratt Apr 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions compiler/rustc_abi/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ use rustc_hashes::Hash64;
use rustc_index::{Idx, IndexSlice, IndexVec};
#[cfg(feature = "nightly")]
use rustc_macros::{Decodable_NoContext, Encodable_NoContext, HashStable_Generic};
#[cfg(feature = "nightly")]
use rustc_span::{Symbol, sym};

mod callconv;
mod canon_abi;
Expand Down Expand Up @@ -770,6 +772,14 @@ impl Endian {
Self::Big => "big",
}
}

#[cfg(feature = "nightly")]
pub fn desc_symbol(&self) -> Symbol {
match self {
Self::Little => sym::little,
Self::Big => sym::big,
}
}
}

impl fmt::Debug for Endian {
Expand Down
8 changes: 4 additions & 4 deletions compiler/rustc_borrowck/src/diagnostics/opaque_types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -219,12 +219,12 @@ impl<'tcx> TypeVisitor<TyCtxt<'tcx>> for FindOpaqueRegion<'_, 'tcx> {
fn visit_ty(&mut self, ty: Ty<'tcx>) -> Self::Result {
// If we find an opaque in a local ty, then for each of its captured regions,
// try to find a path between that captured regions and our borrow region...
if let ty::Alias(opaque @ ty::AliasTy { kind: ty::Opaque { def_id }, .. }) = *ty.kind()
if let ty::Alias(ty::AliasTy { kind: ty::Opaque { def_id }, args, .. }) = *ty.kind()
&& let hir::OpaqueTyOrigin::FnReturn { parent, in_trait_or_impl: None } =
self.tcx.opaque_ty_origin(def_id)
{
let variances = self.tcx.variances_of(def_id);
for (idx, (arg, variance)) in std::iter::zip(opaque.args, variances).enumerate() {
for (idx, (arg, variance)) in std::iter::zip(args, variances).enumerate() {
// Skip uncaptured args.
if *variance == ty::Bivariant {
continue;
Expand Down Expand Up @@ -276,12 +276,12 @@ impl<'tcx> TypeVisitor<TyCtxt<'tcx>> for CheckExplicitRegionMentionAndCollectGen

fn visit_ty(&mut self, ty: Ty<'tcx>) -> Self::Result {
match *ty.kind() {
ty::Alias(opaque @ ty::AliasTy { kind: ty::Opaque { def_id }, .. }) => {
ty::Alias(ty::AliasTy { kind: ty::Opaque { def_id }, args, .. }) => {
if self.seen_opaques.insert(def_id) {
for (bound, _) in self
.tcx
.explicit_item_bounds(def_id)
.iter_instantiated_copied(self.tcx, opaque.args)
.iter_instantiated_copied(self.tcx, args)
{
bound.visit_with(self)?;
}
Expand Down
1 change: 1 addition & 0 deletions compiler/rustc_feature/src/builtin_attrs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ const GATED_CFGS: &[GatedCfg] = &[
sym::cfg_target_has_reliable_f16_f128,
Features::cfg_target_has_reliable_f16_f128,
),
(sym::target_object_format, sym::cfg_target_object_format, Features::cfg_target_object_format),
];

/// Find a gated cfg determined by the `pred`icate which is given the cfg's name.
Expand Down
2 changes: 2 additions & 0 deletions compiler/rustc_feature/src/unstable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,8 @@ declare_features! (
(unstable, cfg_target_has_atomic, "1.60.0", Some(94039)),
/// Allows `cfg(target_has_atomic_equal_alignment = "...")`.
(unstable, cfg_target_has_atomic_equal_alignment, "1.60.0", Some(93822)),
/// Allows `cfg(target_object_format = "...")`.
(unstable, cfg_target_object_format, "CURRENT_RUSTC_VERSION", Some(152586)),
/// Allows `cfg(target_thread_local)`.
(unstable, cfg_target_thread_local, "1.7.0", Some(29594)),
/// Allows the use of `#[cfg(ub_checks)` to check if UB checks are enabled.
Expand Down
4 changes: 2 additions & 2 deletions compiler/rustc_hir_analysis/src/check/check.rs
Original file line number Diff line number Diff line change
Expand Up @@ -523,8 +523,8 @@ fn sanity_check_found_hidden_type<'tcx>(
// Nothing was actually constrained.
return Ok(());
}
if let &ty::Alias(alias @ ty::AliasTy { kind: ty::Opaque { def_id }, .. }) = ty.ty.kind() {
if def_id == key.def_id.to_def_id() && alias.args == key.args {
if let &ty::Alias(ty::AliasTy { kind: ty::Opaque { def_id }, args, .. }) = ty.ty.kind() {
if def_id == key.def_id.to_def_id() && args == key.args {
// Nothing was actually constrained, this is an opaque usage that was
// only discovered to be opaque after inference vars resolved.
return Ok(());
Expand Down
13 changes: 7 additions & 6 deletions compiler/rustc_hir_analysis/src/check/compare_impl_item.rs
Original file line number Diff line number Diff line change
Expand Up @@ -820,24 +820,25 @@ where
}

fn fold_ty(&mut self, ty: Ty<'tcx>) -> Ty<'tcx> {
if let &ty::Alias(proj @ ty::AliasTy { kind: ty::Projection { def_id }, .. }) = ty.kind()
if let &ty::Alias(ty::AliasTy { kind: ty::Projection { def_id }, args: proj_args, .. }) =
ty.kind()
&& self.cx().is_impl_trait_in_trait(def_id)
{
if let Some((ty, _)) = self.types.get(&def_id) {
return *ty;
}
//FIXME(RPITIT): Deny nested RPITIT in args too
if proj.args.has_escaping_bound_vars() {
if proj_args.has_escaping_bound_vars() {
bug!("FIXME(RPITIT): error here");
}
// Replace with infer var
let infer_ty = self.ocx.infcx.next_ty_var(self.span);
self.types.insert(def_id, (infer_ty, proj.args));
self.types.insert(def_id, (infer_ty, proj_args));
// Recurse into bounds
for (pred, pred_span) in self
.cx()
.explicit_item_bounds(def_id)
.iter_instantiated_copied(self.cx(), proj.args)
.iter_instantiated_copied(self.cx(), proj_args)
{
let pred = pred.fold_with(self);
let pred = self.ocx.normalize(
Expand Down Expand Up @@ -2707,8 +2708,8 @@ fn param_env_with_gat_bounds<'tcx>(
let bound_vars = tcx.mk_bound_variable_kinds(&bound_vars);

match normalize_impl_ty.kind() {
&ty::Alias(proj @ ty::AliasTy { kind: ty::Projection { def_id }, .. })
if def_id == trait_ty.def_id && proj.args == rebased_args =>
&ty::Alias(ty::AliasTy { kind: ty::Projection { def_id }, args, .. })
if def_id == trait_ty.def_id && args == rebased_args =>
{
// Don't include this predicate if the projected type is
// exactly the same as the projection. This can occur in
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -308,9 +308,9 @@ fn report_mismatched_rpitit_signature<'tcx>(
let mut return_ty = trait_m_sig.output().fold_with(&mut super::RemapLateParam { tcx, mapping });

if tcx.asyncness(impl_m_def_id).is_async() && tcx.asyncness(trait_m_def_id).is_async() {
let &ty::Alias(
future_ty @ ty::AliasTy { kind: ty::Projection { def_id: future_ty_def_id }, .. },
) = return_ty.kind()
let &ty::Alias(ty::AliasTy {
kind: ty::Projection { def_id: future_ty_def_id }, args, ..
}) = return_ty.kind()
else {
span_bug!(
tcx.def_span(trait_m_def_id),
Expand All @@ -319,7 +319,7 @@ fn report_mismatched_rpitit_signature<'tcx>(
};
let Some(future_output_ty) = tcx
.explicit_item_bounds(future_ty_def_id)
.iter_instantiated_copied(tcx, future_ty.args)
.iter_instantiated_copied(tcx, args)
.find_map(|(clause, _)| match clause.kind().no_bound_vars()? {
ty::ClauseKind::Projection(proj) => proj.term.as_type(),
_ => None,
Expand Down
4 changes: 2 additions & 2 deletions compiler/rustc_hir_analysis/src/check/wfcheck.rs
Original file line number Diff line number Diff line change
Expand Up @@ -773,10 +773,10 @@ impl<'tcx> GATArgsCollector<'tcx> {
impl<'tcx> TypeVisitor<TyCtxt<'tcx>> for GATArgsCollector<'tcx> {
fn visit_ty(&mut self, t: Ty<'tcx>) {
match t.kind() {
&ty::Alias(p @ ty::AliasTy { kind: ty::Projection { def_id }, .. })
&ty::Alias(ty::AliasTy { kind: ty::Projection { def_id }, args, .. })
if def_id == self.gat =>
{
for (idx, arg) in p.args.iter().enumerate() {
for (idx, arg) in args.iter().enumerate() {
match arg.kind() {
GenericArgKind::Lifetime(lt) if !lt.is_bound() => {
self.regions.insert((lt, idx));
Expand Down
13 changes: 6 additions & 7 deletions compiler/rustc_hir_analysis/src/collect/item_bounds.rs
Original file line number Diff line number Diff line change
Expand Up @@ -549,17 +549,16 @@ impl<'tcx> TypeFolder<TyCtxt<'tcx>> for AssocTyToOpaque<'tcx> {
}

fn fold_ty(&mut self, ty: Ty<'tcx>) -> Ty<'tcx> {
if let &ty::Alias(
projection_ty @ ty::AliasTy {
kind: ty::Projection { def_id: projection_ty_def_id },
..
},
) = ty.kind()
if let &ty::Alias(ty::AliasTy {
kind: ty::Projection { def_id: projection_ty_def_id },
args,
..
}) = ty.kind()
&& let Some(ty::ImplTraitInTraitData::Trait { fn_def_id, .. }) =
self.tcx.opt_rpitit_info(projection_ty_def_id)
&& fn_def_id == self.fn_def_id
{
self.tcx.type_of(projection_ty_def_id).instantiate(self.tcx, projection_ty.args)
self.tcx.type_of(projection_ty_def_id).instantiate(self.tcx, args)
} else {
ty.super_fold_with(self)
}
Expand Down
12 changes: 6 additions & 6 deletions compiler/rustc_hir_analysis/src/collect/predicates_of.rs
Original file line number Diff line number Diff line change
Expand Up @@ -513,13 +513,13 @@ pub(super) fn explicit_predicates_of<'tcx>(
// identity args of the trait.
// * It must be an associated type for this trait (*not* a
// supertrait).
if let &ty::Alias(
projection @ ty::AliasTy {
kind: ty::Projection { def_id: projection_def_id }, ..
},
) = ty.kind()
if let &ty::Alias(ty::AliasTy {
kind: ty::Projection { def_id: projection_def_id },
args,
..
}) = ty.kind()
{
projection.args == trait_identity_args
args == trait_identity_args
// FIXME(return_type_notation): This check should be more robust
&& !tcx.is_impl_trait_in_trait(projection_def_id)
&& tcx.parent(projection_def_id) == def_id.to_def_id()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ fn get_impl_args(
}

let assumed_wf_types = ocx.assumed_wf_types_and_report_errors(param_env, impl1_def_id)?;
let _ = ocx.resolve_regions_and_report_errors(impl1_def_id, param_env, assumed_wf_types);
ocx.resolve_regions_and_report_errors(impl1_def_id, param_env, assumed_wf_types)?;
let Ok(impl2_args) = infcx.fully_resolve(impl2_args) else {
let span = tcx.def_span(impl1_def_id);
let guar = tcx.dcx().emit_err(GenericArgsOnOverriddenImpl { span });
Expand Down
11 changes: 5 additions & 6 deletions compiler/rustc_lint/src/impl_trait_overcaptures.rs
Original file line number Diff line number Diff line change
Expand Up @@ -242,13 +242,12 @@ where
return;
}

if let ty::Alias(opaque_ty @ ty::AliasTy { kind: ty::Projection { def_id }, .. }) =
*t.kind()
if let ty::Alias(ty::AliasTy { kind: ty::Projection { def_id }, args, .. }) = *t.kind()
&& self.tcx.is_impl_trait_in_trait(def_id)
{
// visit the opaque of the RPITIT
self.tcx.type_of(def_id).instantiate(self.tcx, opaque_ty.args).visit_with(self)
} else if let ty::Alias(opaque_ty @ ty::AliasTy { kind: ty::Opaque { def_id}, .. }) = *t.kind()
self.tcx.type_of(def_id).instantiate(self.tcx, args).visit_with(self)
} else if let ty::Alias(ty::AliasTy { kind: ty::Opaque { def_id }, args: opaque_ty_args, .. }) = *t.kind()
&& let Some(opaque_def_id) = def_id.as_local()
// Don't recurse infinitely on an opaque
&& self.seen.insert(opaque_def_id)
Expand Down Expand Up @@ -280,7 +279,7 @@ where
continue;
}

let arg = opaque_ty.args[param.index as usize];
let arg = opaque_ty_args[param.index as usize];
// We need to turn all `ty::Param`/`ConstKind::Param` and
// `ReEarlyParam`/`ReBound` into def ids.
captured.insert(extract_def_id_from_arg(self.tcx, generics, arg));
Expand Down Expand Up @@ -413,7 +412,7 @@ where
// in this lint as well. Interestingly, one place that I expect this lint to fire
// is for `impl for<'a> Bound<Out = impl Other>`, since `impl Other` will begin
// to capture `'a` in e2024 (even though late-bound vars in opaques are not allowed).
for clause in self.tcx.item_bounds(def_id).iter_instantiated(self.tcx, opaque_ty.args) {
for clause in self.tcx.item_bounds(def_id).iter_instantiated(self.tcx, opaque_ty_args) {
clause.visit_with(self)
}
}
Expand Down
6 changes: 3 additions & 3 deletions compiler/rustc_pattern_analysis/src/rustc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -126,12 +126,12 @@ impl<'p, 'tcx: 'p> RustcPatCtxt<'p, 'tcx> {
#[inline]
pub fn reveal_opaque_ty(&self, ty: Ty<'tcx>) -> RevealedTy<'tcx> {
fn reveal_inner<'tcx>(cx: &RustcPatCtxt<'_, 'tcx>, ty: Ty<'tcx>) -> RevealedTy<'tcx> {
let ty::Alias(alias_ty @ ty::AliasTy { kind: ty::Opaque { .. }, .. }) = *ty.kind()
let ty::Alias(ty::AliasTy { kind: ty::Opaque { def_id }, args, .. }) = *ty.kind()
else {
bug!()
};
if let Some(local_def_id) = alias_ty.kind.def_id().as_local() {
let key = ty::OpaqueTypeKey { def_id: local_def_id, args: alias_ty.args };
if let Some(local_def_id) = def_id.as_local() {
let key = ty::OpaqueTypeKey { def_id: local_def_id, args };
if let Some(ty) = cx.reveal_opaque_key(key) {
return RevealedTy(ty);
}
Expand Down
4 changes: 2 additions & 2 deletions compiler/rustc_resolve/src/imports.rs
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ impl<'ra> std::fmt::Debug for ImportKind<'ra> {

#[derive(Debug, Clone, Default)]
pub(crate) struct OnUnknownData {
directive: Directive,
directive: Box<Directive>,
}

impl OnUnknownData {
Expand All @@ -161,7 +161,7 @@ impl OnUnknownData {
Some(tcx.features()),
)
{
Some(Self { directive: *directive? })
Some(Self { directive: Box::new(*directive?) })
} else {
None
}
Expand Down
11 changes: 8 additions & 3 deletions compiler/rustc_session/src/config/cfg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ pub(crate) fn disallow_cfgs(sess: &Session, user_cfgs: &Cfg) {
| (sym::target_endian, Some(_))
| (sym::target_env, None | Some(_))
| (sym::target_family, Some(_))
| (sym::target_object_format, Some(_))
| (sym::target_os, Some(_))
| (sym::target_pointer_width, Some(_))
| (sym::target_vendor, None | Some(_))
Expand Down Expand Up @@ -252,8 +253,9 @@ pub(crate) fn default_configuration(sess: &Session) -> Cfg {

ins_sym!(sym::target_abi, sess.target.cfg_abi.desc_symbol());
ins_sym!(sym::target_arch, sess.target.arch.desc_symbol());
ins_str!(sym::target_endian, sess.target.endian.as_str());
ins_sym!(sym::target_endian, sess.target.endian.desc_symbol());
ins_sym!(sym::target_env, sess.target.env.desc_symbol());
ins_sym!(sym::target_object_format, sess.target.options.binary_format.desc_symbol());

for family in sess.target.families.as_ref() {
ins_str!(sym::target_family, family);
Expand Down Expand Up @@ -420,12 +422,13 @@ impl CheckCfg {

// sym::target_*
{
const VALUES: [&Symbol; 8] = [
const VALUES: [&Symbol; 9] = [
&sym::target_abi,
&sym::target_arch,
&sym::target_endian,
&sym::target_env,
&sym::target_family,
&sym::target_object_format,
&sym::target_os,
&sym::target_pointer_width,
&sym::target_vendor,
Expand All @@ -449,6 +452,7 @@ impl CheckCfg {
Some(values_target_endian),
Some(values_target_env),
Some(values_target_family),
Some(values_target_object_format),
Some(values_target_os),
Some(values_target_pointer_width),
Some(values_target_vendor),
Expand All @@ -460,11 +464,12 @@ impl CheckCfg {
for target in Target::builtins().chain(iter::once(current_target.clone())) {
values_target_abi.insert(target.options.cfg_abi.desc_symbol());
values_target_arch.insert(target.arch.desc_symbol());
values_target_endian.insert(Symbol::intern(target.options.endian.as_str()));
values_target_endian.insert(target.options.endian.desc_symbol());
values_target_env.insert(target.options.env.desc_symbol());
values_target_family.extend(
target.options.families.iter().map(|family| Symbol::intern(family)),
);
values_target_object_format.insert(target.options.binary_format.desc_symbol());
values_target_os.insert(target.options.os.desc_symbol());
values_target_pointer_width.insert(sym::integer(target.pointer_width));
values_target_vendor.insert(target.vendor_symbol());
Expand Down
8 changes: 8 additions & 0 deletions compiler/rustc_span/src/symbol.rs
Original file line number Diff line number Diff line change
Expand Up @@ -589,6 +589,7 @@ symbols! {
cfg_target_has_atomic,
cfg_target_has_atomic_equal_alignment,
cfg_target_has_reliable_f16_f128,
cfg_target_object_format,
cfg_target_thread_local,
cfg_target_vendor,
cfg_trace: "<cfg_trace>", // must not be a valid identifier
Expand Down Expand Up @@ -623,6 +624,7 @@ symbols! {
coerce_pointee_validated,
coerce_shared,
coerce_unsized,
coff,
cold,
cold_path,
collapse_debuginfo,
Expand Down Expand Up @@ -853,6 +855,7 @@ symbols! {
eii_internals,
eii_shared_macro,
element_ty,
elf,
// Notes about `sym::empty`:
// - It should only be used when it genuinely means "empty symbol". Use
// `Option<Symbol>` when "no symbol" is a possibility.
Expand Down Expand Up @@ -1167,6 +1170,7 @@ symbols! {
linkonce_odr,
lint_reasons,
literal,
little, big,
load,
loaded_from_disk,
local,
Expand All @@ -1193,6 +1197,7 @@ symbols! {
lt,
m68k,
m68k_target_feature,
macho: "mach-o",
macro_at_most_once_rep,
macro_attr,
macro_attributes_in_derive_output,
Expand Down Expand Up @@ -2014,6 +2019,7 @@ symbols! {
target_has_reliable_f16_math,
target_has_reliable_f128,
target_has_reliable_f128_math,
target_object_format,
target_os,
target_pointer_width,
target_thread_local,
Expand Down Expand Up @@ -2237,6 +2243,7 @@ symbols! {
vtable_size,
warn,
wasip2,
wasm,
wasm32,
wasm64,
wasm_abi,
Expand Down Expand Up @@ -2271,6 +2278,7 @@ symbols! {
x86_amx_intrinsics,
x87_reg,
x87_target_feature,
xcoff,
xer,
xmm_reg,
xop_target_feature,
Expand Down
Loading
Loading