Newer
Older
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
SMPTypeCategory[NN_pblendw] = 14; // Blend Packed Words
SMPTypeCategory[NN_pcmpeqq] = 14; // Compare Packed Qword Data for Equal
SMPTypeCategory[NN_pextrb] = 15; // Extract Byte
SMPTypeCategory[NN_pextrd] = 15; // Extract Dword
SMPTypeCategory[NN_pextrq] = 15; // Extract Qword
SMPTypeCategory[NN_phminposuw] = 14; // Packed Horizontal Word Minimum
SMPTypeCategory[NN_pinsrb] = 14; // Insert Byte !!! Could this be used as a generic move???
SMPTypeCategory[NN_pinsrd] = 14; // Insert Dword !!! Could this be used as a generic move???
SMPTypeCategory[NN_pinsrq] = 14; // Insert Qword !!! Could this be used as a generic move???
SMPTypeCategory[NN_pmaxsb] = 14; // Maximum of Packed Signed Byte Integers
SMPTypeCategory[NN_pmaxsd] = 14; // Maximum of Packed Signed Dword Integers
SMPTypeCategory[NN_pmaxud] = 14; // Maximum of Packed Unsigned Dword Integers
SMPTypeCategory[NN_pmaxuw] = 14; // Maximum of Packed Word Integers
SMPTypeCategory[NN_pminsb] = 14; // Minimum of Packed Signed Byte Integers
SMPTypeCategory[NN_pminsd] = 14; // Minimum of Packed Signed Dword Integers
SMPTypeCategory[NN_pminud] = 14; // Minimum of Packed Unsigned Dword Integers
SMPTypeCategory[NN_pminuw] = 14; // Minimum of Packed Word Integers
SMPTypeCategory[NN_pmovsxbw] = 14; // Packed Move with Sign Extend
SMPTypeCategory[NN_pmovsxbd] = 14; // Packed Move with Sign Extend
SMPTypeCategory[NN_pmovsxbq] = 14; // Packed Move with Sign Extend
SMPTypeCategory[NN_pmovsxwd] = 14; // Packed Move with Sign Extend
SMPTypeCategory[NN_pmovsxwq] = 14; // Packed Move with Sign Extend
SMPTypeCategory[NN_pmovsxdq] = 14; // Packed Move with Sign Extend
SMPTypeCategory[NN_pmovzxbw] = 14; // Packed Move with Zero Extend
SMPTypeCategory[NN_pmovzxbd] = 14; // Packed Move with Zero Extend
SMPTypeCategory[NN_pmovzxbq] = 14; // Packed Move with Zero Extend
SMPTypeCategory[NN_pmovzxwd] = 14; // Packed Move with Zero Extend
SMPTypeCategory[NN_pmovzxwq] = 14; // Packed Move with Zero Extend
SMPTypeCategory[NN_pmovzxdq] = 14; // Packed Move with Zero Extend
SMPTypeCategory[NN_pmuldq] = 14; // Multiply Packed Signed Dword Integers
SMPTypeCategory[NN_pmulld] = 14; // Multiply Packed Signed Dword Integers and Store Low Result
SMPTypeCategory[NN_ptest] = 1; // Logical Compare
SMPTypeCategory[NN_roundpd] = 14; // Round Packed Double Precision Floating-Point Values
SMPTypeCategory[NN_roundps] = 14; // Round Packed Single Precision Floating-Point Values
SMPTypeCategory[NN_roundsd] = 14; // Round Scalar Double Precision Floating-Point Values
SMPTypeCategory[NN_roundss] = 14; // Round Scalar Single Precision Floating-Point Values
// SSSE4.2 instructions
SMPTypeCategory[NN_crc32] = 14; // Accumulate CRC32 Value
SMPTypeCategory[NN_pcmpestri] = 2; // Packed Compare Explicit Length Strings, Return Index
SMPTypeCategory[NN_pcmpestrm] = 2; // Packed Compare Explicit Length Strings, Return Mask
SMPTypeCategory[NN_pcmpistri] = 2; // Packed Compare Implicit Length Strings, Return Index
SMPTypeCategory[NN_pcmpistrm] = 2; // Packed Compare Implicit Length Strings, Return Mask
SMPTypeCategory[NN_pcmpgtq] = 14; // Compare Packed Data for Greater Than
SMPTypeCategory[NN_popcnt] = 2; // Return the Count of Number of Bits Set to 1
// AMD SSE4a instructions
SMPTypeCategory[NN_extrq] = 14; // Extract Field From Register
SMPTypeCategory[NN_insertq] = 14; // Insert Field
SMPTypeCategory[NN_movntsd] = 13; // Move Non-Temporal Scalar Double-Precision Floating-Point !!! Could this be used as a generic move???
SMPTypeCategory[NN_movntss] = 13; // Move Non-Temporal Scalar Single-Precision Floating-Point !!! Could this be used as a generic move???
SMPTypeCategory[NN_lzcnt] = 2; // Leading Zero Count
// xsave/xrstor instructions
SMPTypeCategory[NN_xgetbv] = 8; // Get Value of Extended Control Register
SMPTypeCategory[NN_xrstor] = 0; // Restore Processor Extended States
SMPTypeCategory[NN_xsave] = 1; // Save Processor Extended States
SMPTypeCategory[NN_xsetbv] = 1; // Set Value of Extended Control Register
// Intel Safer Mode Extensions (SMX)
SMPTypeCategory[NN_getsec] = 1; // Safer Mode Extensions (SMX) Instruction
// AMD-V Virtualization ISA Extension
SMPTypeCategory[NN_clgi] = 0; // Clear Global Interrupt Flag
SMPTypeCategory[NN_invlpga] = 1; // Invalidate TLB Entry in a Specified ASID
SMPTypeCategory[NN_skinit] = 1; // Secure Init and Jump with Attestation
SMPTypeCategory[NN_stgi] = 0; // Set Global Interrupt Flag
SMPTypeCategory[NN_vmexit] = 1; // Stop Executing Guest, Begin Executing Host
SMPTypeCategory[NN_vmload] = 0; // Load State from VMCB
SMPTypeCategory[NN_vmmcall] = 1; // Call VMM
SMPTypeCategory[NN_vmrun] = 1; // Run Virtual Machine
SMPTypeCategory[NN_vmsave] = 0; // Save State to VMCB
// VMX+ instructions
SMPTypeCategory[NN_invept] = 1; // Invalidate Translations Derived from EPT
SMPTypeCategory[NN_invvpid] = 1; // Invalidate Translations Based on VPID
// Intel Atom instructions
// !!!! continue work here
SMPTypeCategory[NN_movbe] = 3; // Move Data After Swapping Bytes
// Intel AES instructions
SMPTypeCategory[NN_aesenc] = 14; // Perform One Round of an AES Encryption Flow
SMPTypeCategory[NN_aesenclast] = 14; // Perform the Last Round of an AES Encryption Flow
SMPTypeCategory[NN_aesdec] = 14; // Perform One Round of an AES Decryption Flow
SMPTypeCategory[NN_aesdeclast] = 14; // Perform the Last Round of an AES Decryption Flow
SMPTypeCategory[NN_aesimc] = 14; // Perform the AES InvMixColumn Transformation
SMPTypeCategory[NN_aeskeygenassist] = 14; // AES Round Key Generation Assist
// Carryless multiplication
SMPTypeCategory[NN_pclmulqdq] = 14; // Carry-Less Multiplication Quadword
#endif // 599 < IDA_SDK_VERSION