[PATCH 3/4] x86: sub-divide APX_F - NF
Jan Beulich
jbeulich@suse.com
Fri Nov 28 09:00:52 GMT 2025
While spec version 007 introduced the three-way APX-NCI-NDD-NF, let's
split the three aspects (NCI, NDD, and NF) in gas. For NF we only need to
guard the {nf} pseudo-prefix.
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -1242,6 +1242,7 @@ static const arch_entry cpu_arch[] =
SUBARCH (apx_f, APX_F, ANY_APX_F, false),
SUBARCH (apx_nci, APX_NCI, ANY_APX_NCI, false),
SUBARCH (apx_ndd, APX_NDD, ANY_APX_NDD, false),
+ SUBARCH (apx_nf, APX_NF, ANY_APX_NF, false),
VECARCH (avx10.2, AVX10_2, ANY_AVX10_2, set),
SUBARCH (gmism2, GMISM2, GMISM2, false),
SUBARCH (gmiccs, GMICCS, GMICCS, false),
--- a/gas/doc/c-i386.texi
+++ b/gas/doc/c-i386.texi
@@ -222,6 +222,7 @@ accept various extension mnemonics. For
@code{apx_f},
@code{apx_nci},
@code{apx_ndd},
+@code{apx_nf},
@code{avx10.2},
@code{avx10.2/512},
@code{avx10.2/256},
@@ -1734,7 +1735,7 @@ supported on the CPU specified. The cho
@item @samp{.padlock} @tab @samp{.clzero} @tab @samp{.mwaitx} @tab @samp{.rdpru}
@item @samp{.mcommit} @tab @samp{.sev_es} @tab @samp{.snp} @tab @samp{.invlpgb}
@item @samp{.tlbsync} @tab @samp{.rmpquery} @tab @samp{.rmpread} @tab @samp{.apx_f}
-@item @samp{.apx_nci} @tab @samp{.apx_ndd}
+@item @samp{.apx_nci} @tab @samp{.apx_ndd} @tab @samp{.apx_nf}
@item @samp{.gmism2} @tab @samp{.gmiccs} @tab @samp{.padlockrng2} @tab @samp{.padlockphe2}
@item @samp{.padlockxmodx}
--- a/opcodes/i386-gen.c
+++ b/opcodes/i386-gen.c
@@ -303,6 +303,8 @@ static const dependency isa_dependencies
"APX_F" },
{ "APX_NDD",
"APX_F" },
+ { "APX_NF",
+ "APX_F" },
{ "PadLock",
"FXSR" },
{ "PadLockRNG2",
@@ -486,6 +488,7 @@ static bitfield cpu_flags[] =
BITFIELD (RMPREAD),
BITFIELD (APX_NCI),
BITFIELD (APX_NDD),
+ BITFIELD (APX_NF),
BITFIELD (64),
BITFIELD (No64),
#ifdef CpuUnused
--- a/opcodes/i386-opc.h
+++ b/opcodes/i386-opc.h
@@ -324,6 +324,8 @@ enum i386_cpu
CpuAPX_NCI,
/* Intel APX Non-Destructive Destination support required. */
CpuAPX_NDD,
+ /* Intel APX No-Flags-update support required. */
+ CpuAPX_NF,
/* NOTE: These items, which can be combined with other ISA flags above, need
to remain second to last and in sync with CPU_FLAGS_COMMON. */
@@ -561,6 +563,7 @@ typedef union i386_cpu_flags
unsigned int cpurmpread:1;
unsigned int cpuapx_nci:1;
unsigned int cpuapx_ndd:1;
+ unsigned int cpuapx_nf:1;
CPU_FLAGS_COMMON;
#ifdef CpuUnused
unsigned int unused:(CpuNumOfBits - CpuUnused);
--- a/opcodes/i386-opc.tbl
+++ b/opcodes/i386-opc.tbl
@@ -950,7 +950,7 @@ rex.wrxb, 0x4f, x64, NoSuf|IsPrefix, {}
<pseudopfx:ident:cpu, disp8:Disp8:0, disp16:Disp16:No64, disp32:Disp32:i386, +
load:Load:0, store:Store:0, +
vex:VEX:0, vex2:VEX:0, vex3:VEX3:0, evex:EVEX:0, +
- rex:REX:x64, rex2:REX2:APX_F, nf:NF:APX_F, +
+ rex:REX:x64, rex2:REX2:APX_F, nf:NF:APX_NF, +
nooptimize:NoOptimize:0, noimm8s:NoImm8s:0>
{<pseudopfx>}, PSEUDO_PREFIX/Prefix_<pseudopfx:ident>, <pseudopfx:cpu>, NoSuf|IsPrefix, {}
More information about the Binutils
mailing list