2009-01-10  H.J. Lu  <hongjiu.lu@intel.com>

	* gas/config/tc-i386.c (cpu_arch): Add corei7, .clflush and
	.syscall.
	(i386_align_code): Handle PROCESSOR_COREI7.
	(md_show_usage): Add corei7, clflush and syscall.
	(i386_target_format): Replace cpup4 with cpuclflush.

	* gas/config/tc-i386.h (processor_type): Add PROCESSOR_COREI7.

	* doc/c-i386.texi: Document corei7, clflush and syscall.

gas/testsuite/

2009-01-10  H.J. Lu  <hongjiu.lu@intel.com>

	* gas/i386/arch-10.s: Add clflush and syscall.
	* gas/i386/x86-64-arch-2.s: Likewise.

	* gas/i386/arch-10.d: Updated.
	* gas/i386/arch-10-1.l: Likewise.
	* gas/i386/arch-10-2.l: Likewise.
	* gas/i386/arch-10-3.l: Likewise.
	* gas/i386/arch-10-4.l: Likewise.
	* gas/i386/x86-64-arch-2.d: Likewise.

opcodes/

2009-01-10  H.J. Lu  <hongjiu.lu@intel.com>

	* i386-gen.c (cpu_flag_init): Replace CpuP4 and CpuK6 with
	CpuClflush and CpuSYSCALL, respectively. Remove CpuK8.  Add
	CPU_COREI7_FLAGS, CPU_CLFLUSH_FLAGS and CPU_SYSCALL_FLAGS.
	(cpu_flags): Remove CpuP4, CpuK6 and CpuK8.  Add CpuClflush
	and CpuSYSCALL.
	(lineno): Removed.
	(set_bitfield): Take an argument, lineno.  Don't report lineno
	on error if it is -1.
	(process_i386_cpu_flag): Take an argument, lineno.
	(process_i386_opcode_modifier): Likewise.
	(process_i386_operand_type): Likewise.
	(output_i386_opcode): Likewise.
	(opcode_hash_entry): Add lineno.
	(process_i386_opcodes): Updated.
	(process_i386_registers): Likewise.
	(process_i386_initializers): Likewise.

	* i386-opc.h (CpuP4): Removed.
	(CpuK6): Likewise.
	(CpuK8): Likewise.
	(CpuClflush): New.
	(CpuSYSCALL): Likewise.
	(CpuMMX): Updated.
	(i386_cpu_flags): Remove cpup4, cpuk6 and cpuk8.  Add
	cpuclflush and cpusyscall.

	* i386-opc.tbl: Update movnti, clflush, lfence, mfence, pause,
	syscall and sysret.
	* i386-init.h: Regenerated.
	* i386-tbl.h: Likewise.
This commit is contained in:
H.J. Lu
2009-01-10 17:25:52 +00:00
parent 38788b66ed
commit bd5295b282
19 changed files with 3397 additions and 3262 deletions

View File

@ -1,3 +1,15 @@
2009-01-10 H.J. Lu <hongjiu.lu@intel.com>
* gas/config/tc-i386.c (cpu_arch): Add corei7, .clflush and
.syscall.
(i386_align_code): Handle PROCESSOR_COREI7.
(md_show_usage): Add corei7, clflush and syscall.
(i386_target_format): Replace cpup4 with cpuclflush.
* gas/config/tc-i386.h (processor_type): Add PROCESSOR_COREI7.
* doc/c-i386.texi: Document corei7, clflush and syscall.
2009-01-09 H.J. Lu <hongjiu.lu@intel.com> 2009-01-09 H.J. Lu <hongjiu.lu@intel.com>
* config/tc-i386.c (cpu_arch): Add .rdtscp. * config/tc-i386.c (cpu_arch): Add .rdtscp.

View File

@ -600,6 +600,8 @@ static const arch_entry cpu_arch[] =
CPU_CORE2_FLAGS }, CPU_CORE2_FLAGS },
{ "core2", PROCESSOR_CORE2, { "core2", PROCESSOR_CORE2,
CPU_CORE2_FLAGS }, CPU_CORE2_FLAGS },
{ "corei7", PROCESSOR_COREI7,
CPU_COREI7_FLAGS },
{ "k6", PROCESSOR_K6, { "k6", PROCESSOR_K6,
CPU_K6_FLAGS }, CPU_K6_FLAGS },
{ "k6_2", PROCESSOR_K6, { "k6_2", PROCESSOR_K6,
@ -650,6 +652,10 @@ static const arch_entry cpu_arch[] =
CPU_MOVBE_FLAGS }, CPU_MOVBE_FLAGS },
{ ".ept", PROCESSOR_UNKNOWN, { ".ept", PROCESSOR_UNKNOWN,
CPU_EPT_FLAGS }, CPU_EPT_FLAGS },
{ ".clflush", PROCESSOR_UNKNOWN,
CPU_CLFLUSH_FLAGS },
{ ".syscall", PROCESSOR_UNKNOWN,
CPU_SYSCALL_FLAGS },
{ ".rdtscp", PROCESSOR_UNKNOWN, { ".rdtscp", PROCESSOR_UNKNOWN,
CPU_RDTSCP_FLAGS }, CPU_RDTSCP_FLAGS },
{ ".3dnow", PROCESSOR_UNKNOWN, { ".3dnow", PROCESSOR_UNKNOWN,
@ -950,8 +956,8 @@ i386_align_code (fragS *fragP, int count)
1. For PROCESSOR_I386, PROCESSOR_I486, PROCESSOR_PENTIUM and 1. For PROCESSOR_I386, PROCESSOR_I486, PROCESSOR_PENTIUM and
PROCESSOR_GENERIC32, f32_patt will be used. PROCESSOR_GENERIC32, f32_patt will be used.
2. For PROCESSOR_PENTIUMPRO, PROCESSOR_PENTIUM4, PROCESSOR_NOCONA, 2. For PROCESSOR_PENTIUMPRO, PROCESSOR_PENTIUM4, PROCESSOR_NOCONA,
PROCESSOR_CORE, PROCESSOR_CORE2, and PROCESSOR_GENERIC64, PROCESSOR_CORE, PROCESSOR_CORE2, PROCESSOR_COREI7, and
alt_long_patt will be used. PROCESSOR_GENERIC64, alt_long_patt will be used.
3. For PROCESSOR_ATHLON, PROCESSOR_K6, PROCESSOR_K8 and 3. For PROCESSOR_ATHLON, PROCESSOR_K6, PROCESSOR_K8 and
PROCESSOR_AMDFAM10, alt_short_patt will be used. PROCESSOR_AMDFAM10, alt_short_patt will be used.
@ -997,6 +1003,7 @@ i386_align_code (fragS *fragP, int count)
case PROCESSOR_NOCONA: case PROCESSOR_NOCONA:
case PROCESSOR_CORE: case PROCESSOR_CORE:
case PROCESSOR_CORE2: case PROCESSOR_CORE2:
case PROCESSOR_COREI7:
case PROCESSOR_GENERIC64: case PROCESSOR_GENERIC64:
patt = alt_long_patt; patt = alt_long_patt;
break; break;
@ -1044,6 +1051,7 @@ i386_align_code (fragS *fragP, int count)
case PROCESSOR_NOCONA: case PROCESSOR_NOCONA:
case PROCESSOR_CORE: case PROCESSOR_CORE:
case PROCESSOR_CORE2: case PROCESSOR_CORE2:
case PROCESSOR_COREI7:
if (fragP->tc_frag_data.isa_flags.bitfield.cpui686) if (fragP->tc_frag_data.isa_flags.bitfield.cpui686)
patt = alt_long_patt; patt = alt_long_patt;
else else
@ -8232,18 +8240,18 @@ md_show_usage (stream)
generate code for CPU and EXTENSION, CPU is one of:\n\ generate code for CPU and EXTENSION, CPU is one of:\n\
i8086, i186, i286, i386, i486, pentium, pentiumpro,\n\ i8086, i186, i286, i386, i486, pentium, pentiumpro,\n\
pentiumii, pentiumiii, pentium4, prescott, nocona,\n\ pentiumii, pentiumiii, pentium4, prescott, nocona,\n\
core, core2, k6, k6_2, athlon, k8, amdfam10,\n\ core, core2, corei7, k6, k6_2, athlon, k8, amdfam10,\n\
generic32, generic64\n\ generic32, generic64\n\
EXTENSION is combination of:\n\ EXTENSION is combination of:\n\
mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, sse4,\n\ mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, sse4,\n\
avx, vmx, smx, xsave, movbe, ept, aes, pclmul, fma,\n\ avx, vmx, smx, xsave, movbe, ept, aes, pclmul, fma,\n\
rdtscp, 3dnow, 3dnowa, sse4a, sse5, svme, abm,\n\ clflush, syscall, rdtscp, 3dnow, 3dnowa, sse4a,\n\
padlock\n")); sse5, svme, abm, padlock\n"));
fprintf (stream, _("\ fprintf (stream, _("\
-mtune=CPU optimize for CPU, CPU is one of:\n\ -mtune=CPU optimize for CPU, CPU is one of:\n\
i8086, i186, i286, i386, i486, pentium, pentiumpro,\n\ i8086, i186, i286, i386, i486, pentium, pentiumpro,\n\
pentiumii, pentiumiii, pentium4, prescott, nocona,\n\ pentiumii, pentiumiii, pentium4, prescott, nocona,\n\
core, core2, k6, k6_2, athlon, k8, amdfam10,\n\ core, core2, corei7, k6, k6_2, athlon, k8, amdfam10,\n\
generic32, generic64\n")); generic32, generic64\n"));
fprintf (stream, _("\ fprintf (stream, _("\
-msse2avx encode SSE instructions with VEX prefix\n")); -msse2avx encode SSE instructions with VEX prefix\n"));
@ -8281,7 +8289,7 @@ i386_target_format (void)
cpu_arch_isa_flags.bitfield.cpui486 = 1; cpu_arch_isa_flags.bitfield.cpui486 = 1;
cpu_arch_isa_flags.bitfield.cpui586 = 1; cpu_arch_isa_flags.bitfield.cpui586 = 1;
cpu_arch_isa_flags.bitfield.cpui686 = 1; cpu_arch_isa_flags.bitfield.cpui686 = 1;
cpu_arch_isa_flags.bitfield.cpup4 = 1; cpu_arch_isa_flags.bitfield.cpuclflush = 1;
cpu_arch_isa_flags.bitfield.cpummx= 1; cpu_arch_isa_flags.bitfield.cpummx= 1;
cpu_arch_isa_flags.bitfield.cpusse = 1; cpu_arch_isa_flags.bitfield.cpusse = 1;
cpu_arch_isa_flags.bitfield.cpusse2 = 1; cpu_arch_isa_flags.bitfield.cpusse2 = 1;
@ -8294,7 +8302,7 @@ i386_target_format (void)
cpu_arch_tune_flags.bitfield.cpui486 = 1; cpu_arch_tune_flags.bitfield.cpui486 = 1;
cpu_arch_tune_flags.bitfield.cpui586 = 1; cpu_arch_tune_flags.bitfield.cpui586 = 1;
cpu_arch_tune_flags.bitfield.cpui686 = 1; cpu_arch_tune_flags.bitfield.cpui686 = 1;
cpu_arch_tune_flags.bitfield.cpup4 = 1; cpu_arch_tune_flags.bitfield.cpuclflush = 1;
cpu_arch_tune_flags.bitfield.cpummx= 1; cpu_arch_tune_flags.bitfield.cpummx= 1;
cpu_arch_tune_flags.bitfield.cpusse = 1; cpu_arch_tune_flags.bitfield.cpusse = 1;
cpu_arch_tune_flags.bitfield.cpusse2 = 1; cpu_arch_tune_flags.bitfield.cpusse2 = 1;

