Checks
| Context |
Check |
Description |
| linaro-tcwg-bot/tcwg_binutils_build--master-arm |
success
|
Build passed
|
| linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 |
success
|
Build passed
|
| linaro-tcwg-bot/tcwg_binutils_check--master-aarch64 |
success
|
Test passed
|
| linaro-tcwg-bot/tcwg_binutils_check--master-arm |
success
|
Test passed
|
Commit Message
... in analogy to gcc's option of the same name: It relaxes constraints
on (the lack of) commutativity of V{ADD,MAX,MIN,MUL}{P,S}{S,D}. They're
not fully commutative solely because of their NaN treatment. If the
programmer indicates that's benign to them, we can apply the VEX3->VEX2
encoding transformation for these AVX insns as well.
---
If we wanted to also use this to control optimization of NOP-like insns
(e.g. the XCHG -> MOV one), the variable would want renaming. Question is:
_Do_ we (perhaps) want that?
Comments
> From: Jan Beulich <jbeulich@suse.com>
> Sent: Friday, August 28, 2026 4:40 PM
>
> ... in analogy to gcc's option of the same name: It relaxes constraints
> on (the lack of) commutativity of V{ADD,MAX,MIN,MUL}{P,S}{S,D}. They're
> not fully commutative solely because of their NaN treatment. If the
> programmer indicates that's benign to them, we can apply the VEX3->VEX2
> encoding transformation for these AVX insns as well.
I am not against the option and the behavior of this patch since it fits what
its goal.
Maybe others will have concerns on whether it is out of scope for assembler
hence we need to leave some time for others.
> ---
> If we wanted to also use this to control optimization of NOP-like insns
> (e.g. the XCHG -> MOV one), the variable would want renaming. Question is:
> _Do_ we (perhaps) want that?
>
NOP insns might be another topic. It is still vague to me. I will lean on if we
have -Ofast, we could include that. And which variable would want renaming?
I did not get that.
Thx,
Haochen
On 28.08.2026 11:05, Jiang, Haochen wrote:
>> From: Jan Beulich <jbeulich@suse.com>
>> Sent: Friday, August 28, 2026 4:40 PM
>> ---
>> If we wanted to also use this to control optimization of NOP-like insns
>> (e.g. the XCHG -> MOV one), the variable would want renaming. Question is:
>> _Do_ we (perhaps) want that?
>
> NOP insns might be another topic. It is still vague to me. I will lean on if we
> have -Ofast, we could include that. And which variable would want renaming?
> I did not get that.
Imo while -Ofast naming-wise fits the purpose there as well, "fast_math" makes
little sense when also covering non-math transformations.
Jan
On Fri, Aug 28, 2026 at 4:39 PM Jan Beulich <jbeulich@suse.com> wrote:
>
> ... in analogy to gcc's option of the same name: It relaxes constraints
> on (the lack of) commutativity of V{ADD,MAX,MIN,MUL}{P,S}{S,D}. They're
> not fully commutative solely because of their NaN treatment. If the
> programmer indicates that's benign to them, we can apply the VEX3->VEX2
> encoding transformation for these AVX insns as well.
> ---
> If we wanted to also use this to control optimization of NOP-like insns
> (e.g. the XCHG -> MOV one), the variable would want renaming. Question is:
> _Do_ we (perhaps) want that?
>
> --- a/gas/doc/c-i386.texi
> +++ b/gas/doc/c-i386.texi
> @@ -624,7 +624,9 @@ only and AMD64 ISAs.
> @cindex @samp{-O2} option, x86-64
> @cindex @samp{-Os} option, i386
> @cindex @samp{-Os} option, x86-64
> -@item -O0 | -O | -O1 | -O2 | -Os
> +@cindex @samp{-Ofast} option, i386
> +@cindex @samp{-Ofast} option, x86-64
> +@item -O0 | -O | -O1 | -O2 | -Os | -Ofast
> Optimize instruction encoding with smaller instruction size. @samp{-O}
> and @samp{-O1} encode 64-bit register load instructions with 64-bit
> immediate as 32-bit register load instructions with 31-bit or 32-bits
> @@ -648,6 +650,12 @@ same (register) operand specified twice
> and 64-bit register tests with immediate as 8-bit register test with
> immediate. @samp{-O0} turns off this optimization.
>
> +@samp{-Ofast} is separate from other optimization options. Its use
> +indicates to the assembler that not entirely correct optimizations may
> +be applied, e.g. assuming the absence of NaN-s. See the compiler's
I am against such options which may introduce incorrect behavior.
Programmers should use -Ofast compiler option or appropriate
assembler instructions.
> +similar option. Other optimization options may still need using in
> +addition to this one, for the intended effect to be achieved.
> +
> @end table
> @c man end
>
> --- a/gas/config/tc-i386.c
> +++ b/gas/config/tc-i386.c
> @@ -854,6 +854,11 @@ static int optimize_for_space = 0;
> /* Disabled optimizations. */
> static int optimize_for_disabled_optimizations = 0;
>
> +/* Optimization: Allow optimizations not entirely safe, e.g. correct only
> + when no NaN-s are involved.
> + */
> +static bool fast_math;
> +
> /* Register prefix used for error message. */
> static const char *register_prefix = "%";
>
> @@ -6628,6 +6633,7 @@ s_noopt (int dummy ATTRIBUTE_UNUSED)
>
> optimize = 0;
> optimize_for_space = 0;
> + fast_math = false;
>
> ignore_rest_of_line ();
> }
> @@ -7756,6 +7762,15 @@ i386_assemble (char *line)
> {
> if (pp.has_nf)
> optimize_nf_encoding ();
> + else if (fast_math
> + && (i.tm.base_opcode | 7) == 0x5f
> + && i.tm.opcode_space == SPACE_0F)
> + {
> + /* Arrange for build_vex_prefix() to recognize these insns as
> + (sufficiently) commutative. */
> + i.tm.opcode_modifier.commutative = 1;
> + }
> +
> optimize_encoding ();
> }
>
> @@ -17993,6 +18008,8 @@ md_parse_option (int c, const char *arg)
> /* Turn on all encoding optimizations. */
> optimize = INT_MAX;
> }
> + else if (!strcmp (arg, "fast"))
> + fast_math = true;
> else
> {
> optimize = atoi (arg);
> --- a/gas/testsuite/gas/i386/x86-64.exp
> +++ b/gas/testsuite/gas/i386/x86-64.exp
> @@ -276,6 +276,7 @@ run_dump_test "x86-64-sse2avx-opts-intel
> run_dump_test "x86-64-avx-swap"
> run_dump_test "x86-64-avx-swap-intel"
> run_dump_test "x86-64-avx-swap-2"
> +run_dump_test "x86-64-avx-swap-2fast"
> run_dump_test "x86-64-bmi2"
> run_dump_test "x86-64-bmi2-intel"
> run_dump_test "x86-64-fma"
> --- /dev/null
> +++ b/gas/testsuite/gas/i386/x86-64-avx-swap-2fast.d
> @@ -0,0 +1,381 @@
> +#as: -O2 -Ofast
> +#objdump: -dw
> +#name: x86-64 AVX/AVX2 w/ source swapping (-Ofast)
> +#source: x86-64-avx-swap-2.s
> +
> +.*: file format .*
> +
> +Disassembly of section .text:
> +
> +0+ <_start>:
> +[ ]*[a-f0-9]+: c5 8d 58 d6 vaddpd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8c 58 d6 vaddps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d d0 d6 vaddsubpd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4f d0 d6 vaddsubps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d 55 d6 vandnpd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4c 55 d6 vandnps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8d 54 d6 vandpd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8c 54 d6 vandps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d 5e d6 vdivpd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4c 5e d6 vdivps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d 7c d6 vhaddpd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4f 7c d6 vhaddps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d 7d d6 vhsubpd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4f 7d d6 vhsubps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8d 5f d6 vmaxpd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8c 5f d6 vmaxps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d 5d d6 vminpd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8c 5d d6 vminps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d 59 d6 vmulpd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8c 59 d6 vmulps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d 56 d6 vorpd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8c 56 d6 vorps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d fc d6 vpaddb %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d fd d6 vpaddw %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d fe d6 vpaddd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d d4 d6 vpaddq %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d ec d6 vpaddsb %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d ed d6 vpaddsw %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d dc d6 vpaddusb %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d dd d6 vpaddusw %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d db d6 vpand %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d df d6 vpandn %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8d e0 d6 vpavgb %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d e3 d6 vpavgw %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d 74 d6 vpcmpeqb %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d 75 d6 vpcmpeqw %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d 76 d6 vpcmpeqd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c2 4d 29 d6 vpcmpeqq %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d 64 d6 vpcmpgtb %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d 65 d6 vpcmpgtw %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d 66 d6 vpcmpgtd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c2 4d 37 d6 vpcmpgtq %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8d f5 d6 vpmaddwd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c2 4d 3c d6 vpmaxsb %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8d ee d6 vpmaxsw %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c2 4d 3d d6 vpmaxsd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8d de d6 vpmaxub %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c2 4d 3e d6 vpmaxuw %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c2 4d 3f d6 vpmaxud %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c2 4d 38 d6 vpminsb %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8d ea d6 vpminsw %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c2 4d 39 d6 vpminsd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8d da d6 vpminub %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c2 4d 3a d6 vpminuw %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c2 4d 3b d6 vpminud %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8d e4 d6 vpmulhuw %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d e5 d6 vpmulhw %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d d5 d6 vpmullw %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c2 4d 40 d6 vpmulld %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8d f4 d6 vpmuludq %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c2 4d 28 d6 vpmuldq %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8d eb d6 vpor %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d f6 d6 vpsadbw %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d f8 d6 vpsubb %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d f9 d6 vpsubw %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d fa d6 vpsubd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d fb d6 vpsubq %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d e8 d6 vpsubsb %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d e9 d6 vpsubsw %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d d8 d6 vpsubusb %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d d9 d6 vpsubusw %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8d ef d6 vpxor %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d 5c d6 vsubpd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4c 5c d6 vsubps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8d 57 d6 vxorpd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8c 57 d6 vxorps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d c2 d6 00 vcmpeqpd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d c2 d6 01 vcmpltpd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d c2 d6 02 vcmplepd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8d c2 d6 03 vcmpunordpd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d c2 d6 04 vcmpneqpd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d c2 d6 05 vcmpnltpd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d c2 d6 06 vcmpnlepd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8d c2 d6 07 vcmpordpd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d c2 d6 08 vcmpeq_uqpd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d c2 d6 09 vcmpngepd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d c2 d6 0a vcmpngtpd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8d c2 d6 0b vcmpfalsepd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d c2 d6 0c vcmpneq_oqpd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d c2 d6 0d vcmpgepd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d c2 d6 0e vcmpgtpd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8d c2 d6 0f vcmptruepd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d c2 d6 10 vcmpeq_ospd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d c2 d6 11 vcmplt_oqpd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d c2 d6 12 vcmple_oqpd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8d c2 d6 13 vcmpunord_spd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d c2 d6 14 vcmpneq_uspd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d c2 d6 15 vcmpnlt_uqpd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d c2 d6 16 vcmpnle_uqpd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8d c2 d6 17 vcmpord_spd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d c2 d6 18 vcmpeq_uspd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d c2 d6 19 vcmpnge_uqpd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d c2 d6 1a vcmpngt_uqpd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8d c2 d6 1b vcmpfalse_ospd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8d c2 d6 1c vcmpneq_ospd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d c2 d6 1d vcmpge_oqpd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d c2 d6 1e vcmpgt_oqpd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8d c2 d6 1f vcmptrue_uspd %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8c c2 d6 00 vcmpeqps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4c c2 d6 01 vcmpltps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4c c2 d6 02 vcmpleps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8c c2 d6 03 vcmpunordps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8c c2 d6 04 vcmpneqps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4c c2 d6 05 vcmpnltps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4c c2 d6 06 vcmpnleps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8c c2 d6 07 vcmpordps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8c c2 d6 08 vcmpeq_uqps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4c c2 d6 09 vcmpngeps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4c c2 d6 0a vcmpngtps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8c c2 d6 0b vcmpfalseps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8c c2 d6 0c vcmpneq_oqps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4c c2 d6 0d vcmpgeps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4c c2 d6 0e vcmpgtps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8c c2 d6 0f vcmptrueps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8c c2 d6 10 vcmpeq_osps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4c c2 d6 11 vcmplt_oqps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4c c2 d6 12 vcmple_oqps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8c c2 d6 13 vcmpunord_sps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8c c2 d6 14 vcmpneq_usps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4c c2 d6 15 vcmpnlt_uqps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4c c2 d6 16 vcmpnle_uqps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8c c2 d6 17 vcmpord_sps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8c c2 d6 18 vcmpeq_usps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4c c2 d6 19 vcmpnge_uqps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4c c2 d6 1a vcmpngt_uqps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8c c2 d6 1b vcmpfalse_osps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c5 8c c2 d6 1c vcmpneq_osps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4c c2 d6 1d vcmpge_oqps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4c c2 d6 1e vcmpgt_oqps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 8c c2 d6 1f vcmptrue_usps %ymm6,%ymm14,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4d c2 d6 07 vcmpordpd %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c4 c1 4c c2 d6 07 vcmpordps %ymm14,%ymm6,%ymm2
> +[ ]*[a-f0-9]+: c5 89 58 d6 vaddpd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 88 58 d6 vaddps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 d0 d6 vaddsubpd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4b d0 d6 vaddsubps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 55 d6 vandnpd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 48 55 d6 vandnps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 89 54 d6 vandpd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 88 54 d6 vandps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 5e d6 vdivpd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 48 5e d6 vdivps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 7c d6 vhaddpd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4b 7c d6 vhaddps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 7d d6 vhsubpd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4b 7d d6 vhsubps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 89 5f d6 vmaxpd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 88 5f d6 vmaxps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 5d d6 vminpd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 88 5d d6 vminps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 59 d6 vmulpd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 88 59 d6 vmulps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 56 d6 vorpd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 88 56 d6 vorps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 fc d6 vpaddb %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 fd d6 vpaddw %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 fe d6 vpaddd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 d4 d6 vpaddq %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 ec d6 vpaddsb %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 ed d6 vpaddsw %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 dc d6 vpaddusb %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 dd d6 vpaddusw %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 db d6 vpand %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 df d6 vpandn %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 89 e0 d6 vpavgb %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 e3 d6 vpavgw %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 74 d6 vpcmpeqb %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 75 d6 vpcmpeqw %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 76 d6 vpcmpeqd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c2 49 29 d6 vpcmpeqq %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 64 d6 vpcmpgtb %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 65 d6 vpcmpgtw %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 66 d6 vpcmpgtd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c2 49 37 d6 vpcmpgtq %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 89 f5 d6 vpmaddwd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c2 49 3c d6 vpmaxsb %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 89 ee d6 vpmaxsw %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c2 49 3d d6 vpmaxsd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 89 de d6 vpmaxub %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c2 49 3e d6 vpmaxuw %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c2 49 3f d6 vpmaxud %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c2 49 38 d6 vpminsb %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 89 ea d6 vpminsw %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c2 49 39 d6 vpminsd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 89 da d6 vpminub %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c2 49 3a d6 vpminuw %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c2 49 3b d6 vpminud %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 89 e4 d6 vpmulhuw %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 e5 d6 vpmulhw %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 d5 d6 vpmullw %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c2 49 40 d6 vpmulld %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 89 f4 d6 vpmuludq %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c2 49 28 d6 vpmuldq %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 89 eb d6 vpor %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 f6 d6 vpsadbw %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 f8 d6 vpsubb %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 f9 d6 vpsubw %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 fa d6 vpsubd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 fb d6 vpsubq %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 e8 d6 vpsubsb %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 e9 d6 vpsubsw %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 d8 d6 vpsubusb %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 d9 d6 vpsubusw %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 89 ef d6 vpxor %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 5c d6 vsubpd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 48 5c d6 vsubps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 89 57 d6 vxorpd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 88 57 d6 vxorps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 c2 d6 00 vcmpeqpd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 c2 d6 01 vcmpltpd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 c2 d6 02 vcmplepd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 89 c2 d6 03 vcmpunordpd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 c2 d6 04 vcmpneqpd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 c2 d6 05 vcmpnltpd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 c2 d6 06 vcmpnlepd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 89 c2 d6 07 vcmpordpd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 c2 d6 08 vcmpeq_uqpd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 c2 d6 09 vcmpngepd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 c2 d6 0a vcmpngtpd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 89 c2 d6 0b vcmpfalsepd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 c2 d6 0c vcmpneq_oqpd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 c2 d6 0d vcmpgepd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 c2 d6 0e vcmpgtpd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 89 c2 d6 0f vcmptruepd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 c2 d6 10 vcmpeq_ospd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 c2 d6 11 vcmplt_oqpd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 c2 d6 12 vcmple_oqpd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 89 c2 d6 13 vcmpunord_spd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 c2 d6 14 vcmpneq_uspd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 c2 d6 15 vcmpnlt_uqpd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 c2 d6 16 vcmpnle_uqpd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 89 c2 d6 17 vcmpord_spd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 c2 d6 18 vcmpeq_uspd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 c2 d6 19 vcmpnge_uqpd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 c2 d6 1a vcmpngt_uqpd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 89 c2 d6 1b vcmpfalse_ospd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 89 c2 d6 1c vcmpneq_ospd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 c2 d6 1d vcmpge_oqpd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 c2 d6 1e vcmpgt_oqpd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 89 c2 d6 1f vcmptrue_uspd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 88 c2 d6 00 vcmpeqps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 48 c2 d6 01 vcmpltps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 48 c2 d6 02 vcmpleps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 88 c2 d6 03 vcmpunordps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 88 c2 d6 04 vcmpneqps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 48 c2 d6 05 vcmpnltps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 48 c2 d6 06 vcmpnleps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 88 c2 d6 07 vcmpordps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 88 c2 d6 08 vcmpeq_uqps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 48 c2 d6 09 vcmpngeps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 48 c2 d6 0a vcmpngtps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 88 c2 d6 0b vcmpfalseps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 88 c2 d6 0c vcmpneq_oqps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 48 c2 d6 0d vcmpgeps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 48 c2 d6 0e vcmpgtps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 88 c2 d6 0f vcmptrueps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 88 c2 d6 10 vcmpeq_osps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 48 c2 d6 11 vcmplt_oqps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 48 c2 d6 12 vcmple_oqps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 88 c2 d6 13 vcmpunord_sps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 88 c2 d6 14 vcmpneq_usps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 48 c2 d6 15 vcmpnlt_uqps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 48 c2 d6 16 vcmpnle_uqps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 88 c2 d6 17 vcmpord_sps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 88 c2 d6 18 vcmpeq_usps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 48 c2 d6 19 vcmpnge_uqps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 48 c2 d6 1a vcmpngt_uqps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 88 c2 d6 1b vcmpfalse_osps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 88 c2 d6 1c vcmpneq_osps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 48 c2 d6 1d vcmpge_oqps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 48 c2 d6 1e vcmpgt_oqps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 88 c2 d6 1f vcmptrue_usps %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 49 c2 d6 07 vcmpordpd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 48 c2 d6 07 vcmpordps %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 79 2f f6 vcomisd %xmm14,%xmm6
> +[ ]*[a-f0-9]+: c4 c1 79 2e f6 vucomisd %xmm14,%xmm6
> +[ ]*[a-f0-9]+: c4 c1 4b c2 d6 07 vcmpordsd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 8b 58 d6 vaddsd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4b 5e d6 vdivsd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 8b 5f d6 vmaxsd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 8b 5d d6 vminsd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 8b 59 d6 vmulsd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4b 51 d6 vsqrtsd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4b 5c d6 vsubsd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 8b c2 d6 00 vcmpeqsd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4b c2 d6 01 vcmpltsd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4b c2 d6 02 vcmplesd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 8b c2 d6 03 vcmpunordsd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 8b c2 d6 04 vcmpneqsd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4b c2 d6 05 vcmpnltsd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4b c2 d6 06 vcmpnlesd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 8b c2 d6 07 vcmpordsd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 8b c2 d6 08 vcmpeq_uqsd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4b c2 d6 09 vcmpngesd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4b c2 d6 0a vcmpngtsd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 8b c2 d6 0b vcmpfalsesd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 8b c2 d6 0c vcmpneq_oqsd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4b c2 d6 0d vcmpgesd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4b c2 d6 0e vcmpgtsd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 8b c2 d6 0f vcmptruesd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 8b c2 d6 10 vcmpeq_ossd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4b c2 d6 11 vcmplt_oqsd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4b c2 d6 12 vcmple_oqsd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 8b c2 d6 13 vcmpunord_ssd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 8b c2 d6 14 vcmpneq_ussd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4b c2 d6 15 vcmpnlt_uqsd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4b c2 d6 16 vcmpnle_uqsd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 8b c2 d6 17 vcmpord_ssd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 8b c2 d6 18 vcmpeq_ussd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4b c2 d6 19 vcmpnge_uqsd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4b c2 d6 1a vcmpngt_uqsd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 8b c2 d6 1b vcmpfalse_ossd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 8b c2 d6 1c vcmpneq_ossd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4b c2 d6 1d vcmpge_oqsd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4b c2 d6 1e vcmpgt_oqsd %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 8b c2 d6 1f vcmptrue_ussd %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 8a 58 d6 vaddss %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4a 5e d6 vdivss %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 8a 5f d6 vmaxss %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 8a 5d d6 vminss %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 8a 59 d6 vmulss %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4a 53 d6 vrcpss %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4a 52 d6 vrsqrtss %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4a 51 d6 vsqrtss %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4a 5c d6 vsubss %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 8a c2 d6 00 vcmpeqss %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4a c2 d6 01 vcmpltss %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4a c2 d6 02 vcmpless %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 8a c2 d6 03 vcmpunordss %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 8a c2 d6 04 vcmpneqss %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4a c2 d6 05 vcmpnltss %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4a c2 d6 06 vcmpnless %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 8a c2 d6 07 vcmpordss %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 8a c2 d6 08 vcmpeq_uqss %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4a c2 d6 09 vcmpngess %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4a c2 d6 0a vcmpngtss %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 8a c2 d6 0b vcmpfalsess %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 8a c2 d6 0c vcmpneq_oqss %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4a c2 d6 0d vcmpgess %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4a c2 d6 0e vcmpgtss %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 8a c2 d6 0f vcmptruess %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 8a c2 d6 10 vcmpeq_osss %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4a c2 d6 11 vcmplt_oqss %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4a c2 d6 12 vcmple_oqss %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 8a c2 d6 13 vcmpunord_sss %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 8a c2 d6 14 vcmpneq_usss %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4a c2 d6 15 vcmpnlt_uqss %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4a c2 d6 16 vcmpnle_uqss %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 8a c2 d6 17 vcmpord_sss %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 8a c2 d6 18 vcmpeq_usss %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4a c2 d6 19 vcmpnge_uqss %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4a c2 d6 1a vcmpngt_uqss %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 8a c2 d6 1b vcmpfalse_osss %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c5 8a c2 d6 1c vcmpneq_osss %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4a c2 d6 1d vcmpge_oqss %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 4a c2 d6 1e vcmpgt_oqss %xmm14,%xmm6,%xmm2
> +[ ]*[a-f0-9]+: c5 8a c2 d6 1f vcmptrue_usss %xmm6,%xmm14,%xmm2
> +[ ]*[a-f0-9]+: c4 c1 78 2f f6 vcomiss %xmm14,%xmm6
> +[ ]*[a-f0-9]+: c4 c1 78 2e f6 vucomiss %xmm14,%xmm6
> +[ ]*[a-f0-9]+: c4 c1 4a c2 d6 07 vcmpordss %xmm14,%xmm6,%xmm2
> +#pass
> --- a/opcodes/i386-opc.tbl
> +++ b/opcodes/i386-opc.tbl
> @@ -1189,13 +1189,13 @@ pxor<MMX>, 0x<MMX:pfx>0fef, <MMX:cpu>, M
> $avx:0xf30f53:0xf30f52:AVX:VexLIG|VexW0|Src1VVVV|SSE2AVX, +
> $apx:0x660f384d:0x660f384f:AVX512F:EVexLIG|VexW0|Src1VVVV|Disp8MemShift=2|SSE2AVX, +
> $sse:0xf30f53:0xf30f52:SSE:::>
> -<fop:opc:sr, +
> - add:58:StaticRounding, +
> - sub:5c:StaticRounding, +
> - mul:59:StaticRounding, +
> - div:5e:StaticRounding, +
> - min:5d:, +
> - max:5f:>
> +<fop:opc:fast:sr, +
> + add:58:Optimize:StaticRounding, +
> + sub:5c::StaticRounding, +
> + mul:59:Optimize:StaticRounding, +
> + div:5e::StaticRounding, +
> + min:5d:Optimize:, +
> + max:5f:Optimize:>
> <flog:opc:comm:optim, and:54:C:, andn:55::Optimize, or:56:C:, xor:57:C:Optimize>
> <frel:imm:comm, eq:0:C, lt:1:, le:2:, unord:3:C, neq:4:C, nlt:5:, nle:6:, ord:7:C>
>
> @@ -1644,8 +1644,8 @@ gf2p8mulb<gfni>, 0x660f38cf, GFNI<gfni:c
> x:Vex128:ATTSyntax:RegXMM|Unspecified|BaseIndex, +
> y:Vex256:ATTSyntax:RegYMM|Unspecified|BaseIndex>
>
> -v<fop>p<sd>, 0x<sd:ppfx><fop:opc>, AVX, Modrm|Vex|Space0F|Src1VVVV|VexWIG|CheckOperandSize|NoSuf, { RegXMM|RegYMM|Unspecified|BaseIndex, RegXMM|RegYMM, RegXMM|RegYMM }
> -v<fop>s<sd>, 0x<sd:spfx><fop:opc>, AVX, Modrm|VexLIG|Space0F|Src1VVVV|VexWIG|NoSuf, { RegXMM|<sd:elem>|Unspecified|BaseIndex, RegXMM, RegXMM }
> +v<fop>p<sd>, 0x<sd:ppfx><fop:opc>, AVX, Modrm|Vex|Space0F|Src1VVVV|VexWIG|CheckOperandSize|<fop:fast>|NoSuf, { RegXMM|RegYMM|Unspecified|BaseIndex, RegXMM|RegYMM, RegXMM|RegYMM }
> +v<fop>s<sd>, 0x<sd:spfx><fop:opc>, AVX, Modrm|VexLIG|Space0F|Src1VVVV|VexWIG|<fop:fast>|NoSuf, { RegXMM|<sd:elem>|Unspecified|BaseIndex, RegXMM, RegXMM }
> vaddsubpd, 0x66d0, AVX, Modrm|Vex|Space0F|Src1VVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
> vaddsubps, 0xf2d0, AVX, Modrm|Vex|Space0F|Src1VVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
> v<flog>p<sd>, 0x<sd:ppfx><flog:opc>, AVX, Modrm|Vex|Space0F|Src1VVVV|VexWIG|<flog:comm>|CheckOperandSize|NoSuf|<flog:optim>, { RegXMM|RegYMM|Unspecified|BaseIndex, RegXMM|RegYMM, RegXMM|RegYMM }
On 28.08.2026 11:51, H.J. Lu wrote:
> On Fri, Aug 28, 2026 at 4:39 PM Jan Beulich <jbeulich@suse.com> wrote:
>>
>> ... in analogy to gcc's option of the same name: It relaxes constraints
>> on (the lack of) commutativity of V{ADD,MAX,MIN,MUL}{P,S}{S,D}. They're
>> not fully commutative solely because of their NaN treatment. If the
>> programmer indicates that's benign to them, we can apply the VEX3->VEX2
>> encoding transformation for these AVX insns as well.
>> ---
>> If we wanted to also use this to control optimization of NOP-like insns
>> (e.g. the XCHG -> MOV one), the variable would want renaming. Question is:
>> _Do_ we (perhaps) want that?
With this I was trying to offer a compromise on the earlier discussion
regarding the XCHG -> MOV optimization. It was certainly my expectation
that ...
>> --- a/gas/doc/c-i386.texi
>> +++ b/gas/doc/c-i386.texi
>> @@ -624,7 +624,9 @@ only and AMD64 ISAs.
>> @cindex @samp{-O2} option, x86-64
>> @cindex @samp{-Os} option, i386
>> @cindex @samp{-Os} option, x86-64
>> -@item -O0 | -O | -O1 | -O2 | -Os
>> +@cindex @samp{-Ofast} option, i386
>> +@cindex @samp{-Ofast} option, x86-64
>> +@item -O0 | -O | -O1 | -O2 | -Os | -Ofast
>> Optimize instruction encoding with smaller instruction size. @samp{-O}
>> and @samp{-O1} encode 64-bit register load instructions with 64-bit
>> immediate as 32-bit register load instructions with 31-bit or 32-bits
>> @@ -648,6 +650,12 @@ same (register) operand specified twice
>> and 64-bit register tests with immediate as 8-bit register test with
>> immediate. @samp{-O0} turns off this optimization.
>>
>> +@samp{-Ofast} is separate from other optimization options. Its use
>> +indicates to the assembler that not entirely correct optimizations may
>> +be applied, e.g. assuming the absence of NaN-s. See the compiler's
>
> I am against such options which may introduce incorrect behavior.
> Programmers should use -Ofast compiler option or appropriate
> assembler instructions.
... in case of objections a fair attempt would be made to suggest some
alternative approach there, which respects earlier arguments.
Independent of that I don't quite understand your argument. Demanding
programmers to use "appropriate assembler instructions" can be extended
to all -O handling that we have. Already in the earlier discussion I
did ask whether you're suggesting to rip out all optimizations again.
Please may I ask that your argumentation include not only your original
pov (optimizations are there to post-process compiler output), but also
the other perspective of it being useful on (often poorly) hand-written
assembly? (I don't want to repeat arguments already given, but my
perspective on post-processing compiler output hasn't changed.)
Jan
On Fri, Aug 28, 2026 at 8:02 PM Jan Beulich <jbeulich@suse.com> wrote:
>
> On 28.08.2026 11:51, H.J. Lu wrote:
> > On Fri, Aug 28, 2026 at 4:39 PM Jan Beulich <jbeulich@suse.com> wrote:
> >>
> >> ... in analogy to gcc's option of the same name: It relaxes constraints
> >> on (the lack of) commutativity of V{ADD,MAX,MIN,MUL}{P,S}{S,D}. They're
> >> not fully commutative solely because of their NaN treatment. If the
> >> programmer indicates that's benign to them, we can apply the VEX3->VEX2
> >> encoding transformation for these AVX insns as well.
> >> ---
> >> If we wanted to also use this to control optimization of NOP-like insns
> >> (e.g. the XCHG -> MOV one), the variable would want renaming. Question is:
> >> _Do_ we (perhaps) want that?
>
> With this I was trying to offer a compromise on the earlier discussion
> regarding the XCHG -> MOV optimization. It was certainly my expectation
> that ...
>
> >> --- a/gas/doc/c-i386.texi
> >> +++ b/gas/doc/c-i386.texi
> >> @@ -624,7 +624,9 @@ only and AMD64 ISAs.
> >> @cindex @samp{-O2} option, x86-64
> >> @cindex @samp{-Os} option, i386
> >> @cindex @samp{-Os} option, x86-64
> >> -@item -O0 | -O | -O1 | -O2 | -Os
> >> +@cindex @samp{-Ofast} option, i386
> >> +@cindex @samp{-Ofast} option, x86-64
> >> +@item -O0 | -O | -O1 | -O2 | -Os | -Ofast
> >> Optimize instruction encoding with smaller instruction size. @samp{-O}
> >> and @samp{-O1} encode 64-bit register load instructions with 64-bit
> >> immediate as 32-bit register load instructions with 31-bit or 32-bits
> >> @@ -648,6 +650,12 @@ same (register) operand specified twice
> >> and 64-bit register tests with immediate as 8-bit register test with
> >> immediate. @samp{-O0} turns off this optimization.
> >>
> >> +@samp{-Ofast} is separate from other optimization options. Its use
> >> +indicates to the assembler that not entirely correct optimizations may
> >> +be applied, e.g. assuming the absence of NaN-s. See the compiler's
> >
> > I am against such options which may introduce incorrect behavior.
> > Programmers should use -Ofast compiler option or appropriate
> > assembler instructions.
>
> ... in case of objections a fair attempt would be made to suggest some
> alternative approach there, which respects earlier arguments.
>
> Independent of that I don't quite understand your argument. Demanding
> programmers to use "appropriate assembler instructions" can be extended
> to all -O handling that we have. Already in the earlier discussion I
But they don't change program behavior.
> did ask whether you're suggesting to rip out all optimizations again.
> Please may I ask that your argumentation include not only your original
> pov (optimizations are there to post-process compiler output), but also
> the other perspective of it being useful on (often poorly) hand-written
> assembly? (I don't want to repeat arguments already given, but my
> perspective on post-processing compiler output hasn't changed.)
>
I can live with something like -Oexperimental and warn users that
they must know what they are doing.
On 28.08.2026 22:48, H.J. Lu wrote:
> On Fri, Aug 28, 2026 at 8:02 PM Jan Beulich <jbeulich@suse.com> wrote:
>>
>> On 28.08.2026 11:51, H.J. Lu wrote:
>>> On Fri, Aug 28, 2026 at 4:39 PM Jan Beulich <jbeulich@suse.com> wrote:
>>>>
>>>> ... in analogy to gcc's option of the same name: It relaxes constraints
>>>> on (the lack of) commutativity of V{ADD,MAX,MIN,MUL}{P,S}{S,D}. They're
>>>> not fully commutative solely because of their NaN treatment. If the
>>>> programmer indicates that's benign to them, we can apply the VEX3->VEX2
>>>> encoding transformation for these AVX insns as well.
>>>> ---
>>>> If we wanted to also use this to control optimization of NOP-like insns
>>>> (e.g. the XCHG -> MOV one), the variable would want renaming. Question is:
>>>> _Do_ we (perhaps) want that?
>>
>> With this I was trying to offer a compromise on the earlier discussion
>> regarding the XCHG -> MOV optimization. It was certainly my expectation
>> that ...
>>
>>>> --- a/gas/doc/c-i386.texi
>>>> +++ b/gas/doc/c-i386.texi
>>>> @@ -624,7 +624,9 @@ only and AMD64 ISAs.
>>>> @cindex @samp{-O2} option, x86-64
>>>> @cindex @samp{-Os} option, i386
>>>> @cindex @samp{-Os} option, x86-64
>>>> -@item -O0 | -O | -O1 | -O2 | -Os
>>>> +@cindex @samp{-Ofast} option, i386
>>>> +@cindex @samp{-Ofast} option, x86-64
>>>> +@item -O0 | -O | -O1 | -O2 | -Os | -Ofast
>>>> Optimize instruction encoding with smaller instruction size. @samp{-O}
>>>> and @samp{-O1} encode 64-bit register load instructions with 64-bit
>>>> immediate as 32-bit register load instructions with 31-bit or 32-bits
>>>> @@ -648,6 +650,12 @@ same (register) operand specified twice
>>>> and 64-bit register tests with immediate as 8-bit register test with
>>>> immediate. @samp{-O0} turns off this optimization.
>>>>
>>>> +@samp{-Ofast} is separate from other optimization options. Its use
>>>> +indicates to the assembler that not entirely correct optimizations may
>>>> +be applied, e.g. assuming the absence of NaN-s. See the compiler's
>>>
>>> I am against such options which may introduce incorrect behavior.
>>> Programmers should use -Ofast compiler option or appropriate
>>> assembler instructions.
>>
>> ... in case of objections a fair attempt would be made to suggest some
>> alternative approach there, which respects earlier arguments.
>>
>> Independent of that I don't quite understand your argument. Demanding
>> programmers to use "appropriate assembler instructions" can be extended
>> to all -O handling that we have. Already in the earlier discussion I
>
> But they don't change program behavior.
This response I can see apply to the optimization aspect (hence why
-Ofast is proposed to be separate from other -O...), but not to your
earlier "should use ... appropriate assembler instructions", which
this part of my reply was about. Why is changing program behavior
relevant here? As we've seen with the XCHG->MOV optimization, program
behavior can be changed by any optimization: That'll always be the
case when specific encodings are expected. Hence, as said, this and
your earlier argument would extend to all -O handling we have.
>> did ask whether you're suggesting to rip out all optimizations again.
>> Please may I ask that your argumentation include not only your original
>> pov (optimizations are there to post-process compiler output), but also
>> the other perspective of it being useful on (often poorly) hand-written
>> assembly? (I don't want to repeat arguments already given, but my
>> perspective on post-processing compiler output hasn't changed.)
>
> I can live with something like -Oexperimental and warn users that
> they must know what they are doing.
And how does "experimental" describe the properties of these
optimizations? Also, users using -O must know what they're doing,
no matter what. Use of this group of options makes certain assertions
about the program's expectations (i.e., as per above, no assumptions
on specific encodings used).
It feels like you simply do not want to accept that introduction of
some arbitrary optimization can in principle break software which
isn't really meant to have "canonical" encodings exchanged by "non-
canonical" ones. That's true for every optimization, yet you continue
to try to tie this to specific reports of problems. How do you know
others didn't run into problems as well, simply doing the expected
thing: Either adjust their assumptions, or avoid the use of
optimization? The problem I'm facing here is: How can I get you to
understand (and accept) this pretty basic fact?
Jan
On Tue, Sep 1, 2026 at 6:53 PM Jan Beulich <jbeulich@suse.com> wrote:
>
> On 28.08.2026 22:48, H.J. Lu wrote:
> > On Fri, Aug 28, 2026 at 8:02 PM Jan Beulich <jbeulich@suse.com> wrote:
> >>
> >> On 28.08.2026 11:51, H.J. Lu wrote:
> >>> On Fri, Aug 28, 2026 at 4:39 PM Jan Beulich <jbeulich@suse.com> wrote:
> >>>>
> >>>> ... in analogy to gcc's option of the same name: It relaxes constraints
> >>>> on (the lack of) commutativity of V{ADD,MAX,MIN,MUL}{P,S}{S,D}. They're
> >>>> not fully commutative solely because of their NaN treatment. If the
> >>>> programmer indicates that's benign to them, we can apply the VEX3->VEX2
> >>>> encoding transformation for these AVX insns as well.
> >>>> ---
> >>>> If we wanted to also use this to control optimization of NOP-like insns
> >>>> (e.g. the XCHG -> MOV one), the variable would want renaming. Question is:
> >>>> _Do_ we (perhaps) want that?
> >>
> >> With this I was trying to offer a compromise on the earlier discussion
> >> regarding the XCHG -> MOV optimization. It was certainly my expectation
> >> that ...
> >>
> >>>> --- a/gas/doc/c-i386.texi
> >>>> +++ b/gas/doc/c-i386.texi
> >>>> @@ -624,7 +624,9 @@ only and AMD64 ISAs.
> >>>> @cindex @samp{-O2} option, x86-64
> >>>> @cindex @samp{-Os} option, i386
> >>>> @cindex @samp{-Os} option, x86-64
> >>>> -@item -O0 | -O | -O1 | -O2 | -Os
> >>>> +@cindex @samp{-Ofast} option, i386
> >>>> +@cindex @samp{-Ofast} option, x86-64
> >>>> +@item -O0 | -O | -O1 | -O2 | -Os | -Ofast
> >>>> Optimize instruction encoding with smaller instruction size. @samp{-O}
> >>>> and @samp{-O1} encode 64-bit register load instructions with 64-bit
> >>>> immediate as 32-bit register load instructions with 31-bit or 32-bits
> >>>> @@ -648,6 +650,12 @@ same (register) operand specified twice
> >>>> and 64-bit register tests with immediate as 8-bit register test with
> >>>> immediate. @samp{-O0} turns off this optimization.
> >>>>
> >>>> +@samp{-Ofast} is separate from other optimization options. Its use
> >>>> +indicates to the assembler that not entirely correct optimizations may
> >>>> +be applied, e.g. assuming the absence of NaN-s. See the compiler's
> >>>
> >>> I am against such options which may introduce incorrect behavior.
> >>> Programmers should use -Ofast compiler option or appropriate
> >>> assembler instructions.
> >>
> >> ... in case of objections a fair attempt would be made to suggest some
> >> alternative approach there, which respects earlier arguments.
> >>
> >> Independent of that I don't quite understand your argument. Demanding
> >> programmers to use "appropriate assembler instructions" can be extended
> >> to all -O handling that we have. Already in the earlier discussion I
> >
> > But they don't change program behavior.
>
> This response I can see apply to the optimization aspect (hence why
> -Ofast is proposed to be separate from other -O...), but not to your
> earlier "should use ... appropriate assembler instructions", which
> this part of my reply was about. Why is changing program behavior
> relevant here? As we've seen with the XCHG->MOV optimization, program
> behavior can be changed by any optimization: That'll always be the
> case when specific encodings are expected. Hence, as said, this and
> your earlier argument would extend to all -O handling we have.
What -Ofast implies may mislead users.
> >> did ask whether you're suggesting to rip out all optimizations again.
> >> Please may I ask that your argumentation include not only your original
> >> pov (optimizations are there to post-process compiler output), but also
> >> the other perspective of it being useful on (often poorly) hand-written
> >> assembly? (I don't want to repeat arguments already given, but my
> >> perspective on post-processing compiler output hasn't changed.)
> >
> > I can live with something like -Oexperimental and warn users that
> > they must know what they are doing.
>
> And how does "experimental" describe the properties of these
> optimizations? Also, users using -O must know what they're doing,
> no matter what. Use of this group of options makes certain assertions
> about the program's expectations (i.e., as per above, no assumptions
> on specific encodings used).
>
> It feels like you simply do not want to accept that introduction of
> some arbitrary optimization can in principle break software which
Please don't put words in my mouth. I just don't think -Ofast is
appropriate. With -Oexperimental, you can do much more.
> isn't really meant to have "canonical" encodings exchanged by "non-
> canonical" ones. That's true for every optimization, yet you continue
> to try to tie this to specific reports of problems. How do you know
> others didn't run into problems as well, simply doing the expected
> thing: Either adjust their assumptions, or avoid the use of
> optimization? The problem I'm facing here is: How can I get you to
> understand (and accept) this pretty basic fact?
>
On 04.09.2026 08:26, H.J. Lu wrote:
> On Tue, Sep 1, 2026 at 6:53 PM Jan Beulich <jbeulich@suse.com> wrote:
>>
>> On 28.08.2026 22:48, H.J. Lu wrote:
>>> On Fri, Aug 28, 2026 at 8:02 PM Jan Beulich <jbeulich@suse.com> wrote:
>>>>
>>>> On 28.08.2026 11:51, H.J. Lu wrote:
>>>>> On Fri, Aug 28, 2026 at 4:39 PM Jan Beulich <jbeulich@suse.com> wrote:
>>>>>>
>>>>>> ... in analogy to gcc's option of the same name: It relaxes constraints
>>>>>> on (the lack of) commutativity of V{ADD,MAX,MIN,MUL}{P,S}{S,D}. They're
>>>>>> not fully commutative solely because of their NaN treatment. If the
>>>>>> programmer indicates that's benign to them, we can apply the VEX3->VEX2
>>>>>> encoding transformation for these AVX insns as well.
>>>>>> ---
>>>>>> If we wanted to also use this to control optimization of NOP-like insns
>>>>>> (e.g. the XCHG -> MOV one), the variable would want renaming. Question is:
>>>>>> _Do_ we (perhaps) want that?
>>>>
>>>> With this I was trying to offer a compromise on the earlier discussion
>>>> regarding the XCHG -> MOV optimization. It was certainly my expectation
>>>> that ...
>>>>
>>>>>> --- a/gas/doc/c-i386.texi
>>>>>> +++ b/gas/doc/c-i386.texi
>>>>>> @@ -624,7 +624,9 @@ only and AMD64 ISAs.
>>>>>> @cindex @samp{-O2} option, x86-64
>>>>>> @cindex @samp{-Os} option, i386
>>>>>> @cindex @samp{-Os} option, x86-64
>>>>>> -@item -O0 | -O | -O1 | -O2 | -Os
>>>>>> +@cindex @samp{-Ofast} option, i386
>>>>>> +@cindex @samp{-Ofast} option, x86-64
>>>>>> +@item -O0 | -O | -O1 | -O2 | -Os | -Ofast
>>>>>> Optimize instruction encoding with smaller instruction size. @samp{-O}
>>>>>> and @samp{-O1} encode 64-bit register load instructions with 64-bit
>>>>>> immediate as 32-bit register load instructions with 31-bit or 32-bits
>>>>>> @@ -648,6 +650,12 @@ same (register) operand specified twice
>>>>>> and 64-bit register tests with immediate as 8-bit register test with
>>>>>> immediate. @samp{-O0} turns off this optimization.
>>>>>>
>>>>>> +@samp{-Ofast} is separate from other optimization options. Its use
>>>>>> +indicates to the assembler that not entirely correct optimizations may
>>>>>> +be applied, e.g. assuming the absence of NaN-s. See the compiler's
>>>>>
>>>>> I am against such options which may introduce incorrect behavior.
>>>>> Programmers should use -Ofast compiler option or appropriate
>>>>> assembler instructions.
>>>>
>>>> ... in case of objections a fair attempt would be made to suggest some
>>>> alternative approach there, which respects earlier arguments.
>>>>
>>>> Independent of that I don't quite understand your argument. Demanding
>>>> programmers to use "appropriate assembler instructions" can be extended
>>>> to all -O handling that we have. Already in the earlier discussion I
>>>
>>> But they don't change program behavior.
>>
>> This response I can see apply to the optimization aspect (hence why
>> -Ofast is proposed to be separate from other -O...), but not to your
>> earlier "should use ... appropriate assembler instructions", which
>> this part of my reply was about. Why is changing program behavior
>> relevant here? As we've seen with the XCHG->MOV optimization, program
>> behavior can be changed by any optimization: That'll always be the
>> case when specific encodings are expected. Hence, as said, this and
>> your earlier argument would extend to all -O handling we have.
>
> What -Ofast implies may mislead users.
That's what we have documentation for.
>>>> did ask whether you're suggesting to rip out all optimizations again.
>>>> Please may I ask that your argumentation include not only your original
>>>> pov (optimizations are there to post-process compiler output), but also
>>>> the other perspective of it being useful on (often poorly) hand-written
>>>> assembly? (I don't want to repeat arguments already given, but my
>>>> perspective on post-processing compiler output hasn't changed.)
>>>
>>> I can live with something like -Oexperimental and warn users that
>>> they must know what they are doing.
>>
>> And how does "experimental" describe the properties of these
>> optimizations? Also, users using -O must know what they're doing,
>> no matter what. Use of this group of options makes certain assertions
>> about the program's expectations (i.e., as per above, no assumptions
>> on specific encodings used).
>>
>> It feels like you simply do not want to accept that introduction of
>> some arbitrary optimization can in principle break software which
>
> Please don't put words in my mouth. I just don't think -Ofast is
> appropriate. With -Oexperimental, you can do much more.
"experimental" to me means what's covered by it will, at some point,
become non-experimental. That isn't, aiui, the plan here though.
And yes, to cover NOP pattern conversions, -Ofast may not be optimal
(no matter that "fast" describes the purpose well, hence why I
suggested re-using it). Yet then what is needed is a clearly better
name, which -Oexperimental (as per above, including my earlier reply)
isn't.
Jan
>> isn't really meant to have "canonical" encodings exchanged by "non-
>> canonical" ones. That's true for every optimization, yet you continue
>> to try to tie this to specific reports of problems. How do you know
>> others didn't run into problems as well, simply doing the expected
>> thing: Either adjust their assumptions, or avoid the use of
>> optimization? The problem I'm facing here is: How can I get you to
>> understand (and accept) this pretty basic fact?
>>
>
>
>
On Fri, Sep 4, 2026 at 3:01 PM Jan Beulich <jbeulich@suse.com> wrote:
>
> On 04.09.2026 08:26, H.J. Lu wrote:
> > On Tue, Sep 1, 2026 at 6:53 PM Jan Beulich <jbeulich@suse.com> wrote:
> >>
> >> On 28.08.2026 22:48, H.J. Lu wrote:
> >>> On Fri, Aug 28, 2026 at 8:02 PM Jan Beulich <jbeulich@suse.com> wrote:
> >>>>
> >>>> On 28.08.2026 11:51, H.J. Lu wrote:
> >>>>> On Fri, Aug 28, 2026 at 4:39 PM Jan Beulich <jbeulich@suse.com> wrote:
> >>>>>>
> >>>>>> ... in analogy to gcc's option of the same name: It relaxes constraints
> >>>>>> on (the lack of) commutativity of V{ADD,MAX,MIN,MUL}{P,S}{S,D}. They're
> >>>>>> not fully commutative solely because of their NaN treatment. If the
> >>>>>> programmer indicates that's benign to them, we can apply the VEX3->VEX2
> >>>>>> encoding transformation for these AVX insns as well.
> >>>>>> ---
> >>>>>> If we wanted to also use this to control optimization of NOP-like insns
> >>>>>> (e.g. the XCHG -> MOV one), the variable would want renaming. Question is:
> >>>>>> _Do_ we (perhaps) want that?
> >>>>
> >>>> With this I was trying to offer a compromise on the earlier discussion
> >>>> regarding the XCHG -> MOV optimization. It was certainly my expectation
> >>>> that ...
> >>>>
> >>>>>> --- a/gas/doc/c-i386.texi
> >>>>>> +++ b/gas/doc/c-i386.texi
> >>>>>> @@ -624,7 +624,9 @@ only and AMD64 ISAs.
> >>>>>> @cindex @samp{-O2} option, x86-64
> >>>>>> @cindex @samp{-Os} option, i386
> >>>>>> @cindex @samp{-Os} option, x86-64
> >>>>>> -@item -O0 | -O | -O1 | -O2 | -Os
> >>>>>> +@cindex @samp{-Ofast} option, i386
> >>>>>> +@cindex @samp{-Ofast} option, x86-64
> >>>>>> +@item -O0 | -O | -O1 | -O2 | -Os | -Ofast
> >>>>>> Optimize instruction encoding with smaller instruction size. @samp{-O}
> >>>>>> and @samp{-O1} encode 64-bit register load instructions with 64-bit
> >>>>>> immediate as 32-bit register load instructions with 31-bit or 32-bits
> >>>>>> @@ -648,6 +650,12 @@ same (register) operand specified twice
> >>>>>> and 64-bit register tests with immediate as 8-bit register test with
> >>>>>> immediate. @samp{-O0} turns off this optimization.
> >>>>>>
> >>>>>> +@samp{-Ofast} is separate from other optimization options. Its use
> >>>>>> +indicates to the assembler that not entirely correct optimizations may
> >>>>>> +be applied, e.g. assuming the absence of NaN-s. See the compiler's
> >>>>>
> >>>>> I am against such options which may introduce incorrect behavior.
> >>>>> Programmers should use -Ofast compiler option or appropriate
> >>>>> assembler instructions.
> >>>>
> >>>> ... in case of objections a fair attempt would be made to suggest some
> >>>> alternative approach there, which respects earlier arguments.
> >>>>
> >>>> Independent of that I don't quite understand your argument. Demanding
> >>>> programmers to use "appropriate assembler instructions" can be extended
> >>>> to all -O handling that we have. Already in the earlier discussion I
> >>>
> >>> But they don't change program behavior.
> >>
> >> This response I can see apply to the optimization aspect (hence why
> >> -Ofast is proposed to be separate from other -O...), but not to your
> >> earlier "should use ... appropriate assembler instructions", which
> >> this part of my reply was about. Why is changing program behavior
> >> relevant here? As we've seen with the XCHG->MOV optimization, program
> >> behavior can be changed by any optimization: That'll always be the
> >> case when specific encodings are expected. Hence, as said, this and
> >> your earlier argument would extend to all -O handling we have.
> >
> > What -Ofast implies may mislead users.
>
> That's what we have documentation for.
>
> >>>> did ask whether you're suggesting to rip out all optimizations again.
> >>>> Please may I ask that your argumentation include not only your original
> >>>> pov (optimizations are there to post-process compiler output), but also
> >>>> the other perspective of it being useful on (often poorly) hand-written
> >>>> assembly? (I don't want to repeat arguments already given, but my
> >>>> perspective on post-processing compiler output hasn't changed.)
> >>>
> >>> I can live with something like -Oexperimental and warn users that
> >>> they must know what they are doing.
> >>
> >> And how does "experimental" describe the properties of these
> >> optimizations? Also, users using -O must know what they're doing,
> >> no matter what. Use of this group of options makes certain assertions
> >> about the program's expectations (i.e., as per above, no assumptions
> >> on specific encodings used).
> >>
> >> It feels like you simply do not want to accept that introduction of
> >> some arbitrary optimization can in principle break software which
> >
> > Please don't put words in my mouth. I just don't think -Ofast is
> > appropriate. With -Oexperimental, you can do much more.
>
> "experimental" to me means what's covered by it will, at some point,
> become non-experimental. That isn't, aiui, the plan here though.
Use a different name, not -Ofast.
> And yes, to cover NOP pattern conversions, -Ofast may not be optimal
> (no matter that "fast" describes the purpose well, hence why I
> suggested re-using it). Yet then what is needed is a clearly better
> name, which -Oexperimental (as per above, including my earlier reply)
> isn't.
>
> Jan
>
> >> isn't really meant to have "canonical" encodings exchanged by "non-
> >> canonical" ones. That's true for every optimization, yet you continue
> >> to try to tie this to specific reports of problems. How do you know
> >> others didn't run into problems as well, simply doing the expected
> >> thing: Either adjust their assumptions, or avoid the use of
> >> optimization? The problem I'm facing here is: How can I get you to
> >> understand (and accept) this pretty basic fact?
> >>
> >
> >
> >
>
On Fri, Sep 4, 2026 at 3:05 PM H.J. Lu <hjl.tools@gmail.com> wrote:
>
> On Fri, Sep 4, 2026 at 3:01 PM Jan Beulich <jbeulich@suse.com> wrote:
> >
> > On 04.09.2026 08:26, H.J. Lu wrote:
> > > On Tue, Sep 1, 2026 at 6:53 PM Jan Beulich <jbeulich@suse.com> wrote:
> > >>
> > >> On 28.08.2026 22:48, H.J. Lu wrote:
> > >>> On Fri, Aug 28, 2026 at 8:02 PM Jan Beulich <jbeulich@suse.com> wrote:
> > >>>>
> > >>>> On 28.08.2026 11:51, H.J. Lu wrote:
> > >>>>> On Fri, Aug 28, 2026 at 4:39 PM Jan Beulich <jbeulich@suse.com> wrote:
> > >>>>>>
> > >>>>>> ... in analogy to gcc's option of the same name: It relaxes constraints
> > >>>>>> on (the lack of) commutativity of V{ADD,MAX,MIN,MUL}{P,S}{S,D}. They're
> > >>>>>> not fully commutative solely because of their NaN treatment. If the
> > >>>>>> programmer indicates that's benign to them, we can apply the VEX3->VEX2
> > >>>>>> encoding transformation for these AVX insns as well.
> > >>>>>> ---
> > >>>>>> If we wanted to also use this to control optimization of NOP-like insns
> > >>>>>> (e.g. the XCHG -> MOV one), the variable would want renaming. Question is:
> > >>>>>> _Do_ we (perhaps) want that?
> > >>>>
> > >>>> With this I was trying to offer a compromise on the earlier discussion
> > >>>> regarding the XCHG -> MOV optimization. It was certainly my expectation
> > >>>> that ...
> > >>>>
> > >>>>>> --- a/gas/doc/c-i386.texi
> > >>>>>> +++ b/gas/doc/c-i386.texi
> > >>>>>> @@ -624,7 +624,9 @@ only and AMD64 ISAs.
> > >>>>>> @cindex @samp{-O2} option, x86-64
> > >>>>>> @cindex @samp{-Os} option, i386
> > >>>>>> @cindex @samp{-Os} option, x86-64
> > >>>>>> -@item -O0 | -O | -O1 | -O2 | -Os
> > >>>>>> +@cindex @samp{-Ofast} option, i386
> > >>>>>> +@cindex @samp{-Ofast} option, x86-64
> > >>>>>> +@item -O0 | -O | -O1 | -O2 | -Os | -Ofast
> > >>>>>> Optimize instruction encoding with smaller instruction size. @samp{-O}
> > >>>>>> and @samp{-O1} encode 64-bit register load instructions with 64-bit
> > >>>>>> immediate as 32-bit register load instructions with 31-bit or 32-bits
> > >>>>>> @@ -648,6 +650,12 @@ same (register) operand specified twice
> > >>>>>> and 64-bit register tests with immediate as 8-bit register test with
> > >>>>>> immediate. @samp{-O0} turns off this optimization.
> > >>>>>>
> > >>>>>> +@samp{-Ofast} is separate from other optimization options. Its use
> > >>>>>> +indicates to the assembler that not entirely correct optimizations may
> > >>>>>> +be applied, e.g. assuming the absence of NaN-s. See the compiler's
> > >>>>>
> > >>>>> I am against such options which may introduce incorrect behavior.
> > >>>>> Programmers should use -Ofast compiler option or appropriate
> > >>>>> assembler instructions.
> > >>>>
> > >>>> ... in case of objections a fair attempt would be made to suggest some
> > >>>> alternative approach there, which respects earlier arguments.
> > >>>>
> > >>>> Independent of that I don't quite understand your argument. Demanding
> > >>>> programmers to use "appropriate assembler instructions" can be extended
> > >>>> to all -O handling that we have. Already in the earlier discussion I
> > >>>
> > >>> But they don't change program behavior.
> > >>
> > >> This response I can see apply to the optimization aspect (hence why
> > >> -Ofast is proposed to be separate from other -O...), but not to your
> > >> earlier "should use ... appropriate assembler instructions", which
> > >> this part of my reply was about. Why is changing program behavior
> > >> relevant here? As we've seen with the XCHG->MOV optimization, program
> > >> behavior can be changed by any optimization: That'll always be the
> > >> case when specific encodings are expected. Hence, as said, this and
> > >> your earlier argument would extend to all -O handling we have.
> > >
> > > What -Ofast implies may mislead users.
> >
> > That's what we have documentation for.
> >
> > >>>> did ask whether you're suggesting to rip out all optimizations again.
> > >>>> Please may I ask that your argumentation include not only your original
> > >>>> pov (optimizations are there to post-process compiler output), but also
> > >>>> the other perspective of it being useful on (often poorly) hand-written
> > >>>> assembly? (I don't want to repeat arguments already given, but my
> > >>>> perspective on post-processing compiler output hasn't changed.)
> > >>>
> > >>> I can live with something like -Oexperimental and warn users that
> > >>> they must know what they are doing.
> > >>
> > >> And how does "experimental" describe the properties of these
> > >> optimizations? Also, users using -O must know what they're doing,
> > >> no matter what. Use of this group of options makes certain assertions
> > >> about the program's expectations (i.e., as per above, no assumptions
> > >> on specific encodings used).
> > >>
> > >> It feels like you simply do not want to accept that introduction of
> > >> some arbitrary optimization can in principle break software which
> > >
> > > Please don't put words in my mouth. I just don't think -Ofast is
> > > appropriate. With -Oexperimental, you can do much more.
> >
> > "experimental" to me means what's covered by it will, at some point,
> > become non-experimental. That isn't, aiui, the plan here though.
>
> Use a different name, not -Ofast.
Maybe -Orewrite
> > And yes, to cover NOP pattern conversions, -Ofast may not be optimal
> > (no matter that "fast" describes the purpose well, hence why I
> > suggested re-using it). Yet then what is needed is a clearly better
> > name, which -Oexperimental (as per above, including my earlier reply)
> > isn't.
> >
> > Jan
> >
> > >> isn't really meant to have "canonical" encodings exchanged by "non-
> > >> canonical" ones. That's true for every optimization, yet you continue
> > >> to try to tie this to specific reports of problems. How do you know
> > >> others didn't run into problems as well, simply doing the expected
> > >> thing: Either adjust their assumptions, or avoid the use of
> > >> optimization? The problem I'm facing here is: How can I get you to
> > >> understand (and accept) this pretty basic fact?
> > >>
> > >
> > >
> > >
> >
>
>
> --
> H.J.
@@ -624,7 +624,9 @@ only and AMD64 ISAs.
@cindex @samp{-O2} option, x86-64
@cindex @samp{-Os} option, i386
@cindex @samp{-Os} option, x86-64
-@item -O0 | -O | -O1 | -O2 | -Os
+@cindex @samp{-Ofast} option, i386
+@cindex @samp{-Ofast} option, x86-64
+@item -O0 | -O | -O1 | -O2 | -Os | -Ofast
Optimize instruction encoding with smaller instruction size. @samp{-O}
and @samp{-O1} encode 64-bit register load instructions with 64-bit
immediate as 32-bit register load instructions with 31-bit or 32-bits
@@ -648,6 +650,12 @@ same (register) operand specified twice
and 64-bit register tests with immediate as 8-bit register test with
immediate. @samp{-O0} turns off this optimization.
+@samp{-Ofast} is separate from other optimization options. Its use
+indicates to the assembler that not entirely correct optimizations may
+be applied, e.g. assuming the absence of NaN-s. See the compiler's
+similar option. Other optimization options may still need using in
+addition to this one, for the intended effect to be achieved.
+
@end table
@c man end
@@ -854,6 +854,11 @@ static int optimize_for_space = 0;
/* Disabled optimizations. */
static int optimize_for_disabled_optimizations = 0;
+/* Optimization: Allow optimizations not entirely safe, e.g. correct only
+ when no NaN-s are involved.
+ */
+static bool fast_math;
+
/* Register prefix used for error message. */
static const char *register_prefix = "%";
@@ -6628,6 +6633,7 @@ s_noopt (int dummy ATTRIBUTE_UNUSED)
optimize = 0;
optimize_for_space = 0;
+ fast_math = false;
ignore_rest_of_line ();
}
@@ -7756,6 +7762,15 @@ i386_assemble (char *line)
{
if (pp.has_nf)
optimize_nf_encoding ();
+ else if (fast_math
+ && (i.tm.base_opcode | 7) == 0x5f
+ && i.tm.opcode_space == SPACE_0F)
+ {
+ /* Arrange for build_vex_prefix() to recognize these insns as
+ (sufficiently) commutative. */
+ i.tm.opcode_modifier.commutative = 1;
+ }
+
optimize_encoding ();
}
@@ -17993,6 +18008,8 @@ md_parse_option (int c, const char *arg)
/* Turn on all encoding optimizations. */
optimize = INT_MAX;
}
+ else if (!strcmp (arg, "fast"))
+ fast_math = true;
else
{
optimize = atoi (arg);
@@ -276,6 +276,7 @@ run_dump_test "x86-64-sse2avx-opts-intel
run_dump_test "x86-64-avx-swap"
run_dump_test "x86-64-avx-swap-intel"
run_dump_test "x86-64-avx-swap-2"
+run_dump_test "x86-64-avx-swap-2fast"
run_dump_test "x86-64-bmi2"
run_dump_test "x86-64-bmi2-intel"
run_dump_test "x86-64-fma"
@@ -0,0 +1,381 @@
+#as: -O2 -Ofast
+#objdump: -dw
+#name: x86-64 AVX/AVX2 w/ source swapping (-Ofast)
+#source: x86-64-avx-swap-2.s
+
+.*: file format .*
+
+Disassembly of section .text:
+
+0+ <_start>:
+[ ]*[a-f0-9]+: c5 8d 58 d6 vaddpd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8c 58 d6 vaddps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d d0 d6 vaddsubpd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4f d0 d6 vaddsubps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d 55 d6 vandnpd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4c 55 d6 vandnps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8d 54 d6 vandpd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8c 54 d6 vandps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d 5e d6 vdivpd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4c 5e d6 vdivps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d 7c d6 vhaddpd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4f 7c d6 vhaddps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d 7d d6 vhsubpd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4f 7d d6 vhsubps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8d 5f d6 vmaxpd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8c 5f d6 vmaxps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d 5d d6 vminpd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8c 5d d6 vminps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d 59 d6 vmulpd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8c 59 d6 vmulps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d 56 d6 vorpd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8c 56 d6 vorps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d fc d6 vpaddb %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d fd d6 vpaddw %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d fe d6 vpaddd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d d4 d6 vpaddq %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d ec d6 vpaddsb %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d ed d6 vpaddsw %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d dc d6 vpaddusb %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d dd d6 vpaddusw %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d db d6 vpand %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d df d6 vpandn %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8d e0 d6 vpavgb %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d e3 d6 vpavgw %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d 74 d6 vpcmpeqb %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d 75 d6 vpcmpeqw %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d 76 d6 vpcmpeqd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c2 4d 29 d6 vpcmpeqq %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d 64 d6 vpcmpgtb %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d 65 d6 vpcmpgtw %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d 66 d6 vpcmpgtd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c2 4d 37 d6 vpcmpgtq %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8d f5 d6 vpmaddwd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c2 4d 3c d6 vpmaxsb %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8d ee d6 vpmaxsw %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c2 4d 3d d6 vpmaxsd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8d de d6 vpmaxub %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c2 4d 3e d6 vpmaxuw %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c2 4d 3f d6 vpmaxud %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c2 4d 38 d6 vpminsb %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8d ea d6 vpminsw %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c2 4d 39 d6 vpminsd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8d da d6 vpminub %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c2 4d 3a d6 vpminuw %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c2 4d 3b d6 vpminud %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8d e4 d6 vpmulhuw %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d e5 d6 vpmulhw %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d d5 d6 vpmullw %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c2 4d 40 d6 vpmulld %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8d f4 d6 vpmuludq %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c2 4d 28 d6 vpmuldq %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8d eb d6 vpor %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d f6 d6 vpsadbw %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d f8 d6 vpsubb %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d f9 d6 vpsubw %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d fa d6 vpsubd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d fb d6 vpsubq %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d e8 d6 vpsubsb %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d e9 d6 vpsubsw %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d d8 d6 vpsubusb %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d d9 d6 vpsubusw %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8d ef d6 vpxor %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d 5c d6 vsubpd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4c 5c d6 vsubps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8d 57 d6 vxorpd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8c 57 d6 vxorps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d c2 d6 00 vcmpeqpd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d c2 d6 01 vcmpltpd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d c2 d6 02 vcmplepd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8d c2 d6 03 vcmpunordpd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d c2 d6 04 vcmpneqpd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d c2 d6 05 vcmpnltpd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d c2 d6 06 vcmpnlepd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8d c2 d6 07 vcmpordpd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d c2 d6 08 vcmpeq_uqpd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d c2 d6 09 vcmpngepd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d c2 d6 0a vcmpngtpd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8d c2 d6 0b vcmpfalsepd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d c2 d6 0c vcmpneq_oqpd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d c2 d6 0d vcmpgepd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d c2 d6 0e vcmpgtpd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8d c2 d6 0f vcmptruepd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d c2 d6 10 vcmpeq_ospd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d c2 d6 11 vcmplt_oqpd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d c2 d6 12 vcmple_oqpd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8d c2 d6 13 vcmpunord_spd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d c2 d6 14 vcmpneq_uspd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d c2 d6 15 vcmpnlt_uqpd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d c2 d6 16 vcmpnle_uqpd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8d c2 d6 17 vcmpord_spd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d c2 d6 18 vcmpeq_uspd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d c2 d6 19 vcmpnge_uqpd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d c2 d6 1a vcmpngt_uqpd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8d c2 d6 1b vcmpfalse_ospd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8d c2 d6 1c vcmpneq_ospd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d c2 d6 1d vcmpge_oqpd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d c2 d6 1e vcmpgt_oqpd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8d c2 d6 1f vcmptrue_uspd %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8c c2 d6 00 vcmpeqps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4c c2 d6 01 vcmpltps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4c c2 d6 02 vcmpleps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8c c2 d6 03 vcmpunordps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8c c2 d6 04 vcmpneqps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4c c2 d6 05 vcmpnltps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4c c2 d6 06 vcmpnleps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8c c2 d6 07 vcmpordps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8c c2 d6 08 vcmpeq_uqps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4c c2 d6 09 vcmpngeps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4c c2 d6 0a vcmpngtps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8c c2 d6 0b vcmpfalseps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8c c2 d6 0c vcmpneq_oqps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4c c2 d6 0d vcmpgeps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4c c2 d6 0e vcmpgtps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8c c2 d6 0f vcmptrueps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8c c2 d6 10 vcmpeq_osps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4c c2 d6 11 vcmplt_oqps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4c c2 d6 12 vcmple_oqps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8c c2 d6 13 vcmpunord_sps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8c c2 d6 14 vcmpneq_usps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4c c2 d6 15 vcmpnlt_uqps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4c c2 d6 16 vcmpnle_uqps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8c c2 d6 17 vcmpord_sps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8c c2 d6 18 vcmpeq_usps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4c c2 d6 19 vcmpnge_uqps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4c c2 d6 1a vcmpngt_uqps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8c c2 d6 1b vcmpfalse_osps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c5 8c c2 d6 1c vcmpneq_osps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4c c2 d6 1d vcmpge_oqps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4c c2 d6 1e vcmpgt_oqps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 8c c2 d6 1f vcmptrue_usps %ymm6,%ymm14,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4d c2 d6 07 vcmpordpd %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c4 c1 4c c2 d6 07 vcmpordps %ymm14,%ymm6,%ymm2
+[ ]*[a-f0-9]+: c5 89 58 d6 vaddpd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 88 58 d6 vaddps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 d0 d6 vaddsubpd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4b d0 d6 vaddsubps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 55 d6 vandnpd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 48 55 d6 vandnps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 89 54 d6 vandpd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 88 54 d6 vandps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 5e d6 vdivpd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 48 5e d6 vdivps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 7c d6 vhaddpd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4b 7c d6 vhaddps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 7d d6 vhsubpd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4b 7d d6 vhsubps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 89 5f d6 vmaxpd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 88 5f d6 vmaxps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 5d d6 vminpd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 88 5d d6 vminps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 59 d6 vmulpd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 88 59 d6 vmulps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 56 d6 vorpd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 88 56 d6 vorps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 fc d6 vpaddb %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 fd d6 vpaddw %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 fe d6 vpaddd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 d4 d6 vpaddq %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 ec d6 vpaddsb %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 ed d6 vpaddsw %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 dc d6 vpaddusb %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 dd d6 vpaddusw %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 db d6 vpand %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 df d6 vpandn %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 89 e0 d6 vpavgb %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 e3 d6 vpavgw %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 74 d6 vpcmpeqb %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 75 d6 vpcmpeqw %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 76 d6 vpcmpeqd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c2 49 29 d6 vpcmpeqq %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 64 d6 vpcmpgtb %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 65 d6 vpcmpgtw %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 66 d6 vpcmpgtd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c2 49 37 d6 vpcmpgtq %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 89 f5 d6 vpmaddwd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c2 49 3c d6 vpmaxsb %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 89 ee d6 vpmaxsw %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c2 49 3d d6 vpmaxsd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 89 de d6 vpmaxub %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c2 49 3e d6 vpmaxuw %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c2 49 3f d6 vpmaxud %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c2 49 38 d6 vpminsb %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 89 ea d6 vpminsw %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c2 49 39 d6 vpminsd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 89 da d6 vpminub %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c2 49 3a d6 vpminuw %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c2 49 3b d6 vpminud %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 89 e4 d6 vpmulhuw %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 e5 d6 vpmulhw %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 d5 d6 vpmullw %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c2 49 40 d6 vpmulld %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 89 f4 d6 vpmuludq %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c2 49 28 d6 vpmuldq %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 89 eb d6 vpor %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 f6 d6 vpsadbw %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 f8 d6 vpsubb %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 f9 d6 vpsubw %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 fa d6 vpsubd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 fb d6 vpsubq %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 e8 d6 vpsubsb %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 e9 d6 vpsubsw %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 d8 d6 vpsubusb %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 d9 d6 vpsubusw %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 89 ef d6 vpxor %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 5c d6 vsubpd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 48 5c d6 vsubps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 89 57 d6 vxorpd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 88 57 d6 vxorps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 c2 d6 00 vcmpeqpd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 c2 d6 01 vcmpltpd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 c2 d6 02 vcmplepd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 89 c2 d6 03 vcmpunordpd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 c2 d6 04 vcmpneqpd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 c2 d6 05 vcmpnltpd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 c2 d6 06 vcmpnlepd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 89 c2 d6 07 vcmpordpd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 c2 d6 08 vcmpeq_uqpd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 c2 d6 09 vcmpngepd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 c2 d6 0a vcmpngtpd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 89 c2 d6 0b vcmpfalsepd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 c2 d6 0c vcmpneq_oqpd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 c2 d6 0d vcmpgepd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 c2 d6 0e vcmpgtpd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 89 c2 d6 0f vcmptruepd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 c2 d6 10 vcmpeq_ospd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 c2 d6 11 vcmplt_oqpd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 c2 d6 12 vcmple_oqpd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 89 c2 d6 13 vcmpunord_spd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 c2 d6 14 vcmpneq_uspd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 c2 d6 15 vcmpnlt_uqpd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 c2 d6 16 vcmpnle_uqpd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 89 c2 d6 17 vcmpord_spd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 c2 d6 18 vcmpeq_uspd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 c2 d6 19 vcmpnge_uqpd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 c2 d6 1a vcmpngt_uqpd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 89 c2 d6 1b vcmpfalse_ospd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 89 c2 d6 1c vcmpneq_ospd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 c2 d6 1d vcmpge_oqpd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 c2 d6 1e vcmpgt_oqpd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 89 c2 d6 1f vcmptrue_uspd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 88 c2 d6 00 vcmpeqps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 48 c2 d6 01 vcmpltps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 48 c2 d6 02 vcmpleps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 88 c2 d6 03 vcmpunordps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 88 c2 d6 04 vcmpneqps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 48 c2 d6 05 vcmpnltps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 48 c2 d6 06 vcmpnleps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 88 c2 d6 07 vcmpordps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 88 c2 d6 08 vcmpeq_uqps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 48 c2 d6 09 vcmpngeps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 48 c2 d6 0a vcmpngtps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 88 c2 d6 0b vcmpfalseps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 88 c2 d6 0c vcmpneq_oqps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 48 c2 d6 0d vcmpgeps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 48 c2 d6 0e vcmpgtps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 88 c2 d6 0f vcmptrueps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 88 c2 d6 10 vcmpeq_osps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 48 c2 d6 11 vcmplt_oqps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 48 c2 d6 12 vcmple_oqps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 88 c2 d6 13 vcmpunord_sps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 88 c2 d6 14 vcmpneq_usps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 48 c2 d6 15 vcmpnlt_uqps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 48 c2 d6 16 vcmpnle_uqps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 88 c2 d6 17 vcmpord_sps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 88 c2 d6 18 vcmpeq_usps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 48 c2 d6 19 vcmpnge_uqps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 48 c2 d6 1a vcmpngt_uqps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 88 c2 d6 1b vcmpfalse_osps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 88 c2 d6 1c vcmpneq_osps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 48 c2 d6 1d vcmpge_oqps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 48 c2 d6 1e vcmpgt_oqps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 88 c2 d6 1f vcmptrue_usps %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 49 c2 d6 07 vcmpordpd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 48 c2 d6 07 vcmpordps %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 79 2f f6 vcomisd %xmm14,%xmm6
+[ ]*[a-f0-9]+: c4 c1 79 2e f6 vucomisd %xmm14,%xmm6
+[ ]*[a-f0-9]+: c4 c1 4b c2 d6 07 vcmpordsd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 8b 58 d6 vaddsd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4b 5e d6 vdivsd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 8b 5f d6 vmaxsd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 8b 5d d6 vminsd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 8b 59 d6 vmulsd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4b 51 d6 vsqrtsd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4b 5c d6 vsubsd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 8b c2 d6 00 vcmpeqsd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4b c2 d6 01 vcmpltsd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4b c2 d6 02 vcmplesd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 8b c2 d6 03 vcmpunordsd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 8b c2 d6 04 vcmpneqsd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4b c2 d6 05 vcmpnltsd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4b c2 d6 06 vcmpnlesd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 8b c2 d6 07 vcmpordsd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 8b c2 d6 08 vcmpeq_uqsd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4b c2 d6 09 vcmpngesd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4b c2 d6 0a vcmpngtsd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 8b c2 d6 0b vcmpfalsesd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 8b c2 d6 0c vcmpneq_oqsd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4b c2 d6 0d vcmpgesd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4b c2 d6 0e vcmpgtsd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 8b c2 d6 0f vcmptruesd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 8b c2 d6 10 vcmpeq_ossd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4b c2 d6 11 vcmplt_oqsd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4b c2 d6 12 vcmple_oqsd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 8b c2 d6 13 vcmpunord_ssd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 8b c2 d6 14 vcmpneq_ussd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4b c2 d6 15 vcmpnlt_uqsd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4b c2 d6 16 vcmpnle_uqsd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 8b c2 d6 17 vcmpord_ssd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 8b c2 d6 18 vcmpeq_ussd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4b c2 d6 19 vcmpnge_uqsd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4b c2 d6 1a vcmpngt_uqsd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 8b c2 d6 1b vcmpfalse_ossd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 8b c2 d6 1c vcmpneq_ossd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4b c2 d6 1d vcmpge_oqsd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4b c2 d6 1e vcmpgt_oqsd %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 8b c2 d6 1f vcmptrue_ussd %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 8a 58 d6 vaddss %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4a 5e d6 vdivss %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 8a 5f d6 vmaxss %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 8a 5d d6 vminss %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 8a 59 d6 vmulss %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4a 53 d6 vrcpss %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4a 52 d6 vrsqrtss %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4a 51 d6 vsqrtss %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4a 5c d6 vsubss %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 8a c2 d6 00 vcmpeqss %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4a c2 d6 01 vcmpltss %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4a c2 d6 02 vcmpless %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 8a c2 d6 03 vcmpunordss %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 8a c2 d6 04 vcmpneqss %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4a c2 d6 05 vcmpnltss %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4a c2 d6 06 vcmpnless %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 8a c2 d6 07 vcmpordss %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 8a c2 d6 08 vcmpeq_uqss %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4a c2 d6 09 vcmpngess %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4a c2 d6 0a vcmpngtss %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 8a c2 d6 0b vcmpfalsess %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 8a c2 d6 0c vcmpneq_oqss %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4a c2 d6 0d vcmpgess %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4a c2 d6 0e vcmpgtss %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 8a c2 d6 0f vcmptruess %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 8a c2 d6 10 vcmpeq_osss %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4a c2 d6 11 vcmplt_oqss %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4a c2 d6 12 vcmple_oqss %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 8a c2 d6 13 vcmpunord_sss %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 8a c2 d6 14 vcmpneq_usss %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4a c2 d6 15 vcmpnlt_uqss %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4a c2 d6 16 vcmpnle_uqss %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 8a c2 d6 17 vcmpord_sss %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 8a c2 d6 18 vcmpeq_usss %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4a c2 d6 19 vcmpnge_uqss %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4a c2 d6 1a vcmpngt_uqss %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 8a c2 d6 1b vcmpfalse_osss %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c5 8a c2 d6 1c vcmpneq_osss %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4a c2 d6 1d vcmpge_oqss %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c4 c1 4a c2 d6 1e vcmpgt_oqss %xmm14,%xmm6,%xmm2
+[ ]*[a-f0-9]+: c5 8a c2 d6 1f vcmptrue_usss %xmm6,%xmm14,%xmm2
+[ ]*[a-f0-9]+: c4 c1 78 2f f6 vcomiss %xmm14,%xmm6
+[ ]*[a-f0-9]+: c4 c1 78 2e f6 vucomiss %xmm14,%xmm6
+[ ]*[a-f0-9]+: c4 c1 4a c2 d6 07 vcmpordss %xmm14,%xmm6,%xmm2
+#pass
@@ -1189,13 +1189,13 @@ pxor<MMX>, 0x<MMX:pfx>0fef, <MMX:cpu>, M
$avx:0xf30f53:0xf30f52:AVX:VexLIG|VexW0|Src1VVVV|SSE2AVX, +
$apx:0x660f384d:0x660f384f:AVX512F:EVexLIG|VexW0|Src1VVVV|Disp8MemShift=2|SSE2AVX, +
$sse:0xf30f53:0xf30f52:SSE:::>
-<fop:opc:sr, +
- add:58:StaticRounding, +
- sub:5c:StaticRounding, +
- mul:59:StaticRounding, +
- div:5e:StaticRounding, +
- min:5d:, +
- max:5f:>
+<fop:opc:fast:sr, +
+ add:58:Optimize:StaticRounding, +
+ sub:5c::StaticRounding, +
+ mul:59:Optimize:StaticRounding, +
+ div:5e::StaticRounding, +
+ min:5d:Optimize:, +
+ max:5f:Optimize:>
<flog:opc:comm:optim, and:54:C:, andn:55::Optimize, or:56:C:, xor:57:C:Optimize>
<frel:imm:comm, eq:0:C, lt:1:, le:2:, unord:3:C, neq:4:C, nlt:5:, nle:6:, ord:7:C>
@@ -1644,8 +1644,8 @@ gf2p8mulb<gfni>, 0x660f38cf, GFNI<gfni:c
x:Vex128:ATTSyntax:RegXMM|Unspecified|BaseIndex, +
y:Vex256:ATTSyntax:RegYMM|Unspecified|BaseIndex>
-v<fop>p<sd>, 0x<sd:ppfx><fop:opc>, AVX, Modrm|Vex|Space0F|Src1VVVV|VexWIG|CheckOperandSize|NoSuf, { RegXMM|RegYMM|Unspecified|BaseIndex, RegXMM|RegYMM, RegXMM|RegYMM }
-v<fop>s<sd>, 0x<sd:spfx><fop:opc>, AVX, Modrm|VexLIG|Space0F|Src1VVVV|VexWIG|NoSuf, { RegXMM|<sd:elem>|Unspecified|BaseIndex, RegXMM, RegXMM }
+v<fop>p<sd>, 0x<sd:ppfx><fop:opc>, AVX, Modrm|Vex|Space0F|Src1VVVV|VexWIG|CheckOperandSize|<fop:fast>|NoSuf, { RegXMM|RegYMM|Unspecified|BaseIndex, RegXMM|RegYMM, RegXMM|RegYMM }
+v<fop>s<sd>, 0x<sd:spfx><fop:opc>, AVX, Modrm|VexLIG|Space0F|Src1VVVV|VexWIG|<fop:fast>|NoSuf, { RegXMM|<sd:elem>|Unspecified|BaseIndex, RegXMM, RegXMM }
vaddsubpd, 0x66d0, AVX, Modrm|Vex|Space0F|Src1VVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
vaddsubps, 0xf2d0, AVX, Modrm|Vex|Space0F|Src1VVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
v<flog>p<sd>, 0x<sd:ppfx><flog:opc>, AVX, Modrm|Vex|Space0F|Src1VVVV|VexWIG|<flog:comm>|CheckOperandSize|NoSuf|<flog:optim>, { RegXMM|RegYMM|Unspecified|BaseIndex, RegXMM|RegYMM, RegXMM|RegYMM }