| OLD | NEW |
| 1 # Copyright (c) 2012 The Native Client Authors. All rights reserved. | 1 # Copyright (c) 2012 The Native Client Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 ################################################################################ | 4 ################################################################################ |
| 5 # This file describes instructions from AMD64 Architecture Programmer’s Manual | 5 # This file describes instructions from AMD64 Architecture Programmer’s Manual |
| 6 # Volume 3: General-Purpose and System Instruction | 6 # Volume 3: General-Purpose and System Instruction |
| 7 # Chapter 3: General-Purpose Instruction Reference | 7 # Chapter 3: General-Purpose Instruction Reference |
| 8 ################################################################################ | 8 ################################################################################ |
| 9 # File format: | 9 # File format: |
| 10 # three columns separated by commas. Each line describes one instruction. | 10 # three columns separated by commas. Each line describes one instruction. |
| (...skipping 630 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 641 loop Jb, 0xe2, branch_hint nacl-forbidden | 641 loop Jb, 0xe2, branch_hint nacl-forbidden |
| 642 loope Jb, 0xe1, nacl-ia32-forbidden | 642 loope Jb, 0xe1, nacl-ia32-forbidden |
| 643 loope Jb, 0xe1, branch_hint nacl-forbidden | 643 loope Jb, 0xe1, branch_hint nacl-forbidden |
| 644 loopne Jb, 0xe0, nacl-ia32-forbidden | 644 loopne Jb, 0xe0, nacl-ia32-forbidden |
| 645 loopne Jb, 0xe0, branch_hint nacl-forbidden | 645 loopne Jb, 0xe0, branch_hint nacl-forbidden |
| 646 ######## LWPINS ################################################################ | 646 ######## LWPINS ################################################################ |
| 647 lwpins Id Ed =By, 0x8f RXB.0A W.src1.0.00 0x12 /0, CPUFeature_LWP | 647 lwpins Id Ed =By, 0x8f RXB.0A W.src1.0.00 0x12 /0, CPUFeature_LWP |
| 648 ######## LWPVAL ################################################################ | 648 ######## LWPVAL ################################################################ |
| 649 lwpval Id Ed =By, 0x8f RXB.0A W.src1.0.00 0x12 /1, CPUFeature_LWP | 649 lwpval Id Ed =By, 0x8f RXB.0A W.src1.0.00 0x12 /1, CPUFeature_LWP |
| 650 ######## LZCNT ################################################################# | 650 ######## LZCNT ################################################################# |
| 651 # Textbook definition of “lzcnt” as per AMD/Intel manuals looks like this: |
| 652 # lzcnt Ev Gv, 0xf3 0x0f 0xbd, CPUFeature_LZCNT nacl-amd64-zero-extends |
| 651 # “lzcnt” is not marked as nacl-amd64-zero-extends because it is unlikely to be | 653 # “lzcnt” is not marked as nacl-amd64-zero-extends because it is unlikely to be |
| 652 # useful for computing an address based on the number of leading zeros of a | 654 # useful for computing an address based on the number of leading zeros of a |
| 653 # value. | 655 # value. |
| 654 lzcnt Ev Gv, 0xf3 0x0f 0xbd, CPUFeature_LZCNT | 656 # Also, since f3 opcode extension is counted as rep prefix, it is not allowed |
| 657 # together with data16 prefix. |
| 658 # See http://code.google.com/p/nativeclient/issues/detail?id=3076 |
| 659 lzcnt Ew Gw, data16 0xf3 0x0f 0xbd, norexw CPUFeature_LZCNT nacl-forbidden |
| 660 lzcnt Ed Gd, 0xf3 0x0f 0xbd, norexw CPUFeature_LZCNT |
| 661 lzcnt Eq Gq, rexw 0xf3 0x0f 0xbd, amd64 CPUFeature_LZCNT |
| 662 lzcnt Eq Gq, data16 rexw 0xf3 0x0f 0xbd, amd64 CPUFeature_LZCNT nacl-forbidden |
| 655 ######## MFENCE ################################################################ | 663 ######## MFENCE ################################################################ |
| 656 mfence, 0x0f 0xae 0xf0, CPUFeature_SSE2 | 664 mfence, 0x0f 0xae 0xf0, CPUFeature_SSE2 |
| 657 ######## MOV ################################################################### | 665 ######## MOV ################################################################### |
| 658 mov G E, 0x88, nacl-amd64-modifiable nacl-amd64-zero-extends | 666 mov G E, 0x88, nacl-amd64-modifiable nacl-amd64-zero-extends |
| 659 mov E G, 0x8a, nacl-amd64-modifiable nacl-amd64-zero-extends | 667 mov E G, 0x8a, nacl-amd64-modifiable nacl-amd64-zero-extends |
| 660 mov Sw Mw, 0x8c /s, nacl-forbidden | 668 mov Sw Mw, 0x8c /s, nacl-forbidden |
| 661 mov Sw Rv, 0x8c /s, nacl-forbidden | 669 mov Sw Rv, 0x8c /s, nacl-forbidden |
| 662 mov Ew Sw, 0x8e /s, nacl-forbidden | 670 mov Ew Sw, 0x8e /s, nacl-forbidden |
| 663 mov Ib rb, 0xb0, nacl-amd64-modifiable nacl-amd64-zero-extends | 671 mov Ib rb, 0xb0, nacl-amd64-modifiable nacl-amd64-zero-extends |
| 664 mov Iv rv, 0xb8, nacl-amd64-modifiable nacl-amd64-zero-extends | 672 mov Iv rv, 0xb8, nacl-amd64-modifiable nacl-amd64-zero-extends |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 807 pop Ew, data16 0x8f /0, att-show-memory-suffix-w | 815 pop Ew, data16 0x8f /0, att-show-memory-suffix-w |
| 808 pop Er, 0x8f /0, ia32 att-show-memory-suffix-l | 816 pop Er, 0x8f /0, ia32 att-show-memory-suffix-l |
| 809 pop Er, 0x8f /0, amd64 att-show-memory-suffix-q | 817 pop Er, 0x8f /0, amd64 att-show-memory-suffix-q |
| 810 pop rw, data16 0x58 | 818 pop rw, data16 0x58 |
| 811 pop rr, 0x58 | 819 pop rr, 0x58 |
| 812 "pop %fs", 0x0f 0xa1, ia32 nacl-forbidden | 820 "pop %fs", 0x0f 0xa1, ia32 nacl-forbidden |
| 813 "pop %gs", 0x0f 0xa9, ia32 nacl-forbidden | 821 "pop %gs", 0x0f 0xa9, ia32 nacl-forbidden |
| 814 "popq %fs", 0x0f 0xa1, amd64 nacl-forbidden | 822 "popq %fs", 0x0f 0xa1, amd64 nacl-forbidden |
| 815 "popq %gs", 0x0f 0xa9, amd64 nacl-forbidden | 823 "popq %gs", 0x0f 0xa9, amd64 nacl-forbidden |
| 816 ######## POPCNT ################################################################ | 824 ######## POPCNT ################################################################ |
| 825 # Textbook definition of “popcnt” as per AMD/Intel manuals looks like this: |
| 826 # popcnt Ev Gv, 0xf3 0x0f 0xb8, CPUFeature_POPCNT nacl-amd64-zero-extends |
| 817 # “popcnt” is not marked as nacl-amd64-zero-extends because it is unlikely to be | 827 # “popcnt” is not marked as nacl-amd64-zero-extends because it is unlikely to be |
| 818 # useful for computing an address based on the number of ones in a value. | 828 # useful for computing an address based on the number of ones in a value. |
| 819 popcnt Ev Gv, 0xf3 0x0f 0xb8, CPUFeature_POPCNT | 829 # Also, since f3 opcode extension is counted as rep prefix, it is not allowed |
| 830 # together with data16 prefix. |
| 831 # See http://code.google.com/p/nativeclient/issues/detail?id=3076 |
| 832 popcnt Ew Gw, data16 0xf3 0x0f 0xb8, norexw CPUFeature_POPCNT nacl-forbidden |
| 833 popcnt Ed Gd, 0xf3 0x0f 0xb8, norexw CPUFeature_POPCNT |
| 834 popcnt Eq Gq, rexw 0xf3 0x0f 0xb8, amd64 CPUFeature_POPCNT |
| 835 popcnt Eq Gq, data16 rexw 0xf3 0x0f 0xb8, amd64 CPUFeature_POPCNT nacl-forbidden |
| 820 ######## POPF/POPFD/POPFQ ###################################################### | 836 ######## POPF/POPFD/POPFQ ###################################################### |
| 821 popf, data16 0x9d, norexw att-show-name-suffix-w nacl-forbidden | 837 popf, data16 0x9d, norexw att-show-name-suffix-w nacl-forbidden |
| 822 popf, 0x9d, ia32 nacl-forbidden | 838 popf, 0x9d, ia32 nacl-forbidden |
| 823 popf, 0x9d, norexw amd64 att-show-name-suffix-q nacl-forbidden | 839 popf, 0x9d, norexw amd64 att-show-name-suffix-q nacl-forbidden |
| 824 popf, data16 rexw 0x9d, amd64 att-show-name-suffix-q nacl-forbidden | 840 popf, data16 rexw 0x9d, amd64 att-show-name-suffix-q nacl-forbidden |
| 825 ######## PREFETCH/PREFETCHW #################################################### | 841 ######## PREFETCH/PREFETCHW #################################################### |
| 826 prefetch Mb, 0x0f 0x0d /0, CPUFeature_3DPRFTCH no_memory_access | 842 prefetch Mb, 0x0f 0x0d /0, CPUFeature_3DPRFTCH no_memory_access |
| 827 prefetchw Mb, 0x0f 0x0d /1, CPUFeature_3DPRFTCH no_memory_access | 843 prefetchw Mb, 0x0f 0x0d /1, CPUFeature_3DPRFTCH no_memory_access |
| 828 prefetch Mb, 0x0f 0x0d /2, CPUFeature_3DPRFTCH no_memory_access nacl-forbidden | 844 prefetch Mb, 0x0f 0x0d /2, CPUFeature_3DPRFTCH no_memory_access nacl-forbidden |
| 829 # AMD manual desribes this opcode as “reserved” in one place (and clarifies that | 845 # AMD manual desribes this opcode as “reserved” in one place (and clarifies that |
| (...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1030 ######## T1MSKC ################################################################ | 1046 ######## T1MSKC ################################################################ |
| 1031 t1mskc Ey By, 0x8f RXB.09 W.dest.0.00 0x01 /7, CPUFeature_TBM | 1047 t1mskc Ey By, 0x8f RXB.09 W.dest.0.00 0x01 /7, CPUFeature_TBM |
| 1032 ######## TEST ################################################################## | 1048 ######## TEST ################################################################## |
| 1033 test I =a, 0xa8 | 1049 test I =a, 0xa8 |
| 1034 test I =E, 0xf6 /0 | 1050 test I =E, 0xf6 /0 |
| 1035 # AMD manual claims this opcode works identically to “/0”. Intel manual | 1051 # AMD manual claims this opcode works identically to “/0”. Intel manual |
| 1036 # says it's reserved. Objdump does not like it. | 1052 # says it's reserved. Objdump does not like it. |
| 1037 # test I =E, 0xf6 /1 | 1053 # test I =E, 0xf6 /1 |
| 1038 test G =E, 0x84 | 1054 test G =E, 0x84 |
| 1039 ######## TZCNT ################################################################# | 1055 ######## TZCNT ################################################################# |
| 1056 # Textbook definition of “tzcnt” as per AMD/Intel manuals looks like this: |
| 1057 # tzcnt Ev Gv, 0xf3 0x0f 0xbc, CPUFeature_TZCNT nacl-amd64-zero-extends |
| 1040 # “tzcnt” is not marked as nacl-amd64-zero-extends because it is unlikely to be | 1058 # “tzcnt” is not marked as nacl-amd64-zero-extends because it is unlikely to be |
| 1041 # useful for computing an address based on the number of trailing zeros of a | 1059 # useful for computing an address based on the number of trailing zeros of a |
| 1042 # value. | 1060 # value. |
| 1043 # We mark tzcnt specially to allow it independently from CPUID | 1061 # We mark tzcnt specially to allow it independently from CPUID |
| 1044 # See: http://code.google.com/p/nativeclient/issues/detail?id=2869 | 1062 # See http://code.google.com/p/nativeclient/issues/detail?id=2869 |
| 1045 tzcnt Ev Gv, 0xf3 0x0f 0xbc, CPUFeature_TZCNT | 1063 # Also, since f3 opcode extension is counted as rep prefix, it is not allowed |
| 1064 # together with data16 prefix. |
| 1065 # See http://code.google.com/p/nativeclient/issues/detail?id=3076 |
| 1066 tzcnt Ew Gw, data16 0xf3 0x0f 0xbc, norexw CPUFeature_TZCNT nacl-forbidden |
| 1067 tzcnt Ed Gd, 0xf3 0x0f 0xbc, norexw CPUFeature_TZCNT |
| 1068 tzcnt Eq Gq, rexw 0xf3 0x0f 0xbc, amd64 CPUFeature_TZCNT |
| 1069 tzcnt Eq Gq, data16 rexw 0xf3 0x0f 0xbc, amd64 CPUFeature_TZCNT nacl-forbidden |
| 1046 ######## TZMSK ################################################################# | 1070 ######## TZMSK ################################################################# |
| 1047 tzmsk Ey By, 0x8f RXB.09 W.dest.0.00 0x01 /4, CPUFeature_TBM | 1071 tzmsk Ey By, 0x8f RXB.09 W.dest.0.00 0x01 /4, CPUFeature_TBM |
| 1048 ######## XADD ################################################################## | 1072 ######## XADD ################################################################## |
| 1049 # Textbook definition of “xadd” as per AMD/Intel manuals looks like this: | 1073 # Textbook definition of “xadd” as per AMD/Intel manuals looks like this: |
| 1050 # xadd &G E, 0x0f 0xc0, lock nacl-amd64-zero-extends | 1074 # xadd &G E, 0x0f 0xc0, lock nacl-amd64-zero-extends |
| 1051 # For consistency with the production validators, drop support for the 16-bit | 1075 # For consistency with the production validators, drop support for the 16-bit |
| 1052 # version of “xadd” in ia32 mode. | 1076 # version of “xadd” in ia32 mode. |
| 1053 # Also, don't consider xadd with memory zero-extending. | 1077 # Also, don't consider xadd with memory zero-extending. |
| 1054 # See http://code.google.com/p/nativeclient/issues/detail?id=3077 | 1078 # See http://code.google.com/p/nativeclient/issues/detail?id=3077 |
| 1055 # Note that the former 32- and 64-bit validators treat “xadd” inconsistently: | 1079 # Note that the former 32- and 64-bit validators treat “xadd” inconsistently: |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1069 xchg &G M, 0x86, lock | 1093 xchg &G M, 0x86, lock |
| 1070 ######## XLAT ################################################################## | 1094 ######## XLAT ################################################################## |
| 1071 xlat xb, 0xd7, nacl-forbidden | 1095 xlat xb, 0xd7, nacl-forbidden |
| 1072 ######## XOR ################################################################### | 1096 ######## XOR ################################################################### |
| 1073 xor I a, 0x34, nacl-amd64-zero-extends | 1097 xor I a, 0x34, nacl-amd64-zero-extends |
| 1074 xor I E, 0x80 /6, lock nacl-amd64-zero-extends | 1098 xor I E, 0x80 /6, lock nacl-amd64-zero-extends |
| 1075 xor Ib Ev, 0x83 /6, lock nacl-amd64-zero-extends | 1099 xor Ib Ev, 0x83 /6, lock nacl-amd64-zero-extends |
| 1076 xor G E, 0x30, lock nacl-amd64-zero-extends | 1100 xor G E, 0x30, lock nacl-amd64-zero-extends |
| 1077 xor E G, 0x32, nacl-amd64-zero-extends | 1101 xor E G, 0x32, nacl-amd64-zero-extends |
| 1078 ################################################################################ | 1102 ################################################################################ |
| OLD | NEW |