View File

@ -198,6 +198,7 @@ enum processor_type
PROCESSOR_NOCONA, PROCESSOR_NOCONA,
PROCESSOR_CORE, PROCESSOR_CORE,
PROCESSOR_CORE2, PROCESSOR_CORE2,
PROCESSOR_COREI7,
PROCESSOR_K6, PROCESSOR_K6,
PROCESSOR_ATHLON, PROCESSOR_ATHLON,
PROCESSOR_K8, PROCESSOR_K8,

View File

@ -100,6 +100,7 @@ processor names are recognized:
@code{nocona}, @code{nocona},
@code{core}, @code{core},
@code{core2}, @code{core2},
@code{corei7},
@code{k6}, @code{k6},
@code{k6_2}, @code{k6_2},
@code{athlon}, @code{athlon},
@ -130,6 +131,8 @@ accept various extension mnemonics. For example,
@code{fma}, @code{fma},
@code{movbe}, @code{movbe},
@code{ept}, @code{ept},
@code{clflush},
@code{syscall},
@code{rdtscp}, @code{rdtscp},
@code{3dnow}, @code{3dnow},
@code{3dnowa}, @code{3dnowa},
@ -873,14 +876,14 @@ supported on the CPU specified. The choices for @var{cpu_type} are:
@item @samp{i486} @tab @samp{i586} @tab @samp{i686} @tab @samp{pentium} @item @samp{i486} @tab @samp{i586} @tab @samp{i686} @tab @samp{pentium}
@item @samp{pentiumpro} @tab @samp{pentiumii} @tab @samp{pentiumiii} @tab @samp{pentium4} @item @samp{pentiumpro} @tab @samp{pentiumii} @tab @samp{pentiumiii} @tab @samp{pentium4}
@item @samp{prescott} @tab @samp{nocona} @tab @samp{core} @tab @samp{core2} @item @samp{prescott} @tab @samp{nocona} @tab @samp{core} @tab @samp{core2}
@item @samp{k6} @tab @samp{k6_2} @tab @samp{athlon} @tab @samp{k8} @item @samp{corei7} @tab @samp{k6} @tab @samp{k6_2} @tab @samp{athlon}
@item @samp{amdfam10} @item @samp{k8} @tab @samp{amdfam10}
@item @samp{generic32} @tab @samp{generic64} @item @samp{generic32} @tab @samp{generic64}
@item @samp{.mmx} @tab @samp{.sse} @tab @samp{.sse2} @tab @samp{.sse3} @item @samp{.mmx} @tab @samp{.sse} @tab @samp{.sse2} @tab @samp{.sse3}
@item @samp{.ssse3} @tab @samp{.sse4.1} @tab @samp{.sse4.2} @tab @samp{.sse4} @item @samp{.ssse3} @tab @samp{.sse4.1} @tab @samp{.sse4.2} @tab @samp{.sse4}
@item @samp{.avx} @tab @samp{.vmx} @tab @samp{.smx} @tab @samp{.xsave} @item @samp{.avx} @tab @samp{.vmx} @tab @samp{.smx} @tab @samp{.xsave}
@item @samp{.aes} @tab @samp{.pclmul} @tab @samp{.fma} @tab @samp{.movbe} @item @samp{.aes} @tab @samp{.pclmul} @tab @samp{.fma} @tab @samp{.movbe}
@item @samp{.ept} @tab @samp{.rdtscp} @item @samp{.ept} @tab @samp{.clflush} @tab @samp{.syscall} @tab @samp{.rdtscp}
@item @samp{.3dnow} @tab @samp{.3dnowa} @tab @samp{.sse4a} @tab @samp{.sse5} @item @samp{.3dnow} @tab @samp{.3dnowa} @tab @samp{.sse4a} @tab @samp{.sse5}
@item @samp{.svme} @tab @samp{.abm} @item @samp{.svme} @tab @samp{.abm}
@item @samp{.padlock} @item @samp{.padlock}

View File

@ -1,3 +1,15 @@
2009-01-10 H.J. Lu <hongjiu.lu@intel.com>
* gas/i386/arch-10.s: Add clflush and syscall.
* gas/i386/x86-64-arch-2.s: Likewise.
* gas/i386/arch-10.d: Updated.
* gas/i386/arch-10-1.l: Likewise.
* gas/i386/arch-10-2.l: Likewise.
* gas/i386/arch-10-3.l: Likewise.
* gas/i386/arch-10-4.l: Likewise.
* gas/i386/x86-64-arch-2.d: Likewise.
2009-01-09 H.J. Lu <hongjiu.lu@intel.com> 2009-01-09 H.J. Lu <hongjiu.lu@intel.com>
* gas/i386/arch-10.s: Add rdtscp. * gas/i386/arch-10.s: Add rdtscp.

View File

