diff options
author | Jan Beulich <jbeulich@suse.com> | 2024-06-10 10:46:21 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2024-06-10 10:46:21 +0200 |
commit | d1c2dd6f4de7ec0761fcf89c95342da72826329b (patch) | |
tree | e96860ab0e66182d64ae8a69d1723c4912d18728 /opcodes/i386-opc.tbl | |
parent | cf037c0de24990ed2a0d9fabe8994dbd3c0e303e (diff) | |
download | fsf-binutils-gdb-d1c2dd6f4de7ec0761fcf89c95342da72826329b.zip fsf-binutils-gdb-d1c2dd6f4de7ec0761fcf89c95342da72826329b.tar.gz fsf-binutils-gdb-d1c2dd6f4de7ec0761fcf89c95342da72826329b.tar.bz2 |
x86/APX: convert ZU to operand constraint
Extremely rarely used attributes are inefficient when represented by a
separate attribute. Convert it to an operand constraint, as already
suggested during review. The collision with RegKludge is pretty simple
to resolve.
Diffstat (limited to 'opcodes/i386-opc.tbl')
-rw-r--r-- | opcodes/i386-opc.tbl | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/opcodes/i386-opc.tbl b/opcodes/i386-opc.tbl index 43ee785..c910680 100644 --- a/opcodes/i386-opc.tbl +++ b/opcodes/i386-opc.tbl @@ -85,6 +85,7 @@ #define RegKludge OperandConstraint=REG_KLUDGE #define Ugh OperandConstraint=UGH #define ImplicitStackOp OperandConstraint=IMPLICIT_STACK_OP +#define ZU OperandConstraint=ZERO_UPPER #define ATTSyntax Dialect=ATT_SYNTAX #define ATTMnemonic Dialect=ATT_MNEMONIC @@ -409,10 +410,12 @@ imulzu, 0x69, APX_F, Modrm|No_bSuf|No_sSuf|EVexMap4|NF|ZU, { Imm16, Reg16|Unspec // transformation. imul, 0x6b, i186, Modrm|No_bSuf|No_sSuf|RegKludge, { Imm8S, Reg16|Reg32|Reg64 } imul, 0x6b, APX_F, Modrm|No_bSuf|No_sSuf|RegKludge|EVexMap4|NF, { Imm8S, Reg16|Reg32|Reg64 } -imulzu, 0x6b, APX_F, Modrm|No_bSuf|No_sSuf|RegKludge|EVexMap4|NF|ZU, { Imm8S, Reg16 } imul, 0x69, i186, Modrm|No_bSuf|No_sSuf|RegKludge, { Imm16|Imm32|Imm32S, Reg16|Reg32|Reg64 } imul, 0x69, APX_F, Modrm|No_bSuf|No_sSuf|RegKludge|EVexMap4|NF, { Imm16|Imm32|Imm32S, Reg16|Reg32|Reg64 } -imulzu, 0x69, APX_F, Modrm|No_bSuf|No_sSuf|RegKludge|EVexMap4|NF|ZU, { Imm16, Reg16 } +// ZU is omitted here, for colliding with RegKludge. process_operands() will +// replace the constraint value after processing RegKludge. +imulzu, 0x6b, APX_F, Modrm|No_bSuf|No_sSuf|RegKludge|EVexMap4|NF/*|ZU*/, { Imm8S, Reg16 } +imulzu, 0x69, APX_F, Modrm|No_bSuf|No_sSuf|RegKludge|EVexMap4|NF/*|ZU*/, { Imm16, Reg16 } <mul> |