binutils-gdb/include/opcode
Cui, Lili 80d61d8d61 Support APX GPR32 with rex2 prefix
APX uses the REX2 prefix to support EGPR for map0 and map1 of legacy
instructions. We added the NoEgpr flag in i386-gen.c for instructions
that do not support EGPR.

gas/ChangeLog:

2023-12-28  Lingling Kong <lingling.kong@intel.com>
	    H.J. Lu  <hongjiu.lu@intel.com>
	    Lili Cui <lili.cui@intel.com>
	    Lin Hu   <lin1.hu@intel.com>

	* config/tc-i386.c
	(enum i386_error): Add unsupported_EGPR_for_addressing
	and invalid_pseudo_prefix.
	(struct _i386_insn): Add rex2 and rex2_encoding for
	gpr32.
	(cpu_arch): Add apx_f.
	(is_cpu): Ditto.
	(register_number): Handle RegRex2 for gpr32.
	(is_apx_rex2_encoding): New func. Test rex2 prefix encoding.
	(build_rex2_prefix): New func. Build legacy insn in
	opcode 0/1 use gpr32 with rex2 prefix.
	(establish_rex): Handle rex2 and rex2_encoding.
	(optimize_encoding): Handel add r16-r31 for registers.
	(md_assemble): Handle apx encoding.
	(parse_insn): Handle Prefix_REX2.
	(check_EgprOperands): New func. Check if Egprs operands
	are valid for the instruction
	(match_template):  Handle Egpr operands check.
	(set_rex_rex2):  New func. set i.rex and i.rex2.
	(build_modrm_byte): Ditto.
	(output_insn): Handle rex2 2-byte prefix output.
	(check_register): Handle check egpr illegal without
	target apx, 64-bit mode and with rex_prefix.
	* doc/c-i386.texi: Document .apx.
	* testsuite/gas/i386/ilp32/x86-64-opcode-inval-intel.d: D5 valid
	in 64-bit mode.
	* testsuite/gas/i386/ilp32/x86-64-opcode-inval.d: Ditto.
	* testsuite/gas/i386/rex-bad: Adjust rex testcase.
	* testsuite/gas/i386/x86-64-opcode-inval-intel.d: Ditto.
	* testsuite/gas/i386/x86-64-opcode-inval.d: Ditto.
	* testsuite/gas/i386/x86-64-opcode-inval.s: Ditto.
	* testsuite/gas/i386/x86-64-pseudos-bad.l: Add illegal rex2 test.
	* testsuite/gas/i386/x86-64-pseudos-bad.s: Ditto.
	* testsuite/gas/i386/x86-64-pseudos.d: Add rex2 test.
	* testsuite/gas/i386/x86-64-pseudos.s: Ditto.
	* testsuite/gas/i386/x86-64.exp: Run APX tests.
	* testsuite/gas/i386/x86-64-apx-egpr-inval.l: New test.
	* testsuite/gas/i386/x86-64-apx-egpr-inval.s: New test.
	* testsuite/gas/i386/x86-64-apx-rex2.d: New test.
	* testsuite/gas/i386/x86-64-apx-rex2.s: New test.

include/ChangeLog:

	* opcode/i386.h (REX2_OPCODE): New.
	(REX2_M): Ditto.

opcodes/ChangeLog:

	* i386-dis.c (struct instr_info): Add erex for gpr32.
	Add last_erex_prefix for rex2 prefix.
	(REX2_M): Extend for gpr32.
	(PREFIX_REX2): Ditto.
	(PREFIX_REX2_ILLEGAL): Ditto.
	(ckprefix): Ditto.
	(prefix_name): Ditto.
	(print_insn): Ditto.
	(print_register): Ditto.
	(OP_E_memory): Ditto.
	(OP_REG): Ditto.
	(OP_EX): Ditto.
	* i386-gen.c (rex2_disallowed): Some instructions are not allowed rex2 prefix.
	(process_i386_opcode_modifier): Set NoEgpr for VEX and some special instructions.
	(output_i386_opcode): Handle if_entry_needs_special_handle.
	* i386-init.h : Regenerated.
	* i386-mnem.h : Regenerated.
	* i386-opc.h (enum i386_cpu): Add CpuAPX_F.
	(NoEgpr): New.
	(Prefix_NoOptimize): Ditto.
	(Prefix_REX2): Ditto.
	(RegRex2): Ditto.
	* i386-opc.tbl: Add rex2 prefix.
	* i386-reg.tbl: Add egprs (r16-r31).
	* i386-tbl.h: Regenerated.
2023-12-28 11:14:41 +00:00
..
aarch64.h aarch64: Add FEAT_ITE support 2023-12-19 15:35:49 +01:00
alpha.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
arc-attrs.h Revert "arc: Update opcode related include files for ARCv3." 2023-09-25 17:02:41 +03:00
arc-func.h Revert "arc: Update opcode related include files for ARCv3." 2023-09-25 17:02:41 +03:00
arc.h Revert "arc: Update opcode related include files for ARCv3." 2023-09-25 17:02:41 +03:00
arm.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
avr.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
bfin.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
bpf.h bpf: correct neg and neg32 instruction encoding 2023-08-21 10:07:25 -07:00
cgen.h bpf: fix error conversion from long unsigned int to unsigned int [-Werror=overflow] 2023-02-03 11:18:50 -06:00
ChangeLog-0415
ChangeLog-9103
convex.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
cr16.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
cris.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
crx.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
csky.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
d10v.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
d30v.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
dlx.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
ft32.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
h8300.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
hppa.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
i386.h Support APX GPR32 with rex2 prefix 2023-12-28 11:14:41 +00:00
ia64.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
kvx.h kvx: New port. 2023-08-16 14:22:54 +01:00
loongarch.h LoongArch: Add tls transition support. 2023-12-25 11:46:22 +08:00
m68hc11.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
m68k.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
metag.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
mips.h Add MIPS Allegrex CPU as a MIPS2-based CPU 2023-06-15 04:45:03 +01:00
mmix.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
mn10200.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
mn10300.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
moxie.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
msp430-decode.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
msp430.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
nds32.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
nfp.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
nios2.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
nios2r1.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
nios2r2.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
np1.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
ns32k.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
pdp11.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
pj.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
pn.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
ppc.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
pru.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
pyr.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
riscv-opc.h RISC-V: Fix the wrong encoding and operand of the XTheadFmv extension. 2023-12-14 09:54:19 +01:00
riscv.h RISC-V: Add SiFive custom vector coprocessor interface instructions v1.0 2023-12-01 09:29:07 +08:00
rl78.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
rx.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
s12z.h
s390.h s390: Optionally print instruction description in disassembly 2023-12-20 11:50:32 +01:00
score-datadep.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
score-inst.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
sparc.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
spu-insns.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
spu.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
tic4x.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
tic6x-control-registers.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
tic6x-insn-formats.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
tic6x-opcode-table.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
tic6x.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
tic30.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
tic54x.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
tilegx.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
tilepro.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
v850.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
vax.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
visium.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
wasm.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30
xgate.h Update year range in copyright notice of binutils files 2023-01-01 21:50:11 +10:30