@ -25,6 +25,8 @@
.*:50: Error: .* .*:50: Error: .*
.*:52: Error: .* .*:52: Error: .*
.*:54: Error: .* .*:54: Error: .*
.*:56: Error: .*
.*:58: Error: .*
GAS LISTING .* GAS LISTING .*
@ -33,53 +35,60 @@ GAS LISTING .*
[ ]*2[ ]+\.text [ ]*2[ ]+\.text
[ ]*3[ ]+\# cmov feature [ ]*3[ ]+\# cmov feature
[ ]*4[ ]+cmove %eax,%ebx [ ]*4[ ]+cmove %eax,%ebx
[ ]*5[ ]+\# MMX [ ]*5[ ]+\# clflush
[ ]*6[ ]+paddb %mm4,%mm3 [ ]*6[ ]+clflush \(%eax\)
[ ]*7[ ]+\# SSE [ ]*7[ ]+\# SYSCALL
[ ]*8[ ]+addss %xmm4,%xmm3 [ ]*8[ ]+syscall
[ ]*9[ ]+\# SSE2 [ ]*9[ ]+\# MMX
[ ]*10[ ]+addsd %xmm4,%xmm3 [ ]*10[ ]+paddb %mm4,%mm3
[ ]*11[ ]+\# SSE3 [ ]*11[ ]+\# SSE
[ ]*12[ ]+addsubpd %xmm4,%xmm3 [ ]*12[ ]+addss %xmm4,%xmm3
[ ]*13[ ]+\# SSSE3 [ ]*13[ ]+\# SSE2
[ ]*14[ ]+phaddw %xmm4,%xmm3 [ ]*14[ ]+addsd %xmm4,%xmm3
[ ]*15[ ]+\# SSE4\.1 [ ]*15[ ]+\# SSE3
[ ]*16[ ]+phminposuw %xmm1,%xmm3 [ ]*16[ ]+addsubpd %xmm4,%xmm3
[ ]*17[ ]+\# SSE4\.2 [ ]*17[ ]+\# SSSE3
[ ]*18[ ]+crc32 %ecx,%ebx [ ]*18[ ]+phaddw %xmm4,%xmm3
[ ]*19[ ]+\# AVX [ ]*19[ ]+\# SSE4\.1
[ ]*20[ ]+vzeroall [ ]*20[ ]+phminposuw %xmm1,%xmm3
[ ]*21[ ]+\# VMX [ ]*21[ ]+\# SSE4\.2
[ ]*22[ ]+vmxoff [ ]*22[ ]+crc32 %ecx,%ebx
[ ]*23[ ]+\# SMX [ ]*23[ ]+\# AVX
[ ]*24[ ]+getsec [ ]*24[ ]+vzeroall
[ ]*25[ ]+\# Xsave [ ]*25[ ]+\# VMX
[ ]*26[ ]+xgetbv [ ]*26[ ]+vmxoff
[ ]*27[ ]+\# AES [ ]*27[ ]+\# SMX
[ ]*28[ ]+aesenc \(%ecx\),%xmm0 [ ]*28[ ]+getsec
[ ]*29[ ]+\# PCLMUL [ ]*29[ ]+\# Xsave
[ ]*30[ ]+pclmulqdq \$8,%xmm1,%xmm0 [ ]*30[ ]+xgetbv
[ ]*31[ ]+\# AES \+ AVX [ ]*31[ ]+\# AES
[ ]*32[ ]+vaesenc \(%ecx\),%xmm0,%xmm2 [ ]*32[ ]+aesenc \(%ecx\),%xmm0
[ ]*33[ ]+\# FMA [ ]*33[ ]+\# PCLMUL
[ ]*34[ ]+vfmadd132pd %xmm4,%xmm6,%xmm2 [ ]*34[ ]+pclmulqdq \$8,%xmm1,%xmm0
[ ]*35[ ]+\# MOVBE [ ]*35[ ]+\# AES \+ AVX
[ ]*36[ ]+movbe \(%ecx\),%ebx [ ]*36[ ]+vaesenc \(%ecx\),%xmm0,%xmm2
[ ]*37[ ]+\# EPT [ ]*37[ ]+\# FMA
[ ]*38[ ]+invept \(%ecx\),%ebx [ ]*38[ ]+vfmadd132pd %xmm4,%xmm6,%xmm2
[ ]*39[ ]+\# RDTSCP [ ]*39[ ]+\# MOVBE
[ ]*40[ ]+rdtscp [ ]*40[ ]+movbe \(%ecx\),%ebx
[ ]*41[ ]+\# 3DNow [ ]*41[ ]+\# EPT
[ ]*42[ ]+pmulhrw %mm4,%mm3 [ ]*42[ ]+invept \(%ecx\),%ebx
[ ]*43[ ]+\# 3DNow Extensions [ ]*43[ ]+\# RDTSCP
[ ]*44[ ]+pswapd %mm4,%mm3 [ ]*44[ ]+rdtscp
[ ]*45[ ]+\# SSE4a [ ]*45[ ]+\# 3DNow
[ ]*46[ ]+insertq %xmm2,%xmm1 [ ]*46[ ]+pmulhrw %mm4,%mm3
[ ]*47[ ]+\# SVME [ ]*47[ ]+\# 3DNow Extensions
[ ]*48[ ]+vmload [ ]*48[ ]+pswapd %mm4,%mm3
[ ]*49[ ]+\# ABM [ ]*49[ ]+\# SSE4a
[ ]*50[ ]+lzcnt %ecx,%ebx [ ]*50[ ]+insertq %xmm2,%xmm1
[ ]*51[ ]+\# SSE5 [ ]*51[ ]+\# SVME
[ ]*52[ ]+frczss %xmm2, %xmm1 [ ]*52[ ]+vmload
[ ]*53[ ]+\# PadLock [ ]*53[ ]+\# ABM
[ ]*54[ ]+xstorerng [ ]*54[ ]+lzcnt %ecx,%ebx
[ ]*55[ ]+\# SSE5
[ ]*56[ ]+frczss %xmm2, %xmm1
GAS LISTING .*
[ ]*57[ ]+\# PadLock
[ ]*58[ ]+xstorerng

View File

@ -24,6 +24,8 @@
.*:50: Error: .* .*:50: Error: .*
.*:52: Error: .* .*:52: Error: .*
.*:54: Error: .* .*:54: Error: .*
.*:56: Error: .*
.*:58: Error: .*
GAS LISTING .* GAS LISTING .*
@ -32,53 +34,60 @@ GAS LISTING .*
[ ]*2[ ]+\.text [ ]*2[ ]+\.text
[ ]*3[ ]+\# cmov feature [ ]*3[ ]+\# cmov feature
[ ]*4[ ]+\?\?\?\? 0F44D8 cmove %eax,%ebx [ ]*4[ ]+\?\?\?\? 0F44D8 cmove %eax,%ebx
[ ]*5[ ]+\# MMX [ ]*5[ ]+\# clflush
[ ]*6[ ]+paddb %mm4,%mm3 [ ]*6[ ]+clflush \(%eax\)
[ ]*7[ ]+\# SSE [ ]*7[ ]+\# SYSCALL
[ ]*8[ ]+addss %xmm4,%xmm3 [ ]*8[ ]+syscall
[ ]*9[ ]+\# SSE2 [ ]*9[ ]+\# MMX
[ ]*10[ ]+addsd %xmm4,%xmm3 [ ]*10[ ]+paddb %mm4,%mm3
[ ]*11[ ]+\# SSE3 [ ]*11[ ]+\# SSE
[ ]*12[ ]+addsubpd %xmm4,%xmm3 [ ]*12[ ]+addss %xmm4,%xmm3
[ ]*13[ ]+\# SSSE3 [ ]*13[ ]+\# SSE2
[ ]*14[ ]+phaddw %xmm4,%xmm3 [ ]*14[ ]+addsd %xmm4,%xmm3
[ ]*15[ ]+\# SSE4\.1 [ ]*15[ ]+\# SSE3
[ ]*16[ ]+phminposuw %xmm1,%xmm3 [ ]*16[ ]+addsubpd %xmm4,%xmm3
[ ]*17[ ]+\# SSE4\.2 [ ]*17[ ]+\# SSSE3
[ ]*18[ ]+crc32 %ecx,%ebx [ ]*18[ ]+phaddw %xmm4,%xmm3
[ ]*19[ ]+\# AVX [ ]*19[ ]+\# SSE4\.1
[ ]*20[ ]+vzeroall [ ]*20[ ]+phminposuw %xmm1,%xmm3
[ ]*21[ ]+\# VMX [ ]*21[ ]+\# SSE4\.2
[ ]*22[ ]+vmxoff [ ]*22[ ]+crc32 %ecx,%ebx
[ ]*23[ ]+\# SMX [ ]*23[ ]+\# AVX
[ ]*24[ ]+getsec [ ]*24[ ]+vzeroall
[ ]*25[ ]+\# Xsave [ ]*25[ ]+\# VMX
[ ]*26[ ]+xgetbv [ ]*26[ ]+vmxoff
[ ]*27[ ]+\# AES [ ]*27[ ]+\# SMX
[ ]*28[ ]+aesenc \(%ecx\),%xmm0 [ ]*28[ ]+getsec
[ ]*29[ ]+\# PCLMUL [ ]*29[ ]+\# Xsave
[ ]*30[ ]+pclmulqdq \$8,%xmm1,%xmm0 [ ]*30[ ]+xgetbv
[ ]*31[ ]+\# AES \+ AVX [ ]*31[ ]+\# AES
[ ]*32[ ]+vaesenc \(%ecx\),%xmm0,%xmm2 [ ]*32[ ]+aesenc \(%ecx\),%xmm0
[ ]*33[ ]+\# FMA [ ]*33[ ]+\# PCLMUL
[ ]*34[ ]+vfmadd132pd %xmm4,%xmm6,%xmm2 [ ]*34[ ]+pclmulqdq \$8,%xmm1,%xmm0
[ ]*35[ ]+\# MOVBE [ ]*35[ ]+\# AES \+ AVX
[ ]*36[ ]+movbe \(%ecx\),%ebx [ ]*36[ ]+vaesenc \(%ecx\),%xmm0,%xmm2
[ ]*37[ ]+\# EPT [ ]*37[ ]+\# FMA
[ ]*38[ ]+invept \(%ecx\),%ebx [ ]*38[ ]+vfmadd132pd %xmm4,%xmm6,%xmm2
[ ]*39[ ]+\# RDTSCP [ ]*39[ ]+\# MOVBE
[ ]*40[ ]+rdtscp [ ]*40[ ]+movbe \(%ecx\),%ebx
[ ]*41[ ]+\# 3DNow [ ]*41[ ]+\# EPT
[ ]*42[ ]+pmulhrw %mm4,%mm3 [ ]*42[ ]+invept \(%ecx\),%ebx
[ ]*43[ ]+\# 3DNow Extensions [ ]*43[ ]+\# RDTSCP
[ ]*44[ ]+pswapd %mm4,%mm3 [ ]*44[ ]+rdtscp
[ ]*45[ ]+\# SSE4a [ ]*45[ ]+\# 3DNow
[ ]*46[ ]+insertq %xmm2,%xmm1 [ ]*46[ ]+pmulhrw %mm4,%mm3
[ ]*47[ ]+\# SVME [ ]*47[ ]+\# 3DNow Extensions
[ ]*48[ ]+vmload [ ]*48[ ]+pswapd %mm4,%mm3
[ ]*49[ ]+\# ABM [ ]*49[ ]+\# SSE4a
[ ]*50[ ]+lzcnt %ecx,%ebx [ ]*50[ ]+insertq %xmm2,%xmm1
[ ]*51[ ]+\# SSE5 [ ]*51[ ]+\# SVME
[ ]*52[ ]+frczss %xmm2, %xmm1 [ ]*52[ ]+vmload
[ ]*53[ ]+\# PadLock [ ]*53[ ]+\# ABM
[ ]*54[ ]+xstorerng [ ]*54[ ]+lzcnt %ecx,%ebx
[ ]*55[ ]+\# SSE5
[ ]*56[ ]+frczss %xmm2, %xmm1
GAS LISTING .*
[ ]*57[ ]+\# PadLock
[ ]*58[ ]+xstorerng

