Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(102)

Side by Side Diff: src/trusted/validator_ragel/unreviewed/general_purpose_instructions.def

Issue 11088006: Validator_ragel: disallow 16-bit form for SSE4 instructions (popcnt, lzcnt, tzcnt) (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: fix copypaste artifacts Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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 ################################################################################
OLDNEW
« no previous file with comments | « src/trusted/validator_ragel/gen/validator_x86_32.c ('k') | src/trusted/validator_x86/testdata/64/sse4data16.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698