From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1386) id 8B2F03882648; Fri, 28 Jun 2024 06:25:09 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8B2F03882648 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1719555909; bh=Hn6XxhLbdGehLGT1WeqtBi1vzwMdVYZBDUXbuzIlZ64=; h=From:To:Subject:Date:From; b=czq857m/q4X3+kOZB7bmZtz6REgX6KCSEw0fZklYdm0J0ItSZqAch+MmaD8THJuSr iWmJV3BcI9OlA56HpiSxLWKKOpQO4+hX54Ksuywa+aA0mJHNnOgxCKNJs1Ri5hbfqK XwUmjNOEtliKCXvhc/Qo7Z89bMYHKDBzKkv5nUqQ= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Jan Beulich To: binutils-cvs@sourceware.org Subject: [binutils-gdb] x86/APX: apply NDD-to-legacy transformation to further CMOVcc forms X-Act-Checkin: binutils-gdb X-Git-Author: Jan Beulich X-Git-Refname: refs/heads/master X-Git-Oldrev: 7add9939175aa71faa37c40dcedcb9190e3b37d8 X-Git-Newrev: 2513312930b2b8a0b50fb681f2781372cce3c2f6 Message-Id: <20240628062509.8B2F03882648@sourceware.org> Date: Fri, 28 Jun 2024 06:25:09 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D2513312930b2= b8a0b50fb681f2781372cce3c2f6 commit 2513312930b2b8a0b50fb681f2781372cce3c2f6 Author: Jan Beulich Date: Fri Jun 28 08:24:45 2024 +0200 x86/APX: apply NDD-to-legacy transformation to further CMOVcc forms =20 With both sources being registers, these insns are almost commutative; the only extra adjustment needed is inversion of the encoded condition. Diff: --- gas/config/tc-i386.c | 17 ++++++- gas/testsuite/gas/i386/x86-64-apx-ndd-optimize.d | 16 +++++++ gas/testsuite/gas/i386/x86-64-apx-ndd-optimize.s | 16 +++++++ opcodes/i386-opc.tbl | 5 +- opcodes/i386-tbl.h | 60 ++++++++++++--------= ---- 5 files changed, 82 insertions(+), 32 deletions(-) diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 4de5c0127a3..2e194313960 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -456,6 +456,9 @@ struct _i386_insn /* Disable instruction size optimization. */ bool no_optimize; =20 + /* Invert the condition encoded in a base opcode. */ + bool invert_cond; + /* How to encode instructions. */ enum { @@ -3918,6 +3921,11 @@ install_template (const insn_template *t) i.tm.base_opcode >>=3D 8; } =20 + /* For CMOVcc having undergone NDD-to-legacy optimization with its source + operands being swapped, we need to invert the encoded condition. */ + if (i.invert_cond) + i.tm.base_opcode ^=3D 1; + /* Note that for pseudo prefixes this produces a length of 1. But for th= em the length isn't interesting at all. */ for (l =3D 1; l < 4; ++l) @@ -9845,7 +9853,14 @@ match_template (char mnem_suffix) && !i.op[i.operands - 1].regs->reg_type.bitfield.qword))) { if (i.operands > 2 && match_dest_op =3D=3D i.operands - 3) - swap_2_operands (match_dest_op, i.operands - 2); + { + swap_2_operands (match_dest_op, i.operands - 2); + + /* CMOVcc is marked commutative, but then also needs its + encoded condition inverted. */ + if ((t->base_opcode | 0xf) =3D=3D 0x4f) + i.invert_cond =3D true; + } =20 --i.operands; --i.reg_operands; diff --git a/gas/testsuite/gas/i386/x86-64-apx-ndd-optimize.d b/gas/testsui= te/gas/i386/x86-64-apx-ndd-optimize.d index 795dfcff126..7932b0e434c 100644 --- a/gas/testsuite/gas/i386/x86-64-apx-ndd-optimize.d +++ b/gas/testsuite/gas/i386/x86-64-apx-ndd-optimize.d @@ -118,6 +118,22 @@ Disassembly of section .text: \s*[a-f0-9]+:\s*67 0f 4d 90 90 90 90 90 cmovge -0x6f6f6f70\(%eax\),%edx \s*[a-f0-9]+:\s*67 0f 4e 90 90 90 90 90 cmovle -0x6f6f6f70\(%eax\),%edx \s*[a-f0-9]+:\s*67 0f 4f 90 90 90 90 90 cmovg -0x6f6f6f70\(%eax\),%edx +\s*[a-f0-9]+:\s*0f 41 d1 cmovno %ecx,%edx +\s*[a-f0-9]+:\s*0f 40 d1 cmovo %ecx,%edx +\s*[a-f0-9]+:\s*0f 43 d1 cmovae %ecx,%edx +\s*[a-f0-9]+:\s*0f 42 d1 cmovb %ecx,%edx +\s*[a-f0-9]+:\s*0f 45 d1 cmovne %ecx,%edx +\s*[a-f0-9]+:\s*0f 44 d1 cmove %ecx,%edx +\s*[a-f0-9]+:\s*0f 47 d1 cmova %ecx,%edx +\s*[a-f0-9]+:\s*0f 46 d1 cmovbe %ecx,%edx +\s*[a-f0-9]+:\s*0f 49 d1 cmovns %ecx,%edx +\s*[a-f0-9]+:\s*0f 48 d1 cmovs %ecx,%edx +\s*[a-f0-9]+:\s*0f 4b d1 cmovnp %ecx,%edx +\s*[a-f0-9]+:\s*0f 4a d1 cmovp %ecx,%edx +\s*[a-f0-9]+:\s*0f 4d d1 cmovge %ecx,%edx +\s*[a-f0-9]+:\s*0f 4c d1 cmovl %ecx,%edx +\s*[a-f0-9]+:\s*0f 4f d1 cmovg %ecx,%edx +\s*[a-f0-9]+:\s*0f 4e d1 cmovle %ecx,%edx \s*[a-f0-9]+:\s*62 f4 7d 08 60 c0 movbe %ax,%ax \s*[a-f0-9]+:\s*49 0f c8 bswap %r8 \s*[a-f0-9]+:\s*d5 98 c8 bswap %r16 diff --git a/gas/testsuite/gas/i386/x86-64-apx-ndd-optimize.s b/gas/testsui= te/gas/i386/x86-64-apx-ndd-optimize.s index bf75e64622d..7a2766ac2dd 100644 --- a/gas/testsuite/gas/i386/x86-64-apx-ndd-optimize.s +++ b/gas/testsuite/gas/i386/x86-64-apx-ndd-optimize.s @@ -112,6 +112,22 @@ cmovl 0x90909090(%eax),%edx,%edx cmovge 0x90909090(%eax),%edx,%edx cmovle 0x90909090(%eax),%edx,%edx cmovg 0x90909090(%eax),%edx,%edx +cmovo %edx,%ecx,%edx +cmovno %edx,%ecx,%edx +cmovc %edx,%ecx,%edx +cmovnc %edx,%ecx,%edx +cmovz %edx,%ecx,%edx +cmovnz %edx,%ecx,%edx +cmovna %edx,%ecx,%edx +cmovnbe %edx,%ecx,%edx +cmovs %edx,%ecx,%edx +cmovns %edx,%ecx,%edx +cmovpe %edx,%ecx,%edx +cmovpo %edx,%ecx,%edx +cmovnge %edx,%ecx,%edx +cmovnl %edx,%ecx,%edx +cmovng %edx,%ecx,%edx +cmovnle %edx,%ecx,%edx movbe %ax,%ax movbe %r8,%r8 movbe %r16,%r16 diff --git a/opcodes/i386-opc.tbl b/opcodes/i386-opc.tbl index fa7e9b48e59..03734884aa5 100644 --- a/opcodes/i386-opc.tbl +++ b/opcodes/i386-opc.tbl @@ -985,7 +985,10 @@ ud2b, 0xfb9, i186, Modrm|CheckOperandSize|No_bSuf|No_s= Suf, { Reg16|Reg32|Reg64|U // 3rd official undefined instr (older CPUs don't take a ModR/M byte) ud0, 0xfff, i186, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Re= g64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 } =20 -cmov, 0x4, CMOV&APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|= DstVVVV|EVexMap4, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Re= g64, Reg16|Reg32|Reg64 } +// C (commutative) isn't quite correct here on its own; the condition also +// needs inverting when source operands are swapped in order to convert to +// legacy encoding. The assembler will take care of that. +cmov, 0x4, CMOV&APX_F, C|Modrm|CheckOperandSize|No_bSuf|No_sSu= f|DstVVVV|EVexMap4|Optimize, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg= 16|Reg32|Reg64, Reg16|Reg32|Reg64 } cmov, 0xf4, CMOV, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Re= g16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 } =20 fcmovb, 0xda/0, i687, Modrm|NoSuf, { FloatReg, FloatAcc } diff --git a/opcodes/i386-tbl.h b/opcodes/i386-tbl.h index e136d598da6..4d2c28ebe64 100644 --- a/opcodes/i386-tbl.h +++ b/opcodes/i386-tbl.h @@ -8968,7 +8968,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovo, 0x40, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -8990,7 +8990,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovno, 0x41, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9012,7 +9012,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovb, 0x42, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9034,7 +9034,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovc, 0x42, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9056,7 +9056,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovnae, 0x42, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9078,7 +9078,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovnb, 0x43, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9100,7 +9100,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovnc, 0x43, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9122,7 +9122,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovae, 0x43, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9144,7 +9144,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmove, 0x44, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9166,7 +9166,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovz, 0x44, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9188,7 +9188,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovne, 0x45, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9210,7 +9210,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovnz, 0x45, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9232,7 +9232,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovbe, 0x46, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9254,7 +9254,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovna, 0x46, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9276,7 +9276,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovnbe, 0x47, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9298,7 +9298,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmova, 0x47, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9320,7 +9320,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovs, 0x48, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9342,7 +9342,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovns, 0x49, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9364,7 +9364,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovp, 0x4a, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9386,7 +9386,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovpe, 0x4a, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9408,7 +9408,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovnp, 0x4b, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9430,7 +9430,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovpo, 0x4b, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9452,7 +9452,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovl, 0x4c, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9474,7 +9474,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovnge, 0x4c, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9496,7 +9496,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovnl, 0x4d, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9518,7 +9518,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovge, 0x4d, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9540,7 +9540,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovle, 0x4e, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9562,7 +9562,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovng, 0x4e, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9584,7 +9584,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovnle, 0x4f, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -9606,7 +9606,7 @@ static const insn_template i386_optab[] =3D 0, 0, 0, 0, 0, 0 } } } }, { MN_cmovg, 0x4f, 3, SPACE_EVEXMAP4, None, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },