x86: Remove CpuABM and add CpuPOPCNT
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 17 Feb 2020 15:12:10 +0000 (07:12 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 17 Feb 2020 15:31:28 +0000 (07:31 -0800)
commit272a84b1204fdd4e96df689383b163b4a52be933
tree9f293c0d74a1424fe7386f2ad175e4e4874b968d
parent1f730c46141c1513e72cb24d471834b448d6d0e6
x86: Remove CpuABM and add CpuPOPCNT

AMD ABM has 2 instructions: popcnt and lzcnt.  ABM CPUID feature bit has
been reused for lzcnt and a POPCNT CPUID feature bit is added for popcnt
which used to be the part of SSE4.2.  This patch removes CpuABM and adds
CpuPOPCNT.  It changes ABM to enable both lzcnt and popcnt, changes SSE4.2
to also enable popcnt.

gas/

* config/tc-i386.c (cpu_arch): Add .popcnt.
* doc/c-i386.texi: Remove abm and .abm.  Add popcnt and .popcnt.
Add a tab before @samp{.sse4a}.

opcodes/

* i386-gen.c (cpu_flag_init): Replace CpuABM with
CpuLZCNT|CpuPOPCNT.  Add CpuPOPCNT to CPU_SSE4_2_FLAGS.  Add
CPU_POPCNT_FLAGS.
(cpu_flags): Remove CpuABM.  Add CpuPOPCNT.
* i386-opc.h (CpuABM): Removed.
(CpuPOPCNT): New.
(i386_cpu_flags): Remove cpuabm.  Add cpupopcnt.
* i386-opc.tbl: Replace CpuABM|CpuSSE4_2 with CpuPOPCNT on
popcnt.  Remove CpuABM from lzcnt.
* i386-init.h: Regenerated.
* i386-tbl.h: Likewise.
gas/ChangeLog
gas/config/tc-i386.c
gas/doc/c-i386.texi
opcodes/ChangeLog
opcodes/i386-gen.c
opcodes/i386-init.h
opcodes/i386-opc.h
opcodes/i386-opc.tbl
opcodes/i386-tbl.h