View File

@ -1,6 +1,6 @@
.*: Assembler messages: .*: Assembler messages:
.*:20: Error: .* .*:6: Error: .*
.*:22: Error: .* .*:8: Error: .*
.*:24: Error: .* .*:24: Error: .*
.*:26: Error: .* .*:26: Error: .*
.*:28: Error: .* .*:28: Error: .*
@ -17,6 +17,8 @@
.*:50: Error: .* .*:50: Error: .*
.*:52: Error: .* .*:52: Error: .*
.*:54: Error: .* .*:54: Error: .*
.*:56: Error: .*
.*:58: Error: .*
GAS LISTING .* GAS LISTING .*
@ -25,59 +27,63 @@ GAS LISTING .*
[ ]*2[ ]+\.text [ ]*2[ ]+\.text
[ ]*3[ ]+\# cmov feature [ ]*3[ ]+\# cmov feature
[ ]*4[ ]+\?\?\?\? 0F44D8 cmove %eax,%ebx [ ]*4[ ]+\?\?\?\? 0F44D8 cmove %eax,%ebx
[ ]*5[ ]+\# MMX [ ]*5[ ]+\# clflush
[ ]*6[ ]+\?\?\?\? 0FFCDC paddb %mm4,%mm3 [ ]*6[ ]+clflush \(%eax\)
[ ]*7[ ]+\# SSE [ ]*7[ ]+\# SYSCALL
[ ]*8[ ]+\?\?\?\? F30F58DC addss %xmm4,%xmm3 [ ]*8[ ]+syscall
[ ]*9[ ]+\# SSE2 [ ]*9[ ]+\# MMX
[ ]*10[ ]+\?\?\?\? F20F58DC addsd %xmm4,%xmm3 [ ]*10[ ]+\?\?\?\? 0FFCDC paddb %mm4,%mm3
[ ]*11[ ]+\# SSE3 [ ]*11[ ]+\# SSE
[ ]*12[ ]+\?\?\?\? 660FD0DC addsubpd %xmm4,%xmm3 [ ]*12[ ]+\?\?\?\? F30F58DC addss %xmm4,%xmm3
[ ]*13[ ]+\# SSSE3 [ ]*13[ ]+\# SSE2
[ ]*14[ ]+\?\?\?\? 660F3801 phaddw %xmm4,%xmm3 [ ]*14[ ]+\?\?\?\? F20F58DC addsd %xmm4,%xmm3
[ ]*14[ ]+DC [ ]*15[ ]+\# SSE3
[ ]*15[ ]+\# SSE4\.1 [ ]*16[ ]+\?\?\?\? 660FD0DC addsubpd %xmm4,%xmm3
[ ]*16[ ]+\?\?\?\? 660F3841 phminposuw %xmm1,%xmm3 [ ]*17[ ]+\# SSSE3
[ ]*16[ ]+D9 [ ]*18[ ]+\?\?\?\? 660F3801 phaddw %xmm4,%xmm3
[ ]*17[ ]+\# SSE4\.2 [ ]*18[ ]+DC
[ ]*18[ ]+\?\?\?\? F20F38F1 crc32 %ecx,%ebx [ ]*19[ ]+\# SSE4\.1
[ ]*18[ ]+D9 [ ]*20[ ]+\?\?\?\? 660F3841 phminposuw %xmm1,%xmm3
[ ]*19[ ]+\# AVX [ ]*20[ ]+D9
[ ]*20[ ]+vzeroall [ ]*21[ ]+\# SSE4\.2
[ ]*21[ ]+\# VMX [ ]*22[ ]+\?\?\?\? F20F38F1 crc32 %ecx,%ebx
[ ]*22[ ]+vmxoff [ ]*22[ ]+D9
[ ]*23[ ]+\# SMX [ ]*23[ ]+\# AVX
[ ]*24[ ]+getsec [ ]*24[ ]+vzeroall
[ ]*25[ ]+\# Xsave [ ]*25[ ]+\# VMX
[ ]*26[ ]+xgetbv [ ]*26[ ]+vmxoff
[ ]*27[ ]+\# AES [ ]*27[ ]+\# SMX
[ ]*28[ ]+aesenc \(%ecx\),%xmm0 [ ]*28[ ]+getsec
[ ]*29[ ]+\# PCLMUL [ ]*29[ ]+\# Xsave
[ ]*30[ ]+pclmulqdq \$8,%xmm1,%xmm0 [ ]*30[ ]+xgetbv
[ ]*31[ ]+\# AES \+ AVX [ ]*31[ ]+\# AES
[ ]*32[ ]+vaesenc \(%ecx\),%xmm0,%xmm2 [ ]*32[ ]+aesenc \(%ecx\),%xmm0
[ ]*33[ ]+\# FMA [ ]*33[ ]+\# PCLMUL
[ ]*34[ ]+vfmadd132pd %xmm4,%xmm6,%xmm2 [ ]*34[ ]+pclmulqdq \$8,%xmm1,%xmm0
[ ]*35[ ]+\# MOVBE [ ]*35[ ]+\# AES \+ AVX
[ ]*36[ ]+movbe \(%ecx\),%ebx [ ]*36[ ]+vaesenc \(%ecx\),%xmm0,%xmm2
[ ]*37[ ]+\# EPT [ ]*37[ ]+\# FMA
[ ]*38[ ]+invept \(%ecx\),%ebx [ ]*38[ ]+vfmadd132pd %xmm4,%xmm6,%xmm2
[ ]*39[ ]+\# RDTSCP [ ]*39[ ]+\# MOVBE
[ ]*40[ ]+rdtscp [ ]*40[ ]+movbe \(%ecx\),%ebx
[ ]*41[ ]+\# 3DNow [ ]*41[ ]+\# EPT
[ ]*42[ ]+pmulhrw %mm4,%mm3 [ ]*42[ ]+invept \(%ecx\),%ebx
[ ]*43[ ]+\# 3DNow Extensions [ ]*43[ ]+\# RDTSCP
[ ]*44[ ]+pswapd %mm4,%mm3 [ ]*44[ ]+rdtscp
[ ]*45[ ]+\# SSE4a [ ]*45[ ]+\# 3DNow
[ ]*46[ ]+insertq %xmm2,%xmm1 [ ]*46[ ]+pmulhrw %mm4,%mm3
[ ]*47[ ]+\# SVME [ ]*47[ ]+\# 3DNow Extensions
[ ]*48[ ]+vmload [ ]*48[ ]+pswapd %mm4,%mm3
[ ]*49[ ]+\# ABM [ ]*49[ ]+\# SSE4a
[ ]*50[ ]+lzcnt %ecx,%ebx [ ]*50[ ]+insertq %xmm2,%xmm1
[ ]*51[ ]+\# SSE5 [ ]*51[ ]+\# SVME
[ ]*52[ ]+frczss %xmm2, %xmm1 [ ]*52[ ]+vmload
[ ]*53[ ]+\# PadLock [ ]*53[ ]+\# ABM
GAS LISTING .* GAS LISTING .*
[ ]*54[ ]+xstorerng [ ]*54[ ]+lzcnt %ecx,%ebx
[ ]*55[ ]+\# SSE5
[ ]*56[ ]+frczss %xmm2, %xmm1
[ ]*57[ ]+\# PadLock
[ ]*58[ ]+xstorerng

View File

