mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-22 07:53:36 +08:00
gas/
2007-11-01 H.J. Lu <hongjiu.lu@intel.com> * config/tc-i386.c (process_suffix): Check addrprefixop0 to see if the address size override prefix changes the size of the first operand. (check_byte_reg): Don't warn if byteokintel is set. (check_long_reg): Set i.suffix to QWORD_MNEM_SUFFIX if toqword is set. (check_qword_reg): Set i.suffix to LONG_MNEM_SUFFIX if todword is set. gas/testsuite/ 2007-11-01 H.J. Lu <hongjiu.lu@intel.com> * gas/i386/i386.d: New. * gas/i386/i386.s: Likewise. * gas/i386/i386.exp: Run i386. * gas/i386/x86_64.s: Add tests for movsx, movsbl, movsbq, movsbw, movswl, movswq, movzx, movzb, movzbl, movzbq, movzbw, movzwl and movzwq. * gas/i386/x86_64.d: Updated. opcodes/ 2007-11-01 H.J. Lu <hongjiu.lu@intel.com> * i386-gen.c (opcode_modifiers): Add ByteOkIntel, ToDword, ToQword and AddrPrefixOp0. * i386-opc.h (ByteOkIntel): New. (ToDword): Likewise. (ToQword): Likewise. (AddrPrefixOp0): Likewise. (IsPrefix): Updated. (i386_opcode_modifier): Add byteokintel, todword, toqword and addrprefixop0. * i386-opc.tbl (cvtss2si): Add ToQword. (cvttss2si): Likewise. (cvtsd2si): Add ToDword. (cvttsd2si): Likewise. (monitor): Add AddrPrefixOp0. (invlpga): Likewise. (vmload): Likewise. (vmrun): Likewise. (vmsave): Likewise. (pextrb): Add ByteOkIntel. (pinsrb): Likewise. * i386-tbl.h: Regenerated.
This commit is contained in:
parent
e6c6c8f39c
commit
ca61edf2ff
@ -1,3 +1,14 @@
|
||||
2007-11-01 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* config/tc-i386.c (process_suffix): Check addrprefixop0 to
|
||||
see if the address size override prefix changes the size of the
|
||||
first operand.
|
||||
(check_byte_reg): Don't warn if byteokintel is set.
|
||||
(check_long_reg): Set i.suffix to QWORD_MNEM_SUFFIX if toqword
|
||||
is set.
|
||||
(check_qword_reg): Set i.suffix to LONG_MNEM_SUFFIX if todword
|
||||
is set.
|
||||
|
||||
2007-10-31 Eric B. Weddington <eweddington@cso.atmel.com>
|
||||
|
||||
* config/tc-avr.c (mcu_types): Remove devices that were never produced:
|
||||
|
@ -3492,17 +3492,10 @@ process_suffix (void)
|
||||
/* Now select between word & dword operations via the operand
|
||||
size prefix, except for instructions that will ignore this
|
||||
prefix anyway. */
|
||||
if (i.tm.base_opcode == 0x0f01
|
||||
&& (i.tm.extension_opcode == 0xc8
|
||||
|| i.tm.extension_opcode == 0xd8
|
||||
|| i.tm.extension_opcode == 0xda
|
||||
|| i.tm.extension_opcode == 0xdb
|
||||
|| i.tm.extension_opcode == 0xdf))
|
||||
if (i.tm.opcode_modifier.addrprefixop0)
|
||||
{
|
||||
/* monitor in SSE3 is a very special case. The default size
|
||||
of AX is the size of mode. The address size override
|
||||
prefix will change the size of AX. It is also true for
|
||||
invlpga, vmload, vmrun and vmsave in SVME. */
|
||||
/* The address size override prefix changes the size of the
|
||||
first operand. */
|
||||
if ((flag_code == CODE_32BIT
|
||||
&& i.op->regs[0].reg_type.bitfield.reg16)
|
||||
|| (flag_code != CODE_32BIT
|
||||
@ -3569,16 +3562,8 @@ check_byte_reg (void)
|
||||
if (i.types[op].bitfield.reg8)
|
||||
continue;
|
||||
|
||||
/* movzx, movsx, pextrb and pinsrb should not generate this
|
||||
warning. */
|
||||
if (intel_syntax
|
||||
&& (i.tm.base_opcode == 0xfb7
|
||||
|| i.tm.base_opcode == 0xfb6
|
||||
|| i.tm.base_opcode == 0x63
|
||||
|| i.tm.base_opcode == 0xfbe
|
||||
|| i.tm.base_opcode == 0xfbf
|
||||
|| i.tm.base_opcode == 0x660f3a14
|
||||
|| i.tm.base_opcode == 0x660f3a20))
|
||||
/* Don't generate this warning if not needed. */
|
||||
if (intel_syntax && i.tm.opcode_modifier.byteokintel)
|
||||
continue;
|
||||
|
||||
/* crc32 doesn't generate this warning. */
|
||||
@ -3690,12 +3675,10 @@ check_long_reg (void)
|
||||
|| i.tm.operand_types[op].bitfield.acc))
|
||||
{
|
||||
if (intel_syntax
|
||||
&& (i.tm.base_opcode == 0xf30f2d
|
||||
|| i.tm.base_opcode == 0xf30f2c)
|
||||
&& i.tm.opcode_modifier.toqword
|
||||
&& !i.types[0].bitfield.regxmm)
|
||||
{
|
||||
/* cvtss2si/cvttss2si convert DWORD memory to Reg64. We
|
||||
want REX byte. */
|
||||
/* Convert to QWORD. We want REX byte. */
|
||||
i.suffix = QWORD_MNEM_SUFFIX;
|
||||
}
|
||||
else
|
||||
@ -3738,12 +3721,10 @@ check_qword_reg (void)
|
||||
/* Prohibit these changes in the 64bit mode, since the
|
||||
lowering is more complicated. */
|
||||
if (intel_syntax
|
||||
&& (i.tm.base_opcode == 0xf20f2d
|
||||
|| i.tm.base_opcode == 0xf20f2c)
|
||||
&& i.tm.opcode_modifier.todword
|
||||
&& !i.types[0].bitfield.regxmm)
|
||||
{
|
||||
/* cvtsd2si/cvttsd2si convert QWORD memory to Reg32. We
|
||||
don't want REX byte. */
|
||||
/* Convert to DWORD. We don't want REX byte. */
|
||||
i.suffix = LONG_MNEM_SUFFIX;
|
||||
}
|
||||
else
|
||||
|
@ -1,3 +1,15 @@
|
||||
2007-11-01 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* gas/i386/i386.d: New.
|
||||
* gas/i386/i386.s: Likewise.
|
||||
|
||||
* gas/i386/i386.exp: Run i386.
|
||||
|
||||
* gas/i386/x86_64.s: Add tests for movsx, movsbl, movsbq,
|
||||
movsbw, movswl, movswq, movzx, movzb, movzbl, movzbq,
|
||||
movzbw, movzwl and movzwq.
|
||||
* gas/i386/x86_64.d: Updated.
|
||||
|
||||
2007-10-31 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* gas/cfi/cfi-common-6.d: Allow for possible relocation of the
|
||||
|
27
gas/testsuite/gas/i386/i386.d
Normal file
27
gas/testsuite/gas/i386/i386.d
Normal file
@ -0,0 +1,27 @@
|
||||
#as: -J
|
||||
#objdump: -dw
|
||||
#name: i386
|
||||
.*: +file format .*
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
0+ <.*>:
|
||||
[ ]*[a-f0-9]+: 0f be 10 movsbl \(%eax\),%edx
|
||||
[ ]*[a-f0-9]+: 66 0f be 10 movsbw \(%eax\),%dx
|
||||
[ ]*[a-f0-9]+: 0f be 10 movsbl \(%eax\),%edx
|
||||
[ ]*[a-f0-9]+: 66 0f be 10 movsbw \(%eax\),%dx
|
||||
[ ]*[a-f0-9]+: 0f be 10 movsbl \(%eax\),%edx
|
||||
[ ]*[a-f0-9]+: 0f bf 10 movswl \(%eax\),%edx
|
||||
[ ]*[a-f0-9]+: 0f b6 10 movzbl \(%eax\),%edx
|
||||
[ ]*[a-f0-9]+: 66 0f b6 10 movzbw \(%eax\),%dx
|
||||
[ ]*[a-f0-9]+: 0f b6 10 movzbl \(%eax\),%edx
|
||||
[ ]*[a-f0-9]+: 66 0f b6 10 movzbw \(%eax\),%dx
|
||||
[ ]*[a-f0-9]+: 0f b6 10 movzbl \(%eax\),%edx
|
||||
[ ]*[a-f0-9]+: 66 0f b6 10 movzbw \(%eax\),%dx
|
||||
[ ]*[a-f0-9]+: 0f b7 10 movzwl \(%eax\),%edx
|
||||
[ ]*[a-f0-9]+: 0f be 10 movsbl \(%eax\),%edx
|
||||
[ ]*[a-f0-9]+: 66 0f be 10 movsbw \(%eax\),%dx
|
||||
[ ]*[a-f0-9]+: 0f bf 10 movswl \(%eax\),%edx
|
||||
[ ]*[a-f0-9]+: 0f b6 10 movzbl \(%eax\),%edx
|
||||
[ ]*[a-f0-9]+: 66 0f b6 10 movzbw \(%eax\),%dx
|
||||
[ ]*[a-f0-9]+: 0f b7 10 movzwl \(%eax\),%edx
|
@ -95,6 +95,7 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]]
|
||||
run_dump_test "mem-intel"
|
||||
run_dump_test "reg"
|
||||
run_dump_test "reg-intel"
|
||||
run_dump_test "i386"
|
||||
|
||||
# These tests require support for 8 and 16 bit relocs,
|
||||
# so we only run them for ELF and COFF targets.
|
||||
|
26
gas/testsuite/gas/i386/i386.s
Normal file
26
gas/testsuite/gas/i386/i386.s
Normal file
@ -0,0 +1,26 @@
|
||||
# i386 instructions
|
||||
.text
|
||||
|
||||
movsx (%eax), %edx
|
||||
movsx (%eax), %dx
|
||||
movsbl (%eax), %edx
|
||||
movsbw (%eax), %dx
|
||||
movsbl (%eax), %edx
|
||||
movswl (%eax), %edx
|
||||
|
||||
movzx (%eax), %edx
|
||||
movzx (%eax), %dx
|
||||
movzb (%eax), %edx
|
||||
movzb (%eax), %dx
|
||||
movzbl (%eax), %edx
|
||||
movzbw (%eax), %dx
|
||||
movzwl (%eax), %edx
|
||||
|
||||
.intel_syntax noprefix
|
||||
movsx edx,BYTE PTR [eax]
|
||||
movsx dx,BYTE PTR [eax]
|
||||
movsx edx,WORD PTR [eax]
|
||||
|
||||
movzx edx,BYTE PTR [eax]
|
||||
movzx dx,BYTE PTR [eax]
|
||||
movzx edx,WORD PTR [eax]
|
@ -1,161 +1,191 @@
|
||||
#as: -J
|
||||
#objdump: -dw
|
||||
#name: i386 x86_64
|
||||
#name: x86_64
|
||||
#stderr: x86_64.e
|
||||
.*: +file format .*
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
0+ <.*>:
|
||||
[ ]+0: 01 ca[ ]+add[ ]+%ecx,%edx
|
||||
[ ]+2: 44 01 ca[ ]+add[ ]+%r9d,%edx
|
||||
[ ]+5: 41 01 ca[ ]+add[ ]+%ecx,%r10d
|
||||
[ ]+8: 48 01 ca[ ]+add[ ]+%rcx,%rdx
|
||||
[ ]+b: 4d 01 ca[ ]+add[ ]+%r9,%r10
|
||||
[ ]+e: 41 01 c0[ ]+add[ ]+%eax,%r8d
|
||||
[ ]+11: 66 41 01 c0[ ]+add[ ]+%ax,%r8w
|
||||
[ ]+15: 49 01 c0[ ]+add[ ]+%rax,%r8
|
||||
[ ]+18: 05 11 22 33 44[ ]+add[ ]+\$0x44332211,%eax
|
||||
[ ]+1d: 48 05 11 22 33 f4[ ]+add[ ]+\$0xf+4332211,%rax
|
||||
[ ]+23: 66 05 33 44[ ]+add[ ]+\$0x4433,%ax
|
||||
[ ]+27: 48 05 11 22 33 44[ ]+add[ ]+\$0x44332211,%rax
|
||||
[ ]+2d: 00 ca[ ]+add[ ]+%cl,%dl
|
||||
[ ]+2f: 00 f7[ ]+add[ ]+%dh,%bh
|
||||
[ ]+31: 40 00 f7[ ]+add[ ]+%sil,%dil
|
||||
[ ]+34: 41 00 f7[ ]+add[ ]+%sil,%r15b
|
||||
[ ]+37: 44 00 f7[ ]+add[ ]+%r14b,%dil
|
||||
[ ]+3a: 45 00 f7[ ]+add[ ]+%r14b,%r15b
|
||||
[ ]+3d: 50[ ]+push[ ]+%rax
|
||||
[ ]+3e: 41 50[ ]+push[ ]+%r8
|
||||
[ ]+40: 41 59[ ]+pop[ ]+%r9
|
||||
[ ]+42: 04 11[ ]+add[ ]+\$0x11,%al
|
||||
[ ]+44: 80 c4 11[ ]+add[ ]+\$0x11,%ah
|
||||
[ ]+47: 40 80 c4 11[ ]+add[ ]+\$0x11,%spl
|
||||
[ ]+4b: 41 80 c0 11[ ]+add[ ]+\$0x11,%r8b
|
||||
[ ]+4f: 41 80 c4 11[ ]+add[ ]+\$0x11,%r12b
|
||||
[ ]+53: 0f 20 c0[ ]+mov[ ]+%cr0,%rax
|
||||
[ ]+56: 41 0f 20 c0[ ]+mov[ ]+%cr0,%r8
|
||||
[ ]+5a: 44 0f 20 c0[ ]+mov[ ]+%cr8,%rax
|
||||
[ ]+5e: 44 0f 22 c0[ ]+mov[ ]+%rax,%cr8
|
||||
[ ]+62: f3 48 a5[ ]+rep movsq %ds:\(%rsi\),%es:\(%rdi\)
|
||||
[ ]+65: 66 f3 a5[ ]+rep movsw %ds:\(%rsi\),%es:\(%rdi\)
|
||||
[ ]+68: f3 48 a5[ ]+rep movsq %ds:\(%rsi\),%es:\(%rdi\)
|
||||
[ ]+6b: b0 11[ ]+mov[ ]+\$0x11,%al
|
||||
[ ]+6d: b4 11[ ]+mov[ ]+\$0x11,%ah
|
||||
[ ]+6f: 40 b4 11[ ]+mov[ ]+\$0x11,%spl
|
||||
[ ]+72: 41 b4 11[ ]+mov[ ]+\$0x11,%r12b
|
||||
[ ]+75: b8 44 33 22 11[ ]+mov[ ]+\$0x11223344,%eax
|
||||
[ ]+7a: 41 b8 44 33 22 11[ ]+mov[ ]+\$0x11223344,%r8d
|
||||
[ ]+80: 48 b8 88 77 66 55 44 33 22 11 mov[ ]+\$0x1122334455667788,%rax
|
||||
[ ]+8a: 49 b8 88 77 66 55 44 33 22 11 mov[ ]+\$0x1122334455667788,%r8
|
||||
[ ]+94: 03 00[ ]+add[ ]+\(%rax\),%eax
|
||||
[ ]+96: 41 03 00[ ]+add[ ]+\(%r8\),%eax
|
||||
[ ]+99: 45 03 00[ ]+add[ ]+\(%r8\),%r8d
|
||||
[ ]+9c: 49 03 00[ ]+add[ ]+\(%r8\),%rax
|
||||
[ ]+9f: 03 05 22 22 22 22[ ]+add[ ]+0x22222222\(%rip\),%eax.*
|
||||
[ ]+a5: 03 45 00[ ]+add[ ]+0x0\(%rbp\),%eax
|
||||
[ ]+a8: 03 04 25 22 22 22 22 add[ ]+0x22222222,%eax
|
||||
[ ]+af: 41 03 45 00[ ]+add[ ]+0x0\(%r13\),%eax
|
||||
[ ]+b3: 03 04 80[ ]+add[ ]+\(%rax,%rax,4\),%eax
|
||||
[ ]+b6: 41 03 04 80[ ]+add[ ]+\(%r8,%rax,4\),%eax
|
||||
[ ]+ba: 45 03 04 80[ ]+add[ ]+\(%r8,%rax,4\),%r8d
|
||||
[ ]+be: 43 03 04 80[ ]+add[ ]+\(%r8,%r8,4\),%eax
|
||||
[ ]+c2: 46 01 04 81[ ]+add[ ]+%r8d,\(%rcx,%r8,4\)
|
||||
[ ]+c6: 03 14 c0[ ]+add[ ]+\(%rax,%rax,8\),%edx
|
||||
[ ]+c9: 03 14 c8[ ]+add[ ]+\(%rax,%rcx,8\),%edx
|
||||
[ ]+cc: 03 14 d0[ ]+add[ ]+\(%rax,%rdx,8\),%edx
|
||||
[ ]+cf: 03 14 d8[ ]+add[ ]+\(%rax,%rbx,8\),%edx
|
||||
[ ]+d2: 03 10[ ]+add[ ]+\(%rax\),%edx
|
||||
[ ]+d4: 03 14 e8[ ]+add[ ]+\(%rax,%rbp,8\),%edx
|
||||
[ ]+d7: 03 14 f0[ ]+add[ ]+\(%rax,%rsi,8\),%edx
|
||||
[ ]+da: 03 14 f8[ ]+add[ ]+\(%rax,%rdi,8\),%edx
|
||||
[ ]+dd: 42 03 14 c0[ ]+add[ ]+\(%rax,%r8,8\),%edx
|
||||
[ ]+e1: 42 03 14 c8[ ]+add[ ]+\(%rax,%r9,8\),%edx
|
||||
[ ]+e5: 42 03 14 d0[ ]+add[ ]+\(%rax,%r10,8\),%edx
|
||||
[ ]+e9: 42 03 14 d8[ ]+add[ ]+\(%rax,%r11,8\),%edx
|
||||
[ ]+ed: 42 03 14 e0[ ]+add[ ]+\(%rax,%r12,8\),%edx
|
||||
[ ]+f1: 42 03 14 e8[ ]+add[ ]+\(%rax,%r13,8\),%edx
|
||||
[ ]+f5: 42 03 14 f0[ ]+add[ ]+\(%rax,%r14,8\),%edx
|
||||
[ ]+f9: 42 03 14 f8[ ]+add[ ]+\(%rax,%r15,8\),%edx
|
||||
[ ]+fd: 83 c1 11[ ]+add[ ]+\$0x11,%ecx
|
||||
100: 83 00 11[ ]+addl[ ]+\$0x11,\(%rax\)
|
||||
103: 48 83 00 11[ ]+addq[ ]+\$0x11,\(%rax\)
|
||||
107: 41 83 00 11[ ]+addl[ ]+\$0x11,\(%r8\)
|
||||
10b: 83 04 81 11[ ]+addl[ ]+\$0x11,\(%rcx,%rax,4\)
|
||||
10f: 41 83 04 81 11[ ]+addl[ ]+\$0x11,\(%r9,%rax,4\)
|
||||
114: 42 83 04 81 11[ ]+addl[ ]+\$0x11,\(%rcx,%r8,4\)
|
||||
119: 83 05 22 22 22 22 33 addl[ ]+\$0x33,0x22222222\(%rip\).*
|
||||
120: 48 83 05 22 22 22 22 33 addq[ ]+\$0x33,0x22222222\(%rip\).*
|
||||
128: 81 05 22 22 22 22 33 33 33 33 addl[ ]+\$0x33333333,0x22222222\(%rip\).*
|
||||
132: 48 81 05 22 22 22 22 33 33 33 33 addq[ ]+\$0x33333333,0x22222222\(%rip\).*
|
||||
13d: 83 04 c5 22 22 22 22 33 addl[ ]+\$0x33,0x22222222\(,%rax,8\)
|
||||
145: 83 80 22 22 22 22 33 addl[ ]+\$0x33,0x22222222\(%rax\)
|
||||
14c: 83 80 22 22 22 22 33 addl[ ]+\$0x33,0x22222222\(%rax\)
|
||||
153: 41 83 04 e8 33[ ]+addl[ ]+\$0x33,\(%r8,%rbp,8\)
|
||||
158: 83 04 25 22 22 22 22 33 addl[ ]+\$0x33,0x22222222
|
||||
160: a0 11 22 33 44 55 66 77 88 mov[ ]+0x8877665544332211,%al
|
||||
169: a1 11 22 33 44 55 66 77 88 mov[ ]+0x8877665544332211,%eax
|
||||
172: a2 11 22 33 44 55 66 77 88 mov[ ]+%al,0x8877665544332211
|
||||
17b: a3 11 22 33 44 55 66 77 88 mov[ ]+%eax,0x8877665544332211
|
||||
184: 48 a1 11 22 33 44 55 66 77 88 mov[ ]+0x8877665544332211,%rax
|
||||
18e: 48 a3 11 22 33 44 55 66 77 88 mov[ ]+%rax,0x8877665544332211
|
||||
198: 48 99[ ]+cqto[ ]+
|
||||
19a: 48 98[ ]+cltq[ ]+
|
||||
19c: 48 63 c0[ ]+movslq %eax,%rax
|
||||
19f: 48 0f bf c0[ ]+movswq %ax,%rax
|
||||
1a3: 48 0f be c0[ ]+movsbq %al,%rax
|
||||
[ ]*[a-f0-9]+: 01 ca add %ecx,%edx
|
||||
[ ]*[a-f0-9]+: 44 01 ca add %r9d,%edx
|
||||
[ ]*[a-f0-9]+: 41 01 ca add %ecx,%r10d
|
||||
[ ]*[a-f0-9]+: 48 01 ca add %rcx,%rdx
|
||||
[ ]*[a-f0-9]+: 4d 01 ca add %r9,%r10
|
||||
[ ]*[a-f0-9]+: 41 01 c0 add %eax,%r8d
|
||||
[ ]*[a-f0-9]+: 66 41 01 c0 add %ax,%r8w
|
||||
[ ]*[a-f0-9]+: 49 01 c0 add %rax,%r8
|
||||
[ ]*[a-f0-9]+: 05 11 22 33 44 add \$0x44332211,%eax
|
||||
[ ]*[a-f0-9]+: 48 05 11 22 33 f4 add \$0xfffffffff4332211,%rax
|
||||
[ ]*[a-f0-9]+: 66 05 33 44 add \$0x4433,%ax
|
||||
[ ]*[a-f0-9]+: 48 05 11 22 33 44 add \$0x44332211,%rax
|
||||
[ ]*[a-f0-9]+: 00 ca add %cl,%dl
|
||||
[ ]*[a-f0-9]+: 00 f7 add %dh,%bh
|
||||
[ ]*[a-f0-9]+: 40 00 f7 add %sil,%dil
|
||||
[ ]*[a-f0-9]+: 41 00 f7 add %sil,%r15b
|
||||
[ ]*[a-f0-9]+: 44 00 f7 add %r14b,%dil
|
||||
[ ]*[a-f0-9]+: 45 00 f7 add %r14b,%r15b
|
||||
[ ]*[a-f0-9]+: 50 push %rax
|
||||
[ ]*[a-f0-9]+: 41 50 push %r8
|
||||
[ ]*[a-f0-9]+: 41 59 pop %r9
|
||||
[ ]*[a-f0-9]+: 04 11 add \$0x11,%al
|
||||
[ ]*[a-f0-9]+: 80 c4 11 add \$0x11,%ah
|
||||
[ ]*[a-f0-9]+: 40 80 c4 11 add \$0x11,%spl
|
||||
[ ]*[a-f0-9]+: 41 80 c0 11 add \$0x11,%r8b
|
||||
[ ]*[a-f0-9]+: 41 80 c4 11 add \$0x11,%r12b
|
||||
[ ]*[a-f0-9]+: 0f 20 c0 mov %cr0,%rax
|
||||
[ ]*[a-f0-9]+: 41 0f 20 c0 mov %cr0,%r8
|
||||
[ ]*[a-f0-9]+: 44 0f 20 c0 mov %cr8,%rax
|
||||
[ ]*[a-f0-9]+: 44 0f 22 c0 mov %rax,%cr8
|
||||
[ ]*[a-f0-9]+: f3 48 a5 rep movsq %ds:\(%rsi\),%es:\(%rdi\)
|
||||
[ ]*[a-f0-9]+: 66 f3 a5 rep movsw %ds:\(%rsi\),%es:\(%rdi\)
|
||||
[ ]*[a-f0-9]+: f3 48 a5 rep movsq %ds:\(%rsi\),%es:\(%rdi\)
|
||||
[ ]*[a-f0-9]+: b0 11 mov \$0x11,%al
|
||||
[ ]*[a-f0-9]+: b4 11 mov \$0x11,%ah
|
||||
[ ]*[a-f0-9]+: 40 b4 11 mov \$0x11,%spl
|
||||
[ ]*[a-f0-9]+: 41 b4 11 mov \$0x11,%r12b
|
||||
[ ]*[a-f0-9]+: b8 44 33 22 11 mov \$0x11223344,%eax
|
||||
[ ]*[a-f0-9]+: 41 b8 44 33 22 11 mov \$0x11223344,%r8d
|
||||
[ ]*[a-f0-9]+: 48 b8 88 77 66 55 44 33 22 11 mov \$0x1122334455667788,%rax
|
||||
[ ]*[a-f0-9]+: 49 b8 88 77 66 55 44 33 22 11 mov \$0x1122334455667788,%r8
|
||||
[ ]*[a-f0-9]+: 03 00 add \(%rax\),%eax
|
||||
[ ]*[a-f0-9]+: 41 03 00 add \(%r8\),%eax
|
||||
[ ]*[a-f0-9]+: 45 03 00 add \(%r8\),%r8d
|
||||
[ ]*[a-f0-9]+: 49 03 00 add \(%r8\),%rax
|
||||
[ ]*[a-f0-9]+: 03 05 22 22 22 22 add 0x22222222\(%rip\),%eax # 222222c7 <foo\+0x222220c4>
|
||||
[ ]*[a-f0-9]+: 03 45 00 add 0x0\(%rbp\),%eax
|
||||
[ ]*[a-f0-9]+: 03 04 25 22 22 22 22 add 0x22222222,%eax
|
||||
[ ]*[a-f0-9]+: 41 03 45 00 add 0x0\(%r13\),%eax
|
||||
[ ]*[a-f0-9]+: 03 04 80 add \(%rax,%rax,4\),%eax
|
||||
[ ]*[a-f0-9]+: 41 03 04 80 add \(%r8,%rax,4\),%eax
|
||||
[ ]*[a-f0-9]+: 45 03 04 80 add \(%r8,%rax,4\),%r8d
|
||||
[ ]*[a-f0-9]+: 43 03 04 80 add \(%r8,%r8,4\),%eax
|
||||
[ ]*[a-f0-9]+: 46 01 04 81 add %r8d,\(%rcx,%r8,4\)
|
||||
[ ]*[a-f0-9]+: 03 14 c0 add \(%rax,%rax,8\),%edx
|
||||
[ ]*[a-f0-9]+: 03 14 c8 add \(%rax,%rcx,8\),%edx
|
||||
[ ]*[a-f0-9]+: 03 14 d0 add \(%rax,%rdx,8\),%edx
|
||||
[ ]*[a-f0-9]+: 03 14 d8 add \(%rax,%rbx,8\),%edx
|
||||
[ ]*[a-f0-9]+: 03 10 add \(%rax\),%edx
|
||||
[ ]*[a-f0-9]+: 03 14 e8 add \(%rax,%rbp,8\),%edx
|
||||
[ ]*[a-f0-9]+: 03 14 f0 add \(%rax,%rsi,8\),%edx
|
||||
[ ]*[a-f0-9]+: 03 14 f8 add \(%rax,%rdi,8\),%edx
|
||||
[ ]*[a-f0-9]+: 42 03 14 c0 add \(%rax,%r8,8\),%edx
|
||||
[ ]*[a-f0-9]+: 42 03 14 c8 add \(%rax,%r9,8\),%edx
|
||||
[ ]*[a-f0-9]+: 42 03 14 d0 add \(%rax,%r10,8\),%edx
|
||||
[ ]*[a-f0-9]+: 42 03 14 d8 add \(%rax,%r11,8\),%edx
|
||||
[ ]*[a-f0-9]+: 42 03 14 e0 add \(%rax,%r12,8\),%edx
|
||||
[ ]*[a-f0-9]+: 42 03 14 e8 add \(%rax,%r13,8\),%edx
|
||||
[ ]*[a-f0-9]+: 42 03 14 f0 add \(%rax,%r14,8\),%edx
|
||||
[ ]*[a-f0-9]+: 42 03 14 f8 add \(%rax,%r15,8\),%edx
|
||||
[ ]*[a-f0-9]+: 83 c1 11 add \$0x11,%ecx
|
||||
[ ]*[a-f0-9]+: 83 00 11 addl \$0x11,\(%rax\)
|
||||
[ ]*[a-f0-9]+: 48 83 00 11 addq \$0x11,\(%rax\)
|
||||
[ ]*[a-f0-9]+: 41 83 00 11 addl \$0x11,\(%r8\)
|
||||
[ ]*[a-f0-9]+: 83 04 81 11 addl \$0x11,\(%rcx,%rax,4\)
|
||||
[ ]*[a-f0-9]+: 41 83 04 81 11 addl \$0x11,\(%r9,%rax,4\)
|
||||
[ ]*[a-f0-9]+: 42 83 04 81 11 addl \$0x11,\(%rcx,%r8,4\)
|
||||
[ ]*[a-f0-9]+: 83 05 22 22 22 22 33 addl \$0x33,0x22222222\(%rip\) # 22222342 <foo\+0x2222213f>
|
||||
[ ]*[a-f0-9]+: 48 83 05 22 22 22 22 33 addq \$0x33,0x22222222\(%rip\) # 2222234a <foo\+0x22222147>
|
||||
[ ]*[a-f0-9]+: 81 05 22 22 22 22 33 33 33 33 addl \$0x33333333,0x22222222\(%rip\) # 22222354 <foo\+0x22222151>
|
||||
[ ]*[a-f0-9]+: 48 81 05 22 22 22 22 33 33 33 33 addq \$0x33333333,0x22222222\(%rip\) # 2222235f <foo\+0x2222215c>
|
||||
[ ]*[a-f0-9]+: 83 04 c5 22 22 22 22 33 addl \$0x33,0x22222222\(,%rax,8\)
|
||||
[ ]*[a-f0-9]+: 83 80 22 22 22 22 33 addl \$0x33,0x22222222\(%rax\)
|
||||
[ ]*[a-f0-9]+: 83 80 22 22 22 22 33 addl \$0x33,0x22222222\(%rax\)
|
||||
[ ]*[a-f0-9]+: 41 83 04 e8 33 addl \$0x33,\(%r8,%rbp,8\)
|
||||
[ ]*[a-f0-9]+: 83 04 25 22 22 22 22 33 addl \$0x33,0x22222222
|
||||
[ ]*[a-f0-9]+: a0 11 22 33 44 55 66 77 88 mov 0x8877665544332211,%al
|
||||
[ ]*[a-f0-9]+: a1 11 22 33 44 55 66 77 88 mov 0x8877665544332211,%eax
|
||||
[ ]*[a-f0-9]+: a2 11 22 33 44 55 66 77 88 mov %al,0x8877665544332211
|
||||
[ ]*[a-f0-9]+: a3 11 22 33 44 55 66 77 88 mov %eax,0x8877665544332211
|
||||
[ ]*[a-f0-9]+: 48 a1 11 22 33 44 55 66 77 88 mov 0x8877665544332211,%rax
|
||||
[ ]*[a-f0-9]+: 48 a3 11 22 33 44 55 66 77 88 mov %rax,0x8877665544332211
|
||||
[ ]*[a-f0-9]+: 48 99 cqto
|
||||
[ ]*[a-f0-9]+: 48 98 cltq
|
||||
[ ]*[a-f0-9]+: 48 63 c0 movslq %eax,%rax
|
||||
[ ]*[a-f0-9]+: 48 0f bf c0 movswq %ax,%rax
|
||||
[ ]*[a-f0-9]+: 48 0f be c0 movsbq %al,%rax
|
||||
|
||||
0+1a7 <bar>:
|
||||
1a7: b0 00[ ]+mov[ ]+\$0x0,%al
|
||||
1a9: 66 b8 00 00[ ]+mov[ ]+\$0x0,%ax
|
||||
1ad: b8 00 00 00 00[ ]+mov[ ]+\$0x0,%eax
|
||||
1b2: 48 c7 c0 00 00 00 00 mov[ ]+\$0x0,%rax
|
||||
1b9: a1 00 00 00 00 00 00 00 00 mov[ ]+0x0,%eax
|
||||
1c2: 8b 04 25 00 00 00 00 mov[ ]+0x0,%eax
|
||||
1c9: 8b 80 00 00 00 00[ ]+mov[ ]+0x0\(%rax\),%eax
|
||||
1cf: 8b 05 00 00 00 00[ ]+mov[ ]+0x0\(%rip\),%eax.*
|
||||
1d5: b0 00[ ]+mov[ ]+\$0x0,%al
|
||||
1d7: 66 b8 00 00[ ]+mov[ ]+\$0x0,%ax
|
||||
1db: b8 00 00 00 00[ ]+mov[ ]+\$0x0,%eax
|
||||
1e0: 48 c7 c0 00 00 00 00 mov[ ]+\$0x0,%rax
|
||||
1e7: a1 00 00 00 00 00 00 00 00 mov[ ]+0x0,%eax
|
||||
1f0: 8b 04 25 00 00 00 00 mov[ ]+0x0,%eax
|
||||
1f7: 8b 80 00 00 00 00[ ]+mov[ ]+0x0\(%rax\),%eax
|
||||
1fd: 8b 05 00 00 00 00[ ]+mov[ ]+0x0\(%rip\),%eax.*
|
||||
[ ]*[a-f0-9]+: b0 00 mov \$0x0,%al
|
||||
[ ]*[a-f0-9]+: 66 b8 00 00 mov \$0x0,%ax
|
||||
[ ]*[a-f0-9]+: b8 00 00 00 00 mov \$0x0,%eax
|
||||
[ ]*[a-f0-9]+: 48 c7 c0 00 00 00 00 mov \$0x0,%rax
|
||||
[ ]*[a-f0-9]+: a1 00 00 00 00 00 00 00 00 mov 0x0,%eax
|
||||
[ ]*[a-f0-9]+: 8b 04 25 00 00 00 00 mov 0x0,%eax
|
||||
[ ]*[a-f0-9]+: 8b 80 00 00 00 00 mov 0x0\(%rax\),%eax
|
||||
[ ]*[a-f0-9]+: 8b 05 00 00 00 00 mov 0x0\(%rip\),%eax # 1d5 <bar\+0x2e>
|
||||
[ ]*[a-f0-9]+: b0 00 mov \$0x0,%al
|
||||
[ ]*[a-f0-9]+: 66 b8 00 00 mov \$0x0,%ax
|
||||
[ ]*[a-f0-9]+: b8 00 00 00 00 mov \$0x0,%eax
|
||||
[ ]*[a-f0-9]+: 48 c7 c0 00 00 00 00 mov \$0x0,%rax
|
||||
[ ]*[a-f0-9]+: a1 00 00 00 00 00 00 00 00 mov 0x0,%eax
|
||||
[ ]*[a-f0-9]+: 8b 04 25 00 00 00 00 mov 0x0,%eax
|
||||
[ ]*[a-f0-9]+: 8b 80 00 00 00 00 mov 0x0\(%rax\),%eax
|
||||
[ ]*[a-f0-9]+: 8b 05 00 00 00 00 mov 0x0\(%rip\),%eax # 203 <foo>
|
||||
|
||||
0+203 <foo>:
|
||||
203: a0 11 22 33 44 55 66 77 88 mov[ ]+0x8877665544332211,%al
|
||||
20c: 66 a1 11 22 33 44 55 66 77 88 mov[ ]+0x8877665544332211,%ax
|
||||
216: a1 11 22 33 44 55 66 77 88 mov[ ]+0x8877665544332211,%eax
|
||||
21f: 48 a1 11 22 33 44 55 66 77 88 mov[ ]+0x8877665544332211,%rax
|
||||
229: a2 11 22 33 44 55 66 77 88 mov[ ]+%al,0x8877665544332211
|
||||
232: 66 a3 11 22 33 44 55 66 77 88 mov[ ]+%ax,0x8877665544332211
|
||||
23c: a3 11 22 33 44 55 66 77 88 mov[ ]+%eax,0x8877665544332211
|
||||
245: 48 a3 11 22 33 44 55 66 77 88 mov[ ]+%rax,0x8877665544332211
|
||||
24f: a0 11 22 33 44 55 66 77 88 mov[ ]+0x8877665544332211,%al
|
||||
258: 66 a1 11 22 33 44 55 66 77 88 mov[ ]+0x8877665544332211,%ax
|
||||
262: a1 11 22 33 44 55 66 77 88 mov[ ]+0x8877665544332211,%eax
|
||||
26b: 48 a1 11 22 33 44 55 66 77 88 mov[ ]+0x8877665544332211,%rax
|
||||
275: a2 11 22 33 44 55 66 77 88 mov[ ]+%al,0x8877665544332211
|
||||
27e: 66 a3 11 22 33 44 55 66 77 88 mov[ ]+%ax,0x8877665544332211
|
||||
288: a3 11 22 33 44 55 66 77 88 mov[ ]+%eax,0x8877665544332211
|
||||
291: 48 a3 11 22 33 44 55 66 77 88 mov[ ]+%rax,0x8877665544332211
|
||||
29b: 8a 04 25 11 22 33 ff mov[ ]+0xffffffffff332211,%al
|
||||
2a2: 66 8b 04 25 11 22 33 ff mov[ ]+0xffffffffff332211,%ax
|
||||
2aa: 8b 04 25 11 22 33 ff mov[ ]+0xffffffffff332211,%eax
|
||||
2b1: 48 8b 04 25 11 22 33 ff mov[ ]+0xffffffffff332211,%rax
|
||||
2b9: 88 04 25 11 22 33 ff mov[ ]+%al,0xffffffffff332211
|
||||
2c0: 66 89 04 25 11 22 33 ff mov[ ]+%ax,0xffffffffff332211
|
||||
2c8: 89 04 25 11 22 33 ff mov[ ]+%eax,0xffffffffff332211
|
||||
2cf: 48 89 04 25 11 22 33 ff mov[ ]+%rax,0xffffffffff332211
|
||||
2d7: 8a 04 25 11 22 33 ff mov[ ]+0xffffffffff332211,%al
|
||||
2de: 66 8b 04 25 11 22 33 ff mov[ ]+0xffffffffff332211,%ax
|
||||
2e6: 8b 04 25 11 22 33 ff mov[ ]+0xffffffffff332211,%eax
|
||||
2ed: 48 8b 04 25 11 22 33 ff mov[ ]+0xffffffffff332211,%rax
|
||||
2f5: 88 04 25 11 22 33 ff mov[ ]+%al,0xffffffffff332211
|
||||
2fc: 66 89 04 25 11 22 33 ff mov[ ]+%ax,0xffffffffff332211
|
||||
304: 89 04 25 11 22 33 ff mov[ ]+%eax,0xffffffffff332211
|
||||
30b: 48 89 04 25 11 22 33 ff mov[ ]+%rax,0xffffffffff332211
|
||||
313: 48 0f c7 08[ ]+cmpxchg16b \(%rax\)
|
||||
317: 48 0f c7 08[ ]+cmpxchg16b \(%rax\)
|
||||
[ ]*[a-f0-9]+: a0 11 22 33 44 55 66 77 88 mov 0x8877665544332211,%al
|
||||
[ ]*[a-f0-9]+: 66 a1 11 22 33 44 55 66 77 88 mov 0x8877665544332211,%ax
|
||||
[ ]*[a-f0-9]+: a1 11 22 33 44 55 66 77 88 mov 0x8877665544332211,%eax
|
||||
[ ]*[a-f0-9]+: 48 a1 11 22 33 44 55 66 77 88 mov 0x8877665544332211,%rax
|
||||
[ ]*[a-f0-9]+: a2 11 22 33 44 55 66 77 88 mov %al,0x8877665544332211
|
||||
[ ]*[a-f0-9]+: 66 a3 11 22 33 44 55 66 77 88 mov %ax,0x8877665544332211
|
||||
[ ]*[a-f0-9]+: a3 11 22 33 44 55 66 77 88 mov %eax,0x8877665544332211
|
||||
[ ]*[a-f0-9]+: 48 a3 11 22 33 44 55 66 77 88 mov %rax,0x8877665544332211
|
||||
[ ]*[a-f0-9]+: a0 11 22 33 44 55 66 77 88 mov 0x8877665544332211,%al
|
||||
[ ]*[a-f0-9]+: 66 a1 11 22 33 44 55 66 77 88 mov 0x8877665544332211,%ax
|
||||
[ ]*[a-f0-9]+: a1 11 22 33 44 55 66 77 88 mov 0x8877665544332211,%eax
|
||||
[ ]*[a-f0-9]+: 48 a1 11 22 33 44 55 66 77 88 mov 0x8877665544332211,%rax
|
||||
[ ]*[a-f0-9]+: a2 11 22 33 44 55 66 77 88 mov %al,0x8877665544332211
|
||||
[ ]*[a-f0-9]+: 66 a3 11 22 33 44 55 66 77 88 mov %ax,0x8877665544332211
|
||||
[ ]*[a-f0-9]+: a3 11 22 33 44 55 66 77 88 mov %eax,0x8877665544332211
|
||||
[ ]*[a-f0-9]+: 48 a3 11 22 33 44 55 66 77 88 mov %rax,0x8877665544332211
|
||||
[ ]*[a-f0-9]+: 8a 04 25 11 22 33 ff mov 0xffffffffff332211,%al
|
||||
[ ]*[a-f0-9]+: 66 8b 04 25 11 22 33 ff mov 0xffffffffff332211,%ax
|
||||
[ ]*[a-f0-9]+: 8b 04 25 11 22 33 ff mov 0xffffffffff332211,%eax
|
||||
[ ]*[a-f0-9]+: 48 8b 04 25 11 22 33 ff mov 0xffffffffff332211,%rax
|
||||
[ ]*[a-f0-9]+: 88 04 25 11 22 33 ff mov %al,0xffffffffff332211
|
||||
[ ]*[a-f0-9]+: 66 89 04 25 11 22 33 ff mov %ax,0xffffffffff332211
|
||||
[ ]*[a-f0-9]+: 89 04 25 11 22 33 ff mov %eax,0xffffffffff332211
|
||||
[ ]*[a-f0-9]+: 48 89 04 25 11 22 33 ff mov %rax,0xffffffffff332211
|
||||
[ ]*[a-f0-9]+: 8a 04 25 11 22 33 ff mov 0xffffffffff332211,%al
|
||||
[ ]*[a-f0-9]+: 66 8b 04 25 11 22 33 ff mov 0xffffffffff332211,%ax
|
||||
[ ]*[a-f0-9]+: 8b 04 25 11 22 33 ff mov 0xffffffffff332211,%eax
|
||||
[ ]*[a-f0-9]+: 48 8b 04 25 11 22 33 ff mov 0xffffffffff332211,%rax
|
||||
[ ]*[a-f0-9]+: 88 04 25 11 22 33 ff mov %al,0xffffffffff332211
|
||||
[ ]*[a-f0-9]+: 66 89 04 25 11 22 33 ff mov %ax,0xffffffffff332211
|
||||
[ ]*[a-f0-9]+: 89 04 25 11 22 33 ff mov %eax,0xffffffffff332211
|
||||
[ ]*[a-f0-9]+: 48 89 04 25 11 22 33 ff mov %rax,0xffffffffff332211
|
||||
[ ]*[a-f0-9]+: 48 0f c7 08 cmpxchg16b \(%rax\)
|
||||
[ ]*[a-f0-9]+: 48 0f c7 08 cmpxchg16b \(%rax\)
|
||||
[ ]*[a-f0-9]+: 0f be 10 movsbl \(%rax\),%edx
|
||||
[ ]*[a-f0-9]+: 48 0f be 10 movsbq \(%rax\),%rdx
|
||||
[ ]*[a-f0-9]+: 66 0f be 10 movsbw \(%rax\),%dx
|
||||
[ ]*[a-f0-9]+: 0f be 10 movsbl \(%rax\),%edx
|
||||
[ ]*[a-f0-9]+: 48 0f be 10 movsbq \(%rax\),%rdx
|
||||
[ ]*[a-f0-9]+: 66 0f be 10 movsbw \(%rax\),%dx
|
||||
[ ]*[a-f0-9]+: 0f bf 10 movswl \(%rax\),%edx
|
||||
[ ]*[a-f0-9]+: 48 0f bf 10 movswq \(%rax\),%rdx
|
||||
[ ]*[a-f0-9]+: 0f b6 10 movzbl \(%rax\),%edx
|
||||
[ ]*[a-f0-9]+: 48 0f b6 10 movzbq \(%rax\),%rdx
|
||||
[ ]*[a-f0-9]+: 66 0f b6 10 movzbw \(%rax\),%dx
|
||||
[ ]*[a-f0-9]+: 0f b6 10 movzbl \(%rax\),%edx
|
||||
[ ]*[a-f0-9]+: 48 0f b6 10 movzbq \(%rax\),%rdx
|
||||
[ ]*[a-f0-9]+: 66 0f b6 10 movzbw \(%rax\),%dx
|
||||
[ ]*[a-f0-9]+: 0f b6 10 movzbl \(%rax\),%edx
|
||||
[ ]*[a-f0-9]+: 48 0f b6 10 movzbq \(%rax\),%rdx
|
||||
[ ]*[a-f0-9]+: 66 0f b6 10 movzbw \(%rax\),%dx
|
||||
[ ]*[a-f0-9]+: 0f b7 10 movzwl \(%rax\),%edx
|
||||
[ ]*[a-f0-9]+: 48 0f b7 10 movzwq \(%rax\),%rdx
|
||||
[ ]*[a-f0-9]+: 0f be 10 movsbl \(%rax\),%edx
|
||||
[ ]*[a-f0-9]+: 48 0f be 10 movsbq \(%rax\),%rdx
|
||||
[ ]*[a-f0-9]+: 66 0f be 10 movsbw \(%rax\),%dx
|
||||
[ ]*[a-f0-9]+: 0f bf 10 movswl \(%rax\),%edx
|
||||
[ ]*[a-f0-9]+: 48 0f bf 10 movswq \(%rax\),%rdx
|
||||
[ ]*[a-f0-9]+: 0f b6 10 movzbl \(%rax\),%edx
|
||||
[ ]*[a-f0-9]+: 48 0f b6 10 movzbq \(%rax\),%rdx
|
||||
[ ]*[a-f0-9]+: 66 0f b6 10 movzbw \(%rax\),%dx
|
||||
[ ]*[a-f0-9]+: 0f b7 10 movzwl \(%rax\),%edx
|
||||
[ ]*[a-f0-9]+: 48 0f b7 10 movzwq \(%rax\),%rdx
|
||||
...
|
||||
#pass
|
||||
|
@ -193,5 +193,40 @@ cmpxchg16b (%rax)
|
||||
.intel_syntax noprefix
|
||||
cmpxchg16b oword ptr [rax]
|
||||
|
||||
.att_syntax
|
||||
movsx (%rax), %edx
|
||||
movsx (%rax), %rdx
|
||||
movsx (%rax), %dx
|
||||
movsbl (%rax), %edx
|
||||
movsbq (%rax), %rdx
|
||||
movsbw (%rax), %dx
|
||||
movswl (%rax), %edx
|
||||
movswq (%rax), %rdx
|
||||
|
||||
movzx (%rax), %edx
|
||||
movzx (%rax), %rdx
|
||||
movzx (%rax), %dx
|
||||
movzb (%rax), %edx
|
||||
movzb (%rax), %rdx
|
||||
movzb (%rax), %dx
|
||||
movzbl (%rax), %edx
|
||||
movzbq (%rax), %rdx
|
||||
movzbw (%rax), %dx
|
||||
movzwl (%rax), %edx
|
||||
movzwq (%rax), %rdx
|
||||
|
||||
.intel_syntax noprefix
|
||||
movsx edx,BYTE PTR [rax]
|
||||
movsx rdx,BYTE PTR [rax]
|
||||
movsx dx,BYTE PTR [rax]
|
||||
movsx edx,WORD PTR [rax]
|
||||
movsx rdx,WORD PTR [rax]
|
||||
|
||||
movzx edx,BYTE PTR [rax]
|
||||
movzx rdx,BYTE PTR [rax]
|
||||
movzx dx,BYTE PTR [rax]
|
||||
movzx edx,WORD PTR [rax]
|
||||
movzx rdx,WORD PTR [rax]
|
||||
|
||||
# Get a good alignment.
|
||||
.p2align 4,0
|
||||
|
@ -1,3 +1,29 @@
|
||||
2007-11-01 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* i386-gen.c (opcode_modifiers): Add ByteOkIntel, ToDword,
|
||||
ToQword and AddrPrefixOp0.
|
||||
|
||||
* i386-opc.h (ByteOkIntel): New.
|
||||
(ToDword): Likewise.
|
||||
(ToQword): Likewise.
|
||||
(AddrPrefixOp0): Likewise.
|
||||
(IsPrefix): Updated.
|
||||
(i386_opcode_modifier): Add byteokintel, todword, toqword
|
||||
and addrprefixop0.
|
||||
|
||||
* i386-opc.tbl (cvtss2si): Add ToQword.
|
||||
(cvttss2si): Likewise.
|
||||
(cvtsd2si): Add ToDword.
|
||||
(cvttsd2si): Likewise.
|
||||
(monitor): Add AddrPrefixOp0.
|
||||
(invlpga): Likewise.
|
||||
(vmload): Likewise.
|
||||
(vmrun): Likewise.
|
||||
(vmsave): Likewise.
|
||||
(pextrb): Add ByteOkIntel.
|
||||
(pinsrb): Likewise.
|
||||
* i386-tbl.h: Regenerated.
|
||||
|
||||
2007-10-31 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* i386-dis.c (USE_REG_TABLE): Defined as the previous one + 1.
|
||||
|
@ -277,6 +277,10 @@ static bitfield opcode_modifiers[] =
|
||||
BITFIELD (IsString),
|
||||
BITFIELD (RegKludge),
|
||||
BITFIELD (FirstXmm0),
|
||||
BITFIELD (ByteOkIntel),
|
||||
BITFIELD (ToDword),
|
||||
BITFIELD (ToQword),
|
||||
BITFIELD (AddrPrefixOp0),
|
||||
BITFIELD (IsPrefix),
|
||||
BITFIELD (ImmExt),
|
||||
BITFIELD (NoRex64),
|
||||
|
@ -197,8 +197,16 @@ typedef union i386_cpu_flags
|
||||
#define RegKludge (IsString + 1)
|
||||
/* The first operand must be xmm0 */
|
||||
#define FirstXmm0 (RegKludge + 1)
|
||||
/* BYTE is OK in Intel syntax. */
|
||||
#define ByteOkIntel (FirstXmm0 + 1)
|
||||
/* Convert to DWORD */
|
||||
#define ToDword (ByteOkIntel + 1)
|
||||
/* Convert to QWORD */
|
||||
#define ToQword (ToDword + 1)
|
||||
/* Address prefix changes operand 0 */
|
||||
#define AddrPrefixOp0 (ToQword + 1)
|
||||
/* opcode is a prefix */
|
||||
#define IsPrefix (FirstXmm0 + 1)
|
||||
#define IsPrefix (AddrPrefixOp0 + 1)
|
||||
/* instruction has extension in 8 bit imm */
|
||||
#define ImmExt (IsPrefix + 1)
|
||||
/* instruction don't need Rex64 prefix. */
|
||||
@ -243,6 +251,10 @@ typedef struct i386_opcode_modifier
|
||||
unsigned int isstring:1;
|
||||
unsigned int regkludge:1;
|
||||
unsigned int firstxmm0:1;
|
||||
unsigned int byteokintel:1;
|
||||
unsigned int todword:1;
|
||||
unsigned int toqword:1;
|
||||
unsigned int addrprefixop0:1;
|
||||
unsigned int isprefix:1;
|
||||
unsigned int immext:1;
|
||||
unsigned int norex64:1;
|
||||
|
@ -1103,9 +1103,9 @@ comiss, 2, 0xf2f, None, 2, CpuSSE, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_s
|
||||
cvtpi2ps, 2, 0xf2a, None, 2, CpuSSE, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegMMX, RegXMM }
|
||||
cvtps2pi, 2, 0xf2d, None, 2, CpuSSE, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, RegMMX }
|
||||
cvtsi2ss, 2, 0xf30f2a, None, 2, CpuSSE, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_xSuf, { Reg32|Reg64|BaseIndex|Disp8|Disp16|Disp32|Disp32S, RegXMM }
|
||||
cvtss2si, 2, 0xf30f2d, None, 2, CpuSSE, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, Reg32|Reg64 }
|
||||
cvtss2si, 2, 0xf30f2d, None, 2, CpuSSE, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_xSuf|ToQword, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, Reg32|Reg64 }
|
||||
cvttps2pi, 2, 0xf2c, None, 2, CpuSSE, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, RegMMX }
|
||||
cvttss2si, 2, 0xf30f2c, None, 2, CpuSSE, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, Reg32|Reg64 }
|
||||
cvttss2si, 2, 0xf30f2c, None, 2, CpuSSE, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_xSuf|ToQword, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, Reg32|Reg64 }
|
||||
divps, 2, 0xf5e, None, 2, CpuSSE, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, RegXMM }
|
||||
divss, 2, 0xf30f5e, None, 2, CpuSSE, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, RegXMM }
|
||||
ldmxcsr, 1, 0xfae, 0x2, 2, CpuSSE, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S }
|
||||
@ -1250,11 +1250,11 @@ cvtpd2pi, 2, 0x660f2d, None, 2, CpuSSE2, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSu
|
||||
cvtpd2ps, 2, 0x660f5a, None, 2, CpuSSE2, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, RegXMM }
|
||||
cvtps2pd, 2, 0xf5a, None, 2, CpuSSE2, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, RegXMM }
|
||||
cvtps2dq, 2, 0x660f5b, None, 2, CpuSSE2, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, RegXMM }
|
||||
cvtsd2si, 2, 0xf20f2d, None, 2, CpuSSE2, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, Reg32|Reg64 }
|
||||
cvtsd2si, 2, 0xf20f2d, None, 2, CpuSSE2, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_xSuf|ToDword, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, Reg32|Reg64 }
|
||||
cvtsd2ss, 2, 0xf20f5a, None, 2, CpuSSE2, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, RegXMM }
|
||||
cvtss2sd, 2, 0xf30f5a, None, 2, CpuSSE2, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, RegXMM }
|
||||
cvttpd2pi, 2, 0x660f2c, None, 2, CpuSSE2, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, RegMMX }
|
||||
cvttsd2si, 2, 0xf20f2c, None, 2, CpuSSE2, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, Reg32|Reg64 }
|
||||
cvttsd2si, 2, 0xf20f2c, None, 2, CpuSSE2, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_xSuf|ToDword, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, Reg32|Reg64 }
|
||||
cvttpd2dq, 2, 0x660fe6, None, 2, CpuSSE2, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, RegXMM }
|
||||
cvttps2dq, 2, 0xf30f5b, None, 2, CpuSSE2, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, RegXMM }
|
||||
maskmovdqu, 2, 0x660ff7, None, 2, CpuSSE2, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { RegXMM, RegXMM }
|
||||
@ -1293,9 +1293,9 @@ monitor, 0, 0xf01, 0xc8, 2, CpuSSE3, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_
|
||||
// address size override prefix can be used to overrride the AX size in
|
||||
// all modes.
|
||||
// Need to ensure only "monitor %eax/%ax,%ecx,%edx" is accepted.
|
||||
monitor, 3, 0xf01, 0xc8, 2, CpuSSE3|CpuNo64, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt, { Reg16|Reg32, Reg32, Reg32 }
|
||||
monitor, 3, 0xf01, 0xc8, 2, CpuSSE3|CpuNo64, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt|AddrPrefixOp0, { Reg16|Reg32, Reg32, Reg32 }
|
||||
// Need to ensure only "monitor %rax/%eax,%rcx,%rdx" is accepted.
|
||||
monitor, 3, 0xf01, 0xc8, 2, CpuSSE3|Cpu64, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt|NoRex64, { Reg32|Reg64, Reg64, Reg64 }
|
||||
monitor, 3, 0xf01, 0xc8, 2, CpuSSE3|Cpu64, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt|AddrPrefixOp0|NoRex64, { Reg32|Reg64, Reg64, Reg64 }
|
||||
movddup, 2, 0xf20f12, None, 2, CpuSSE3, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, RegXMM }
|
||||
movshdup, 2, 0xf30f16, None, 2, CpuSSE3, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, RegXMM }
|
||||
movsldup, 2, 0xf30f12, None, 2, CpuSSE3, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, RegXMM }
|
||||
@ -1380,11 +1380,11 @@ pblendvb, 3, 0x660f3810, None, 3, CpuSSE4_1, Modrm|IgnoreSize|No_bSuf|No_wSuf|No
|
||||
pblendvb, 2, 0x660f3810, None, 3, CpuSSE4_1, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, RegXMM }
|
||||
pblendw, 3, 0x660f3a0e, None, 3, CpuSSE4_1, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { Imm8, BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, RegXMM }
|
||||
pcmpeqq, 2, 0x660f3829, None, 3, CpuSSE4_1, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, RegXMM }
|
||||
pextrb, 3, 0x660f3a14, None, 3, CpuSSE4_1, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { Imm8, RegXMM, Reg32|Reg64|BaseIndex|Disp8|Disp16|Disp32|Disp32S }
|
||||
pextrb, 3, 0x660f3a14, None, 3, CpuSSE4_1, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ByteOkIntel, { Imm8, RegXMM, Reg32|Reg64|BaseIndex|Disp8|Disp16|Disp32|Disp32S }
|
||||
pextrd, 3, 0x660f3a16, None, 3, CpuSSE4_1, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { Imm8, RegXMM, Reg32|BaseIndex|Disp8|Disp16|Disp32|Disp32S }
|
||||
pextrq, 3, 0x660f3a16, None, 3, CpuSSE4_1|Cpu64, Modrm|Size64|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { Imm8, RegXMM, Reg64|BaseIndex|Disp8|Disp16|Disp32|Disp32S }
|
||||
phminposuw, 2, 0x660f3841, None, 3, CpuSSE4_1, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, RegXMM }
|
||||
pinsrb, 3, 0x660f3a20, None, 3, CpuSSE4_1, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { Imm8, Reg32|Reg64|BaseIndex|Disp8|Disp16|Disp32|Disp32S, RegXMM }
|
||||
pinsrb, 3, 0x660f3a20, None, 3, CpuSSE4_1, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ByteOkIntel, { Imm8, Reg32|Reg64|BaseIndex|Disp8|Disp16|Disp32|Disp32S, RegXMM }
|
||||
pinsrd, 3, 0x660f3a22, None, 3, CpuSSE4_1, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { Imm8, Reg32|BaseIndex|Disp8|Disp16|Disp32|Disp32S, RegXMM }
|
||||
pinsrq, 3, 0x660f3a22, None, 3, CpuSSE4_1|Cpu64, Modrm|Size64|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { Imm8, Reg64|BaseIndex|Disp8|Disp16|Disp32|Disp32S, RegXMM }
|
||||
pmaxsb, 2, 0x660f383c, None, 3, CpuSSE4_1, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S|RegXMM, RegXMM }
|
||||
@ -1469,21 +1469,21 @@ rdtscp, 0, 0xf01, 0xf9, 2, CpuSledgehammer, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_q
|
||||
clgi, 0, 0xf01, 0xdd, 2, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt, { 0 }
|
||||
invlpga, 0, 0xf01, 0xdf, 2, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt, { 0 }
|
||||
// FIXME: Need to ensure only "invlpga %[re]ax,%ecx" is accepted.
|
||||
invlpga, 2, 0xf01, 0xdf, 2, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt|NoRex64, { Reg32|Reg64, Reg32 }
|
||||
invlpga, 2, 0xf01, 0xdf, 2, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt|AddrPrefixOp0|NoRex64, { Reg32|Reg64, Reg32 }
|
||||
skinit, 0, 0xf01, 0xde, 2, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt, { 0 }
|
||||
// FIXME: Need to ensure only "skinit %eax" is accepted.
|
||||
skinit, 1, 0xf01, 0xde, 2, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt, { Reg32 }
|
||||
stgi, 0, 0xf01, 0xdc, 2, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt, { 0 }
|
||||
vmload, 0, 0xf01, 0xda, 2, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt, { 0 }
|
||||
// FIXME: Need to ensure only "vmload %[re]ax" is accepted.
|
||||
vmload, 1, 0xf01, 0xda, 2, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt|NoRex64, { Reg32|Reg64 }
|
||||
vmload, 1, 0xf01, 0xda, 2, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt|AddrPrefixOp0|NoRex64, { Reg32|Reg64 }
|
||||
vmmcall, 0, 0xf01, 0xd9, 2, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt, { 0 }
|
||||
vmrun, 0, 0xf01, 0xd8, 2, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt, { 0 }
|
||||
// FIXME: Need to ensure only "vmrun %[re]ax" is accepted.
|
||||
vmrun, 1, 0xf01, 0xd8, 2, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt|NoRex64, { Reg32|Reg64 }
|
||||
vmrun, 1, 0xf01, 0xd8, 2, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt|AddrPrefixOp0|NoRex64, { Reg32|Reg64 }
|
||||
vmsave, 0, 0xf01, 0xdb, 2, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt, { 0 }
|
||||
// FIXME: Need to ensure only "vmsave %[re]ax" is accepted.
|
||||
vmsave, 1, 0xf01, 0xdb, 2, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt|NoRex64, { Reg32|Reg64 }
|
||||
vmsave, 1, 0xf01, 0xdb, 2, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt|AddrPrefixOp0|NoRex64, { Reg32|Reg64 }
|
||||
|
||||
|
||||
// SSE4a instructions
|
||||
|
2868
opcodes/i386-tbl.h
2868
opcodes/i386-tbl.h
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user