On 25.08.2026 22:19, Rohan Shenoy wrote:
> Add assembler and disassembler support for AVX10_V2_AUX instructions.
>
> AVX10_V2_AUX can be extended over AVX10.1, not only AVX10.2. Thus, the
> only name accepted for this feature is AVX10_V2_AUX/avx10v2aux.
I consider this a questionable justification, but well.
> --- a/gas/NEWS
> +++ b/gas/NEWS
> @@ -1,5 +1,8 @@
> -*- text -*-
>
> +* Add support for the x86 AVX10_V2_AUX instructions, providing FP8, FP4
> + and FP6 format conversion instructions.
As the list isn't complete, I'm inclined to suggest to omit it altogether.
> --- a/gas/config/tc-i386.c
> +++ b/gas/config/tc-i386.c
> @@ -1255,6 +1255,7 @@ static const arch_entry cpu_arch[] =
> VECARCH (avx10.1, AVX10_1, ANY_AVX512F, set),
> VECARCH (avx10.1aux, AVX10_1_AUX, ANY_AVX10_1_AUX, set),
> VECARCH (avx10.2, AVX10_2, ANY_AVX10_2, set),
> + VECARCH (avx10v2aux, AVX10_V2_AUX, ANY_AVX10_V2_AUX, set),
This will need re-basing over the other patch that I have just committed for
you. As it was clear that the other one would want to go in first, I wonder
why you didn't put the one here on top of that one right away (mentioning
the dependency in the post-commit-message area).
> --- /dev/null
> +++ b/gas/testsuite/gas/i386/x86-64-avx10_v2_aux-intel.d
> @@ -0,0 +1,188 @@
> +#objdump: -dw -Mintel
> +#name: x86-64 AVX10 V2 AUX (Intel disassembly)
> +#source: x86-64-avx10_v2_aux.s
> +
> +.*: +file format .*
> +
> +Disassembly of section \.text:
> +
> +#...
> +[a-f0-9]+ <_intel>:
> +\s*[a-f0-9]+:\s*62 f5 7e 08 39 c1\s+vcvtps2bf8\s+xmm0,xmm1
Please can you replace \s by [ ], like we do about everywhere else (especially
in newer tests)?
> +\s*[a-f0-9]+:\s*62 f5 7e 28 39 c1\s+vcvtps2bf8\s+xmm0,ymm1
> +\s*[a-f0-9]+:\s*62 f5 7e 48 39 c1\s+vcvtps2bf8\s+xmm0,zmm1
> +\s*[a-f0-9]+:\s*62 f5 7e 08 39 41 7f\s+vcvtps2bf8\s+xmm0,XMMWORD\s+PTR\s+\[rcx\+0x7f0\]
> +\s*[a-f0-9]+:\s*62 f5 7e 28 39 41 7f\s+vcvtps2bf8\s+xmm0,YMMWORD\s+PTR\s+\[rcx\+0xfe0\]
> +\s*[a-f0-9]+:\s*62 f5 7e 48 39 41 7f\s+vcvtps2bf8\s+xmm0,ZMMWORD\s+PTR\s+\[rcx\+0x1fc0\]
> +\s*[a-f0-9]+:\s*62 d5 7e 18 39 01\s+vcvtps2bf8\s+xmm0,DWORD\s+BCST\s+\[r9\]\{1to4\}
The fields between DWORD and BCST and [ really shouldn't be other than a single
blank. That'll then also help readability (and hence reviewability).
> --- /dev/null
> +++ b/gas/testsuite/gas/i386/x86-64-avx10_v2_aux.s
> @@ -0,0 +1,211 @@
> +# Check 64-bit AVX10 V2 AUX instructions
> +
> + .arch generic64
> + .arch .avx10v2aux
> + .text
> +_start:
> + .irp m, bf8, bf8s, hf8, hf8s
> + vcvtps2\m %xmm1, %xmm0
> + vcvtps2\m %ymm1, %xmm0
> + vcvtps2\m %zmm1, %xmm0
> + vcvtps2\m\()x 2032(%rcx), %xmm0
> + vcvtps2\m\()y 4064(%rcx), %xmm0
> + vcvtps2\m\()z 8128(%rcx), %xmm0
> + vcvtps2\m (%r9){1to4}, %xmm0
> + vcvtps2\m (%r9){1to8}, %xmm0
> + vcvtps2\m (%r9){1to16}, %xmm0
> + vcvtps2\m %xmm1, %xmm0{%k1}
> + vcvtps2\m %xmm1, %xmm0{%k1}{z}
> +
> + vcvtbiasps2\m %xmm2, %xmm1, %xmm0
> + vcvtbiasps2\m %ymm2, %ymm1, %xmm0
> + vcvtbiasps2\m %zmm2, %zmm1, %xmm0
> + vcvtbiasps2\m 2032(%rcx), %xmm1, %xmm0
> + vcvtbiasps2\m 4064(%rcx), %ymm1, %xmm0
> + vcvtbiasps2\m 8128(%rcx), %zmm1, %xmm0
> + vcvtbiasps2\m (%r9){1to4}, %xmm1, %xmm0
> + vcvtbiasps2\m (%r9){1to8}, %ymm1, %xmm0
> + vcvtbiasps2\m (%r9){1to16}, %zmm1, %xmm0
> + vcvtbiasps2\m %xmm2, %xmm1, %xmm0{%k1}
> + vcvtbiasps2\m %xmm2, %xmm1, %xmm0{%k1}{z}
> + .endr
> +
> + .irp m, hf8, hf8s
> + vcvtrops2\m %xmm1, %xmm0
> + vcvtrops2\m %ymm1, %xmm0
> + vcvtrops2\m %zmm1, %xmm0
> + vcvtrops2\m\()x 2032(%rcx), %xmm0
> + vcvtrops2\m\()y 4064(%rcx), %xmm0
> + vcvtrops2\m\()z 8128(%rcx), %xmm0
> + vcvtrops2\m (%r9){1to4}, %xmm0
> + vcvtrops2\m (%r9){1to8}, %xmm0
> + vcvtrops2\m (%r9){1to16}, %xmm0
> + vcvtrops2\m %xmm1, %xmm0{%k1}
> + vcvtrops2\m %xmm1, %xmm0{%k1}{z}
> + .endr
> +
> + .irp f, bf, hf
> + vcvt\f\()82ps %xmm1, %xmm0
> + vcvt\f\()82ps %xmm1, %ymm0
> + vcvt\f\()82ps %xmm1, %zmm0
> + vcvt\f\()82ps 508(%rcx), %xmm0
> + vcvt\f\()82ps 1016(%rcx), %ymm0
> + vcvt\f\()82ps 2032(%rcx), %zmm0
> + vcvt\f\()82ps %xmm1, %xmm0{%k1}
> + vcvt\f\()82ps %xmm1, %xmm0{%k1}{z}
> +
> + vcvt\f\()82bf4s %xmm1, %xmm0
> + vcvt\f\()82bf4s %ymm1, %xmm0
> + vcvt\f\()82bf4s %zmm1, %ymm0
> + vcvt\f\()82bf4s %xmm1, 1016(%rcx)
> + vcvt\f\()82bf4s %ymm1, 2032(%rcx)
> + vcvt\f\()82bf4s %zmm1, 4064(%rcx)
> +
> + .endr
Nit: Stray blank line above here (or another one wants inserting after the
.irp one, but then similarly in the other .irp above).
> + vcvtbf82bf6s %xmm1, %xmm0
> + vcvtbf82bf6s %ymm1, %ymm0
> + vcvtbf82bf6s %zmm1, %zmm0
> +
> + vcvthf82hf6s %xmm1, %xmm0
> + vcvthf82hf6s %ymm1, %ymm0
> + vcvthf82hf6s %zmm1, %zmm0
> +
> + vcvtbf42hf8 %xmm1, %xmm0
> + vcvtbf42hf8 %xmm1, %ymm0
> + vcvtbf42hf8 %ymm1, %zmm0
> + vcvtbf42hf8 1016(%rcx), %xmm0
> + vcvtbf42hf8 2032(%rcx), %ymm0
> + vcvtbf42hf8 4064(%rcx), %zmm0
> + vcvtbf42hf8 %xmm1, %xmm0{%k1}
> + vcvtbf42hf8 %xmm1, %xmm0{%k1}{z}
> +
> + .irp f, bf, hf
> + vcvt\f\()62hf8 %xmm1, %xmm0
> + vcvt\f\()62hf8 %ymm1, %ymm0
> + vcvt\f\()62hf8 %zmm1, %zmm0
> + vcvt\f\()62hf8 %xmm1, %xmm0{%k1}
> + vcvt\f\()62hf8 %xmm1, %xmm0{%k1}{z}
> + .endr
> +
> + vpmovssdb %xmm1, %xmm0
> + vpmovssdb %ymm1, %xmm0
> + vpmovssdb %zmm1, %xmm0
> + vpmovssdb %xmm1, 508(%rcx)
> + vpmovssdb %ymm1, 1016(%rcx)
> + vpmovssdb %zmm1, 2032(%rcx)
> + vpmovssdb %xmm1, %xmm0{%k1}
> + vpmovssdb %xmm1, %xmm0{%k1}{z}
> +
> + vunpackb $1, %xmm1, %xmm0
> + vunpackb $1, %ymm1, %ymm0
> + vunpackb $1, %zmm1, %zmm0
> + vunpackb $1, 2032(%rcx), %xmm0
> + vunpackb $1, 4064(%rcx), %ymm0
> + vunpackb $1, 8128(%rcx), %zmm0
> + vunpackb $1, %xmm1, %xmm0{%k1}
> + vunpackb $1, %xmm1, %xmm0{%k1}{z}
Please use immediates which are actually valid for the insn. We could
in principle add warnings for 0, 1, and everything 8 upwards, and doing
so should not result in the need to touch testcases like this one.
> --- a/opcodes/i386-dis-evex-mod.h
> +++ b/opcodes/i386-dis-evex-mod.h
> @@ -18,3 +18,18 @@
> { "enqcmd", { Gva, M }, 0 },
> { VEX_W_TABLE (EVEX_W_MAP4_F8_P3_M_1) },
> },
> + /* MOD_EVEX_MAP5_37_P_2 */
> + {
> + { Bad_Opcode },
> + { "vcvt%XF62hf8", { XM, EXx }, 0 },
> + },
> + /* MOD_EVEX_MAP5_3C_W_0_P_1 */
> + {
> + { Bad_Opcode },
> + { "vcvthf82hf6s", { XM, EXx }, 0 },
> + },
> + /* MOD_EVEX_MAP5_3E_W_1_P_1 */
> + {
> + { Bad_Opcode },
> + { "vcvtbf82bf6s", { XM, EXx }, 0 },
> + },
I think these can move up a level (i.e. without going through mod_table[]),
by using Ux in place of EXx. As you can see from other mod_table[] entries
(and respective prior commits), they always have both elements set to
something other than Bad_Opcode.
> --- a/opcodes/i386-dis-evex-w.h
> +++ b/opcodes/i386-dis-evex-w.h
> @@ -346,6 +346,11 @@
> {
> { "vpbroadcastmw2dY", { XM, MaskR }, 0 },
> },
> + /* EVEX_W_0F3841 */
> + {
> + { PREFIX_TABLE (PREFIX_EVEX_0F3841_W_0) },
> + { Bad_Opcode },
> + },
As you can see even from patch context here, there's no need for trailing
Bad_Opcode entries. Same about everywhere below.
> @@ -1935,6 +1958,7 @@ struct dis386 {
> "XH" => print 'h' if EVEX.W=0, EVEX.W=1 is not a valid encoding (for FP16)
> "XB" => print 'bf16' if EVEX.W=0, EVEX.W=1 is not a valid encoding
> (for BF16)
> + "XF" => print 'hf' if EVEX.W=0 or 'bf' if EVEX.W=1
HB would be the more natural name for this. Whether to include 'f' in the
expansion is uncertain, but I'm okay with keeping it like that for now (in
the interest of shorter string literals in the tables).
> @@ -11075,6 +11099,8 @@ putop (instr_info *ins, const char *in_template, int sizeflag)
> ins->used_prefixes |= (ins->prefixes & PREFIX_ADDR);
> }
> }
> + else if (l == 1 && last[0] == 'X')
> + oappend (ins, ins->vex.w ? "bf" : "hf");
I don't think using oappend() is valid here, as that'll insert markings
for dis_style_text. Like respective surrounding code does, you want to use
"*ins->obufp++ = ..." here.
> --- a/opcodes/i386-gen.c
> +++ b/opcodes/i386-gen.c
> @@ -251,6 +251,8 @@ static const dependency isa_dependencies[] =
> "AVX10_1" },
> { "AVX10_2",
> "AVX10_1_AUX" },
> + { "AVX10_V2_AUX",
> + "AVX10_1" },
Just to double check: It's not AVX_1_AUX that this wants to depend upon?
I.e. in particular full-fledged ACE demands only 10.1 plus v2-aux? (I'm
leaving aside whether really we want to have ACE have a dependency on
whatever AVX10 variant it builds upon.)
> --- a/opcodes/i386-opc.h
> +++ b/opcodes/i386-opc.h
> @@ -332,6 +332,8 @@ enum i386_cpu
> CpuAPX_NDD,
> /* Intel APX No-Flags-update support required. */
> CpuAPX_NF,
> + /* AVX10 V2 Auxiliary Instructions support required. */
> + CpuAVX10_V2_AUX,
I think this would best go right after CpuAVX10_1_AUX.
> --- a/opcodes/i386-opc.tbl
> +++ b/opcodes/i386-opc.tbl
> @@ -2266,6 +2266,13 @@ vpclmulhqhqdq, 0x6644/0x11, VPCLMULQDQ&(AVX|AVX512F), Modrm|Space0F3A|Vex|EVexDY
> x:AVX512VL:EVex128|Disp8MemShift=4|ATTSyntax:::RegXMM|Unspecified|BaseIndex:RegXMM, +
> y:AVX512VL:EVex256|Disp8MemShift=5|ATTSyntax:::RegYMM|Unspecified|BaseIndex:RegXMM>
>
> +<Exyz:attr:src, +
> + $i:Disp8ShiftVL|IntelSyntax:RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, +
> + $a:Disp8ShiftVL|ATTSyntax:RegXMM|RegYMM|RegZMM|BaseIndex, +
> + x:EVex128|Disp8MemShift=4|ATTSyntax:RegXMM|Unspecified|BaseIndex, +
> + y:EVex256|Disp8MemShift=5|ATTSyntax:RegYMM|Unspecified|BaseIndex, +
> + z:EVex512|Disp8MemShift=6|ATTSyntax:RegZMM|Unspecified|BaseIndex>
I can't quite spot why this is needed, i.e. why <xyz> cannot be reused.
> @@ -3614,6 +3621,62 @@ vucomxs<sdh>, 0x<sdh:spfx>2e, AVX10_2, Modrm|EVexLIG|<sdh:spc1>|<sdh:vexw>|Disp8
>
> // AVX10.2 instructions end.
>
> +// AVX10_V2_AUX instructions.
> +
> +<cvtps8:opc, +
> + bf8:39, +
> + bf8s:3b, +
> + hf8:38, +
> + hf8s:3a>
This can go on a single line.
> +vcvtps2<cvtps8><Exyz>, 0xf3<cvtps8:opc>, AVX10_V2_AUX, Modrm|Map5|<Exyz:attr>|VexW0|Masking|Broadcast|NoSuf, { <Exyz:src>|Dword, RegXMM }
> +
> +vcvtbiasps2<cvtps8>, 0x<cvtps8:opc>, AVX10_V2_AUX, Modrm|Map5|Src1VVVV|VexW0|Masking|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Dword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM }
> +
> +<cvtps8>
> +
> +<cvtrops8:opc, +
> + hf8:38, +
> + hf8s:3a>
Same here.
> +vcvtrops2<cvtrops8><Exyz>, 0x66<cvtrops8:opc>, AVX10_V2_AUX, Modrm|Map5|<Exyz:attr>|VexW0|Masking|Broadcast|NoSuf, { <Exyz:src>|Dword, RegXMM }
> +
> +<cvtrops8>
> +
> +<fp:vexw, +
> + hf:VexW0, +
> + bf:VexW1>
And here. For this one I further think <f8> would be a better name, and then
the '8' may want including in the expansions (but see below).
> +vcvt<fp>82ps, 0x36, AVX10_V2_AUX, Modrm|Map5|EVex128|<fp:vexw>|Masking|Disp8MemShift=2|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegXMM }
> +vcvt<fp>82ps, 0x36, AVX10_V2_AUX, Modrm|Map5|EVex256|<fp:vexw>|Masking|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegYMM }
> +vcvt<fp>82ps, 0x36, AVX10_V2_AUX, Modrm|Map5|EVex512|<fp:vexw>|Masking|Disp8MemShift=4|NoSuf, { RegXMM|Unspecified|BaseIndex, RegZMM }
> +
> +vcvt<fp>82bf4s, 0xf33d, AVX10_V2_AUX, RegMem|Map5|EVex128|<fp:vexw>|Disp8MemShift=3|NoSuf, { RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
> +vcvt<fp>82bf4s, 0xf33d, AVX10_V2_AUX, RegMem|Map5|EVex256|<fp:vexw>|Disp8MemShift=4|NoSuf, { RegYMM, RegXMM|Unspecified|BaseIndex }
> +vcvt<fp>82bf4s, 0xf33d, AVX10_V2_AUX, RegMem|Map5|EVex512|<fp:vexw>|Disp8MemShift=5|NoSuf, { RegZMM, RegYMM|Unspecified|BaseIndex }
> +
> +<fp>
> +
> +vcvtbf82bf6s, 0xf33e, AVX10_V2_AUX, Modrm|EVexDYN|Map5|VexW1|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
> +
> +vcvthf82hf6s, 0xf33c, AVX10_V2_AUX, Modrm|EVexDYN|Map5|VexW0|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
With an F6-opcode field added, <fp> from above looks to also be usable here.
Except that this may then need an adjustment to i386-gen, such that the
choice of h vs b can be suitably expressed for the 2nd occurrence of the
letters in the mnemonics. That is, without resorting to something like
<fp:form:vexw, $h:hf8:VexW0, $b:bf8:VexW1>
as that would result in somewhat awkward use in the mnemonics further up.
Overall - perhaps not worth it for the moment.
> +vcvtbf42hf8, 0x37, AVX10_V2_AUX, Modrm|Map5|EVex128|VexW0|Masking|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegXMM }
> +vcvtbf42hf8, 0x37, AVX10_V2_AUX, Modrm|Map5|EVex256|VexW0|Masking|Disp8MemShift=4|NoSuf, { RegXMM|Unspecified|BaseIndex, RegYMM }
> +vcvtbf42hf8, 0x37, AVX10_V2_AUX, Modrm|Map5|EVex512|VexW0|Masking|Disp8MemShift=5|NoSuf, { RegYMM|Unspecified|BaseIndex, RegZMM }
> +
> +vcvtbf62hf8, 0x6637, AVX10_V2_AUX, Modrm|Map5|VexW1|Masking|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
> +
> +vcvthf62hf8, 0x6637, AVX10_V2_AUX, Modrm|Map5|VexW0|Masking|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
Without the '8' included in the expansion, <fp> from above would be usable here
with no adjustment at all, afaict. Then <f8> may not be a good name, yet <fp>
also doesn't look overly suitable (for being too broad a name). Maybe <hb> or
<hbf>?
Jan
@@ -1,5 +1,8 @@
-*- text -*-
+* Add support for the x86 AVX10_V2_AUX instructions, providing FP8, FP4
+ and FP6 format conversion instructions.
+
* The avr target supports .gnu_attribute 4 (Tag_GNU_AVR_VTABLE_AS).
For details, see https://sourceware.org/PR34305
@@ -1255,6 +1255,7 @@ static const arch_entry cpu_arch[] =
VECARCH (avx10.1, AVX10_1, ANY_AVX512F, set),
VECARCH (avx10.1aux, AVX10_1_AUX, ANY_AVX10_1_AUX, set),
VECARCH (avx10.2, AVX10_2, ANY_AVX10_2, set),
+ VECARCH (avx10v2aux, AVX10_V2_AUX, ANY_AVX10_V2_AUX, set),
SUBARCH (user_msr, USER_MSR, USER_MSR, false),
SUBARCH (apx_f, APX_F, ANY_APX_F, false),
SUBARCH (apx_nci, APX_NCI, ANY_APX_NCI, false),
@@ -232,6 +232,7 @@ accept various extension mnemonics. For example,
@code{avx10.2/512},
@code{avx10.2/256},
@code{avx10.2/128},
+@code{avx10v2aux},
@code{movrs},
@code{amx_int8},
@code{amx_bf16},
@@ -1720,6 +1721,7 @@ supported on the CPU specified. The choices for @var{cpu_type} are:
@item @samp{.avx512_bitalg} @tab @samp{.avx512_bf16} @tab @samp{.avx512_vp2intersect}
@item @samp{.tdx} @tab @samp{.avx_vnni} @tab @samp{.avx512_fp16} @tab @samp{avx512_bmm}
@item @samp{.avx10.1} @tab @samp{.avx10.1aux} @tab @samp{.avx10.2} @tab @samp{.clwb}
+@item @samp{.avx10v2aux}
@item @samp{.rdpid} @tab @samp{.ptwrite} @tab @samp{.ibt} @tab @samp{.prefetchi}
@item @samp{.cmpccxadd} @tab @samp{.wrmsrns} @tab @samp{.msrlist} @tab @samp{.se1}
@item @samp{.avx_ne_convert} @tab @samp{.rao_int} @tab @samp{.fred} @tab @samp{.lkgs}
new file mode 100644
@@ -0,0 +1,188 @@
+#objdump: -dw -Mintel
+#name: x86-64 AVX10 V2 AUX (Intel disassembly)
+#source: x86-64-avx10_v2_aux.s
+
+.*: +file format .*
+
+Disassembly of section \.text:
+
+#...
+[a-f0-9]+ <_intel>:
+\s*[a-f0-9]+:\s*62 f5 7e 08 39 c1\s+vcvtps2bf8\s+xmm0,xmm1
+\s*[a-f0-9]+:\s*62 f5 7e 28 39 c1\s+vcvtps2bf8\s+xmm0,ymm1
+\s*[a-f0-9]+:\s*62 f5 7e 48 39 c1\s+vcvtps2bf8\s+xmm0,zmm1
+\s*[a-f0-9]+:\s*62 f5 7e 08 39 41 7f\s+vcvtps2bf8\s+xmm0,XMMWORD\s+PTR\s+\[rcx\+0x7f0\]
+\s*[a-f0-9]+:\s*62 f5 7e 28 39 41 7f\s+vcvtps2bf8\s+xmm0,YMMWORD\s+PTR\s+\[rcx\+0xfe0\]
+\s*[a-f0-9]+:\s*62 f5 7e 48 39 41 7f\s+vcvtps2bf8\s+xmm0,ZMMWORD\s+PTR\s+\[rcx\+0x1fc0\]
+\s*[a-f0-9]+:\s*62 d5 7e 18 39 01\s+vcvtps2bf8\s+xmm0,DWORD\s+BCST\s+\[r9\]\{1to4\}
+\s*[a-f0-9]+:\s*62 d5 7e 38 39 01\s+vcvtps2bf8\s+xmm0,DWORD\s+BCST\s+\[r9\]\{1to8\}
+\s*[a-f0-9]+:\s*62 d5 7e 58 39 01\s+vcvtps2bf8\s+xmm0,DWORD\s+BCST\s+\[r9\]\{1to16\}
+\s*[a-f0-9]+:\s*62 f5 7e 09 39 c1\s+vcvtps2bf8\s+xmm0\{k1\},xmm1
+\s*[a-f0-9]+:\s*62 f5 7e 89 39 c1\s+vcvtps2bf8\s+xmm0\{k1\}\{z\},xmm1
+\s*[a-f0-9]+:\s*62 f5 74 08 39 c2\s+vcvtbiasps2bf8\s+xmm0,xmm1,xmm2
+\s*[a-f0-9]+:\s*62 f5 74 28 39 c2\s+vcvtbiasps2bf8\s+xmm0,ymm1,ymm2
+\s*[a-f0-9]+:\s*62 f5 74 48 39 c2\s+vcvtbiasps2bf8\s+xmm0,zmm1,zmm2
+\s*[a-f0-9]+:\s*62 f5 74 08 39 41 7f\s+vcvtbiasps2bf8\s+xmm0,xmm1,XMMWORD\s+PTR\s+\[rcx\+0x7f0\]
+\s*[a-f0-9]+:\s*62 f5 74 28 39 41 7f\s+vcvtbiasps2bf8\s+xmm0,ymm1,YMMWORD\s+PTR\s+\[rcx\+0xfe0\]
+\s*[a-f0-9]+:\s*62 f5 74 48 39 41 7f\s+vcvtbiasps2bf8\s+xmm0,zmm1,ZMMWORD\s+PTR\s+\[rcx\+0x1fc0\]
+\s*[a-f0-9]+:\s*62 d5 74 18 39 01\s+vcvtbiasps2bf8\s+xmm0,xmm1,DWORD\s+BCST\s+\[r9\]
+\s*[a-f0-9]+:\s*62 d5 74 38 39 01\s+vcvtbiasps2bf8\s+xmm0,ymm1,DWORD\s+BCST\s+\[r9\]
+\s*[a-f0-9]+:\s*62 d5 74 58 39 01\s+vcvtbiasps2bf8\s+xmm0,zmm1,DWORD\s+BCST\s+\[r9\]
+\s*[a-f0-9]+:\s*62 f5 74 09 39 c2\s+vcvtbiasps2bf8\s+xmm0\{k1\},xmm1,xmm2
+\s*[a-f0-9]+:\s*62 f5 74 89 39 c2\s+vcvtbiasps2bf8\s+xmm0\{k1\}\{z\},xmm1,xmm2
+\s*[a-f0-9]+:\s*62 f5 7e 08 3b c1\s+vcvtps2bf8s\s+xmm0,xmm1
+\s*[a-f0-9]+:\s*62 f5 7e 28 3b c1\s+vcvtps2bf8s\s+xmm0,ymm1
+\s*[a-f0-9]+:\s*62 f5 7e 48 3b c1\s+vcvtps2bf8s\s+xmm0,zmm1
+\s*[a-f0-9]+:\s*62 f5 7e 08 3b 41 7f\s+vcvtps2bf8s\s+xmm0,XMMWORD\s+PTR\s+\[rcx\+0x7f0\]
+\s*[a-f0-9]+:\s*62 f5 7e 28 3b 41 7f\s+vcvtps2bf8s\s+xmm0,YMMWORD\s+PTR\s+\[rcx\+0xfe0\]
+\s*[a-f0-9]+:\s*62 f5 7e 48 3b 41 7f\s+vcvtps2bf8s\s+xmm0,ZMMWORD\s+PTR\s+\[rcx\+0x1fc0\]
+\s*[a-f0-9]+:\s*62 d5 7e 18 3b 01\s+vcvtps2bf8s\s+xmm0,DWORD\s+BCST\s+\[r9\]\{1to4\}
+\s*[a-f0-9]+:\s*62 d5 7e 38 3b 01\s+vcvtps2bf8s\s+xmm0,DWORD\s+BCST\s+\[r9\]\{1to8\}
+\s*[a-f0-9]+:\s*62 d5 7e 58 3b 01\s+vcvtps2bf8s\s+xmm0,DWORD\s+BCST\s+\[r9\]\{1to16\}
+\s*[a-f0-9]+:\s*62 f5 7e 09 3b c1\s+vcvtps2bf8s\s+xmm0\{k1\},xmm1
+\s*[a-f0-9]+:\s*62 f5 7e 89 3b c1\s+vcvtps2bf8s\s+xmm0\{k1\}\{z\},xmm1
+\s*[a-f0-9]+:\s*62 f5 74 08 3b c2\s+vcvtbiasps2bf8s\s+xmm0,xmm1,xmm2
+\s*[a-f0-9]+:\s*62 f5 74 28 3b c2\s+vcvtbiasps2bf8s\s+xmm0,ymm1,ymm2
+\s*[a-f0-9]+:\s*62 f5 74 48 3b c2\s+vcvtbiasps2bf8s\s+xmm0,zmm1,zmm2
+\s*[a-f0-9]+:\s*62 f5 74 08 3b 41 7f\s+vcvtbiasps2bf8s\s+xmm0,xmm1,XMMWORD\s+PTR\s+\[rcx\+0x7f0\]
+\s*[a-f0-9]+:\s*62 f5 74 28 3b 41 7f\s+vcvtbiasps2bf8s\s+xmm0,ymm1,YMMWORD\s+PTR\s+\[rcx\+0xfe0\]
+\s*[a-f0-9]+:\s*62 f5 74 48 3b 41 7f\s+vcvtbiasps2bf8s\s+xmm0,zmm1,ZMMWORD\s+PTR\s+\[rcx\+0x1fc0\]
+\s*[a-f0-9]+:\s*62 d5 74 18 3b 01\s+vcvtbiasps2bf8s\s+xmm0,xmm1,DWORD\s+BCST\s+\[r9\]
+\s*[a-f0-9]+:\s*62 d5 74 38 3b 01\s+vcvtbiasps2bf8s\s+xmm0,ymm1,DWORD\s+BCST\s+\[r9\]
+\s*[a-f0-9]+:\s*62 d5 74 58 3b 01\s+vcvtbiasps2bf8s\s+xmm0,zmm1,DWORD\s+BCST\s+\[r9\]
+\s*[a-f0-9]+:\s*62 f5 74 09 3b c2\s+vcvtbiasps2bf8s\s+xmm0\{k1\},xmm1,xmm2
+\s*[a-f0-9]+:\s*62 f5 74 89 3b c2\s+vcvtbiasps2bf8s\s+xmm0\{k1\}\{z\},xmm1,xmm2
+\s*[a-f0-9]+:\s*62 f5 7e 08 38 c1\s+vcvtps2hf8\s+xmm0,xmm1
+\s*[a-f0-9]+:\s*62 f5 7e 28 38 c1\s+vcvtps2hf8\s+xmm0,ymm1
+\s*[a-f0-9]+:\s*62 f5 7e 48 38 c1\s+vcvtps2hf8\s+xmm0,zmm1
+\s*[a-f0-9]+:\s*62 f5 7e 08 38 41 7f\s+vcvtps2hf8\s+xmm0,XMMWORD\s+PTR\s+\[rcx\+0x7f0\]
+\s*[a-f0-9]+:\s*62 f5 7e 28 38 41 7f\s+vcvtps2hf8\s+xmm0,YMMWORD\s+PTR\s+\[rcx\+0xfe0\]
+\s*[a-f0-9]+:\s*62 f5 7e 48 38 41 7f\s+vcvtps2hf8\s+xmm0,ZMMWORD\s+PTR\s+\[rcx\+0x1fc0\]
+\s*[a-f0-9]+:\s*62 d5 7e 18 38 01\s+vcvtps2hf8\s+xmm0,DWORD\s+BCST\s+\[r9\]\{1to4\}
+\s*[a-f0-9]+:\s*62 d5 7e 38 38 01\s+vcvtps2hf8\s+xmm0,DWORD\s+BCST\s+\[r9\]\{1to8\}
+\s*[a-f0-9]+:\s*62 d5 7e 58 38 01\s+vcvtps2hf8\s+xmm0,DWORD\s+BCST\s+\[r9\]\{1to16\}
+\s*[a-f0-9]+:\s*62 f5 7e 09 38 c1\s+vcvtps2hf8\s+xmm0\{k1\},xmm1
+\s*[a-f0-9]+:\s*62 f5 7e 89 38 c1\s+vcvtps2hf8\s+xmm0\{k1\}\{z\},xmm1
+\s*[a-f0-9]+:\s*62 f5 74 08 38 c2\s+vcvtbiasps2hf8\s+xmm0,xmm1,xmm2
+\s*[a-f0-9]+:\s*62 f5 74 28 38 c2\s+vcvtbiasps2hf8\s+xmm0,ymm1,ymm2
+\s*[a-f0-9]+:\s*62 f5 74 48 38 c2\s+vcvtbiasps2hf8\s+xmm0,zmm1,zmm2
+\s*[a-f0-9]+:\s*62 f5 74 08 38 41 7f\s+vcvtbiasps2hf8\s+xmm0,xmm1,XMMWORD\s+PTR\s+\[rcx\+0x7f0\]
+\s*[a-f0-9]+:\s*62 f5 74 28 38 41 7f\s+vcvtbiasps2hf8\s+xmm0,ymm1,YMMWORD\s+PTR\s+\[rcx\+0xfe0\]
+\s*[a-f0-9]+:\s*62 f5 74 48 38 41 7f\s+vcvtbiasps2hf8\s+xmm0,zmm1,ZMMWORD\s+PTR\s+\[rcx\+0x1fc0\]
+\s*[a-f0-9]+:\s*62 d5 74 18 38 01\s+vcvtbiasps2hf8\s+xmm0,xmm1,DWORD\s+BCST\s+\[r9\]
+\s*[a-f0-9]+:\s*62 d5 74 38 38 01\s+vcvtbiasps2hf8\s+xmm0,ymm1,DWORD\s+BCST\s+\[r9\]
+\s*[a-f0-9]+:\s*62 d5 74 58 38 01\s+vcvtbiasps2hf8\s+xmm0,zmm1,DWORD\s+BCST\s+\[r9\]
+\s*[a-f0-9]+:\s*62 f5 74 09 38 c2\s+vcvtbiasps2hf8\s+xmm0\{k1\},xmm1,xmm2
+\s*[a-f0-9]+:\s*62 f5 74 89 38 c2\s+vcvtbiasps2hf8\s+xmm0\{k1\}\{z\},xmm1,xmm2
+\s*[a-f0-9]+:\s*62 f5 7e 08 3a c1\s+vcvtps2hf8s\s+xmm0,xmm1
+\s*[a-f0-9]+:\s*62 f5 7e 28 3a c1\s+vcvtps2hf8s\s+xmm0,ymm1
+\s*[a-f0-9]+:\s*62 f5 7e 48 3a c1\s+vcvtps2hf8s\s+xmm0,zmm1
+\s*[a-f0-9]+:\s*62 f5 7e 08 3a 41 7f\s+vcvtps2hf8s\s+xmm0,XMMWORD\s+PTR\s+\[rcx\+0x7f0\]
+\s*[a-f0-9]+:\s*62 f5 7e 28 3a 41 7f\s+vcvtps2hf8s\s+xmm0,YMMWORD\s+PTR\s+\[rcx\+0xfe0\]
+\s*[a-f0-9]+:\s*62 f5 7e 48 3a 41 7f\s+vcvtps2hf8s\s+xmm0,ZMMWORD\s+PTR\s+\[rcx\+0x1fc0\]
+\s*[a-f0-9]+:\s*62 d5 7e 18 3a 01\s+vcvtps2hf8s\s+xmm0,DWORD\s+BCST\s+\[r9\]\{1to4\}
+\s*[a-f0-9]+:\s*62 d5 7e 38 3a 01\s+vcvtps2hf8s\s+xmm0,DWORD\s+BCST\s+\[r9\]\{1to8\}
+\s*[a-f0-9]+:\s*62 d5 7e 58 3a 01\s+vcvtps2hf8s\s+xmm0,DWORD\s+BCST\s+\[r9\]\{1to16\}
+\s*[a-f0-9]+:\s*62 f5 7e 09 3a c1\s+vcvtps2hf8s\s+xmm0\{k1\},xmm1
+\s*[a-f0-9]+:\s*62 f5 7e 89 3a c1\s+vcvtps2hf8s\s+xmm0\{k1\}\{z\},xmm1
+\s*[a-f0-9]+:\s*62 f5 74 08 3a c2\s+vcvtbiasps2hf8s\s+xmm0,xmm1,xmm2
+\s*[a-f0-9]+:\s*62 f5 74 28 3a c2\s+vcvtbiasps2hf8s\s+xmm0,ymm1,ymm2
+\s*[a-f0-9]+:\s*62 f5 74 48 3a c2\s+vcvtbiasps2hf8s\s+xmm0,zmm1,zmm2
+\s*[a-f0-9]+:\s*62 f5 74 08 3a 41 7f\s+vcvtbiasps2hf8s\s+xmm0,xmm1,XMMWORD\s+PTR\s+\[rcx\+0x7f0\]
+\s*[a-f0-9]+:\s*62 f5 74 28 3a 41 7f\s+vcvtbiasps2hf8s\s+xmm0,ymm1,YMMWORD\s+PTR\s+\[rcx\+0xfe0\]
+\s*[a-f0-9]+:\s*62 f5 74 48 3a 41 7f\s+vcvtbiasps2hf8s\s+xmm0,zmm1,ZMMWORD\s+PTR\s+\[rcx\+0x1fc0\]
+\s*[a-f0-9]+:\s*62 d5 74 18 3a 01\s+vcvtbiasps2hf8s\s+xmm0,xmm1,DWORD\s+BCST\s+\[r9\]
+\s*[a-f0-9]+:\s*62 d5 74 38 3a 01\s+vcvtbiasps2hf8s\s+xmm0,ymm1,DWORD\s+BCST\s+\[r9\]
+\s*[a-f0-9]+:\s*62 d5 74 58 3a 01\s+vcvtbiasps2hf8s\s+xmm0,zmm1,DWORD\s+BCST\s+\[r9\]
+\s*[a-f0-9]+:\s*62 f5 74 09 3a c2\s+vcvtbiasps2hf8s\s+xmm0\{k1\},xmm1,xmm2
+\s*[a-f0-9]+:\s*62 f5 74 89 3a c2\s+vcvtbiasps2hf8s\s+xmm0\{k1\}\{z\},xmm1,xmm2
+\s*[a-f0-9]+:\s*62 f5 7d 08 38 c1\s+vcvtrops2hf8\s+xmm0,xmm1
+\s*[a-f0-9]+:\s*62 f5 7d 28 38 c1\s+vcvtrops2hf8\s+xmm0,ymm1
+\s*[a-f0-9]+:\s*62 f5 7d 48 38 c1\s+vcvtrops2hf8\s+xmm0,zmm1
+\s*[a-f0-9]+:\s*62 f5 7d 08 38 41 7f\s+vcvtrops2hf8\s+xmm0,XMMWORD\s+PTR\s+\[rcx\+0x7f0\]
+\s*[a-f0-9]+:\s*62 f5 7d 28 38 41 7f\s+vcvtrops2hf8\s+xmm0,YMMWORD\s+PTR\s+\[rcx\+0xfe0\]
+\s*[a-f0-9]+:\s*62 f5 7d 48 38 41 7f\s+vcvtrops2hf8\s+xmm0,ZMMWORD\s+PTR\s+\[rcx\+0x1fc0\]
+\s*[a-f0-9]+:\s*62 d5 7d 18 38 01\s+vcvtrops2hf8\s+xmm0,DWORD\s+BCST\s+\[r9\]\{1to4\}
+\s*[a-f0-9]+:\s*62 d5 7d 38 38 01\s+vcvtrops2hf8\s+xmm0,DWORD\s+BCST\s+\[r9\]\{1to8\}
+\s*[a-f0-9]+:\s*62 d5 7d 58 38 01\s+vcvtrops2hf8\s+xmm0,DWORD\s+BCST\s+\[r9\]\{1to16\}
+\s*[a-f0-9]+:\s*62 f5 7d 09 38 c1\s+vcvtrops2hf8\s+xmm0\{k1\},xmm1
+\s*[a-f0-9]+:\s*62 f5 7d 89 38 c1\s+vcvtrops2hf8\s+xmm0\{k1\}\{z\},xmm1
+\s*[a-f0-9]+:\s*62 f5 7d 08 3a c1\s+vcvtrops2hf8s\s+xmm0,xmm1
+\s*[a-f0-9]+:\s*62 f5 7d 28 3a c1\s+vcvtrops2hf8s\s+xmm0,ymm1
+\s*[a-f0-9]+:\s*62 f5 7d 48 3a c1\s+vcvtrops2hf8s\s+xmm0,zmm1
+\s*[a-f0-9]+:\s*62 f5 7d 08 3a 41 7f\s+vcvtrops2hf8s\s+xmm0,XMMWORD\s+PTR\s+\[rcx\+0x7f0\]
+\s*[a-f0-9]+:\s*62 f5 7d 28 3a 41 7f\s+vcvtrops2hf8s\s+xmm0,YMMWORD\s+PTR\s+\[rcx\+0xfe0\]
+\s*[a-f0-9]+:\s*62 f5 7d 48 3a 41 7f\s+vcvtrops2hf8s\s+xmm0,ZMMWORD\s+PTR\s+\[rcx\+0x1fc0\]
+\s*[a-f0-9]+:\s*62 d5 7d 18 3a 01\s+vcvtrops2hf8s\s+xmm0,DWORD\s+BCST\s+\[r9\]\{1to4\}
+\s*[a-f0-9]+:\s*62 d5 7d 38 3a 01\s+vcvtrops2hf8s\s+xmm0,DWORD\s+BCST\s+\[r9\]\{1to8\}
+\s*[a-f0-9]+:\s*62 d5 7d 58 3a 01\s+vcvtrops2hf8s\s+xmm0,DWORD\s+BCST\s+\[r9\]\{1to16\}
+\s*[a-f0-9]+:\s*62 f5 7d 09 3a c1\s+vcvtrops2hf8s\s+xmm0\{k1\},xmm1
+\s*[a-f0-9]+:\s*62 f5 7d 89 3a c1\s+vcvtrops2hf8s\s+xmm0\{k1\}\{z\},xmm1
+\s*[a-f0-9]+:\s*62 f5 fc 08 36 c1\s+vcvtbf82ps\s+xmm0,xmm1
+\s*[a-f0-9]+:\s*62 f5 fc 28 36 c1\s+vcvtbf82ps\s+ymm0,xmm1
+\s*[a-f0-9]+:\s*62 f5 fc 48 36 c1\s+vcvtbf82ps\s+zmm0,xmm1
+\s*[a-f0-9]+:\s*62 f5 fc 08 36 41 7f\s+vcvtbf82ps\s+xmm0,DWORD\s+PTR\s+\[rcx\+0x1fc\]
+\s*[a-f0-9]+:\s*62 f5 fc 28 36 41 7f\s+vcvtbf82ps\s+ymm0,QWORD\s+PTR\s+\[rcx\+0x3f8\]
+\s*[a-f0-9]+:\s*62 f5 fc 48 36 41 7f\s+vcvtbf82ps\s+zmm0,XMMWORD\s+PTR\s+\[rcx\+0x7f0\]
+\s*[a-f0-9]+:\s*62 f5 fc 09 36 c1\s+vcvtbf82ps\s+xmm0\{k1\},xmm1
+\s*[a-f0-9]+:\s*62 f5 fc 89 36 c1\s+vcvtbf82ps\s+xmm0\{k1\}\{z\},xmm1
+\s*[a-f0-9]+:\s*62 f5 fe 08 3d c8\s+vcvtbf82bf4s\s+xmm0,xmm1
+\s*[a-f0-9]+:\s*62 f5 fe 28 3d c8\s+vcvtbf82bf4s\s+xmm0,ymm1
+\s*[a-f0-9]+:\s*62 f5 fe 48 3d c8\s+vcvtbf82bf4s\s+ymm0,zmm1
+\s*[a-f0-9]+:\s*62 f5 fe 08 3d 49 7f\s+vcvtbf82bf4s\s+QWORD\s+PTR\s+\[rcx\+0x3f8\],xmm1
+\s*[a-f0-9]+:\s*62 f5 fe 28 3d 49 7f\s+vcvtbf82bf4s\s+XMMWORD\s+PTR\s+\[rcx\+0x7f0\],ymm1
+\s*[a-f0-9]+:\s*62 f5 fe 48 3d 49 7f\s+vcvtbf82bf4s\s+YMMWORD\s+PTR\s+\[rcx\+0xfe0\],zmm1
+\s*[a-f0-9]+:\s*62 f5 7c 08 36 c1\s+vcvthf82ps\s+xmm0,xmm1
+\s*[a-f0-9]+:\s*62 f5 7c 28 36 c1\s+vcvthf82ps\s+ymm0,xmm1
+\s*[a-f0-9]+:\s*62 f5 7c 48 36 c1\s+vcvthf82ps\s+zmm0,xmm1
+\s*[a-f0-9]+:\s*62 f5 7c 08 36 41 7f\s+vcvthf82ps\s+xmm0,DWORD\s+PTR\s+\[rcx\+0x1fc\]
+\s*[a-f0-9]+:\s*62 f5 7c 28 36 41 7f\s+vcvthf82ps\s+ymm0,QWORD\s+PTR\s+\[rcx\+0x3f8\]
+\s*[a-f0-9]+:\s*62 f5 7c 48 36 41 7f\s+vcvthf82ps\s+zmm0,XMMWORD\s+PTR\s+\[rcx\+0x7f0\]
+\s*[a-f0-9]+:\s*62 f5 7c 09 36 c1\s+vcvthf82ps\s+xmm0\{k1\},xmm1
+\s*[a-f0-9]+:\s*62 f5 7c 89 36 c1\s+vcvthf82ps\s+xmm0\{k1\}\{z\},xmm1
+\s*[a-f0-9]+:\s*62 f5 7e 08 3d c8\s+vcvthf82bf4s\s+xmm0,xmm1
+\s*[a-f0-9]+:\s*62 f5 7e 28 3d c8\s+vcvthf82bf4s\s+xmm0,ymm1
+\s*[a-f0-9]+:\s*62 f5 7e 48 3d c8\s+vcvthf82bf4s\s+ymm0,zmm1
+\s*[a-f0-9]+:\s*62 f5 7e 08 3d 49 7f\s+vcvthf82bf4s\s+QWORD\s+PTR\s+\[rcx\+0x3f8\],xmm1
+\s*[a-f0-9]+:\s*62 f5 7e 28 3d 49 7f\s+vcvthf82bf4s\s+XMMWORD\s+PTR\s+\[rcx\+0x7f0\],ymm1
+\s*[a-f0-9]+:\s*62 f5 7e 48 3d 49 7f\s+vcvthf82bf4s\s+YMMWORD\s+PTR\s+\[rcx\+0xfe0\],zmm1
+\s*[a-f0-9]+:\s*62 f5 fe 08 3e c1\s+vcvtbf82bf6s\s+xmm0,xmm1
+\s*[a-f0-9]+:\s*62 f5 fe 28 3e c1\s+vcvtbf82bf6s\s+ymm0,ymm1
+\s*[a-f0-9]+:\s*62 f5 fe 48 3e c1\s+vcvtbf82bf6s\s+zmm0,zmm1
+\s*[a-f0-9]+:\s*62 f5 7e 08 3c c1\s+vcvthf82hf6s\s+xmm0,xmm1
+\s*[a-f0-9]+:\s*62 f5 7e 28 3c c1\s+vcvthf82hf6s\s+ymm0,ymm1
+\s*[a-f0-9]+:\s*62 f5 7e 48 3c c1\s+vcvthf82hf6s\s+zmm0,zmm1
+\s*[a-f0-9]+:\s*62 f5 7c 08 37 c1\s+vcvtbf42hf8\s+xmm0,xmm1
+\s*[a-f0-9]+:\s*62 f5 7c 28 37 c1\s+vcvtbf42hf8\s+ymm0,xmm1
+\s*[a-f0-9]+:\s*62 f5 7c 48 37 c1\s+vcvtbf42hf8\s+zmm0,ymm1
+\s*[a-f0-9]+:\s*62 f5 7c 08 37 41 7f\s+vcvtbf42hf8\s+xmm0,QWORD\s+PTR\s+\[rcx\+0x3f8\]
+\s*[a-f0-9]+:\s*62 f5 7c 28 37 41 7f\s+vcvtbf42hf8\s+ymm0,XMMWORD\s+PTR\s+\[rcx\+0x7f0\]
+\s*[a-f0-9]+:\s*62 f5 7c 48 37 41 7f\s+vcvtbf42hf8\s+zmm0,YMMWORD\s+PTR\s+\[rcx\+0xfe0\]
+\s*[a-f0-9]+:\s*62 f5 7c 09 37 c1\s+vcvtbf42hf8\s+xmm0\{k1\},xmm1
+\s*[a-f0-9]+:\s*62 f5 7c 89 37 c1\s+vcvtbf42hf8\s+xmm0\{k1\}\{z\},xmm1
+\s*[a-f0-9]+:\s*62 f5 fd 08 37 c1\s+vcvtbf62hf8\s+xmm0,xmm1
+\s*[a-f0-9]+:\s*62 f5 fd 28 37 c1\s+vcvtbf62hf8\s+ymm0,ymm1
+\s*[a-f0-9]+:\s*62 f5 fd 48 37 c1\s+vcvtbf62hf8\s+zmm0,zmm1
+\s*[a-f0-9]+:\s*62 f5 fd 09 37 c1\s+vcvtbf62hf8\s+xmm0\{k1\},xmm1
+\s*[a-f0-9]+:\s*62 f5 fd 89 37 c1\s+vcvtbf62hf8\s+xmm0\{k1\}\{z\},xmm1
+\s*[a-f0-9]+:\s*62 f5 7d 08 37 c1\s+vcvthf62hf8\s+xmm0,xmm1
+\s*[a-f0-9]+:\s*62 f5 7d 28 37 c1\s+vcvthf62hf8\s+ymm0,ymm1
+\s*[a-f0-9]+:\s*62 f5 7d 48 37 c1\s+vcvthf62hf8\s+zmm0,zmm1
+\s*[a-f0-9]+:\s*62 f5 7d 09 37 c1\s+vcvthf62hf8\s+xmm0\{k1\},xmm1
+\s*[a-f0-9]+:\s*62 f5 7d 89 37 c1\s+vcvthf62hf8\s+xmm0\{k1\}\{z\},xmm1
+\s*[a-f0-9]+:\s*62 f2 7e 08 41 c8\s+vpmovssdb\s+xmm0,xmm1
+\s*[a-f0-9]+:\s*62 f2 7e 28 41 c8\s+vpmovssdb\s+xmm0,ymm1
+\s*[a-f0-9]+:\s*62 f2 7e 48 41 c8\s+vpmovssdb\s+xmm0,zmm1
+\s*[a-f0-9]+:\s*62 f2 7e 08 41 49 7f\s+vpmovssdb\s+DWORD\s+PTR\s+\[rcx\+0x1fc\],xmm1
+\s*[a-f0-9]+:\s*62 f2 7e 28 41 49 7f\s+vpmovssdb\s+QWORD\s+PTR\s+\[rcx\+0x3f8\],ymm1
+\s*[a-f0-9]+:\s*62 f2 7e 48 41 49 7f\s+vpmovssdb\s+XMMWORD\s+PTR\s+\[rcx\+0x7f0\],zmm1
+\s*[a-f0-9]+:\s*62 f2 7e 09 41 c8\s+vpmovssdb\s+xmm0\{k1\},xmm1
+\s*[a-f0-9]+:\s*62 f2 7e 89 41 c8\s+vpmovssdb\s+xmm0\{k1\}\{z\},xmm1
+\s*[a-f0-9]+:\s*62 f3 7c 08 3d c1 01\s+vunpackb\s+xmm0,xmm1,0x1
+\s*[a-f0-9]+:\s*62 f3 7c 28 3d c1 01\s+vunpackb\s+ymm0,ymm1,0x1
+\s*[a-f0-9]+:\s*62 f3 7c 48 3d c1 01\s+vunpackb\s+zmm0,zmm1,0x1
+\s*[a-f0-9]+:\s*62 f3 7c 08 3d 41 7f 01\s+vunpackb\s+xmm0,XMMWORD\s+PTR\s+\[rcx\+0x7f0\],0x1
+\s*[a-f0-9]+:\s*62 f3 7c 28 3d 41 7f 01\s+vunpackb\s+ymm0,YMMWORD\s+PTR\s+\[rcx\+0xfe0\],0x1
+\s*[a-f0-9]+:\s*62 f3 7c 48 3d 41 7f 01\s+vunpackb\s+zmm0,ZMMWORD\s+PTR\s+\[rcx\+0x1fc0\],0x1
+\s*[a-f0-9]+:\s*62 f3 7c 09 3d c1 01\s+vunpackb\s+xmm0\{k1\},xmm1,0x1
+\s*[a-f0-9]+:\s*62 f3 7c 89 3d c1 01\s+vunpackb\s+xmm0\{k1\}\{z\},xmm1,0x1
new file mode 100644
@@ -0,0 +1,187 @@
+#objdump: -dw -Mx86-64
+#name: x86-64 AVX10 V2 AUX
+
+.*: +file format .*
+
+Disassembly of section \.text:
+
+0+ <_start>:
+\s*[a-f0-9]+:\s*62 f5 7e 08 39 c1\s+vcvtps2bf8\s+%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 28 39 c1\s+vcvtps2bf8\s+%ymm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 48 39 c1\s+vcvtps2bf8\s+%zmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 08 39 41 7f\s+vcvtps2bf8x\s+0x7f0\(%rcx\),%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 28 39 41 7f\s+vcvtps2bf8y\s+0xfe0\(%rcx\),%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 48 39 41 7f\s+vcvtps2bf8z\s+0x1fc0\(%rcx\),%xmm0
+\s*[a-f0-9]+:\s*62 d5 7e 18 39 01\s+vcvtps2bf8\s+\(%r9\)\{1to4\},%xmm0
+\s*[a-f0-9]+:\s*62 d5 7e 38 39 01\s+vcvtps2bf8\s+\(%r9\)\{1to8\},%xmm0
+\s*[a-f0-9]+:\s*62 d5 7e 58 39 01\s+vcvtps2bf8\s+\(%r9\)\{1to16\},%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 09 39 c1\s+vcvtps2bf8\s+%xmm1,%xmm0\{%k1\}
+\s*[a-f0-9]+:\s*62 f5 7e 89 39 c1\s+vcvtps2bf8\s+%xmm1,%xmm0\{%k1\}\{z\}
+\s*[a-f0-9]+:\s*62 f5 74 08 39 c2\s+vcvtbiasps2bf8\s+%xmm2,%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 28 39 c2\s+vcvtbiasps2bf8\s+%ymm2,%ymm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 48 39 c2\s+vcvtbiasps2bf8\s+%zmm2,%zmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 08 39 41 7f\s+vcvtbiasps2bf8\s+0x7f0\(%rcx\),%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 28 39 41 7f\s+vcvtbiasps2bf8\s+0xfe0\(%rcx\),%ymm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 48 39 41 7f\s+vcvtbiasps2bf8\s+0x1fc0\(%rcx\),%zmm1,%xmm0
+\s*[a-f0-9]+:\s*62 d5 74 18 39 01\s+vcvtbiasps2bf8\s+\(%r9\)\{1to4\},%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 d5 74 38 39 01\s+vcvtbiasps2bf8\s+\(%r9\)\{1to8\},%ymm1,%xmm0
+\s*[a-f0-9]+:\s*62 d5 74 58 39 01\s+vcvtbiasps2bf8\s+\(%r9\)\{1to16\},%zmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 09 39 c2\s+vcvtbiasps2bf8\s+%xmm2,%xmm1,%xmm0\{%k1\}
+\s*[a-f0-9]+:\s*62 f5 74 89 39 c2\s+vcvtbiasps2bf8\s+%xmm2,%xmm1,%xmm0\{%k1\}\{z\}
+\s*[a-f0-9]+:\s*62 f5 7e 08 3b c1\s+vcvtps2bf8s\s+%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 28 3b c1\s+vcvtps2bf8s\s+%ymm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 48 3b c1\s+vcvtps2bf8s\s+%zmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 08 3b 41 7f\s+vcvtps2bf8sx\s+0x7f0\(%rcx\),%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 28 3b 41 7f\s+vcvtps2bf8sy\s+0xfe0\(%rcx\),%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 48 3b 41 7f\s+vcvtps2bf8sz\s+0x1fc0\(%rcx\),%xmm0
+\s*[a-f0-9]+:\s*62 d5 7e 18 3b 01\s+vcvtps2bf8s\s+\(%r9\)\{1to4\},%xmm0
+\s*[a-f0-9]+:\s*62 d5 7e 38 3b 01\s+vcvtps2bf8s\s+\(%r9\)\{1to8\},%xmm0
+\s*[a-f0-9]+:\s*62 d5 7e 58 3b 01\s+vcvtps2bf8s\s+\(%r9\)\{1to16\},%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 09 3b c1\s+vcvtps2bf8s\s+%xmm1,%xmm0\{%k1\}
+\s*[a-f0-9]+:\s*62 f5 7e 89 3b c1\s+vcvtps2bf8s\s+%xmm1,%xmm0\{%k1\}\{z\}
+\s*[a-f0-9]+:\s*62 f5 74 08 3b c2\s+vcvtbiasps2bf8s\s+%xmm2,%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 28 3b c2\s+vcvtbiasps2bf8s\s+%ymm2,%ymm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 48 3b c2\s+vcvtbiasps2bf8s\s+%zmm2,%zmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 08 3b 41 7f\s+vcvtbiasps2bf8s\s+0x7f0\(%rcx\),%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 28 3b 41 7f\s+vcvtbiasps2bf8s\s+0xfe0\(%rcx\),%ymm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 48 3b 41 7f\s+vcvtbiasps2bf8s\s+0x1fc0\(%rcx\),%zmm1,%xmm0
+\s*[a-f0-9]+:\s*62 d5 74 18 3b 01\s+vcvtbiasps2bf8s\s+\(%r9\)\{1to4\},%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 d5 74 38 3b 01\s+vcvtbiasps2bf8s\s+\(%r9\)\{1to8\},%ymm1,%xmm0
+\s*[a-f0-9]+:\s*62 d5 74 58 3b 01\s+vcvtbiasps2bf8s\s+\(%r9\)\{1to16\},%zmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 09 3b c2\s+vcvtbiasps2bf8s\s+%xmm2,%xmm1,%xmm0\{%k1\}
+\s*[a-f0-9]+:\s*62 f5 74 89 3b c2\s+vcvtbiasps2bf8s\s+%xmm2,%xmm1,%xmm0\{%k1\}\{z\}
+\s*[a-f0-9]+:\s*62 f5 7e 08 38 c1\s+vcvtps2hf8\s+%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 28 38 c1\s+vcvtps2hf8\s+%ymm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 48 38 c1\s+vcvtps2hf8\s+%zmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 08 38 41 7f\s+vcvtps2hf8x\s+0x7f0\(%rcx\),%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 28 38 41 7f\s+vcvtps2hf8y\s+0xfe0\(%rcx\),%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 48 38 41 7f\s+vcvtps2hf8z\s+0x1fc0\(%rcx\),%xmm0
+\s*[a-f0-9]+:\s*62 d5 7e 18 38 01\s+vcvtps2hf8\s+\(%r9\)\{1to4\},%xmm0
+\s*[a-f0-9]+:\s*62 d5 7e 38 38 01\s+vcvtps2hf8\s+\(%r9\)\{1to8\},%xmm0
+\s*[a-f0-9]+:\s*62 d5 7e 58 38 01\s+vcvtps2hf8\s+\(%r9\)\{1to16\},%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 09 38 c1\s+vcvtps2hf8\s+%xmm1,%xmm0\{%k1\}
+\s*[a-f0-9]+:\s*62 f5 7e 89 38 c1\s+vcvtps2hf8\s+%xmm1,%xmm0\{%k1\}\{z\}
+\s*[a-f0-9]+:\s*62 f5 74 08 38 c2\s+vcvtbiasps2hf8\s+%xmm2,%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 28 38 c2\s+vcvtbiasps2hf8\s+%ymm2,%ymm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 48 38 c2\s+vcvtbiasps2hf8\s+%zmm2,%zmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 08 38 41 7f\s+vcvtbiasps2hf8\s+0x7f0\(%rcx\),%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 28 38 41 7f\s+vcvtbiasps2hf8\s+0xfe0\(%rcx\),%ymm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 48 38 41 7f\s+vcvtbiasps2hf8\s+0x1fc0\(%rcx\),%zmm1,%xmm0
+\s*[a-f0-9]+:\s*62 d5 74 18 38 01\s+vcvtbiasps2hf8\s+\(%r9\)\{1to4\},%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 d5 74 38 38 01\s+vcvtbiasps2hf8\s+\(%r9\)\{1to8\},%ymm1,%xmm0
+\s*[a-f0-9]+:\s*62 d5 74 58 38 01\s+vcvtbiasps2hf8\s+\(%r9\)\{1to16\},%zmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 09 38 c2\s+vcvtbiasps2hf8\s+%xmm2,%xmm1,%xmm0\{%k1\}
+\s*[a-f0-9]+:\s*62 f5 74 89 38 c2\s+vcvtbiasps2hf8\s+%xmm2,%xmm1,%xmm0\{%k1\}\{z\}
+\s*[a-f0-9]+:\s*62 f5 7e 08 3a c1\s+vcvtps2hf8s\s+%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 28 3a c1\s+vcvtps2hf8s\s+%ymm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 48 3a c1\s+vcvtps2hf8s\s+%zmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 08 3a 41 7f\s+vcvtps2hf8sx\s+0x7f0\(%rcx\),%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 28 3a 41 7f\s+vcvtps2hf8sy\s+0xfe0\(%rcx\),%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 48 3a 41 7f\s+vcvtps2hf8sz\s+0x1fc0\(%rcx\),%xmm0
+\s*[a-f0-9]+:\s*62 d5 7e 18 3a 01\s+vcvtps2hf8s\s+\(%r9\)\{1to4\},%xmm0
+\s*[a-f0-9]+:\s*62 d5 7e 38 3a 01\s+vcvtps2hf8s\s+\(%r9\)\{1to8\},%xmm0
+\s*[a-f0-9]+:\s*62 d5 7e 58 3a 01\s+vcvtps2hf8s\s+\(%r9\)\{1to16\},%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 09 3a c1\s+vcvtps2hf8s\s+%xmm1,%xmm0\{%k1\}
+\s*[a-f0-9]+:\s*62 f5 7e 89 3a c1\s+vcvtps2hf8s\s+%xmm1,%xmm0\{%k1\}\{z\}
+\s*[a-f0-9]+:\s*62 f5 74 08 3a c2\s+vcvtbiasps2hf8s\s+%xmm2,%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 28 3a c2\s+vcvtbiasps2hf8s\s+%ymm2,%ymm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 48 3a c2\s+vcvtbiasps2hf8s\s+%zmm2,%zmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 08 3a 41 7f\s+vcvtbiasps2hf8s\s+0x7f0\(%rcx\),%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 28 3a 41 7f\s+vcvtbiasps2hf8s\s+0xfe0\(%rcx\),%ymm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 48 3a 41 7f\s+vcvtbiasps2hf8s\s+0x1fc0\(%rcx\),%zmm1,%xmm0
+\s*[a-f0-9]+:\s*62 d5 74 18 3a 01\s+vcvtbiasps2hf8s\s+\(%r9\)\{1to4\},%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 d5 74 38 3a 01\s+vcvtbiasps2hf8s\s+\(%r9\)\{1to8\},%ymm1,%xmm0
+\s*[a-f0-9]+:\s*62 d5 74 58 3a 01\s+vcvtbiasps2hf8s\s+\(%r9\)\{1to16\},%zmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 74 09 3a c2\s+vcvtbiasps2hf8s\s+%xmm2,%xmm1,%xmm0\{%k1\}
+\s*[a-f0-9]+:\s*62 f5 74 89 3a c2\s+vcvtbiasps2hf8s\s+%xmm2,%xmm1,%xmm0\{%k1\}\{z\}
+\s*[a-f0-9]+:\s*62 f5 7d 08 38 c1\s+vcvtrops2hf8\s+%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7d 28 38 c1\s+vcvtrops2hf8\s+%ymm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7d 48 38 c1\s+vcvtrops2hf8\s+%zmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7d 08 38 41 7f\s+vcvtrops2hf8x\s+0x7f0\(%rcx\),%xmm0
+\s*[a-f0-9]+:\s*62 f5 7d 28 38 41 7f\s+vcvtrops2hf8y\s+0xfe0\(%rcx\),%xmm0
+\s*[a-f0-9]+:\s*62 f5 7d 48 38 41 7f\s+vcvtrops2hf8z\s+0x1fc0\(%rcx\),%xmm0
+\s*[a-f0-9]+:\s*62 d5 7d 18 38 01\s+vcvtrops2hf8\s+\(%r9\)\{1to4\},%xmm0
+\s*[a-f0-9]+:\s*62 d5 7d 38 38 01\s+vcvtrops2hf8\s+\(%r9\)\{1to8\},%xmm0
+\s*[a-f0-9]+:\s*62 d5 7d 58 38 01\s+vcvtrops2hf8\s+\(%r9\)\{1to16\},%xmm0
+\s*[a-f0-9]+:\s*62 f5 7d 09 38 c1\s+vcvtrops2hf8\s+%xmm1,%xmm0\{%k1\}
+\s*[a-f0-9]+:\s*62 f5 7d 89 38 c1\s+vcvtrops2hf8\s+%xmm1,%xmm0\{%k1\}\{z\}
+\s*[a-f0-9]+:\s*62 f5 7d 08 3a c1\s+vcvtrops2hf8s\s+%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7d 28 3a c1\s+vcvtrops2hf8s\s+%ymm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7d 48 3a c1\s+vcvtrops2hf8s\s+%zmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7d 08 3a 41 7f\s+vcvtrops2hf8sx\s+0x7f0\(%rcx\),%xmm0
+\s*[a-f0-9]+:\s*62 f5 7d 28 3a 41 7f\s+vcvtrops2hf8sy\s+0xfe0\(%rcx\),%xmm0
+\s*[a-f0-9]+:\s*62 f5 7d 48 3a 41 7f\s+vcvtrops2hf8sz\s+0x1fc0\(%rcx\),%xmm0
+\s*[a-f0-9]+:\s*62 d5 7d 18 3a 01\s+vcvtrops2hf8s\s+\(%r9\)\{1to4\},%xmm0
+\s*[a-f0-9]+:\s*62 d5 7d 38 3a 01\s+vcvtrops2hf8s\s+\(%r9\)\{1to8\},%xmm0
+\s*[a-f0-9]+:\s*62 d5 7d 58 3a 01\s+vcvtrops2hf8s\s+\(%r9\)\{1to16\},%xmm0
+\s*[a-f0-9]+:\s*62 f5 7d 09 3a c1\s+vcvtrops2hf8s\s+%xmm1,%xmm0\{%k1\}
+\s*[a-f0-9]+:\s*62 f5 7d 89 3a c1\s+vcvtrops2hf8s\s+%xmm1,%xmm0\{%k1\}\{z\}
+\s*[a-f0-9]+:\s*62 f5 fc 08 36 c1\s+vcvtbf82ps\s+%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 fc 28 36 c1\s+vcvtbf82ps\s+%xmm1,%ymm0
+\s*[a-f0-9]+:\s*62 f5 fc 48 36 c1\s+vcvtbf82ps\s+%xmm1,%zmm0
+\s*[a-f0-9]+:\s*62 f5 fc 08 36 41 7f\s+vcvtbf82ps\s+0x1fc\(%rcx\),%xmm0
+\s*[a-f0-9]+:\s*62 f5 fc 28 36 41 7f\s+vcvtbf82ps\s+0x3f8\(%rcx\),%ymm0
+\s*[a-f0-9]+:\s*62 f5 fc 48 36 41 7f\s+vcvtbf82ps\s+0x7f0\(%rcx\),%zmm0
+\s*[a-f0-9]+:\s*62 f5 fc 09 36 c1\s+vcvtbf82ps\s+%xmm1,%xmm0\{%k1\}
+\s*[a-f0-9]+:\s*62 f5 fc 89 36 c1\s+vcvtbf82ps\s+%xmm1,%xmm0\{%k1\}\{z\}
+\s*[a-f0-9]+:\s*62 f5 fe 08 3d c8\s+vcvtbf82bf4s\s+%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 fe 28 3d c8\s+vcvtbf82bf4s\s+%ymm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 fe 48 3d c8\s+vcvtbf82bf4s\s+%zmm1,%ymm0
+\s*[a-f0-9]+:\s*62 f5 fe 08 3d 49 7f\s+vcvtbf82bf4s\s+%xmm1,0x3f8\(%rcx\)
+\s*[a-f0-9]+:\s*62 f5 fe 28 3d 49 7f\s+vcvtbf82bf4s\s+%ymm1,0x7f0\(%rcx\)
+\s*[a-f0-9]+:\s*62 f5 fe 48 3d 49 7f\s+vcvtbf82bf4s\s+%zmm1,0xfe0\(%rcx\)
+\s*[a-f0-9]+:\s*62 f5 7c 08 36 c1\s+vcvthf82ps\s+%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7c 28 36 c1\s+vcvthf82ps\s+%xmm1,%ymm0
+\s*[a-f0-9]+:\s*62 f5 7c 48 36 c1\s+vcvthf82ps\s+%xmm1,%zmm0
+\s*[a-f0-9]+:\s*62 f5 7c 08 36 41 7f\s+vcvthf82ps\s+0x1fc\(%rcx\),%xmm0
+\s*[a-f0-9]+:\s*62 f5 7c 28 36 41 7f\s+vcvthf82ps\s+0x3f8\(%rcx\),%ymm0
+\s*[a-f0-9]+:\s*62 f5 7c 48 36 41 7f\s+vcvthf82ps\s+0x7f0\(%rcx\),%zmm0
+\s*[a-f0-9]+:\s*62 f5 7c 09 36 c1\s+vcvthf82ps\s+%xmm1,%xmm0\{%k1\}
+\s*[a-f0-9]+:\s*62 f5 7c 89 36 c1\s+vcvthf82ps\s+%xmm1,%xmm0\{%k1\}\{z\}
+\s*[a-f0-9]+:\s*62 f5 7e 08 3d c8\s+vcvthf82bf4s\s+%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 28 3d c8\s+vcvthf82bf4s\s+%ymm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 48 3d c8\s+vcvthf82bf4s\s+%zmm1,%ymm0
+\s*[a-f0-9]+:\s*62 f5 7e 08 3d 49 7f\s+vcvthf82bf4s\s+%xmm1,0x3f8\(%rcx\)
+\s*[a-f0-9]+:\s*62 f5 7e 28 3d 49 7f\s+vcvthf82bf4s\s+%ymm1,0x7f0\(%rcx\)
+\s*[a-f0-9]+:\s*62 f5 7e 48 3d 49 7f\s+vcvthf82bf4s\s+%zmm1,0xfe0\(%rcx\)
+\s*[a-f0-9]+:\s*62 f5 fe 08 3e c1\s+vcvtbf82bf6s\s+%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 fe 28 3e c1\s+vcvtbf82bf6s\s+%ymm1,%ymm0
+\s*[a-f0-9]+:\s*62 f5 fe 48 3e c1\s+vcvtbf82bf6s\s+%zmm1,%zmm0
+\s*[a-f0-9]+:\s*62 f5 7e 08 3c c1\s+vcvthf82hf6s\s+%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7e 28 3c c1\s+vcvthf82hf6s\s+%ymm1,%ymm0
+\s*[a-f0-9]+:\s*62 f5 7e 48 3c c1\s+vcvthf82hf6s\s+%zmm1,%zmm0
+\s*[a-f0-9]+:\s*62 f5 7c 08 37 c1\s+vcvtbf42hf8\s+%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7c 28 37 c1\s+vcvtbf42hf8\s+%xmm1,%ymm0
+\s*[a-f0-9]+:\s*62 f5 7c 48 37 c1\s+vcvtbf42hf8\s+%ymm1,%zmm0
+\s*[a-f0-9]+:\s*62 f5 7c 08 37 41 7f\s+vcvtbf42hf8\s+0x3f8\(%rcx\),%xmm0
+\s*[a-f0-9]+:\s*62 f5 7c 28 37 41 7f\s+vcvtbf42hf8\s+0x7f0\(%rcx\),%ymm0
+\s*[a-f0-9]+:\s*62 f5 7c 48 37 41 7f\s+vcvtbf42hf8\s+0xfe0\(%rcx\),%zmm0
+\s*[a-f0-9]+:\s*62 f5 7c 09 37 c1\s+vcvtbf42hf8\s+%xmm1,%xmm0\{%k1\}
+\s*[a-f0-9]+:\s*62 f5 7c 89 37 c1\s+vcvtbf42hf8\s+%xmm1,%xmm0\{%k1\}\{z\}
+\s*[a-f0-9]+:\s*62 f5 fd 08 37 c1\s+vcvtbf62hf8\s+%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 fd 28 37 c1\s+vcvtbf62hf8\s+%ymm1,%ymm0
+\s*[a-f0-9]+:\s*62 f5 fd 48 37 c1\s+vcvtbf62hf8\s+%zmm1,%zmm0
+\s*[a-f0-9]+:\s*62 f5 fd 09 37 c1\s+vcvtbf62hf8\s+%xmm1,%xmm0\{%k1\}
+\s*[a-f0-9]+:\s*62 f5 fd 89 37 c1\s+vcvtbf62hf8\s+%xmm1,%xmm0\{%k1\}\{z\}
+\s*[a-f0-9]+:\s*62 f5 7d 08 37 c1\s+vcvthf62hf8\s+%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f5 7d 28 37 c1\s+vcvthf62hf8\s+%ymm1,%ymm0
+\s*[a-f0-9]+:\s*62 f5 7d 48 37 c1\s+vcvthf62hf8\s+%zmm1,%zmm0
+\s*[a-f0-9]+:\s*62 f5 7d 09 37 c1\s+vcvthf62hf8\s+%xmm1,%xmm0\{%k1\}
+\s*[a-f0-9]+:\s*62 f5 7d 89 37 c1\s+vcvthf62hf8\s+%xmm1,%xmm0\{%k1\}\{z\}
+\s*[a-f0-9]+:\s*62 f2 7e 08 41 c8\s+vpmovssdb\s+%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f2 7e 28 41 c8\s+vpmovssdb\s+%ymm1,%xmm0
+\s*[a-f0-9]+:\s*62 f2 7e 48 41 c8\s+vpmovssdb\s+%zmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f2 7e 08 41 49 7f\s+vpmovssdb\s+%xmm1,0x1fc\(%rcx\)
+\s*[a-f0-9]+:\s*62 f2 7e 28 41 49 7f\s+vpmovssdb\s+%ymm1,0x3f8\(%rcx\)
+\s*[a-f0-9]+:\s*62 f2 7e 48 41 49 7f\s+vpmovssdb\s+%zmm1,0x7f0\(%rcx\)
+\s*[a-f0-9]+:\s*62 f2 7e 09 41 c8\s+vpmovssdb\s+%xmm1,%xmm0\{%k1\}
+\s*[a-f0-9]+:\s*62 f2 7e 89 41 c8\s+vpmovssdb\s+%xmm1,%xmm0\{%k1\}\{z\}
+\s*[a-f0-9]+:\s*62 f3 7c 08 3d c1 01\s+vunpackb\s+\$0x1,%xmm1,%xmm0
+\s*[a-f0-9]+:\s*62 f3 7c 28 3d c1 01\s+vunpackb\s+\$0x1,%ymm1,%ymm0
+\s*[a-f0-9]+:\s*62 f3 7c 48 3d c1 01\s+vunpackb\s+\$0x1,%zmm1,%zmm0
+\s*[a-f0-9]+:\s*62 f3 7c 08 3d 41 7f 01\s+vunpackb\s+\$0x1,0x7f0\(%rcx\),%xmm0
+\s*[a-f0-9]+:\s*62 f3 7c 28 3d 41 7f 01\s+vunpackb\s+\$0x1,0xfe0\(%rcx\),%ymm0
+\s*[a-f0-9]+:\s*62 f3 7c 48 3d 41 7f 01\s+vunpackb\s+\$0x1,0x1fc0\(%rcx\),%zmm0
+\s*[a-f0-9]+:\s*62 f3 7c 09 3d c1 01\s+vunpackb\s+\$0x1,%xmm1,%xmm0\{%k1\}
+\s*[a-f0-9]+:\s*62 f3 7c 89 3d c1 01\s+vunpackb\s+\$0x1,%xmm1,%xmm0\{%k1\}\{z\}
+#pass
new file mode 100644
@@ -0,0 +1,211 @@
+# Check 64-bit AVX10 V2 AUX instructions
+
+ .arch generic64
+ .arch .avx10v2aux
+ .text
+_start:
+ .irp m, bf8, bf8s, hf8, hf8s
+ vcvtps2\m %xmm1, %xmm0
+ vcvtps2\m %ymm1, %xmm0
+ vcvtps2\m %zmm1, %xmm0
+ vcvtps2\m\()x 2032(%rcx), %xmm0
+ vcvtps2\m\()y 4064(%rcx), %xmm0
+ vcvtps2\m\()z 8128(%rcx), %xmm0
+ vcvtps2\m (%r9){1to4}, %xmm0
+ vcvtps2\m (%r9){1to8}, %xmm0
+ vcvtps2\m (%r9){1to16}, %xmm0
+ vcvtps2\m %xmm1, %xmm0{%k1}
+ vcvtps2\m %xmm1, %xmm0{%k1}{z}
+
+ vcvtbiasps2\m %xmm2, %xmm1, %xmm0
+ vcvtbiasps2\m %ymm2, %ymm1, %xmm0
+ vcvtbiasps2\m %zmm2, %zmm1, %xmm0
+ vcvtbiasps2\m 2032(%rcx), %xmm1, %xmm0
+ vcvtbiasps2\m 4064(%rcx), %ymm1, %xmm0
+ vcvtbiasps2\m 8128(%rcx), %zmm1, %xmm0
+ vcvtbiasps2\m (%r9){1to4}, %xmm1, %xmm0
+ vcvtbiasps2\m (%r9){1to8}, %ymm1, %xmm0
+ vcvtbiasps2\m (%r9){1to16}, %zmm1, %xmm0
+ vcvtbiasps2\m %xmm2, %xmm1, %xmm0{%k1}
+ vcvtbiasps2\m %xmm2, %xmm1, %xmm0{%k1}{z}
+ .endr
+
+ .irp m, hf8, hf8s
+ vcvtrops2\m %xmm1, %xmm0
+ vcvtrops2\m %ymm1, %xmm0
+ vcvtrops2\m %zmm1, %xmm0
+ vcvtrops2\m\()x 2032(%rcx), %xmm0
+ vcvtrops2\m\()y 4064(%rcx), %xmm0
+ vcvtrops2\m\()z 8128(%rcx), %xmm0
+ vcvtrops2\m (%r9){1to4}, %xmm0
+ vcvtrops2\m (%r9){1to8}, %xmm0
+ vcvtrops2\m (%r9){1to16}, %xmm0
+ vcvtrops2\m %xmm1, %xmm0{%k1}
+ vcvtrops2\m %xmm1, %xmm0{%k1}{z}
+ .endr
+
+ .irp f, bf, hf
+ vcvt\f\()82ps %xmm1, %xmm0
+ vcvt\f\()82ps %xmm1, %ymm0
+ vcvt\f\()82ps %xmm1, %zmm0
+ vcvt\f\()82ps 508(%rcx), %xmm0
+ vcvt\f\()82ps 1016(%rcx), %ymm0
+ vcvt\f\()82ps 2032(%rcx), %zmm0
+ vcvt\f\()82ps %xmm1, %xmm0{%k1}
+ vcvt\f\()82ps %xmm1, %xmm0{%k1}{z}
+
+ vcvt\f\()82bf4s %xmm1, %xmm0
+ vcvt\f\()82bf4s %ymm1, %xmm0
+ vcvt\f\()82bf4s %zmm1, %ymm0
+ vcvt\f\()82bf4s %xmm1, 1016(%rcx)
+ vcvt\f\()82bf4s %ymm1, 2032(%rcx)
+ vcvt\f\()82bf4s %zmm1, 4064(%rcx)
+
+ .endr
+
+ vcvtbf82bf6s %xmm1, %xmm0
+ vcvtbf82bf6s %ymm1, %ymm0
+ vcvtbf82bf6s %zmm1, %zmm0
+
+ vcvthf82hf6s %xmm1, %xmm0
+ vcvthf82hf6s %ymm1, %ymm0
+ vcvthf82hf6s %zmm1, %zmm0
+
+ vcvtbf42hf8 %xmm1, %xmm0
+ vcvtbf42hf8 %xmm1, %ymm0
+ vcvtbf42hf8 %ymm1, %zmm0
+ vcvtbf42hf8 1016(%rcx), %xmm0
+ vcvtbf42hf8 2032(%rcx), %ymm0
+ vcvtbf42hf8 4064(%rcx), %zmm0
+ vcvtbf42hf8 %xmm1, %xmm0{%k1}
+ vcvtbf42hf8 %xmm1, %xmm0{%k1}{z}
+
+ .irp f, bf, hf
+ vcvt\f\()62hf8 %xmm1, %xmm0
+ vcvt\f\()62hf8 %ymm1, %ymm0
+ vcvt\f\()62hf8 %zmm1, %zmm0
+ vcvt\f\()62hf8 %xmm1, %xmm0{%k1}
+ vcvt\f\()62hf8 %xmm1, %xmm0{%k1}{z}
+ .endr
+
+ vpmovssdb %xmm1, %xmm0
+ vpmovssdb %ymm1, %xmm0
+ vpmovssdb %zmm1, %xmm0
+ vpmovssdb %xmm1, 508(%rcx)
+ vpmovssdb %ymm1, 1016(%rcx)
+ vpmovssdb %zmm1, 2032(%rcx)
+ vpmovssdb %xmm1, %xmm0{%k1}
+ vpmovssdb %xmm1, %xmm0{%k1}{z}
+
+ vunpackb $1, %xmm1, %xmm0
+ vunpackb $1, %ymm1, %ymm0
+ vunpackb $1, %zmm1, %zmm0
+ vunpackb $1, 2032(%rcx), %xmm0
+ vunpackb $1, 4064(%rcx), %ymm0
+ vunpackb $1, 8128(%rcx), %zmm0
+ vunpackb $1, %xmm1, %xmm0{%k1}
+ vunpackb $1, %xmm1, %xmm0{%k1}{z}
+
+_intel:
+ .intel_syntax noprefix
+
+ .irp m, bf8, bf8s, hf8, hf8s
+ vcvtps2\m xmm0, xmm1
+ vcvtps2\m xmm0, ymm1
+ vcvtps2\m xmm0, zmm1
+ vcvtps2\m xmm0, XMMWORD PTR [rcx+2032]
+ vcvtps2\m xmm0, YMMWORD PTR [rcx+4064]
+ vcvtps2\m xmm0, ZMMWORD PTR [rcx+8128]
+ vcvtps2\m xmm0, DWORD PTR [r9]{1to4}
+ vcvtps2\m xmm0, DWORD PTR [r9]{1to8}
+ vcvtps2\m xmm0, DWORD PTR [r9]{1to16}
+ vcvtps2\m xmm0{k1}, xmm1
+ vcvtps2\m xmm0{k1}{z}, xmm1
+
+ vcvtbiasps2\m xmm0, xmm1, xmm2
+ vcvtbiasps2\m xmm0, ymm1, ymm2
+ vcvtbiasps2\m xmm0, zmm1, zmm2
+ vcvtbiasps2\m xmm0, xmm1, XMMWORD PTR [rcx+2032]
+ vcvtbiasps2\m xmm0, ymm1, YMMWORD PTR [rcx+4064]
+ vcvtbiasps2\m xmm0, zmm1, ZMMWORD PTR [rcx+8128]
+ vcvtbiasps2\m xmm0, xmm1, DWORD PTR [r9]{1to4}
+ vcvtbiasps2\m xmm0, ymm1, DWORD PTR [r9]{1to8}
+ vcvtbiasps2\m xmm0, zmm1, DWORD PTR [r9]{1to16}
+ vcvtbiasps2\m xmm0{k1}, xmm1, xmm2
+ vcvtbiasps2\m xmm0{k1}{z}, xmm1, xmm2
+ .endr
+
+ .irp m, hf8, hf8s
+ vcvtrops2\m xmm0, xmm1
+ vcvtrops2\m xmm0, ymm1
+ vcvtrops2\m xmm0, zmm1
+ vcvtrops2\m xmm0, XMMWORD PTR [rcx+2032]
+ vcvtrops2\m xmm0, YMMWORD PTR [rcx+4064]
+ vcvtrops2\m xmm0, ZMMWORD PTR [rcx+8128]
+ vcvtrops2\m xmm0, DWORD PTR [r9]{1to4}
+ vcvtrops2\m xmm0, DWORD PTR [r9]{1to8}
+ vcvtrops2\m xmm0, DWORD PTR [r9]{1to16}
+ vcvtrops2\m xmm0{k1}, xmm1
+ vcvtrops2\m xmm0{k1}{z}, xmm1
+ .endr
+
+ .irp f, bf, hf
+ vcvt\f\()82ps xmm0, xmm1
+ vcvt\f\()82ps ymm0, xmm1
+ vcvt\f\()82ps zmm0, xmm1
+ vcvt\f\()82ps xmm0, DWORD PTR [rcx+508]
+ vcvt\f\()82ps ymm0, QWORD PTR [rcx+1016]
+ vcvt\f\()82ps zmm0, XMMWORD PTR [rcx+2032]
+ vcvt\f\()82ps xmm0{k1}, xmm1
+ vcvt\f\()82ps xmm0{k1}{z}, xmm1
+
+ vcvt\f\()82bf4s xmm0, xmm1
+ vcvt\f\()82bf4s xmm0, ymm1
+ vcvt\f\()82bf4s ymm0, zmm1
+ vcvt\f\()82bf4s QWORD PTR [rcx+1016], xmm1
+ vcvt\f\()82bf4s XMMWORD PTR [rcx+2032], ymm1
+ vcvt\f\()82bf4s YMMWORD PTR [rcx+4064], zmm1
+ .endr
+
+ vcvtbf82bf6s xmm0, xmm1
+ vcvtbf82bf6s ymm0, ymm1
+ vcvtbf82bf6s zmm0, zmm1
+
+ vcvthf82hf6s xmm0, xmm1
+ vcvthf82hf6s ymm0, ymm1
+ vcvthf82hf6s zmm0, zmm1
+
+ vcvtbf42hf8 xmm0, xmm1
+ vcvtbf42hf8 ymm0, xmm1
+ vcvtbf42hf8 zmm0, ymm1
+ vcvtbf42hf8 xmm0, QWORD PTR [rcx+1016]
+ vcvtbf42hf8 ymm0, XMMWORD PTR [rcx+2032]
+ vcvtbf42hf8 zmm0, YMMWORD PTR [rcx+4064]
+ vcvtbf42hf8 xmm0{k1}, xmm1
+ vcvtbf42hf8 xmm0{k1}{z}, xmm1
+
+ .irp f, bf, hf
+ vcvt\f\()62hf8 xmm0, xmm1
+ vcvt\f\()62hf8 ymm0, ymm1
+ vcvt\f\()62hf8 zmm0, zmm1
+ vcvt\f\()62hf8 xmm0{k1}, xmm1
+ vcvt\f\()62hf8 xmm0{k1}{z}, xmm1
+ .endr
+
+ vpmovssdb xmm0, xmm1
+ vpmovssdb xmm0, ymm1
+ vpmovssdb xmm0, zmm1
+ vpmovssdb DWORD PTR [rcx+508], xmm1
+ vpmovssdb QWORD PTR [rcx+1016], ymm1
+ vpmovssdb XMMWORD PTR [rcx+2032], zmm1
+ vpmovssdb xmm0{k1}, xmm1
+ vpmovssdb xmm0{k1}{z}, xmm1
+
+ vunpackb xmm0, xmm1, 1
+ vunpackb ymm0, ymm1, 1
+ vunpackb zmm0, zmm1, 1
+ vunpackb xmm0, XMMWORD PTR [rcx+2032], 1
+ vunpackb ymm0, YMMWORD PTR [rcx+4064], 1
+ vunpackb zmm0, ZMMWORD PTR [rcx+8128], 1
+ vunpackb xmm0{k1}, xmm1, 1
+ vunpackb xmm0{k1}{z}, xmm1, 1
@@ -527,6 +527,8 @@ run_dump_test "x86-64-avx10_2-256-sm4-intel"
run_dump_test "x86-64-avx10_2-512-sm4"
run_dump_test "x86-64-avx10_2-512-sm4-intel"
run_list_test "x86-64-avx10_2-sm4-inval"
+run_dump_test "x86-64-avx10_v2_aux"
+run_dump_test "x86-64-avx10_v2_aux-intel"
run_dump_test "x86-64-amx-transpose"
run_dump_test "x86-64-amx-transpose-intel"
run_list_test "x86-64-amx-transpose-inval"
@@ -18,3 +18,18 @@
{ "enqcmd", { Gva, M }, 0 },
{ VEX_W_TABLE (EVEX_W_MAP4_F8_P3_M_1) },
},
+ /* MOD_EVEX_MAP5_37_P_2 */
+ {
+ { Bad_Opcode },
+ { "vcvt%XF62hf8", { XM, EXx }, 0 },
+ },
+ /* MOD_EVEX_MAP5_3C_W_0_P_1 */
+ {
+ { Bad_Opcode },
+ { "vcvthf82hf6s", { XM, EXx }, 0 },
+ },
+ /* MOD_EVEX_MAP5_3E_W_1_P_1 */
+ {
+ { Bad_Opcode },
+ { "vcvtbf82bf6s", { XM, EXx }, 0 },
+ },
@@ -243,6 +243,11 @@
{ VEX_W_TABLE (EVEX_W_0F383A_P_1) },
{ "%XEvpminuw", { XM, Vex, EXx }, 0 },
},
+ /* PREFIX_EVEX_0F3841_W_0 */
+ {
+ { Bad_Opcode },
+ { "vpmovssdb", { EXxmmqd, XM }, 0 },
+ },
/* PREFIX_EVEX_0F384A_W_0_L_2 */
{
{ Bad_Opcode },
@@ -614,6 +619,53 @@
{ Bad_Opcode },
{ "vmovrs%BW", { XM, Mx }, 0 },
},
+ /* PREFIX_EVEX_MAP5_36 */
+ {
+ { "vcvt%XF82ps", { XM, EXxmmqd }, 0 },
+ },
+ /* PREFIX_EVEX_MAP5_37 */
+ {
+ { VEX_W_TABLE (EVEX_W_MAP5_37_P_0) },
+ { Bad_Opcode },
+ { MOD_TABLE (MOD_EVEX_MAP5_37_P_2) },
+ },
+ /* PREFIX_EVEX_MAP5_38_W_0 */
+ {
+ { "vcvtbiasps2hf8", { XMM, Vex, EXx }, 0 },
+ { "vcvtps2hf8%XZ", { XMM, EXx }, 0 },
+ { "vcvtrops2hf8%XZ", { XMM, EXx }, 0 },
+ },
+ /* PREFIX_EVEX_MAP5_39_W_0 */
+ {
+ { "vcvtbiasps2bf8", { XMM, Vex, EXx }, 0 },
+ { "vcvtps2bf8%XZ", { XMM, EXx }, 0 },
+ },
+ /* PREFIX_EVEX_MAP5_3A_W_0 */
+ {
+ { "vcvtbiasps2hf8s", { XMM, Vex, EXx }, 0 },
+ { "vcvtps2hf8s%XZ", { XMM, EXx }, 0 },
+ { "vcvtrops2hf8s%XZ", { XMM, EXx }, 0 },
+ },
+ /* PREFIX_EVEX_MAP5_3B_W_0 */
+ {
+ { "vcvtbiasps2bf8s", { XMM, Vex, EXx }, 0 },
+ { "vcvtps2bf8s%XZ", { XMM, EXx }, 0 },
+ },
+ /* PREFIX_EVEX_MAP5_3C_W_0 */
+ {
+ { Bad_Opcode },
+ { MOD_TABLE (MOD_EVEX_MAP5_3C_W_0_P_1) },
+ },
+ /* PREFIX_EVEX_MAP5_3D */
+ {
+ { Bad_Opcode },
+ { "vcvt%XF82bf4s", { EXxmmq, XM }, 0 },
+ },
+ /* PREFIX_EVEX_MAP5_3E_W_1 */
+ {
+ { Bad_Opcode },
+ { MOD_TABLE (MOD_EVEX_MAP5_3E_W_1_P_1) },
+ },
/* PREFIX_EVEX_MAP5_74 */
{
{ "vcvtbiasp%XH2bf8s", { XMxmmq, Vex, EXxh }, 0 },
@@ -346,6 +346,11 @@
{
{ "vpbroadcastmw2dY", { XM, MaskR }, 0 },
},
+ /* EVEX_W_0F3841 */
+ {
+ { PREFIX_TABLE (PREFIX_EVEX_0F3841_W_0) },
+ { Bad_Opcode },
+ },
/* EVEX_W_0F384A_X86_64 */
{
{ EVEX_LEN_TABLE (EVEX_LEN_0F384A_X86_64_W_0) },
@@ -445,6 +450,11 @@
{ "vextracti32x8", { EXymm, XM, Ib }, PREFIX_DATA },
{ "vextracti64x4", { EXymm, XM, Ib }, PREFIX_DATA },
},
+ /* EVEX_W_0F3A3D */
+ {
+ { "vunpackb", { XM, EXEvexXNoBcst, Ib }, NO_PREFIX },
+ { Bad_Opcode },
+ },
/* EVEX_W_0F3A42 */
{
{ PREFIX_TABLE (PREFIX_EVEX_0F3A42_W_0) },
@@ -486,6 +496,41 @@
{ "push2", { { PUSH2_POP2_Fixup, q_mode}, Eq }, 0 },
{ "push2p", { { PUSH2_POP2_Fixup, q_mode}, Eq }, 0 },
},
+ /* EVEX_W_MAP5_37_P_0 */
+ {
+ { "vcvtbf42hf8", { XM, EXxmmq }, 0 },
+ { Bad_Opcode },
+ },
+ /* EVEX_W_MAP5_38 */
+ {
+ { PREFIX_TABLE (PREFIX_EVEX_MAP5_38_W_0) },
+ { Bad_Opcode },
+ },
+ /* EVEX_W_MAP5_39 */
+ {
+ { PREFIX_TABLE (PREFIX_EVEX_MAP5_39_W_0) },
+ { Bad_Opcode },
+ },
+ /* EVEX_W_MAP5_3A */
+ {
+ { PREFIX_TABLE (PREFIX_EVEX_MAP5_3A_W_0) },
+ { Bad_Opcode },
+ },
+ /* EVEX_W_MAP5_3B */
+ {
+ { PREFIX_TABLE (PREFIX_EVEX_MAP5_3B_W_0) },
+ { Bad_Opcode },
+ },
+ /* EVEX_W_MAP5_3C */
+ {
+ { PREFIX_TABLE (PREFIX_EVEX_MAP5_3C_W_0) },
+ { Bad_Opcode },
+ },
+ /* EVEX_W_MAP5_3E */
+ {
+ { Bad_Opcode },
+ { PREFIX_TABLE (PREFIX_EVEX_MAP5_3E_W_1) },
+ },
/* EVEX_W_MAP5_5B_P_0 */
{
{ "vcvtdq2ph%XY", { XMxmmq, EXx, EXxEVexR }, 0 },
@@ -366,7 +366,7 @@ static const struct dis386 evex_table[][256] = {
{ "%XEvpmaxu%DQ", { XM, Vex, EXx }, PREFIX_DATA },
/* 40 */
{ "%XEvpmull%DQ", { XM, Vex, EXx }, PREFIX_DATA },
- { Bad_Opcode },
+ { VEX_W_TABLE (EVEX_W_0F3841) },
{ "vgetexpp%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA },
{ "vgetexps%XW", { XMScalar, VexScalar, EXdq, EXxEVexS }, PREFIX_DATA },
{ "vplzcnt%DQ", { XM, EXx }, PREFIX_DATA },
@@ -652,7 +652,7 @@ static const struct dis386 evex_table[][256] = {
{ EVEX_LEN_TABLE (EVEX_LEN_0F3A3A) },
{ EVEX_LEN_TABLE (EVEX_LEN_0F3A3B) },
{ Bad_Opcode },
- { Bad_Opcode },
+ { VEX_W_TABLE (EVEX_W_0F3A3D) },
{ "vpcmpu%BW", { MaskG, Vex, EXx, VPCMP }, PREFIX_DATA },
{ "vpcmp%BW", { MaskG, Vex, EXx, VPCMP }, PREFIX_DATA },
/* 40 */
@@ -1226,16 +1226,16 @@ static const struct dis386 evex_table[][256] = {
{ Bad_Opcode },
{ Bad_Opcode },
{ Bad_Opcode },
- { Bad_Opcode },
- { Bad_Opcode },
+ { PREFIX_TABLE (PREFIX_EVEX_MAP5_36) },
+ { PREFIX_TABLE (PREFIX_EVEX_MAP5_37) },
/* 38 */
- { Bad_Opcode },
- { Bad_Opcode },
- { Bad_Opcode },
- { Bad_Opcode },
- { Bad_Opcode },
- { Bad_Opcode },
- { Bad_Opcode },
+ { VEX_W_TABLE (EVEX_W_MAP5_38) },
+ { VEX_W_TABLE (EVEX_W_MAP5_39) },
+ { VEX_W_TABLE (EVEX_W_MAP5_3A) },
+ { VEX_W_TABLE (EVEX_W_MAP5_3B) },
+ { VEX_W_TABLE (EVEX_W_MAP5_3C) },
+ { PREFIX_TABLE (PREFIX_EVEX_MAP5_3D) },
+ { VEX_W_TABLE (EVEX_W_MAP5_3E) },
{ Bad_Opcode },
/* 40 */
{ Bad_Opcode },
@@ -976,6 +976,10 @@ enum
MOD_EVEX_MAP4_61,
MOD_EVEX_MAP4_F8_P_1,
MOD_EVEX_MAP4_F8_P_3,
+
+ MOD_EVEX_MAP5_37_P_2,
+ MOD_EVEX_MAP5_3C_W_0_P_1,
+ MOD_EVEX_MAP5_3E_W_1_P_1,
};
enum
@@ -1211,6 +1215,7 @@ enum
PREFIX_EVEX_0F3838,
PREFIX_EVEX_0F3839,
PREFIX_EVEX_0F383A,
+ PREFIX_EVEX_0F3841_W_0,
PREFIX_EVEX_0F384A_X86_64_W_0_L_2,
PREFIX_EVEX_0F3852,
PREFIX_EVEX_0F3853,
@@ -1272,6 +1277,15 @@ enum
PREFIX_EVEX_MAP5_6D,
PREFIX_EVEX_MAP5_6E_L_0,
PREFIX_EVEX_MAP5_6F_X86_64,
+ PREFIX_EVEX_MAP5_36,
+ PREFIX_EVEX_MAP5_37,
+ PREFIX_EVEX_MAP5_38_W_0,
+ PREFIX_EVEX_MAP5_39_W_0,
+ PREFIX_EVEX_MAP5_3A_W_0,
+ PREFIX_EVEX_MAP5_3B_W_0,
+ PREFIX_EVEX_MAP5_3C_W_0,
+ PREFIX_EVEX_MAP5_3D,
+ PREFIX_EVEX_MAP5_3E_W_1,
PREFIX_EVEX_MAP5_74,
PREFIX_EVEX_MAP5_78,
PREFIX_EVEX_MAP5_79,
@@ -1827,6 +1841,7 @@ enum
EVEX_W_0F3835_P_2,
EVEX_W_0F3837,
EVEX_W_0F383A_P_1,
+ EVEX_W_0F3841,
EVEX_W_0F384A_X86_64,
EVEX_W_0F3859,
EVEX_W_0F385A_L_n,
@@ -1849,6 +1864,7 @@ enum
EVEX_W_0F3A39_L_n,
EVEX_W_0F3A3A_L_2,
EVEX_W_0F3A3B_L_2,
+ EVEX_W_0F3A3D,
EVEX_W_0F3A42,
EVEX_W_0F3A43_L_n,
EVEX_W_0F3A70,
@@ -1860,6 +1876,13 @@ enum
EVEX_W_MAP4_F8_P3_M_1,
EVEX_W_MAP4_FF_R_6,
+ EVEX_W_MAP5_37_P_0,
+ EVEX_W_MAP5_38,
+ EVEX_W_MAP5_39,
+ EVEX_W_MAP5_3A,
+ EVEX_W_MAP5_3B,
+ EVEX_W_MAP5_3C,
+ EVEX_W_MAP5_3E,
EVEX_W_MAP5_5B_P_0,
EVEX_W_MAP5_6C_P_0,
EVEX_W_MAP5_6C_P_2,
@@ -1935,6 +1958,7 @@ struct dis386 {
"XH" => print 'h' if EVEX.W=0, EVEX.W=1 is not a valid encoding (for FP16)
"XB" => print 'bf16' if EVEX.W=0, EVEX.W=1 is not a valid encoding
(for BF16)
+ "XF" => print 'hf' if EVEX.W=0 or 'bf' if EVEX.W=1
"XS" => print 's' if !EVEX or EVEX.W=0, EVEX.W=1 is not a valid encoding
"XV" => print "{vex} " pseudo prefix
"XE" => print "{evex} " pseudo prefix if no EVEX-specific functionality is
@@ -11075,6 +11099,8 @@ putop (instr_info *ins, const char *in_template, int sizeflag)
ins->used_prefixes |= (ins->prefixes & PREFIX_ADDR);
}
}
+ else if (l == 1 && last[0] == 'X')
+ oappend (ins, ins->vex.w ? "bf" : "hf");
else if (l == 1 && last[0] == 'C')
{
if (ins->vex.nd && !ins->vex.nf)
@@ -251,6 +251,8 @@ static const dependency isa_dependencies[] =
"AVX10_1" },
{ "AVX10_2",
"AVX10_1_AUX" },
+ { "AVX10_V2_AUX",
+ "AVX10_1" },
{ "SEV_ES",
"SVME" },
{ "SNP",
@@ -454,6 +456,7 @@ static bitfield cpu_flags[] =
BITFIELD (APX_F),
BITFIELD (AVX10_1_AUX),
BITFIELD (AVX10_2),
+ BITFIELD (AVX10_V2_AUX),
BITFIELD (MOVRS),
BITFIELD (MWAITX),
BITFIELD (CLZERO),
@@ -332,6 +332,8 @@ enum i386_cpu
CpuAPX_NDD,
/* Intel APX No-Flags-update support required. */
CpuAPX_NF,
+ /* AVX10 V2 Auxiliary Instructions support required. */
+ CpuAVX10_V2_AUX,
/* 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. */
@@ -573,6 +575,7 @@ typedef union i386_cpu_flags
unsigned int cpuapx_nci:1;
unsigned int cpuapx_ndd:1;
unsigned int cpuapx_nf:1;
+ unsigned int cpuavx10_v2_aux:1;
CPU_FLAGS_COMMON;
#ifdef CpuUnused
unsigned int unused:(CpuNumOfBits - CpuUnused);
@@ -2266,6 +2266,13 @@ vpclmulhqhqdq, 0x6644/0x11, VPCLMULQDQ&(AVX|AVX512F), Modrm|Space0F3A|Vex|EVexDY
x:AVX512VL:EVex128|Disp8MemShift=4|ATTSyntax:::RegXMM|Unspecified|BaseIndex:RegXMM, +
y:AVX512VL:EVex256|Disp8MemShift=5|ATTSyntax:::RegYMM|Unspecified|BaseIndex:RegXMM>
+<Exyz:attr:src, +
+ $i:Disp8ShiftVL|IntelSyntax:RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, +
+ $a:Disp8ShiftVL|ATTSyntax:RegXMM|RegYMM|RegZMM|BaseIndex, +
+ x:EVex128|Disp8MemShift=4|ATTSyntax:RegXMM|Unspecified|BaseIndex, +
+ y:EVex256|Disp8MemShift=5|ATTSyntax:RegYMM|Unspecified|BaseIndex, +
+ z:EVex512|Disp8MemShift=6|ATTSyntax:RegZMM|Unspecified|BaseIndex>
+
kand<bw>, 0x<bw:kpfx>41, <bw:kcpu>, Modrm|Vex256|Space0F|Src1VVVV|VexW0|NoSuf, { RegMask, RegMask, RegMask }
kandn<bw>, 0x<bw:kpfx>42, <bw:kcpu>, Modrm|Vex256|Space0F|Src1VVVV|VexW0|NoSuf, { RegMask, RegMask, RegMask }
kor<bw>, 0x<bw:kpfx>45, <bw:kcpu>, Modrm|Vex256|Space0F|Src1VVVV|VexW0|NoSuf, { RegMask, RegMask, RegMask }
@@ -3614,6 +3621,62 @@ vucomxs<sdh>, 0x<sdh:spfx>2e, AVX10_2, Modrm|EVexLIG|<sdh:spc1>|<sdh:vexw>|Disp8
// AVX10.2 instructions end.
+// AVX10_V2_AUX instructions.
+
+<cvtps8:opc, +
+ bf8:39, +
+ bf8s:3b, +
+ hf8:38, +
+ hf8s:3a>
+
+vcvtps2<cvtps8><Exyz>, 0xf3<cvtps8:opc>, AVX10_V2_AUX, Modrm|Map5|<Exyz:attr>|VexW0|Masking|Broadcast|NoSuf, { <Exyz:src>|Dword, RegXMM }
+
+vcvtbiasps2<cvtps8>, 0x<cvtps8:opc>, AVX10_V2_AUX, Modrm|Map5|Src1VVVV|VexW0|Masking|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Dword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM }
+
+<cvtps8>
+
+<cvtrops8:opc, +
+ hf8:38, +
+ hf8s:3a>
+
+vcvtrops2<cvtrops8><Exyz>, 0x66<cvtrops8:opc>, AVX10_V2_AUX, Modrm|Map5|<Exyz:attr>|VexW0|Masking|Broadcast|NoSuf, { <Exyz:src>|Dword, RegXMM }
+
+<cvtrops8>
+
+<fp:vexw, +
+ hf:VexW0, +
+ bf:VexW1>
+
+vcvt<fp>82ps, 0x36, AVX10_V2_AUX, Modrm|Map5|EVex128|<fp:vexw>|Masking|Disp8MemShift=2|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegXMM }
+vcvt<fp>82ps, 0x36, AVX10_V2_AUX, Modrm|Map5|EVex256|<fp:vexw>|Masking|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegYMM }
+vcvt<fp>82ps, 0x36, AVX10_V2_AUX, Modrm|Map5|EVex512|<fp:vexw>|Masking|Disp8MemShift=4|NoSuf, { RegXMM|Unspecified|BaseIndex, RegZMM }
+
+vcvt<fp>82bf4s, 0xf33d, AVX10_V2_AUX, RegMem|Map5|EVex128|<fp:vexw>|Disp8MemShift=3|NoSuf, { RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
+vcvt<fp>82bf4s, 0xf33d, AVX10_V2_AUX, RegMem|Map5|EVex256|<fp:vexw>|Disp8MemShift=4|NoSuf, { RegYMM, RegXMM|Unspecified|BaseIndex }
+vcvt<fp>82bf4s, 0xf33d, AVX10_V2_AUX, RegMem|Map5|EVex512|<fp:vexw>|Disp8MemShift=5|NoSuf, { RegZMM, RegYMM|Unspecified|BaseIndex }
+
+<fp>
+
+vcvtbf82bf6s, 0xf33e, AVX10_V2_AUX, Modrm|EVexDYN|Map5|VexW1|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
+
+vcvthf82hf6s, 0xf33c, AVX10_V2_AUX, Modrm|EVexDYN|Map5|VexW0|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
+
+vcvtbf42hf8, 0x37, AVX10_V2_AUX, Modrm|Map5|EVex128|VexW0|Masking|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegXMM }
+vcvtbf42hf8, 0x37, AVX10_V2_AUX, Modrm|Map5|EVex256|VexW0|Masking|Disp8MemShift=4|NoSuf, { RegXMM|Unspecified|BaseIndex, RegYMM }
+vcvtbf42hf8, 0x37, AVX10_V2_AUX, Modrm|Map5|EVex512|VexW0|Masking|Disp8MemShift=5|NoSuf, { RegYMM|Unspecified|BaseIndex, RegZMM }
+
+vcvtbf62hf8, 0x6637, AVX10_V2_AUX, Modrm|Map5|VexW1|Masking|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
+
+vcvthf62hf8, 0x6637, AVX10_V2_AUX, Modrm|Map5|VexW0|Masking|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
+
+vpmovssdb, 0xf341, AVX10_V2_AUX, Modrm|EVex128|Masking|Space0F38|VexW0|Disp8MemShift=2|NoSuf, { RegXMM, RegXMM|Dword|Unspecified|BaseIndex }
+vpmovssdb, 0xf341, AVX10_V2_AUX, Modrm|EVex256|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegYMM, RegXMM|Qword|Unspecified|BaseIndex }
+vpmovssdb, 0xf341, AVX10_V2_AUX, Modrm|EVex512|Masking|Space0F38|VexW0|Disp8MemShift=4|NoSuf, { RegZMM, RegXMM|Unspecified|BaseIndex }
+
+vunpackb, 0x3d, AVX10_V2_AUX, Modrm|Masking|Space0F3A|VexW0|Disp8ShiftVL|CheckOperandSize|NoSuf, { Imm8, RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM }
+
+// AVX10_V2_AUX instructions end.
+
// MOVRS instructions.
prefetchrst2, 0xf18/4, MOVRS, Modrm|Anysize|IgnoreSize|NoSuf, { BaseIndex }