@ -1,7 +1,7 @@
.*: Assembler messages: .*: Assembler messages:
.*:20: Error: .* .*:6: Error: .*
.*:26: Error: .* .*:8: Error: .*
.*:28: Error: .* .*:24: Error: .*
.*:30: Error: .* .*:30: Error: .*
.*:32: Error: .* .*:32: Error: .*
.*:34: Error: .* .*:34: Error: .*
@ -15,6 +15,8 @@
.*:50: Error: .* .*:50: Error: .*
.*:52: Error: .* .*:52: Error: .*
.*:54: Error: .* .*:54: Error: .*
.*:56: Error: .*
.*:58: Error: .*
GAS LISTING .* GAS LISTING .*
@ -23,59 +25,63 @@ GAS LISTING .*
[ ]*2[ ]+\.text [ ]*2[ ]+\.text
[ ]*3[ ]+\# cmov feature [ ]*3[ ]+\# cmov feature
[ ]*4[ ]+\?\?\?\? 0F44D8 cmove %eax,%ebx [ ]*4[ ]+\?\?\?\? 0F44D8 cmove %eax,%ebx
[ ]*5[ ]+\# MMX [ ]*5[ ]+\# clflush
[ ]*6[ ]+\?\?\?\? 0FFCDC paddb %mm4,%mm3 [ ]*6[ ]+clflush \(%eax\)
[ ]*7[ ]+\# SSE [ ]*7[ ]+\# SYSCALL
[ ]*8[ ]+\?\?\?\? F30F58DC addss %xmm4,%xmm3 [ ]*8[ ]+syscall
[ ]*9[ ]+\# SSE2 [ ]*9[ ]+\# MMX
[ ]*10[ ]+\?\?\?\? F20F58DC addsd %xmm4,%xmm3 [ ]*10[ ]+\?\?\?\? 0FFCDC paddb %mm4,%mm3
[ ]*11[ ]+\# SSE3 [ ]*11[ ]+\# SSE
[ ]*12[ ]+\?\?\?\? 660FD0DC addsubpd %xmm4,%xmm3 [ ]*12[ ]+\?\?\?\? F30F58DC addss %xmm4,%xmm3
[ ]*13[ ]+\# SSSE3 [ ]*13[ ]+\# SSE2
[ ]*14[ ]+\?\?\?\? 660F3801 phaddw %xmm4,%xmm3 [ ]*14[ ]+\?\?\?\? F20F58DC addsd %xmm4,%xmm3
[ ]*14[ ]+DC [ ]*15[ ]+\# SSE3
[ ]*15[ ]+\# SSE4\.1 [ ]*16[ ]+\?\?\?\? 660FD0DC addsubpd %xmm4,%xmm3
[ ]*16[ ]+\?\?\?\? 660F3841 phminposuw %xmm1,%xmm3 [ ]*17[ ]+\# SSSE3
[ ]*16[ ]+D9 [ ]*18[ ]+\?\?\?\? 660F3801 phaddw %xmm4,%xmm3
[ ]*17[ ]+\# SSE4\.2 [ ]*18[ ]+DC
[ ]*18[ ]+\?\?\?\? F20F38F1 crc32 %ecx,%ebx [ ]*19[ ]+\# SSE4\.1
[ ]*18[ ]+D9 [ ]*20[ ]+\?\?\?\? 660F3841 phminposuw %xmm1,%xmm3
[ ]*19[ ]+\# AVX [ ]*20[ ]+D9
[ ]*20[ ]+vzeroall [ ]*21[ ]+\# SSE4\.2
[ ]*21[ ]+\# VMX [ ]*22[ ]+\?\?\?\? F20F38F1 crc32 %ecx,%ebx
[ ]*22[ ]+\?\?\?\? 0F01C4 vmxoff [ ]*22[ ]+D9
[ ]*23[ ]+\# SMX [ ]*23[ ]+\# AVX
[ ]*24[ ]+\?\?\?\? 0F37 getsec [ ]*24[ ]+vzeroall
[ ]*25[ ]+\# Xsave [ ]*25[ ]+\# VMX
[ ]*26[ ]+xgetbv [ ]*26[ ]+\?\?\?\? 0F01C4 vmxoff
[ ]*27[ ]+\# AES [ ]*27[ ]+\# SMX
[ ]*28[ ]+aesenc \(%ecx\),%xmm0 [ ]*28[ ]+\?\?\?\? 0F37 getsec
[ ]*29[ ]+\# PCLMUL [ ]*29[ ]+\# Xsave
[ ]*30[ ]+pclmulqdq \$8,%xmm1,%xmm0 [ ]*30[ ]+xgetbv
[ ]*31[ ]+\# AES \+ AVX [ ]*31[ ]+\# AES
[ ]*32[ ]+vaesenc \(%ecx\),%xmm0,%xmm2 [ ]*32[ ]+aesenc \(%ecx\),%xmm0
[ ]*33[ ]+\# FMA [ ]*33[ ]+\# PCLMUL
[ ]*34[ ]+vfmadd132pd %xmm4,%xmm6,%xmm2 [ ]*34[ ]+pclmulqdq \$8,%xmm1,%xmm0
[ ]*35[ ]+\# MOVBE [ ]*35[ ]+\# AES \+ AVX
[ ]*36[ ]+movbe \(%ecx\),%ebx [ ]*36[ ]+vaesenc \(%ecx\),%xmm0,%xmm2
[ ]*37[ ]+\# EPT [ ]*37[ ]+\# FMA
[ ]*38[ ]+invept \(%ecx\),%ebx [ ]*38[ ]+vfmadd132pd %xmm4,%xmm6,%xmm2
[ ]*39[ ]+\# RDTSCP [ ]*39[ ]+\# MOVBE
[ ]*40[ ]+rdtscp [ ]*40[ ]+movbe \(%ecx\),%ebx
[ ]*41[ ]+\# 3DNow [ ]*41[ ]+\# EPT
[ ]*42[ ]+pmulhrw %mm4,%mm3 [ ]*42[ ]+invept \(%ecx\),%ebx
[ ]*43[ ]+\# 3DNow Extensions [ ]*43[ ]+\# RDTSCP
[ ]*44[ ]+pswapd %mm4,%mm3 [ ]*44[ ]+rdtscp
[ ]*45[ ]+\# SSE4a [ ]*45[ ]+\# 3DNow
[ ]*46[ ]+insertq %xmm2,%xmm1 [ ]*46[ ]+pmulhrw %mm4,%mm3
[ ]*47[ ]+\# SVME [ ]*47[ ]+\# 3DNow Extensions
[ ]*48[ ]+vmload [ ]*48[ ]+pswapd %mm4,%mm3
[ ]*49[ ]+\# ABM [ ]*49[ ]+\# SSE4a
[ ]*50[ ]+lzcnt %ecx,%ebx [ ]*50[ ]+insertq %xmm2,%xmm1
[ ]*51[ ]+\# SSE5 [ ]*51[ ]+\# SVME
[ ]*52[ ]+frczss %xmm2, %xmm1 [ ]*52[ ]+vmload
[ ]*53[ ]+\# PadLock [ ]*53[ ]+\# ABM
GAS LISTING .* GAS LISTING .*
[ ]*54[ ]+xstorerng [ ]*54[ ]+lzcnt %ecx,%ebx
[ ]*55[ ]+\# SSE5
[ ]*56[ ]+frczss %xmm2, %xmm1
[ ]*57[ ]+\# PadLock
[ ]*58[ ]+xstorerng

View File

@ -1,4 +1,4 @@
#as: -march=i686+avx+vmx+smx+xsave+aes+pclmul+fma+movbe+ept+rdtscp+sse5+3dnowa+svme+padlock #as: -march=i686+avx+vmx+smx+xsave+aes+pclmul+fma+movbe+ept+clflush+syscall+rdtscp+sse5+3dnowa+svme+padlock
#objdump: -dw #objdump: -dw
#name: i386 arch 10 #name: i386 arch 10
@ -8,6 +8,8 @@ Disassembly of section .text:
0+ <.text>: 0+ <.text>:
[ ]*[a-f0-9]+: 0f 44 d8 cmove %eax,%ebx [ ]*[a-f0-9]+: 0f 44 d8 cmove %eax,%ebx
[ ]*[a-f0-9]+: 0f ae 38 clflush \(%eax\)
[ ]*[a-f0-9]+: 0f 05 syscall
[ ]*[a-f0-9]+: 0f fc dc paddb %mm4,%mm3 [ ]*[a-f0-9]+: 0f fc dc paddb %mm4,%mm3
[ ]*[a-f0-9]+: f3 0f 58 dc addss %xmm4,%xmm3 [ ]*[a-f0-9]+: f3 0f 58 dc addss %xmm4,%xmm3
[ ]*[a-f0-9]+: f2 0f 58 dc addsd %xmm4,%xmm3 [ ]*[a-f0-9]+: f2 0f 58 dc addsd %xmm4,%xmm3

View File

@ -2,6 +2,10 @@
.text .text
# cmov feature # cmov feature
cmove %eax,%ebx cmove %eax,%ebx
# clflush
clflush (%eax)
# SYSCALL
syscall
# MMX # MMX
paddb %mm4,%mm3 paddb %mm4,%mm3
# SSE # SSE

View File

@ -1,4 +1,4 @@
#as: -march=generic64+avx+vmx+smx+xsave+aes+pclmul+fma+movbe+ept+rdtscp+sse5+3dnowa+svme+padlock #as: -march=generic64+avx+vmx+smx+xsave+aes+pclmul+fma+movbe+ept+clflush+syscall+rdtscp+sse5+3dnowa+svme+padlock
#objdump: -dw #objdump: -dw
#name: x86-64 arch 2 #name: x86-64 arch 2
@ -8,6 +8,8 @@ Disassembly of section .text:
0+ <.text>: 0+ <.text>:
[ ]*[a-f0-9]+: 0f 44 d8 cmove %eax,%ebx [ ]*[a-f0-9]+: 0f 44 d8 cmove %eax,%ebx
[ ]*[a-f0-9]+: 0f ae 38 clflush \(%rax\)
[ ]*[a-f0-9]+: 0f 05 syscall
[ ]*[a-f0-9]+: 0f fc dc paddb %mm4,%mm3 [ ]*[a-f0-9]+: 0f fc dc paddb %mm4,%mm3
[ ]*[a-f0-9]+: f3 0f 58 dc addss %xmm4,%xmm3 [ ]*[a-f0-9]+: f3 0f 58 dc addss %xmm4,%xmm3
[ ]*[a-f0-9]+: f2 0f 58 dc addsd %xmm4,%xmm3 [ ]*[a-f0-9]+: f2 0f 58 dc addsd %xmm4,%xmm3

