10c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen/*
20c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen * Copyright (C) 2012 The Android Open Source Project
30c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen *
40c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen * Licensed under the Apache License, Version 2.0 (the "License");
50c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen * you may not use this file except in compliance with the License.
60c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen * You may obtain a copy of the License at
70c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen *
80c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen *      http://www.apache.org/licenses/LICENSE-2.0
90c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen *
100c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen * Unless required by applicable law or agreed to in writing, software
110c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen * distributed under the License is distributed on an "AS IS" BASIS,
120c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen * See the License for the specific language governing permissions and
140c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen * limitations under the License.
150c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen */
160c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
170c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen#ifndef _ENCODER_DEFS_EXT_H_
180c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen#define _ENCODER_DEFS_EXT_H_
190c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
200c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
210c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen// Used to isolate experimental or being tuned encoder into a separate
220c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen// namespace so it can coexist with a stable one in the same bundle.
230c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen#ifdef ENCODER_ISOLATE
240c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    #define ENCODER_NAMESPACE_START namespace enc_ia32 {
250c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    #define ENCODER_NAMESPACE_END };
260c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen#else
270c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    #define ENCODER_NAMESPACE_START
280c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    #define ENCODER_NAMESPACE_END
290c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen#endif
300c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
310c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenENCODER_NAMESPACE_START
320c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chentypedef enum OpndSize {
330c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    /**
340c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen     * A change must be balanced with at least the following places:
350c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen     *              Ia32IRConstants.h :: getByteSize() uses some presumptions about OpndSize_ values
360c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen     *              Ia32::Constraint-s use the OpndSize as a mask
370c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen     *              encoder.cpp & encoder_master_info.cpp uses OpndSize as an index for hashing
380c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen     *              - perhaps there are much more places
390c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen     */
400c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    OpndSize_Null           = 0,
410c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    OpndSize_8             = 0x01,
420c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    OpndSize_16            = 0x02,
430c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    OpndSize_32            = 0x04,
440c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    OpndSize_64            = 0x08,
450c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen#if !defined(TESTING_ENCODER)
460c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    OpndSize_80            = 0x10,
470c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    OpndSize_128           = 0x20,
480c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen#endif
490c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    OpndSize_Max,
500c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    OpndSize_Any            = 0x3F,
510c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    OpndSize_Default        = OpndSize_Any
520c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen} OpndSize;
530c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
540c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen/**
550c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen * Conditional mnemonics.
560c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen * The values match the 'real' (==processor's) values of the appropriate
570c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen * condition values used in the opcodes.
580c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen */
590c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chentypedef enum ConditionMnemonic {
600c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
610c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    ConditionMnemonic_O=0,
620c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    ConditionMnemonic_NO=1,
630c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    ConditionMnemonic_B=2, ConditionMnemonic_NAE=ConditionMnemonic_B, ConditionMnemonic_C=ConditionMnemonic_B,
640c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    ConditionMnemonic_NB=3, ConditionMnemonic_AE=ConditionMnemonic_NB, ConditionMnemonic_NC=ConditionMnemonic_NB,
650c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    ConditionMnemonic_Z=4, ConditionMnemonic_E=ConditionMnemonic_Z,
660c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    ConditionMnemonic_NZ=5, ConditionMnemonic_NE=ConditionMnemonic_NZ,
670c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    ConditionMnemonic_BE=6, ConditionMnemonic_NA=ConditionMnemonic_BE,
680c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    ConditionMnemonic_NBE=7, ConditionMnemonic_A=ConditionMnemonic_NBE,
690c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
700c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    ConditionMnemonic_S=8,
710c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    ConditionMnemonic_NS=9,
720c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    ConditionMnemonic_P=10, ConditionMnemonic_PE=ConditionMnemonic_P,
730c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    ConditionMnemonic_NP=11, ConditionMnemonic_PO=ConditionMnemonic_NP,
740c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    ConditionMnemonic_L=12, ConditionMnemonic_NGE=ConditionMnemonic_L,
750c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    ConditionMnemonic_NL=13, ConditionMnemonic_GE=ConditionMnemonic_NL,
760c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    ConditionMnemonic_LE=14, ConditionMnemonic_NG=ConditionMnemonic_LE,
770c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    ConditionMnemonic_NLE=15, ConditionMnemonic_G=ConditionMnemonic_NLE,
780c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    ConditionMnemonic_Count=16
790c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen} ConditionMnemonic;
800c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
810c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
820c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen#define CCM(prefix,cond) Mnemonic_##prefix##cond=Mnemonic_##prefix##cc+ConditionMnemonic_##cond
830c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
840c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen//=========================================================================================================
850c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chentypedef enum Mnemonic {
860c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
870c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_NULL=0, Mnemonic_Null=Mnemonic_NULL,
880c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_ADC,                           // Add with Carry
890c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_ADD,                           // Add
900c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_ADDSD,                         // Add Scalar Double-Precision Floating-Point Values
910c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_ADDSS,                         // Add Scalar Single-Precision Floating-Point Values
920c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_AND,                           // Logical AND
930c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
940c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_BSF,                           // Bit scan forward
950c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_BSR,                           // Bit scan reverse
960c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
970c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CALL,                          // Call Procedure
980c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CMC,                           // Complement Carry Flag
990c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CWD, Mnemonic_CDQ=Mnemonic_CWD,// Convert Word to Doubleword/Convert Doubleword to Qua T dword
1000c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CMOVcc,                        // Conditional Move
1010c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(CMOV,O),
1020c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(CMOV,NO),
1030c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(CMOV,B), CCM(CMOV,NAE), CCM(CMOV,C),
1040c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(CMOV,NB), CCM(CMOV,AE), CCM(CMOV,NC),
1050c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(CMOV,Z), CCM(CMOV,E),
1060c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(CMOV,NZ), CCM(CMOV,NE),
1070c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(CMOV,BE), CCM(CMOV,NA),
1080c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(CMOV,NBE), CCM(CMOV,A),
1090c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
1100c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(CMOV,S),
1110c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(CMOV,NS),
1120c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(CMOV,P), CCM(CMOV,PE),
1130c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(CMOV,NP), CCM(CMOV,PO),
1140c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(CMOV,L), CCM(CMOV,NGE),
1150c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(CMOV,NL), CCM(CMOV,GE),
1160c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(CMOV,LE), CCM(CMOV,NG),
1170c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(CMOV,NLE), CCM(CMOV,G),
1180c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
1190c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CMP,                           // Compare Two Operands
1200c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CMPXCHG,                       // Compare and exchange
1210c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CMPXCHG8B,                     // Compare and Exchange 8 Bytes
1220c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CMPSB,                         // Compare Two Bytes at DS:ESI and ES:EDI
1230c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CMPSW,                         // Compare Two Words at DS:ESI and ES:EDI
1240c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CMPSD,                         // Compare Two Doublewords at DS:ESI and ES:EDI
1250c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen//
1260c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen// double -> float
1270c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CVTSD2SS,                      // Convert Scalar Double-Precision Floating-Point Value to Scalar Single-Precision Floating-Point Value
1280c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen// double -> I_32
1290c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CVTSD2SI,                      // Convert Scalar Double-Precision Floating-Point Value to Doubleword Integer
1300c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen// double [truncated] -> I_32
1310c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CVTTSD2SI,                     // Convert with Truncation Scalar Double-Precision Floating-Point Value to Signed Doubleword Integer
1320c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen//
1330c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen// float -> double
1340c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CVTSS2SD,                      // Convert Scalar Single-Precision Floating-Point Value to Scalar Double-Precision Floating-Point Value
1350c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen// float -> I_32
1360c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CVTSS2SI,                      // Convert Scalar Single-Precision Floating-Point Value to Doubleword Integer
1370c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen// float [truncated] -> I_32
1380c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CVTTSS2SI,                     // Convert with Truncation Scalar Single-Precision Floating-Point Value to Doubleword Integer
1390c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen//
1400c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen// I_32 -> double
1410c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CVTSI2SD,                      // Convert Doubleword Integer to Scalar Double-Precision Floating-Point Value
1420c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen// I_32 -> float
1430c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CVTSI2SS,                      // Convert Doubleword Integer to Scalar Single-Precision Floating-Point Value
1440c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
1450c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_COMISD,                        // Compare Scalar Ordered Double-Precision Floating-Point Values and Set EFLAGS
1460c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_COMISS,                        // Compare Scalar Ordered Single-Precision Floating-Point Values and Set EFLAGS
1470c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_DEC,                           // Decrement by 1
1480c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen//Mnemonic_DIV,                         // Unsigned Divide
1490c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_DIVSD,                         // Divide Scalar Double-Precision Floating-Point Values
1500c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_DIVSS,                         // Divide Scalar Single-Precision Floating-Point Values
1510c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
1520c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen#ifdef _HAVE_MMX_
1530c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_EMMS,                          // Empty MMX Technology State
1540c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen#endif
1550c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
1560c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_ENTER,                         // ENTER-Make Stack Frame for Procedure Parameters
1570c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FLDCW,                         // Load FPU control word
1580c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FADDP,
1590c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FLDZ,
1600c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FADD,
1610c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FSUBP,
1620c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FSUB,
1630c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FISUB,
1640c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FMUL,
1650c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FMULP,
1660c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FDIVP,
1670c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FDIV,
1680c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FUCOM,
1690c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FUCOMI,
1700c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FUCOMP,
1710c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FUCOMIP,
1720c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FUCOMPP,
1730c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FRNDINT,
1740c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FNSTCW,                        // Store FPU control word
1750c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FSTSW,                         // Store FPU status word
1760c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FNSTSW,                         // Store FPU status word
1770c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen//Mnemonic_FDECSTP,                     // Decrement Stack-Top Pointer
1780c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FILD,                          // Load Integer
1790c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FLD,                           // Load Floating Point Value
1800c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FLDLG2,
1810c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FLDLN2,
1820c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FLD1,
1830c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
1840c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FCLEX,                         // Clear Exceptions
1850c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FCHS,                          // Change sign of ST0
1860c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FNCLEX,                        // Clear Exceptions
1870c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
1880c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen//Mnemonic_FINCSTP,                     // Increment Stack-Top Pointer
1890c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FIST,                          // Store Integer
1900c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FISTP,                         // Store Integer, pop FPU stack
1910c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FISTTP,                        // Store Integer with Truncation
1920c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FPREM,                         // Partial Remainder
1930c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FPREM1,                        // Partial Remainder
1940c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FST,                           // Store Floating Point Value
1950c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FSTP,                          // Store Floating Point Value and pop the FP stack
1960c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FSQRT,                         //Computes the square root of the source value in the stack and pop the FP stack
1970c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FABS,                          //Computes the absolute value of the source value in the stack and pop the FP stack
1980c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FSIN,                          //Computes the sine of the source value in the stack and pop the FP stack
1990c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FCOS,                          //Computes the cosine of the source value in the stack and pop the FP stack
2000c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FPTAN,                         //Computes the tangent of the source value in the stack and pop the FP stack
2010c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FYL2X,
2020c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FYL2XP1,
2030c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_F2XM1,
2040c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FPATAN,
2050c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FXCH,
2060c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_FSCALE,
2070c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
2080c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_XCHG,
2090c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_DIV,                           // Unsigned Divide
2100c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_IDIV,                          // Signed Divide
2110c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_MUL,                           // Unsigned Multiply
2120c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_IMUL,                          // Signed Multiply
2130c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_INC,                           // Increment by 1
2140c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_INT3,                          // Call break point
2150c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_Jcc,                           // Jump if Condition Is Met
2160c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(J,O),
2170c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(J,NO),
2180c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(J,B), CCM(J,NAE), CCM(J,C),
2190c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(J,NB), CCM(J,AE), CCM(J,NC),
2200c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(J,Z), CCM(J,E),
2210c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(J,NZ), CCM(J,NE),
2220c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(J,BE), CCM(J,NA),
2230c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(J,NBE), CCM(J,A),
2240c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(J,S),
2250c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(J,NS),
2260c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(J,P), CCM(J,PE),
2270c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(J,NP), CCM(J,PO),
2280c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(J,L), CCM(J,NGE),
2290c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(J,NL), CCM(J,GE),
2300c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(J,LE), CCM(J,NG),
2310c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(J,NLE), CCM(J,G),
2320c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_JMP,                           // Jump
2330c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_LEA,                           // Load Effective Address
2340c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_LEAVE,                         // High Level Procedure Exit
2350c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_LOOP,                          // Loop according to ECX counter
2360c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_LOOPE,                          // Loop according to ECX counter
2370c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_LOOPNE, Mnemonic_LOOPNZ = Mnemonic_LOOPNE, // Loop according to ECX
2380c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_LAHF,                          // Load Flags into AH
2390c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_MOV,                           // Move
2400c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_MOVD,                          // Move Double word
2410c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_MOVQ,                          // Move Quadword
2420c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen/*Mnemonic_MOVS,                        // Move Data from String to String*/
2430c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen// MOVS is a special case: see encoding table for more details,
2440c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_MOVS8, Mnemonic_MOVS16, Mnemonic_MOVS32, Mnemonic_MOVS64,
2450c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen//
2460c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_MOVAPD,                         // Move Scalar Double-Precision Floating-Point Value
2470c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_MOVSD,                         // Move Scalar Double-Precision Floating-Point Value
2480c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_MOVSS,                         // Move Scalar Single-Precision Floating-Point Values
2490c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_MOVSX,                         // Move with Sign-Extension
2500c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_MOVZX,                         // Move with Zero-Extend
2510c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen//Mnemonic_MUL,                         // Unsigned Multiply
2520c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_MULSD,                         // Multiply Scalar Double-Precision Floating-Point Values
2530c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_MULSS,                         // Multiply Scalar Single-Precision Floating-Point Values
2540c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_NEG,                           // Two's Complement Negation
2550c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_NOP,                           // No Operation
2560c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_NOT,                           // One's Complement Negation
2570c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_OR,                            // Logical Inclusive OR
2580c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_PREFETCH,                      // prefetch
2590c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
2600c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen#if 1 //def _HAVE_MMX_
2610c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    Mnemonic_PADDQ,                     // Add Packed Quadword Integers
2620c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    Mnemonic_PAND,                      // Logical AND
2630c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    Mnemonic_POR,                       // Bitwise Logical OR
2640c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    Mnemonic_PSUBQ,                     // Subtract Packed Quadword Integers
2650c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen#endif
2660c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_PANDN,
2670c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_PSLLQ,
2680c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_PSRLQ,
2690c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_PXOR,                          // Logical Exclusive OR
2700c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_POP,                           // Pop a Value from the Stack
2710c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_POPFD,                         // Pop a Value of EFLAGS register from the Stack
2720c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_PUSH,                          // Push Word or Doubleword Onto the Stack
2730c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_PUSHFD,                        // Push EFLAGS Doubleword Onto the Stack
2740c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_RET,                           // Return from Procedure
2750c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
2760c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_SETcc,                         // Set Byte on Condition
2770c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(SET,O),
2780c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(SET,NO),
2790c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(SET,B), CCM(SET,NAE), CCM(SET,C),
2800c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(SET,NB), CCM(SET,AE), CCM(SET,NC),
2810c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(SET,Z), CCM(SET,E),
2820c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(SET,NZ), CCM(SET,NE),
2830c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(SET,BE), CCM(SET,NA),
2840c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(SET,NBE), CCM(SET,A),
2850c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(SET,S),
2860c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(SET,NS),
2870c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(SET,P), CCM(SET,PE),
2880c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(SET,NP), CCM(SET,PO),
2890c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(SET,L), CCM(SET,NGE),
2900c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(SET,NL), CCM(SET,GE),
2910c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(SET,LE), CCM(SET,NG),
2920c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    CCM(SET,NLE), CCM(SET,G),
2930c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
2940c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_SAL, Mnemonic_SHL=Mnemonic_SAL,// Shift left
2950c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_SAR,                           // Unsigned shift right
2960c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_ROR,                           // Rotate right
2970c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_RCR,                           // Rotate right through CARRY flag
2980c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_ROL,                           // Rotate left
2990c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_RCL,                           // Rotate left through CARRY flag
3000c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_SHR,                           // Signed shift right
3010c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_SHRD,                          // Double Precision Shift Right
3020c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_SHLD,                          // Double Precision Shift Left
3030c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
3040c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_SBB,                           // Integer Subtraction with Borrow
3050c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_SUB,                           // Subtract
3060c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_SUBSD,                         // Subtract Scalar Double-Precision Floating-Point Values
3070c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_SUBSS,                         // Subtract Scalar Single-Precision Floating-Point Values
3080c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
3090c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_TEST,                          // Logical Compare
3100c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
3110c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_UCOMISD,                       // Unordered Compare Scalar Double-Precision Floating-Point Values and Set EFLAGS
3120c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_UCOMISS,                       // Unordered Compare Scalar Single-Precision Floating-Point Values and Set EFLAGS
3130c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
3140c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_XOR,                           // Logical Exclusive OR
3150c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen//
3160c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen// packed things,
3170c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen//
3180c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_XORPD,                         // Bitwise Logical XOR for Double-Precision Floating-Point Values
3190c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_XORPS,                         // Bitwise Logical XOR for Single-Precision Floating-Point Values
3200c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
3210c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CVTDQ2PD,                      // Convert Packed Doubleword Integers to Packed Double-Precision Floating-Point Values
3220c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CVTTPD2DQ,                     // Convert with Truncation Packed Double-Precision Floating-Point Values to Packed Doubleword Integers
3230c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
3240c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CVTDQ2PS,                      // Convert Packed Doubleword Integers to Packed Single-Precision Floating-Point Values
3250c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CVTTPS2DQ,                     // Convert with Truncation Packed Single-Precision Floating-Point Values to Packed Doubleword Integers
3260c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen//
3270c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen// String operations
3280c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen//
3290c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_STD,                           // Set direction flag
3300c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_CLD,                           // Clear direction flag
3310c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_SCAS,                          // Scan string
3320c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_STOS,                          // Store string
3330c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
3340c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen//
3350c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_WAIT,                          // Check pending pending unmasked floating-point exception
3360c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen//
3370c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenMnemonic_Count
3380c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen} Mnemonic;
3390c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
3400c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen#undef CCM
3410c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
3420c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan ChenENCODER_NAMESPACE_END
3430c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
3440c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen#endif  // ifndef _ENCODER_DEFS_EXT_H_
345