gas/testsuite/
2002-02-11 H.J. Lu <hongjiu.lu@intel.com> * gas/i386/i386.exp: Run xsave, xsave-intel, x86-64-xsave and x86-64-xsave-intel. * gas/i386/x86-64-xsave-intel.d: New file. * gas/i386/x86-64-xsave.d: Likewise. * gas/i386/x86-64-xsave.s: Likewise. * gas/i386/xsave-intel.d: Likewise. * gas/i386/xsave.d: Likewise. * gas/i386/xsave.s: Likewise. opcodes/ 2008-02-11 H.J. Lu <hongjiu.lu@intel.com> * i386-gen.c (cpu_flags): Add CpuXsave. * i386-opc.h (CpuXsave): New. (Cpu64): Updated. (i386_cpu_flags): Add cpuxsave. * i386-dis.c (MOD_0FAE_REG_4): New. (RM_0F01_REG_2): Likewise. (MOD_0FAE_REG_5): Updated. (RM_0F01_REG_3): Likewise. (reg_table): Use MOD_0FAE_REG_4. (mod_table): Use RM_0F01_REG_2. Add MOD_0FAE_REG_4. Updated for xrstor. (rm_table): Add RM_0F01_REG_2. * i386-opc.tbl: Add xsave, xrstor, xgetbv and xsetbv. * i386-init.h: Regenerated. * i386-tbl.h: Likewise.
This commit is contained in:
parent
86ed6051f7
commit
475a2301db
@ -1,3 +1,15 @@
|
||||
2002-02-11 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* gas/i386/i386.exp: Run xsave, xsave-intel, x86-64-xsave
|
||||
and x86-64-xsave-intel.
|
||||
|
||||
* gas/i386/x86-64-xsave-intel.d: New file.
|
||||
* gas/i386/x86-64-xsave.d: Likewise.
|
||||
* gas/i386/x86-64-xsave.s: Likewise.
|
||||
* gas/i386/xsave-intel.d: Likewise.
|
||||
* gas/i386/xsave.d: Likewise.
|
||||
* gas/i386/xsave.s: Likewise.
|
||||
|
||||
2008-02-05 Adam Nemet <anemet@caviumnetworks.com>
|
||||
|
||||
* gas/mips/mips.exp: Invoke the tests smartmips, mips32-dsp,
|
||||
|
@ -114,6 +114,8 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]]
|
||||
run_list_test "arch-10-4" "-march=i686+sse4+vmx+smx -I${srcdir}/$subdir -al"
|
||||
run_dump_test "arch-11"
|
||||
run_dump_test "arch-12"
|
||||
run_dump_test "xsave"
|
||||
run_dump_test "xsave-intel"
|
||||
|
||||
# These tests require support for 8 and 16 bit relocs,
|
||||
# so we only run them for ELF and COFF targets.
|
||||
@ -226,6 +228,8 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t
|
||||
run_dump_test "rexw"
|
||||
run_dump_test "x86-64-arch-1"
|
||||
run_dump_test "x86-64-arch-10"
|
||||
run_dump_test "x86-64-xsave"
|
||||
run_dump_test "x86-64-xsave-intel"
|
||||
|
||||
if { ![istarget "*-*-aix*"]
|
||||
&& ![istarget "*-*-beos*"]
|
||||
|
17
gas/testsuite/gas/i386/x86-64-xsave-intel.d
Normal file
17
gas/testsuite/gas/i386/x86-64-xsave-intel.d
Normal file
@ -0,0 +1,17 @@
|
||||
#source: x86-64-xsave.s
|
||||
#as: -J
|
||||
#objdump: -dw -Mintel
|
||||
#name: x86-64 xsave (Intel mode)
|
||||
|
||||
.*: +file format .*
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
0+ <_start>:
|
||||
[ ]*[a-f0-9]+: 41 0f ae 29 xrstor \[r9\]
|
||||
[ ]*[a-f0-9]+: 41 0f ae 21 xsave \[r9\]
|
||||
[ ]*[a-f0-9]+: 0f 01 d0 xgetbv
|
||||
[ ]*[a-f0-9]+: 0f 01 d1 xsetbv
|
||||
[ ]*[a-f0-9]+: 0f ae 29 xrstor \[rcx\]
|
||||
[ ]*[a-f0-9]+: 0f ae 21 xsave \[rcx\]
|
||||
#pass
|
15
gas/testsuite/gas/i386/x86-64-xsave.d
Normal file
15
gas/testsuite/gas/i386/x86-64-xsave.d
Normal file
@ -0,0 +1,15 @@
|
||||
#objdump: -dw
|
||||
#name: x86-64 xsave prefix
|
||||
|
||||
.*: +file format .*
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
0+ <_start>:
|
||||
[ ]*[a-f0-9]+: 41 0f ae 29 xrstor \(%r9\)
|
||||
[ ]*[a-f0-9]+: 41 0f ae 21 xsave \(%r9\)
|
||||
[ ]*[a-f0-9]+: 0f 01 d0 xgetbv
|
||||
[ ]*[a-f0-9]+: 0f 01 d1 xsetbv
|
||||
[ ]*[a-f0-9]+: 0f ae 29 xrstor \(%rcx\)
|
||||
[ ]*[a-f0-9]+: 0f ae 21 xsave \(%rcx\)
|
||||
#pass
|
11
gas/testsuite/gas/i386/x86-64-xsave.s
Normal file
11
gas/testsuite/gas/i386/x86-64-xsave.s
Normal file
@ -0,0 +1,11 @@
|
||||
# Check 64bit xsave/xrstor
|
||||
.text
|
||||
_start:
|
||||
xrstor (%r9)
|
||||
xsave (%r9)
|
||||
xgetbv
|
||||
xsetbv
|
||||
|
||||
.intel_syntax noprefix
|
||||
xrstor [rcx]
|
||||
xsave [rcx]
|
17
gas/testsuite/gas/i386/xsave-intel.d
Normal file
17
gas/testsuite/gas/i386/xsave-intel.d
Normal file
@ -0,0 +1,17 @@
|
||||
#source: xsave.s
|
||||
#as: -J
|
||||
#objdump: -dw -Mintel
|
||||
#name: i386 xsave (Intel mode)
|
||||
|
||||
.*: +file format .*
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
0+ <_start>:
|
||||
[ ]*[a-f0-9]+: 0f ae 2b xrstor \[ebx\]
|
||||
[ ]*[a-f0-9]+: 0f ae 23 xsave \[ebx\]
|
||||
[ ]*[a-f0-9]+: 0f 01 d0 xgetbv
|
||||
[ ]*[a-f0-9]+: 0f 01 d1 xsetbv
|
||||
[ ]*[a-f0-9]+: 0f ae 29 xrstor \[ecx\]
|
||||
[ ]*[a-f0-9]+: 0f ae 21 xsave \[ecx\]
|
||||
#pass
|
15
gas/testsuite/gas/i386/xsave.d
Normal file
15
gas/testsuite/gas/i386/xsave.d
Normal file
@ -0,0 +1,15 @@
|
||||
#objdump: -dw
|
||||
#name: i386 xsave
|
||||
|
||||
.*: file format .*
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
0+ <_start>:
|
||||
[ ]*[a-f0-9]+: 0f ae 2b xrstor \(%ebx\)
|
||||
[ ]*[a-f0-9]+: 0f ae 23 xsave \(%ebx\)
|
||||
[ ]*[a-f0-9]+: 0f 01 d0 xgetbv
|
||||
[ ]*[a-f0-9]+: 0f 01 d1 xsetbv
|
||||
[ ]*[a-f0-9]+: 0f ae 29 xrstor \(%ecx\)
|
||||
[ ]*[a-f0-9]+: 0f ae 21 xsave \(%ecx\)
|
||||
#pass
|
11
gas/testsuite/gas/i386/xsave.s
Normal file
11
gas/testsuite/gas/i386/xsave.s
Normal file
@ -0,0 +1,11 @@
|
||||
# Check xsave/xrstor
|
||||
.text
|
||||
_start:
|
||||
xrstor (%ebx)
|
||||
xsave (%ebx)
|
||||
xgetbv
|
||||
xsetbv
|
||||
|
||||
.intel_syntax noprefix
|
||||
xrstor [ecx]
|
||||
xsave [ecx]
|
@ -1,3 +1,24 @@
|
||||
2008-02-11 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* i386-gen.c (cpu_flags): Add CpuXsave.
|
||||
|
||||
* i386-opc.h (CpuXsave): New.
|
||||
(Cpu64): Updated.
|
||||
(i386_cpu_flags): Add cpuxsave.
|
||||
|
||||
* i386-dis.c (MOD_0FAE_REG_4): New.
|
||||
(RM_0F01_REG_2): Likewise.
|
||||
(MOD_0FAE_REG_5): Updated.
|
||||
(RM_0F01_REG_3): Likewise.
|
||||
(reg_table): Use MOD_0FAE_REG_4.
|
||||
(mod_table): Use RM_0F01_REG_2. Add MOD_0FAE_REG_4. Updated
|
||||
for xrstor.
|
||||
(rm_table): Add RM_0F01_REG_2.
|
||||
|
||||
* i386-opc.tbl: Add xsave, xrstor, xgetbv and xsetbv.
|
||||
* i386-init.h: Regenerated.
|
||||
* i386-tbl.h: Likewise.
|
||||
|
||||
2008-02-11 Jan Beulich <jbeulich@novell.com>
|
||||
|
||||
* i386-opc.tbl: Remove Disp32S from CpuNo64 opcodes. Remove
|
||||
|
@ -542,7 +542,8 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr)
|
||||
#define MOD_0FAE_REG_1 (MOD_0FAE_REG_0 + 1)
|
||||
#define MOD_0FAE_REG_2 (MOD_0FAE_REG_1 + 1)
|
||||
#define MOD_0FAE_REG_3 (MOD_0FAE_REG_2 + 1)
|
||||
#define MOD_0FAE_REG_5 (MOD_0FAE_REG_3 + 1)
|
||||
#define MOD_0FAE_REG_4 (MOD_0FAE_REG_3 + 1)
|
||||
#define MOD_0FAE_REG_5 (MOD_0FAE_REG_4 + 1)
|
||||
#define MOD_0FAE_REG_6 (MOD_0FAE_REG_5 + 1)
|
||||
#define MOD_0FAE_REG_7 (MOD_0FAE_REG_6 + 1)
|
||||
#define MOD_0FB2 (MOD_0FAE_REG_7 + 1)
|
||||
@ -560,7 +561,8 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr)
|
||||
|
||||
#define RM_0F01_REG_0 0
|
||||
#define RM_0F01_REG_1 (RM_0F01_REG_0 + 1)
|
||||
#define RM_0F01_REG_3 (RM_0F01_REG_1 + 1)
|
||||
#define RM_0F01_REG_2 (RM_0F01_REG_1 + 1)
|
||||
#define RM_0F01_REG_3 (RM_0F01_REG_2 + 1)
|
||||
#define RM_0F01_REG_7 (RM_0F01_REG_3 + 1)
|
||||
#define RM_0FAE_REG_5 (RM_0F01_REG_7 + 1)
|
||||
#define RM_0FAE_REG_6 (RM_0FAE_REG_5 + 1)
|
||||
@ -1764,7 +1766,7 @@ static const struct dis386 reg_table[][8] = {
|
||||
{ MOD_TABLE (MOD_0FAE_REG_1) },
|
||||
{ MOD_TABLE (MOD_0FAE_REG_2) },
|
||||
{ MOD_TABLE (MOD_0FAE_REG_3) },
|
||||
{ "(bad)", { XX } },
|
||||
{ MOD_TABLE (MOD_0FAE_REG_4) },
|
||||
{ MOD_TABLE (MOD_0FAE_REG_5) },
|
||||
{ MOD_TABLE (MOD_0FAE_REG_6) },
|
||||
{ MOD_TABLE (MOD_0FAE_REG_7) },
|
||||
@ -4549,7 +4551,7 @@ static const struct dis386 mod_table[][2] = {
|
||||
{
|
||||
/* MOD_0F01_REG_2 */
|
||||
{ X86_64_TABLE (X86_64_0F01_REG_2) },
|
||||
{ "(bad)", { XX } },
|
||||
{ RM_TABLE (RM_0F01_REG_2) },
|
||||
},
|
||||
{
|
||||
/* MOD_0F01_REG_3 */
|
||||
@ -4727,8 +4729,13 @@ static const struct dis386 mod_table[][2] = {
|
||||
{ "(bad)", { XX } },
|
||||
},
|
||||
{
|
||||
/* MOD_0FAE_REG_5 */
|
||||
/* MOD_0FAE_REG_4 */
|
||||
{ "xsave", { M } },
|
||||
{ "(bad)", { XX } },
|
||||
},
|
||||
{
|
||||
/* MOD_0FAE_REG_5 */
|
||||
{ "xrstor", { M } },
|
||||
{ RM_TABLE (RM_0FAE_REG_5) },
|
||||
},
|
||||
{
|
||||
@ -4826,6 +4833,17 @@ static const struct dis386 rm_table[][8] = {
|
||||
{ "(bad)", { XX } },
|
||||
{ "(bad)", { XX } },
|
||||
},
|
||||
{
|
||||
/* RM_0F01_REG_2 */
|
||||
{ "xgetbv", { Skip_MODRM } },
|
||||
{ "xsetbv", { Skip_MODRM } },
|
||||
{ "(bad)", { XX } },
|
||||
{ "(bad)", { XX } },
|
||||
{ "(bad)", { XX } },
|
||||
{ "(bad)", { XX } },
|
||||
{ "(bad)", { XX } },
|
||||
{ "(bad)", { XX } },
|
||||
},
|
||||
{
|
||||
/* RM_0F01_REG_3 */
|
||||
{ "vmrun", { Skip_MODRM } },
|
||||
|
@ -245,6 +245,7 @@ static bitfield cpu_flags[] =
|
||||
BITFIELD (CpuSMX),
|
||||
BITFIELD (CpuABM),
|
||||
BITFIELD (CpuLM),
|
||||
BITFIELD (CpuXsave),
|
||||
BITFIELD (Cpu64),
|
||||
BITFIELD (CpuNo64),
|
||||
#ifdef CpuUnused
|
||||
|
@ -20,151 +20,151 @@
|
||||
|
||||
#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, 0, 1, 1 } }
|
||||
1, 1, 1, 1, 1, 1, 1, 0, 1, 1 } }
|
||||
|
||||
#define CPU_GENERIC32_FLAGS \
|
||||
{ { 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 } }
|
||||
|
||||
#define CPU_GENERIC64_FLAGS \
|
||||
{ { 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, 1, 0, 0, 0 } }
|
||||
0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } }
|
||||
|
||||
#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 } }
|
||||
|
||||
#define CPU_I186_FLAGS \
|
||||
{ { 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_I286_FLAGS \
|
||||
{ { 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 } }
|
||||
|
||||
#define CPU_I386_FLAGS \
|
||||
{ { 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 } }
|
||||
|
||||
#define CPU_I486_FLAGS \
|
||||
{ { 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 } }
|
||||
|
||||
#define CPU_I586_FLAGS \
|
||||
{ { 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 } }
|
||||
|
||||
#define CPU_I686_FLAGS \
|
||||
{ { 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 } }
|
||||
|
||||
#define CPU_P2_FLAGS \
|
||||
{ { 1, 1, 1, 1, 1, 1, 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_P3_FLAGS \
|
||||
{ { 1, 1, 1, 1, 1, 1, 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 } }
|
||||
|
||||
#define CPU_P4_FLAGS \
|
||||
{ { 1, 1, 1, 1, 1, 1, 1, 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 } }
|
||||
|
||||
#define CPU_NOCONA_FLAGS \
|
||||
{ { 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, 1, 0, 0, 0 } }
|
||||
0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } }
|
||||
|
||||
#define CPU_CORE_FLAGS \
|
||||
{ { 1, 1, 1, 1, 1, 1, 1, 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 } }
|
||||
|
||||
#define CPU_CORE2_FLAGS \
|
||||
{ { 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, \
|
||||
0, 0, 0, 0, 0, 1, 0, 0, 0 } }
|
||||
0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } }
|
||||
|
||||
#define CPU_K6_FLAGS \
|
||||
{ { 1, 1, 1, 1, 1, 0, 0, 1, 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_K6_2_FLAGS \
|
||||
{ { 1, 1, 1, 1, 1, 0, 0, 1, 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 } }
|
||||
|
||||
#define CPU_ATHLON_FLAGS \
|
||||
{ { 1, 1, 1, 1, 1, 1, 0, 1, 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 } }
|
||||
|
||||
#define CPU_K8_FLAGS \
|
||||
{ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, 1, 0, 0, 0 } }
|
||||
0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } }
|
||||
|
||||
#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, 0, 0, 0, 1, 0, 0, 0 } }
|
||||
1, 1, 0, 0, 0, 0, 1, 0, 0, 0 } }
|
||||
|
||||
#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, 0 } }
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||
|
||||
#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, 0 } }
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||
|
||||
#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, 0 } }
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||
|
||||
#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, 0 } }
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||
|
||||
#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, 0 } }
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||
|
||||
#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, 1, 0, 0, 0, 0, 0, 0 } }
|
||||
0, 0, 1, 0, 0, 0, 0, 0, 0, 0 } }
|
||||
|
||||
#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, 1, 1, 0, 0, 0, 0, 0 } }
|
||||
0, 0, 1, 1, 0, 0, 0, 0, 0, 0 } }
|
||||
|
||||
#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, 0, 0, 0 } }
|
||||
|
||||
#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, 0, 0 } }
|
||||
|
||||
#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, 0 } }
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||
|
||||
#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, 0 } }
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||
|
||||
#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, 0, 0, 0, 0, 0 } }
|
||||
|
||||
#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, 0, 0, 0, 0 } }
|
||||
|
||||
#define CPU_SSE4A_FLAGS \
|
||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, \
|
||||
1, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||
1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||
|
||||
#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, 1, 0, 0, 0, 0, 0, 0, 0 } }
|
||||
0, 1, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||
|
||||
#define CPU_SSE5_FLAGS \
|
||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, \
|
||||
1, 1, 0, 0, 1, 0, 0, 0, 0 } }
|
||||
1, 1, 0, 0, 1, 0, 0, 0, 0, 0 } }
|
||||
|
||||
|
||||
#define OPERAND_TYPE_NONE \
|
||||
|
@ -80,8 +80,10 @@
|
||||
#define CpuSSE4_2 (CpuSSE4_1 + 1)
|
||||
/* SSE5 support required */
|
||||
#define CpuSSE5 (CpuSSE4_2 + 1)
|
||||
/* Xsave/xrstor New Instuctions support required */
|
||||
#define CpuXsave (CpuSSE5 + 1)
|
||||
/* 64bit support available, used by -march= in assembler. */
|
||||
#define CpuLM (CpuSSE5 + 1)
|
||||
#define CpuLM (CpuXsave + 1)
|
||||
/* 64bit support required */
|
||||
#define Cpu64 (CpuLM + 1)
|
||||
/* Not supported in the 64bit mode */
|
||||
@ -129,6 +131,7 @@ typedef union i386_cpu_flags
|
||||
unsigned int cpusse4_1:1;
|
||||
unsigned int cpusse4_2:1;
|
||||
unsigned int cpusse5:1;
|
||||
unsigned int cpuxsave:1;
|
||||
unsigned int cpulm:1;
|
||||
unsigned int cpu64:1;
|
||||
unsigned int cpuno64:1;
|
||||
|
@ -1408,6 +1408,13 @@ crc32, 2, 0xf20f38f1, None, 3, CpuSSE4_2|Cpu64, Modrm|No_bSuf|No_wSuf|No_lSuf|No
|
||||
crc32, 2, 0xf20f38f0, None, 3, CpuSSE4_2, Modrm|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg8|Byte|Unspecified|BaseIndex|Disp8|Disp16|Disp32|Disp32S, Reg32 }
|
||||
crc32, 2, 0xf20f38f0, None, 3, CpuSSE4_2|Cpu64, Modrm|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|Rex64, { Reg8|Byte|Unspecified|BaseIndex|Disp8|Disp32|Disp32S, Reg64 }
|
||||
|
||||
// xsave/xrstor New Instructions.
|
||||
|
||||
xsave, 1, 0xfae, 0x4, 2, CpuXsave, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_ldSuf, { Unspecified|BaseIndex|Disp8|Disp16|Disp32|Disp32S }
|
||||
xrstor, 1, 0xfae, 0x5, 2, CpuXsave, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_ldSuf, { Unspecified|BaseIndex|Disp8|Disp16|Disp32|Disp32S }
|
||||
xgetbv, 0, 0xf01, 0xd0, 2, CpuXsave, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|ImmExt, { 0 }
|
||||
xsetbv, 0, 0xf01, 0xd1, 2, CpuXsave, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|ImmExt, { 0 }
|
||||
|
||||
// AMD 3DNow! instructions.
|
||||
|
||||
prefetch, 1, 0xf0d, 0x0, 2, Cpu3dnow, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Byte|Unspecified|BaseIndex|Disp8|Disp16|Disp32|Disp32S }
|
||||
|
2940
opcodes/i386-tbl.h
2940
opcodes/i386-tbl.h
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user