View File

@ -2,6 +2,10 @@
.text .text
# cmov feature # cmov feature
cmove %eax,%ebx cmove %eax,%ebx
# clflush
clflush (%rax)
# SYSCALL
syscall
# MMX # MMX
paddb %mm4,%mm3 paddb %mm4,%mm3
# SSE # SSE

View File

@ -1,3 +1,36 @@
2009-01-10 H.J. Lu <hongjiu.lu@intel.com>
* i386-gen.c (cpu_flag_init): Replace CpuP4 and CpuK6 with
CpuClflush and CpuSYSCALL, respectively. Remove CpuK8. Add
CPU_COREI7_FLAGS, CPU_CLFLUSH_FLAGS and CPU_SYSCALL_FLAGS.
(cpu_flags): Remove CpuP4, CpuK6 and CpuK8. Add CpuClflush
and CpuSYSCALL.
(lineno): Removed.
(set_bitfield): Take an argument, lineno. Don't report lineno
on error if it is -1.
(process_i386_cpu_flag): Take an argument, lineno.
(process_i386_opcode_modifier): Likewise.
(process_i386_operand_type): Likewise.
(output_i386_opcode): Likewise.
(opcode_hash_entry): Add lineno.
(process_i386_opcodes): Updated.
(process_i386_registers): Likewise.
(process_i386_initializers): Likewise.
* i386-opc.h (CpuP4): Removed.
(CpuK6): Likewise.
(CpuK8): Likewise.
(CpuClflush): New.
(CpuSYSCALL): Likewise.
(CpuMMX): Updated.
(i386_cpu_flags): Remove cpup4, cpuk6 and cpuk8. Add
cpuclflush and cpusyscall.
* i386-opc.tbl: Update movnti, clflush, lfence, mfence, pause,
syscall and sysret.
* i386-init.h: Regenerated.
* i386-tbl.h: Likewise.
2009-01-09 H.J. Lu <hongjiu.lu@intel.com> 2009-01-09 H.J. Lu <hongjiu.lu@intel.com>
* i386-gen.c (cpu_flag_init): Add CpuRdtscp to CPU_K8_FLAGS * i386-gen.c (cpu_flag_init): Add CpuRdtscp to CPU_K8_FLAGS

View File

@ -47,7 +47,7 @@ static initializer cpu_flag_init [] =
{ "CPU_GENERIC32_FLAGS", { "CPU_GENERIC32_FLAGS",
"Cpu186|Cpu286|Cpu386" }, "Cpu186|Cpu286|Cpu386" },
{ "CPU_GENERIC64_FLAGS", { "CPU_GENERIC64_FLAGS",
"Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuP4|CpuMMX|CpuSSE|CpuSSE2|CpuLM" }, "Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuClflush|CpuMMX|CpuSSE|CpuSSE2|CpuLM" },
{ "CPU_NONE_FLAGS", { "CPU_NONE_FLAGS",
"0" }, "0" },
{ "CPU_I186_FLAGS", { "CPU_I186_FLAGS",
@ -67,23 +67,29 @@ static initializer cpu_flag_init [] =
{ "CPU_P3_FLAGS", { "CPU_P3_FLAGS",
"Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuMMX|CpuSSE" }, "Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuMMX|CpuSSE" },
{ "CPU_P4_FLAGS", { "CPU_P4_FLAGS",
"Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuP4|CpuMMX|CpuSSE|CpuSSE2" }, "Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuClflush|CpuMMX|CpuSSE|CpuSSE2" },
{ "CPU_NOCONA_FLAGS", { "CPU_NOCONA_FLAGS",
"Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuP4|CpuMMX|CpuSSE|CpuSSE2|CpuSSE3|CpuLM" }, "Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuClflush|CpuMMX|CpuSSE|CpuSSE2|CpuSSE3|CpuLM" },
{ "CPU_CORE_FLAGS", { "CPU_CORE_FLAGS",
"Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuP4|CpuMMX|CpuSSE|CpuSSE2|CpuSSE3" }, "Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuClflush|CpuMMX|CpuSSE|CpuSSE2|CpuSSE3" },
{ "CPU_CORE2_FLAGS", { "CPU_CORE2_FLAGS",
"Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuP4|CpuMMX|CpuSSE|CpuSSE2|CpuSSE3|CpuSSSE3|CpuLM" }, "Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuClflush|CpuMMX|CpuSSE|CpuSSE2|CpuSSE3|CpuSSSE3|CpuLM" },
{ "CPU_COREI7_FLAGS",
"Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuClflush|CpuMMX|CpuSSE|CpuSSE2|CpuSSE3|CpuSSSE3|CpuSSE4_1|CpuSSE4_2|CpuRdtscp|CpuLM" },
{ "CPU_K6_FLAGS", { "CPU_K6_FLAGS",
"Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|CpuK6|CpuMMX" }, "Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|CpuSYSCALL|CpuMMX" },
{ "CPU_K6_2_FLAGS", { "CPU_K6_2_FLAGS",
"Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|CpuK6|CpuMMX|Cpu3dnow" }, "Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|CpuSYSCALL|CpuMMX|Cpu3dnow" },
{ "CPU_ATHLON_FLAGS", { "CPU_ATHLON_FLAGS",
"Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuK6|CpuMMX|Cpu3dnow|Cpu3dnowA" }, "Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuSYSCALL|CpuMMX|Cpu3dnow|Cpu3dnowA" },
{ "CPU_K8_FLAGS", { "CPU_K8_FLAGS",
"Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuK6|CpuK8|CpuMMX|Cpu3dnow|Cpu3dnowA|CpuSSE|CpuSSE2|CpuRdtscp|CpuLM" }, "Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuSYSCALL|CpuRdtscp|CpuMMX|Cpu3dnow|Cpu3dnowA|CpuSSE|CpuSSE2|CpuLM" },
{ "CPU_AMDFAM10_FLAGS", { "CPU_AMDFAM10_FLAGS",
"Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuK6|CpuK8|CpuMMX|Cpu3dnow|Cpu3dnowA|CpuSSE|CpuSSE2|CpuSSE3|CpuSSE4a|CpuABM|CpuRdtscp|CpuLM" }, "Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuSYSCALL|CpuRdtscp|CpuMMX|Cpu3dnow|Cpu3dnowA|CpuSSE|CpuSSE2|CpuSSE3|CpuSSE4a|CpuABM|CpuLM" },
{ "CPU_CLFLUSH_FLAGS",
"CpuClflush" },
{ "CPU_SYSCALL_FLAGS",
"CpuSYSCALL" },
{ "CPU_MMX_FLAGS", { "CPU_MMX_FLAGS",
"CpuMMX" }, "CpuMMX" },
{ "CPU_SSE_FLAGS", { "CPU_SSE_FLAGS",
@ -249,9 +255,8 @@ static bitfield cpu_flags[] =
BITFIELD (Cpu486), BITFIELD (Cpu486),
BITFIELD (Cpu586), BITFIELD (Cpu586),
BITFIELD (Cpu686), BITFIELD (Cpu686),
BITFIELD (CpuP4), BITFIELD (CpuClflush),
BITFIELD (CpuK6), BITFIELD (CpuSYSCALL),
BITFIELD (CpuK8),
BITFIELD (CpuMMX), BITFIELD (CpuMMX),
BITFIELD (CpuSSE), BITFIELD (CpuSSE),
BITFIELD (CpuSSE2), BITFIELD (CpuSSE2),
@ -397,7 +402,6 @@ static bitfield operand_types[] =
#endif #endif
}; };
static int lineno;
static const char *filename; static const char *filename;
static int static int
@ -499,7 +503,7 @@ next_field (char *str, char sep, char **next, char *last)
} }
static void static void
set_bitfield (const char *f, bitfield *array, unsigned int size) set_bitfield (const char *f, bitfield *array, unsigned int size, int lineno)
{ {
unsigned int i; unsigned int i;
@ -515,7 +519,10 @@ set_bitfield (const char *f, bitfield *array, unsigned int size)
return; return;
} }
fail (_("%s: %d: Unknown bitfield: %s\n"), filename, lineno, f); if (lineno != -1)
fail (_("%s: %d: Unknown bitfield: %s\n"), filename, lineno, f);
else
fail (_("Unknown bitfield: %s\n"), f);
} }
static void static void
@ -544,7 +551,8 @@ output_cpu_flags (FILE *table, bitfield *flags, unsigned int size,
static void static void
process_i386_cpu_flag (FILE *table, char *flag, int macro, process_i386_cpu_flag (FILE *table, char *flag, int macro,
const char *comma, const char *indent) const char *comma, const char *indent,
int lineno)
{ {
char *str, *next, *last; char *str, *next, *last;
bitfield flags [ARRAY_SIZE (cpu_flags)]; bitfield flags [ARRAY_SIZE (cpu_flags)];
@ -569,7 +577,7 @@ process_i386_cpu_flag (FILE *table, char *flag, int macro,
{ {
str = next_field (next, '|', &next, last); str = next_field (next, '|', &next, last);
if (str) if (str)
set_bitfield (str, flags, ARRAY_SIZE (flags)); set_bitfield (str, flags, ARRAY_SIZE (flags), lineno);
} }
} }
@ -595,7 +603,7 @@ output_opcode_modifier (FILE *table, bitfield *modifier, unsigned int size)
} }
static void static void
process_i386_opcode_modifier (FILE *table, char *mod) process_i386_opcode_modifier (FILE *table, char *mod, int lineno)
{ {
char *str, *next, *last; char *str, *next, *last;
bitfield modifiers [ARRAY_SIZE (opcode_modifiers)]; bitfield modifiers [ARRAY_SIZE (opcode_modifiers)];
@ -610,7 +618,7 @@ process_i386_opcode_modifier (FILE *table, char *mod)
{ {
str = next_field (next, '|', &next, last); str = next_field (next, '|', &next, last);
if (str) if (str)
set_bitfield (str, modifiers, ARRAY_SIZE (modifiers)); set_bitfield (str, modifiers, ARRAY_SIZE (modifiers), lineno);
} }
} }
output_opcode_modifier (table, modifiers, ARRAY_SIZE (modifiers)); output_opcode_modifier (table, modifiers, ARRAY_SIZE (modifiers));
@ -642,7 +650,7 @@ output_operand_type (FILE *table, bitfield *types, unsigned int size,
static void static void
process_i386_operand_type (FILE *table, char *op, int macro, process_i386_operand_type (FILE *table, char *op, int macro,
const char *indent) const char *indent, int lineno)
{ {
char *str, *next, *last; char *str, *next, *last;
bitfield types [ARRAY_SIZE (operand_types)]; bitfield types [ARRAY_SIZE (operand_types)];
@ -657,7 +665,7 @@ process_i386_operand_type (FILE *table, char *op, int macro,
{ {
str = next_field (next, '|', &next, last); str = next_field (next, '|', &next, last);
if (str) if (str)
set_bitfield (str, types, ARRAY_SIZE (types)); set_bitfield (str, types, ARRAY_SIZE (types), lineno);
} }
} }
output_operand_type (table, types, ARRAY_SIZE (types), macro, output_operand_type (table, types, ARRAY_SIZE (types), macro,
@ -666,7 +674,7 @@ process_i386_operand_type (FILE *table, char *op, int macro,
static void static void
output_i386_opcode (FILE *table, const char *name, char *str, output_i386_opcode (FILE *table, const char *name, char *str,
char *last) char *last, int lineno)
{ {
unsigned int i; unsigned int i;
char *operands, *base_opcode, *extension_opcode, *opcode_length; char *operands, *base_opcode, *extension_opcode, *opcode_length;
@ -737,9 +745,9 @@ output_i386_opcode (FILE *table, const char *name, char *str,
name, operands, base_opcode, extension_opcode, name, operands, base_opcode, extension_opcode,
opcode_length); opcode_length);
process_i386_cpu_flag (table, cpu_flags, 0, ",", " "); process_i386_cpu_flag (table, cpu_flags, 0, ",", " ", lineno);
process_i386_opcode_modifier (table, opcode_modifier); process_i386_opcode_modifier (table, opcode_modifier, lineno);
fprintf (table, " { "); fprintf (table, " { ");
@ -748,7 +756,7 @@ output_i386_opcode (FILE *table, const char *name, char *str,
if (operand_types[i] == NULL || *operand_types[i] == '0') if (operand_types[i] == NULL || *operand_types[i] == '0')
{ {
if (i == 0) if (i == 0)
process_i386_operand_type (table, "0", 0, "\t "); process_i386_operand_type (table, "0", 0, "\t ", lineno);
break; break;
} }
@ -756,7 +764,7 @@ output_i386_opcode (FILE *table, const char *name, char *str,
fprintf (table, ",\n "); fprintf (table, ",\n ");
process_i386_operand_type (table, operand_types[i], 0, process_i386_operand_type (table, operand_types[i], 0,
"\t "); "\t ", lineno);
} }
fprintf (table, " } },\n"); fprintf (table, " } },\n");
} }
@ -766,6 +774,7 @@ struct opcode_hash_entry
struct opcode_hash_entry *next; struct opcode_hash_entry *next;
char *name; char *name;
char *opcode; char *opcode;
int lineno;
}; };
/* Calculate the hash value of an opcode hash entry P. */ /* Calculate the hash value of an opcode hash entry P. */
@ -798,6 +807,7 @@ process_i386_opcodes (FILE *table)
htab_t opcode_hash_table; htab_t opcode_hash_table;
struct opcode_hash_entry **opcode_array; struct opcode_hash_entry **opcode_array;
unsigned int opcode_array_size = 1024; unsigned int opcode_array_size = 1024;
int lineno = 0;
filename = "i386-opc.tbl"; filename = "i386-opc.tbl";
fp = fopen (filename, "r"); fp = fopen (filename, "r");
@ -874,6 +884,7 @@ process_i386_opcodes (FILE *table)
opcode_array[i]->next = NULL; opcode_array[i]->next = NULL;
opcode_array[i]->name = xstrdup (name); opcode_array[i]->name = xstrdup (name);
opcode_array[i]->opcode = xstrdup (str); opcode_array[i]->opcode = xstrdup (str);
opcode_array[i]->lineno = lineno;
*hash_slot = opcode_array[i]; *hash_slot = opcode_array[i];
i++; i++;
} }
@ -888,6 +899,7 @@ process_i386_opcodes (FILE *table)
(*entry)->next = NULL; (*entry)->next = NULL;
(*entry)->name = (*hash_slot)->name; (*entry)->name = (*hash_slot)->name;
(*entry)->opcode = xstrdup (str); (*entry)->opcode = xstrdup (str);
(*entry)->lineno = lineno;
} }
} }
@ -898,8 +910,9 @@ process_i386_opcodes (FILE *table)
{ {
name = next->name; name = next->name;
str = next->opcode; str = next->opcode;
lineno = next->lineno;
last = str + strlen (str); last = str + strlen (str);
output_i386_opcode (table, name, str, last); output_i386_opcode (table, name, str, last, lineno);
} }
} }
@ -907,12 +920,12 @@ process_i386_opcodes (FILE *table)
fprintf (table, " { NULL, 0, 0, 0, 0,\n"); fprintf (table, " { NULL, 0, 0, 0, 0,\n");
process_i386_cpu_flag (table, "0", 0, ",", " "); process_i386_cpu_flag (table, "0", 0, ",", " ", -1);
process_i386_opcode_modifier (table, "0"); process_i386_opcode_modifier (table, "0", -1);
fprintf (table, " { "); fprintf (table, " { ");
process_i386_operand_type (table, "0", 0, "\t "); process_i386_operand_type (table, "0", 0, "\t ", -1);
fprintf (table, " } }\n"); fprintf (table, " } }\n");
fprintf (table, "};\n"); fprintf (table, "};\n");
@ -926,6 +939,7 @@ process_i386_registers (FILE *table)
char *str, *p, *last; char *str, *p, *last;
char *reg_name, *reg_type, *reg_flags, *reg_num; char *reg_name, *reg_type, *reg_flags, *reg_num;
char *dw2_32_num, *dw2_64_num; char *dw2_32_num, *dw2_64_num;
int lineno = 0;
filename = "i386-reg.tbl"; filename = "i386-reg.tbl";
fp = fopen (filename, "r"); fp = fopen (filename, "r");
@ -980,7 +994,7 @@ process_i386_registers (FILE *table)
fprintf (table, " { \"%s\",\n ", reg_name); fprintf (table, " { \"%s\",\n ", reg_name);
process_i386_operand_type (table, reg_type, 0, "\t"); process_i386_operand_type (table, reg_type, 0, "\t", lineno);
/* Find 32-bit Dwarf2 register number. */ /* Find 32-bit Dwarf2 register number. */
dw2_32_num = next_field (str, ',', &str, last); dw2_32_num = next_field (str, ',', &str, last);
@ -1016,7 +1030,7 @@ process_i386_initializers (void)
{ {
fprintf (fp, "\n#define %s \\\n", cpu_flag_init[i].name); fprintf (fp, "\n#define %s \\\n", cpu_flag_init[i].name);
init = xstrdup (cpu_flag_init[i].init); init = xstrdup (cpu_flag_init[i].init);
process_i386_cpu_flag (fp, init, 1, "", " "); process_i386_cpu_flag (fp, init, 1, "", " ", -1);
free (init); free (init);
} }
@ -1024,7 +1038,7 @@ process_i386_initializers (void)
{ {
fprintf (fp, "\n\n#define %s \\\n ", operand_type_init[i].name); fprintf (fp, "\n\n#define %s \\\n ", operand_type_init[i].name);
init = xstrdup (operand_type_init[i].init); init = xstrdup (operand_type_init[i].init);
process_i386_operand_type (fp, init, 1, " "); process_i386_operand_type (fp, init, 1, " ", -1);
free (init); free (init);
} }
fprintf (fp, "\n"); fprintf (fp, "\n");

View File

@ -21,183 +21,195 @@
#define CPU_UNKNOWN_FLAGS \ #define CPU_UNKNOWN_FLAGS \
{ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ { { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1 } } 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1 } }
#define CPU_GENERIC32_FLAGS \ #define CPU_GENERIC32_FLAGS \
{ { 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ { { 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_GENERIC64_FLAGS \ #define CPU_GENERIC64_FLAGS \
{ { 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, \ { { 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } }
#define CPU_NONE_FLAGS \ #define CPU_NONE_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_I186_FLAGS \ #define CPU_I186_FLAGS \
{ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_I286_FLAGS \ #define CPU_I286_FLAGS \
{ { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ { { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_I386_FLAGS \ #define CPU_I386_FLAGS \
{ { 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ { { 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_I486_FLAGS \ #define CPU_I486_FLAGS \
{ { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_I586_FLAGS \ #define CPU_I586_FLAGS \
{ { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ { { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_I686_FLAGS \ #define CPU_I686_FLAGS \
{ { 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ { { 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_P2_FLAGS \ #define CPU_P2_FLAGS \
{ { 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ { { 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_P3_FLAGS \ #define CPU_P3_FLAGS \
{ { 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ { { 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_P4_FLAGS \ #define CPU_P4_FLAGS \
{ { 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, \ { { 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_NOCONA_FLAGS \ #define CPU_NOCONA_FLAGS \
{ { 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, \ { { 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } }
#define CPU_CORE_FLAGS \ #define CPU_CORE_FLAGS \
{ { 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, \ { { 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_CORE2_FLAGS \ #define CPU_CORE2_FLAGS \
{ { 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, \ { { 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } }
#define CPU_COREI7_FLAGS \
{ { 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, \
0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 } }
#define CPU_K6_FLAGS \ #define CPU_K6_FLAGS \
{ { 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ { { 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_K6_2_FLAGS \ #define CPU_K6_2_FLAGS \
{ { 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, \ { { 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_ATHLON_FLAGS \ #define CPU_ATHLON_FLAGS \
{ { 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, \ { { 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_K8_FLAGS \ #define CPU_K8_FLAGS \
{ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, \ { { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 } }
#define CPU_AMDFAM10_FLAGS \ #define CPU_AMDFAM10_FLAGS \
{ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, \ { { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, \
1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 } } 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 } }
#define CPU_CLFLUSH_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_SYSCALL_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_MMX_FLAGS \ #define CPU_MMX_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_SSE_FLAGS \ #define CPU_SSE_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_SSE2_FLAGS \ #define CPU_SSE2_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_SSE3_FLAGS \ #define CPU_SSE3_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_SSSE3_FLAGS \ #define CPU_SSSE3_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_SSE4_1_FLAGS \ #define CPU_SSE4_1_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, \
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_SSE4_2_FLAGS \ #define CPU_SSE4_2_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, \
0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_VMX_FLAGS \ #define CPU_VMX_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_SMX_FLAGS \ #define CPU_SMX_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_XSAVE_FLAGS \ #define CPU_XSAVE_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_AES_FLAGS \ #define CPU_AES_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, \
0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_PCLMUL_FLAGS \ #define CPU_PCLMUL_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, \
0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_FMA_FLAGS \ #define CPU_FMA_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, \
0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 } } 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_MOVBE_FLAGS \ #define CPU_MOVBE_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } }
#define CPU_RDTSCP_FLAGS \ #define CPU_RDTSCP_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } }
#define CPU_EPT_FLAGS \ #define CPU_EPT_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } }
#define CPU_3DNOW_FLAGS \ #define CPU_3DNOW_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_3DNOWA_FLAGS \ #define CPU_3DNOWA_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_PADLOCK_FLAGS \ #define CPU_PADLOCK_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_SVME_FLAGS \ #define CPU_SVME_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_SSE4A_FLAGS \ #define CPU_SSE4A_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, \
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_ABM_FLAGS \ #define CPU_ABM_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_SSE5_FLAGS \ #define CPU_SSE5_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, \
1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define CPU_AVX_FLAGS \ #define CPU_AVX_FLAGS \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, \ { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, \
0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define OPERAND_TYPE_NONE \ #define OPERAND_TYPE_NONE \

View File

@ -42,14 +42,12 @@
#define Cpu586 (Cpu486 + 1) #define Cpu586 (Cpu486 + 1)
/* i686 or better required */ /* i686 or better required */
#define Cpu686 (Cpu586 + 1) #define Cpu686 (Cpu586 + 1)
/* Pentium4 or better required */ /* CLFLUSH Instuction support required */
#define CpuP4 (Cpu686 + 1) #define CpuClflush (Cpu686 + 1)
/* AMD K6 or better required*/ /* SYSCALL Instuctions support required */
#define CpuK6 (CpuP4 + 1) #define CpuSYSCALL (CpuClflush + 1)
/* AMD K8 or better required */
#define CpuK8 (CpuK6 + 1)
/* MMX support required */ /* MMX support required */
#define CpuMMX (CpuK8 + 1) #define CpuMMX (CpuSYSCALL + 1)
/* SSE support required */ /* SSE support required */
#define CpuSSE (CpuMMX + 1) #define CpuSSE (CpuMMX + 1)
/* SSE2 support required */ /* SSE2 support required */
@ -126,9 +124,8 @@ typedef union i386_cpu_flags
unsigned int cpui486:1; unsigned int cpui486:1;
unsigned int cpui586:1; unsigned int cpui586:1;
unsigned int cpui686:1; unsigned int cpui686:1;
unsigned int cpup4:1; unsigned int cpuclflush:1;
unsigned int cpuk6:1; unsigned int cpusyscall:1;
unsigned int cpuk8:1;
unsigned int cpummx:1; unsigned int cpummx:1;
unsigned int cpusse:1; unsigned int cpusse:1;
unsigned int cpusse2:1; unsigned int cpusse2:1;

View File

@ -909,11 +909,12 @@ fucompi, 1, 0xdfe8, None, 2, Cpu686, ShortForm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|N
// Pentium4 extensions. // Pentium4 extensions.
movnti, 2, 0xfc3, None, 2, CpuP4, Modrm|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { Reg32|Reg64, Dword|Qword|Unspecified|BaseIndex|Disp8|Disp16|Disp32|Disp32S } movnti, 2, 0xfc3, None, 2, CpuSSE2, Modrm|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { Reg32|Reg64, Dword|Qword|Unspecified|BaseIndex|Disp8|Disp16|Disp32|Disp32S }
clflush, 1, 0xfae, 0x7, 2, CpuP4, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Byte|Unspecified|BaseIndex|Disp8|Disp16|Disp32|Disp32S } clflush, 1, 0xfae, 0x7, 2, CpuClflush, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Byte|Unspecified|BaseIndex|Disp8|Disp16|Disp32|Disp32S }
lfence, 0, 0xfae, 0xe8, 2, CpuP4, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|ImmExt, { 0 } lfence, 0, 0xfae, 0xe8, 2, CpuSSE2, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|ImmExt, { 0 }
mfence, 0, 0xfae, 0xf0, 2, CpuP4, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|ImmExt, { 0 } mfence, 0, 0xfae, 0xf0, 2, CpuSSE2, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|ImmExt, { 0 }
pause, 0, 0xf390, None, 2, CpuP4, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { 0 } // Processors that do not support PAUSE treat this opcode as a NOP instruction.
pause, 0, 0xf390, None, 2, Cpu186, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { 0 }
// MMX/SSE2 instructions. // MMX/SSE2 instructions.
@ -2488,9 +2489,9 @@ pmulhrw, 2, 0xf0f, 0xb7, 2, Cpu3dnow, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|N
pswapd, 2, 0xf0f, 0xbb, 2, Cpu3dnowA, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|ImmExt, { Qword|Unspecified|BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegMMX, RegMMX } pswapd, 2, 0xf0f, 0xbb, 2, Cpu3dnowA, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|ImmExt, { Qword|Unspecified|BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegMMX, RegMMX }
// AMD extensions. // AMD extensions.
syscall, 0, 0xf05, None, 2, CpuK6, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { 0 } syscall, 0, 0xf05, None, 2, CpuSYSCALL, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { 0 }
syscall, 0, 0xf05, None, 2, Cpu64, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { 0 } syscall, 0, 0xf05, None, 2, Cpu64, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { 0 }
sysret, 0, 0xf07, None, 2, CpuK6, DefaultSize|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { 0 } sysret, 0, 0xf07, None, 2, CpuSYSCALL, DefaultSize|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { 0 }
sysret, 0, 0xf07, None, 2, Cpu64, DefaultSize|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { 0 } sysret, 0, 0xf07, None, 2, Cpu64, DefaultSize|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { 0 }
swapgs, 0, 0xf01, 0xf8, 2, Cpu64, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|ImmExt, { 0 } swapgs, 0, 0xf01, 0xf8, 2, Cpu64, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|ImmExt, { 0 }
rdtscp, 0, 0xf01, 0xf9, 2, CpuRdtscp, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|ImmExt, { 0 } rdtscp, 0, 0xf01, 0xf9, 2, CpuRdtscp, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|ImmExt, { 0 }

File diff suppressed because it is too large Load Diff