diff --git a/src/asmjit/x86/x86assembler.cpp b/src/asmjit/x86/x86assembler.cpp index c732a67..c2ea4d1 100644 --- a/src/asmjit/x86/x86assembler.cpp +++ b/src/asmjit/x86/x86assembler.cpp @@ -4278,6 +4278,7 @@ EmitVexEvexM: } else { // Add the compressed displacement 'SHF' to the opcode based on 'TTWLL'. + // The index to `x86CDisp8SHL` is composed as `CDTT[4:3] | W[2] | LL[1:0]`. uint32_t TTWLL = ((opcode >> (Opcode::kCDTT_Shift - 3)) & 0x18) + ((opcode >> (Opcode::kW_Shift - 2)) & 0x04) + ((x >> 29) & 0x3); diff --git a/src/asmjit/x86/x86instdb.cpp b/src/asmjit/x86/x86instdb.cpp index 8952dd9..1878688 100644 --- a/src/asmjit/x86/x86instdb.cpp +++ b/src/asmjit/x86/x86instdb.cpp @@ -1065,9 +1065,9 @@ const InstDB::InstInfo InstDB::_instInfoTable[] = { INST(Vgetmantps , VexRmi_Lx , V(660F3A,26,_,x,_,0,4,FV ), 0 , 99 , 0 , 5543 , 270, 112), // #985 INST(Vgetmantsd , VexRvmi , V(660F3A,27,_,I,_,1,3,T1S), 0 , 138, 0 , 5554 , 248, 64 ), // #986 INST(Vgetmantss , VexRvmi , V(660F3A,27,_,I,_,0,2,T1S), 0 , 137, 0 , 5565 , 249, 64 ), // #987 - INST(Vgf2p8affineinvqb, VexRvmi_Lx , V(660F3A,CF,_,x,1,1,_,FV ), 0 , 146, 0 , 5576 , 271, 128), // #988 - INST(Vgf2p8affineqb , VexRvmi_Lx , V(660F3A,CE,_,x,1,1,_,FV ), 0 , 146, 0 , 5594 , 271, 128), // #989 - INST(Vgf2p8mulb , VexRvm_Lx , V(660F38,CF,_,x,0,0,_,FV ), 0 , 147, 0 , 5609 , 272, 128), // #990 + INST(Vgf2p8affineinvqb, VexRvmi_Lx , V(660F3A,CF,_,x,1,1,4,FV ), 0 , 146, 0 , 5576 , 271, 128), // #988 + INST(Vgf2p8affineqb , VexRvmi_Lx , V(660F3A,CE,_,x,1,1,4,FV ), 0 , 146, 0 , 5594 , 271, 128), // #989 + INST(Vgf2p8mulb , VexRvm_Lx , V(660F38,CF,_,x,0,0,4,FV ), 0 , 101, 0 , 5609 , 272, 128), // #990 INST(Vhaddpd , VexRvm_Lx , V(660F00,7C,_,x,I,_,_,_ ), 0 , 63 , 0 , 5620 , 179, 109), // #991 INST(Vhaddps , VexRvm_Lx , V(F20F00,7C,_,x,I,_,_,_ ), 0 , 97 , 0 , 5628 , 179, 109), // #992 INST(Vhsubpd , VexRvm_Lx , V(660F00,7D,_,x,I,_,_,_ ), 0 , 63 , 0 , 5636 , 179, 109), // #993 @@ -1084,7 +1084,7 @@ const InstDB::InstInfo InstDB::_instInfoTable[] = { INST(Vinserti64x4 , VexRvmi , V(660F3A,3A,_,2,_,1,5,T4 ), 0 , 136, 0 , 5767 , 275, 64 ), // #1004 INST(Vinsertps , VexRvmi , V(660F3A,21,_,0,I,0,2,T1S), 0 , 137, 0 , 5780 , 276, 108), // #1005 INST(Vlddqu , VexRm_Lx , V(F20F00,F0,_,x,I,_,_,_ ), 0 , 97 , 0 , 5790 , 277, 109), // #1006 - INST(Vldmxcsr , VexM , V(000F00,AE,2,0,I,_,_,_ ), 0 , 148, 0 , 5797 , 278, 109), // #1007 + INST(Vldmxcsr , VexM , V(000F00,AE,2,0,I,_,_,_ ), 0 , 147, 0 , 5797 , 278, 109), // #1007 INST(Vmaskmovdqu , VexRm_ZDI , V(660F00,F7,_,0,I,_,_,_ ), 0 , 63 , 0 , 5806 , 279, 109), // #1008 INST(Vmaskmovpd , VexRvmMvr_Lx , V(660F38,2D,_,x,0,_,_,_ ), V(660F38,2F,_,x,0,_,_,_ ), 88 , 83 , 5818 , 280, 109), // #1009 INST(Vmaskmovps , VexRvmMvr_Lx , V(660F38,2C,_,x,0,_,_,_ ), V(660F38,2E,_,x,0,_,_,_ ), 88 , 84 , 5829 , 280, 109), // #1010 @@ -1102,37 +1102,37 @@ const InstDB::InstInfo InstDB::_instInfoTable[] = { INST(Vmlaunch , X86Op , O(000F01,C2,_,_,_,_,_,_ ), 0 , 21 , 0 , 5918 , 30 , 54 ), // #1022 INST(Vmload , X86Op_xAX , O(000F01,DA,_,_,_,_,_,_ ), 0 , 21 , 0 , 5927 , 285, 23 ), // #1023 INST(Vmmcall , X86Op , O(000F01,D9,_,_,_,_,_,_ ), 0 , 21 , 0 , 5934 , 30 , 23 ), // #1024 - INST(Vmovapd , VexRmMr_Lx , V(660F00,28,_,x,I,1,4,FVM), V(660F00,29,_,x,I,1,4,FVM), 149, 85 , 5942 , 286, 107), // #1025 - INST(Vmovaps , VexRmMr_Lx , V(000F00,28,_,x,I,0,4,FVM), V(000F00,29,_,x,I,0,4,FVM), 150, 86 , 5950 , 286, 107), // #1026 - INST(Vmovd , VexMovdMovq , V(660F00,6E,_,0,0,0,2,T1S), V(660F00,7E,_,0,0,0,2,T1S), 151, 87 , 5958 , 287, 108), // #1027 - INST(Vmovddup , VexRm_Lx , V(F20F00,12,_,x,I,1,3,DUP), 0 , 152, 0 , 5964 , 288, 107), // #1028 + INST(Vmovapd , VexRmMr_Lx , V(660F00,28,_,x,I,1,4,FVM), V(660F00,29,_,x,I,1,4,FVM), 148, 85 , 5942 , 286, 107), // #1025 + INST(Vmovaps , VexRmMr_Lx , V(000F00,28,_,x,I,0,4,FVM), V(000F00,29,_,x,I,0,4,FVM), 149, 86 , 5950 , 286, 107), // #1026 + INST(Vmovd , VexMovdMovq , V(660F00,6E,_,0,0,0,2,T1S), V(660F00,7E,_,0,0,0,2,T1S), 150, 87 , 5958 , 287, 108), // #1027 + INST(Vmovddup , VexRm_Lx , V(F20F00,12,_,x,I,1,3,DUP), 0 , 151, 0 , 5964 , 288, 107), // #1028 INST(Vmovdqa , VexRmMr_Lx , V(660F00,6F,_,x,I,_,_,_ ), V(660F00,7F,_,x,I,_,_,_ ), 63 , 88 , 5973 , 289, 109), // #1029 - INST(Vmovdqa32 , VexRmMr_Lx , V(660F00,6F,_,x,_,0,4,FVM), V(660F00,7F,_,x,_,0,4,FVM), 153, 89 , 5981 , 290, 112), // #1030 - INST(Vmovdqa64 , VexRmMr_Lx , V(660F00,6F,_,x,_,1,4,FVM), V(660F00,7F,_,x,_,1,4,FVM), 149, 90 , 5991 , 290, 112), // #1031 - INST(Vmovdqu , VexRmMr_Lx , V(F30F00,6F,_,x,I,_,_,_ ), V(F30F00,7F,_,x,I,_,_,_ ), 154, 91 , 6001 , 289, 109), // #1032 - INST(Vmovdqu16 , VexRmMr_Lx , V(F20F00,6F,_,x,_,1,4,FVM), V(F20F00,7F,_,x,_,1,4,FVM), 155, 92 , 6009 , 290, 114), // #1033 - INST(Vmovdqu32 , VexRmMr_Lx , V(F30F00,6F,_,x,_,0,4,FVM), V(F30F00,7F,_,x,_,0,4,FVM), 156, 93 , 6019 , 290, 112), // #1034 - INST(Vmovdqu64 , VexRmMr_Lx , V(F30F00,6F,_,x,_,1,4,FVM), V(F30F00,7F,_,x,_,1,4,FVM), 157, 94 , 6029 , 290, 112), // #1035 - INST(Vmovdqu8 , VexRmMr_Lx , V(F20F00,6F,_,x,_,0,4,FVM), V(F20F00,7F,_,x,_,0,4,FVM), 158, 95 , 6039 , 290, 114), // #1036 + INST(Vmovdqa32 , VexRmMr_Lx , V(660F00,6F,_,x,_,0,4,FVM), V(660F00,7F,_,x,_,0,4,FVM), 152, 89 , 5981 , 290, 112), // #1030 + INST(Vmovdqa64 , VexRmMr_Lx , V(660F00,6F,_,x,_,1,4,FVM), V(660F00,7F,_,x,_,1,4,FVM), 148, 90 , 5991 , 290, 112), // #1031 + INST(Vmovdqu , VexRmMr_Lx , V(F30F00,6F,_,x,I,_,_,_ ), V(F30F00,7F,_,x,I,_,_,_ ), 153, 91 , 6001 , 289, 109), // #1032 + INST(Vmovdqu16 , VexRmMr_Lx , V(F20F00,6F,_,x,_,1,4,FVM), V(F20F00,7F,_,x,_,1,4,FVM), 154, 92 , 6009 , 290, 114), // #1033 + INST(Vmovdqu32 , VexRmMr_Lx , V(F30F00,6F,_,x,_,0,4,FVM), V(F30F00,7F,_,x,_,0,4,FVM), 155, 93 , 6019 , 290, 112), // #1034 + INST(Vmovdqu64 , VexRmMr_Lx , V(F30F00,6F,_,x,_,1,4,FVM), V(F30F00,7F,_,x,_,1,4,FVM), 156, 94 , 6029 , 290, 112), // #1035 + INST(Vmovdqu8 , VexRmMr_Lx , V(F20F00,6F,_,x,_,0,4,FVM), V(F20F00,7F,_,x,_,0,4,FVM), 157, 95 , 6039 , 290, 114), // #1036 INST(Vmovhlps , VexRvm , V(000F00,12,_,0,I,0,_,_ ), 0 , 66 , 0 , 6048 , 291, 108), // #1037 INST(Vmovhpd , VexRvmMr , V(660F00,16,_,0,I,1,3,T1S), V(660F00,17,_,0,I,1,3,T1S), 112, 96 , 6057 , 292, 108), // #1038 - INST(Vmovhps , VexRvmMr , V(000F00,16,_,0,I,0,3,T2 ), V(000F00,17,_,0,I,0,3,T2 ), 159, 97 , 6065 , 292, 108), // #1039 + INST(Vmovhps , VexRvmMr , V(000F00,16,_,0,I,0,3,T2 ), V(000F00,17,_,0,I,0,3,T2 ), 158, 97 , 6065 , 292, 108), // #1039 INST(Vmovlhps , VexRvm , V(000F00,16,_,0,I,0,_,_ ), 0 , 66 , 0 , 6073 , 291, 108), // #1040 INST(Vmovlpd , VexRvmMr , V(660F00,12,_,0,I,1,3,T1S), V(660F00,13,_,0,I,1,3,T1S), 112, 98 , 6082 , 292, 108), // #1041 - INST(Vmovlps , VexRvmMr , V(000F00,12,_,0,I,0,3,T2 ), V(000F00,13,_,0,I,0,3,T2 ), 159, 99 , 6090 , 292, 108), // #1042 + INST(Vmovlps , VexRvmMr , V(000F00,12,_,0,I,0,3,T2 ), V(000F00,13,_,0,I,0,3,T2 ), 158, 99 , 6090 , 292, 108), // #1042 INST(Vmovmskpd , VexRm_Lx , V(660F00,50,_,x,I,_,_,_ ), 0 , 63 , 0 , 6098 , 293, 109), // #1043 INST(Vmovmskps , VexRm_Lx , V(000F00,50,_,x,I,_,_,_ ), 0 , 66 , 0 , 6108 , 293, 109), // #1044 - INST(Vmovntdq , VexMr_Lx , V(660F00,E7,_,x,I,0,4,FVM), 0 , 153, 0 , 6118 , 294, 107), // #1045 + INST(Vmovntdq , VexMr_Lx , V(660F00,E7,_,x,I,0,4,FVM), 0 , 152, 0 , 6118 , 294, 107), // #1045 INST(Vmovntdqa , VexRm_Lx , V(660F38,2A,_,x,I,0,4,FVM), 0 , 98 , 0 , 6127 , 295, 117), // #1046 - INST(Vmovntpd , VexMr_Lx , V(660F00,2B,_,x,I,1,4,FVM), 0 , 149, 0 , 6137 , 294, 107), // #1047 - INST(Vmovntps , VexMr_Lx , V(000F00,2B,_,x,I,0,4,FVM), 0 , 150, 0 , 6146 , 294, 107), // #1048 + INST(Vmovntpd , VexMr_Lx , V(660F00,2B,_,x,I,1,4,FVM), 0 , 148, 0 , 6137 , 294, 107), // #1047 + INST(Vmovntps , VexMr_Lx , V(000F00,2B,_,x,I,0,4,FVM), 0 , 149, 0 , 6146 , 294, 107), // #1048 INST(Vmovq , VexMovdMovq , V(660F00,6E,_,0,I,1,3,T1S), V(660F00,7E,_,0,I,1,3,T1S), 112, 100, 6155 , 296, 108), // #1049 INST(Vmovsd , VexMovssMovsd , V(F20F00,10,_,I,I,1,3,T1S), V(F20F00,11,_,I,I,1,3,T1S), 95 , 101, 6161 , 297, 108), // #1050 - INST(Vmovshdup , VexRm_Lx , V(F30F00,16,_,x,I,0,4,FVM), 0 , 156, 0 , 6168 , 298, 107), // #1051 - INST(Vmovsldup , VexRm_Lx , V(F30F00,12,_,x,I,0,4,FVM), 0 , 156, 0 , 6178 , 298, 107), // #1052 + INST(Vmovshdup , VexRm_Lx , V(F30F00,16,_,x,I,0,4,FVM), 0 , 155, 0 , 6168 , 298, 107), // #1051 + INST(Vmovsldup , VexRm_Lx , V(F30F00,12,_,x,I,0,4,FVM), 0 , 155, 0 , 6178 , 298, 107), // #1052 INST(Vmovss , VexMovssMovsd , V(F30F00,10,_,I,I,0,2,T1S), V(F30F00,11,_,I,I,0,2,T1S), 96 , 102, 6188 , 299, 108), // #1053 - INST(Vmovupd , VexRmMr_Lx , V(660F00,10,_,x,I,1,4,FVM), V(660F00,11,_,x,I,1,4,FVM), 149, 103, 6195 , 286, 107), // #1054 - INST(Vmovups , VexRmMr_Lx , V(000F00,10,_,x,I,0,4,FVM), V(000F00,11,_,x,I,0,4,FVM), 150, 104, 6203 , 286, 107), // #1055 + INST(Vmovupd , VexRmMr_Lx , V(660F00,10,_,x,I,1,4,FVM), V(660F00,11,_,x,I,1,4,FVM), 148, 103, 6195 , 286, 107), // #1054 + INST(Vmovups , VexRmMr_Lx , V(000F00,10,_,x,I,0,4,FVM), V(000F00,11,_,x,I,0,4,FVM), 149, 104, 6203 , 286, 107), // #1055 INST(Vmpsadbw , VexRvmi_Lx , V(660F3A,42,_,x,I,_,_,_ ), 0 , 67 , 0 , 6211 , 192, 129), // #1056 INST(Vmptrld , X86M_Only , O(000F00,C7,6,_,_,_,_,_ ), 0 , 73 , 0 , 6220 , 284, 54 ), // #1057 INST(Vmptrst , X86M_Only , O(000F00,C7,7,_,_,_,_,_ ), 0 , 22 , 0 , 6228 , 284, 54 ), // #1058 @@ -1145,7 +1145,7 @@ const InstDB::InstInfo InstDB::_instInfoTable[] = { INST(Vmulsd , VexRvm_Lx , V(F20F00,59,_,I,I,1,3,T1S), 0 , 95 , 0 , 6279 , 177, 108), // #1065 INST(Vmulss , VexRvm_Lx , V(F30F00,59,_,I,I,0,2,T1S), 0 , 96 , 0 , 6286 , 178, 108), // #1066 INST(Vmwrite , X86Rm_NoSize , O(000F00,79,_,_,_,_,_,_ ), 0 , 4 , 0 , 6293 , 301, 54 ), // #1067 - INST(Vmxon , X86M_Only , O(F30F00,C7,6,_,_,_,_,_ ), 0 , 160, 0 , 6301 , 284, 54 ), // #1068 + INST(Vmxon , X86M_Only , O(F30F00,C7,6,_,_,_,_,_ ), 0 , 159, 0 , 6301 , 284, 54 ), // #1068 INST(Vorpd , VexRvm_Lx , V(660F00,56,_,x,I,1,4,FV ), 0 , 93 , 0 , 6307 , 187, 113), // #1069 INST(Vorps , VexRvm_Lx , V(000F00,56,_,x,I,0,4,FV ), 0 , 94 , 0 , 6313 , 188, 113), // #1070 INST(Vp4dpwssd , VexRm_T1_4X , V(F20F38,52,_,2,_,0,2,T4X), 0 , 92 , 0 , 6319 , 173, 130), // #1071 @@ -1155,17 +1155,17 @@ const InstDB::InstInfo InstDB::_instInfoTable[] = { INST(Vpabsq , VexRm_Lx , V(660F38,1F,_,x,_,1,4,FV ), 0 , 102, 0 , 6354 , 241, 112), // #1075 INST(Vpabsw , VexRm_Lx , V(660F38,1D,_,x,I,_,4,FVM), 0 , 98 , 0 , 6361 , 298, 131), // #1076 INST(Vpackssdw , VexRvm_Lx , V(660F00,6B,_,x,I,0,4,FV ), 0 , 118, 0 , 6368 , 186, 131), // #1077 - INST(Vpacksswb , VexRvm_Lx , V(660F00,63,_,x,I,I,4,FVM), 0 , 153, 0 , 6378 , 272, 131), // #1078 + INST(Vpacksswb , VexRvm_Lx , V(660F00,63,_,x,I,I,4,FVM), 0 , 152, 0 , 6378 , 272, 131), // #1078 INST(Vpackusdw , VexRvm_Lx , V(660F38,2B,_,x,I,0,4,FV ), 0 , 101, 0 , 6388 , 186, 131), // #1079 - INST(Vpackuswb , VexRvm_Lx , V(660F00,67,_,x,I,I,4,FVM), 0 , 153, 0 , 6398 , 272, 131), // #1080 - INST(Vpaddb , VexRvm_Lx , V(660F00,FC,_,x,I,I,4,FVM), 0 , 153, 0 , 6408 , 272, 131), // #1081 + INST(Vpackuswb , VexRvm_Lx , V(660F00,67,_,x,I,I,4,FVM), 0 , 152, 0 , 6398 , 272, 131), // #1080 + INST(Vpaddb , VexRvm_Lx , V(660F00,FC,_,x,I,I,4,FVM), 0 , 152, 0 , 6408 , 272, 131), // #1081 INST(Vpaddd , VexRvm_Lx , V(660F00,FE,_,x,I,0,4,FV ), 0 , 118, 0 , 6415 , 186, 117), // #1082 INST(Vpaddq , VexRvm_Lx , V(660F00,D4,_,x,I,1,4,FV ), 0 , 93 , 0 , 6422 , 185, 117), // #1083 - INST(Vpaddsb , VexRvm_Lx , V(660F00,EC,_,x,I,I,4,FVM), 0 , 153, 0 , 6429 , 272, 131), // #1084 - INST(Vpaddsw , VexRvm_Lx , V(660F00,ED,_,x,I,I,4,FVM), 0 , 153, 0 , 6437 , 272, 131), // #1085 - INST(Vpaddusb , VexRvm_Lx , V(660F00,DC,_,x,I,I,4,FVM), 0 , 153, 0 , 6445 , 272, 131), // #1086 - INST(Vpaddusw , VexRvm_Lx , V(660F00,DD,_,x,I,I,4,FVM), 0 , 153, 0 , 6454 , 272, 131), // #1087 - INST(Vpaddw , VexRvm_Lx , V(660F00,FD,_,x,I,I,4,FVM), 0 , 153, 0 , 6463 , 272, 131), // #1088 + INST(Vpaddsb , VexRvm_Lx , V(660F00,EC,_,x,I,I,4,FVM), 0 , 152, 0 , 6429 , 272, 131), // #1084 + INST(Vpaddsw , VexRvm_Lx , V(660F00,ED,_,x,I,I,4,FVM), 0 , 152, 0 , 6437 , 272, 131), // #1085 + INST(Vpaddusb , VexRvm_Lx , V(660F00,DC,_,x,I,I,4,FVM), 0 , 152, 0 , 6445 , 272, 131), // #1086 + INST(Vpaddusw , VexRvm_Lx , V(660F00,DD,_,x,I,I,4,FVM), 0 , 152, 0 , 6454 , 272, 131), // #1087 + INST(Vpaddw , VexRvm_Lx , V(660F00,FD,_,x,I,I,4,FVM), 0 , 152, 0 , 6463 , 272, 131), // #1088 INST(Vpalignr , VexRvmi_Lx , V(660F3A,0F,_,x,I,I,4,FVM), 0 , 129, 0 , 6470 , 271, 131), // #1089 INST(Vpand , VexRvm_Lx , V(660F00,DB,_,x,I,_,_,_ ), 0 , 63 , 0 , 6479 , 302, 129), // #1090 INST(Vpandd , VexRvm_Lx , V(660F00,DB,_,x,_,0,4,FV ), 0 , 118, 0 , 6485 , 303, 112), // #1091 @@ -1173,29 +1173,29 @@ const InstDB::InstInfo InstDB::_instInfoTable[] = { INST(Vpandnd , VexRvm_Lx , V(660F00,DF,_,x,_,0,4,FV ), 0 , 118, 0 , 6499 , 305, 112), // #1093 INST(Vpandnq , VexRvm_Lx , V(660F00,DF,_,x,_,1,4,FV ), 0 , 93 , 0 , 6507 , 306, 112), // #1094 INST(Vpandq , VexRvm_Lx , V(660F00,DB,_,x,_,1,4,FV ), 0 , 93 , 0 , 6515 , 307, 112), // #1095 - INST(Vpavgb , VexRvm_Lx , V(660F00,E0,_,x,I,I,4,FVM), 0 , 153, 0 , 6522 , 272, 131), // #1096 - INST(Vpavgw , VexRvm_Lx , V(660F00,E3,_,x,I,I,4,FVM), 0 , 153, 0 , 6529 , 272, 131), // #1097 + INST(Vpavgb , VexRvm_Lx , V(660F00,E0,_,x,I,I,4,FVM), 0 , 152, 0 , 6522 , 272, 131), // #1096 + INST(Vpavgw , VexRvm_Lx , V(660F00,E3,_,x,I,I,4,FVM), 0 , 152, 0 , 6529 , 272, 131), // #1097 INST(Vpblendd , VexRvmi_Lx , V(660F3A,02,_,x,0,_,_,_ ), 0 , 67 , 0 , 6536 , 192, 116), // #1098 INST(Vpblendvb , VexRvmr , V(660F3A,4C,_,x,0,_,_,_ ), 0 , 67 , 0 , 6545 , 193, 129), // #1099 INST(Vpblendw , VexRvmi_Lx , V(660F3A,0E,_,x,I,_,_,_ ), 0 , 67 , 0 , 6555 , 192, 129), // #1100 - INST(Vpbroadcastb , VexRm_Lx , V(660F38,78,_,x,0,0,0,T1S), 0 , 161, 0 , 6564 , 308, 132), // #1101 + INST(Vpbroadcastb , VexRm_Lx , V(660F38,78,_,x,0,0,0,T1S), 0 , 160, 0 , 6564 , 308, 132), // #1101 INST(Vpbroadcastd , VexRm_Lx , V(660F38,58,_,x,0,0,2,T1S), 0 , 111, 0 , 6577 , 309, 126), // #1102 INST(Vpbroadcastmb2d , VexRm_Lx , V(F30F38,3A,_,x,_,0,_,_ ), 0 , 82 , 0 , 6590 , 310, 133), // #1103 - INST(Vpbroadcastmb2q , VexRm_Lx , V(F30F38,2A,_,x,_,1,_,_ ), 0 , 162, 0 , 6606 , 310, 133), // #1104 + INST(Vpbroadcastmb2q , VexRm_Lx , V(F30F38,2A,_,x,_,1,_,_ ), 0 , 161, 0 , 6606 , 310, 133), // #1104 INST(Vpbroadcastq , VexRm_Lx , V(660F38,59,_,x,0,1,3,T1S), 0 , 110, 0 , 6622 , 311, 126), // #1105 - INST(Vpbroadcastw , VexRm_Lx , V(660F38,79,_,x,0,0,1,T1S), 0 , 163, 0 , 6635 , 312, 132), // #1106 + INST(Vpbroadcastw , VexRm_Lx , V(660F38,79,_,x,0,0,1,T1S), 0 , 162, 0 , 6635 , 312, 132), // #1106 INST(Vpclmulqdq , VexRvmi_Lx , V(660F3A,44,_,x,I,_,4,FVM), 0 , 129, 0 , 6648 , 313, 134), // #1107 - INST(Vpcmov , VexRvrmRvmr_Lx , V(XOP_M8,A2,_,x,x,_,_,_ ), 0 , 164, 0 , 6659 , 250, 125), // #1108 + INST(Vpcmov , VexRvrmRvmr_Lx , V(XOP_M8,A2,_,x,x,_,_,_ ), 0 , 163, 0 , 6659 , 250, 125), // #1108 INST(Vpcmpb , VexRvmi_Lx , V(660F3A,3F,_,x,_,0,4,FVM), 0 , 129, 0 , 6666 , 314, 114), // #1109 INST(Vpcmpd , VexRvmi_Lx , V(660F3A,1F,_,x,_,0,4,FV ), 0 , 99 , 0 , 6673 , 315, 112), // #1110 INST(Vpcmpeqb , VexRvm_Lx , V(660F00,74,_,x,I,I,4,FV ), 0 , 118, 0 , 6680 , 316, 131), // #1111 - INST(Vpcmpeqd , VexRvm_Lx , V(660F00,76,_,x,I,0,4,FVM), 0 , 153, 0 , 6689 , 317, 117), // #1112 + INST(Vpcmpeqd , VexRvm_Lx , V(660F00,76,_,x,I,0,4,FVM), 0 , 152, 0 , 6689 , 317, 117), // #1112 INST(Vpcmpeqq , VexRvm_Lx , V(660F38,29,_,x,I,1,4,FVM), 0 , 103, 0 , 6698 , 318, 117), // #1113 INST(Vpcmpeqw , VexRvm_Lx , V(660F00,75,_,x,I,I,4,FV ), 0 , 118, 0 , 6707 , 316, 131), // #1114 INST(Vpcmpestri , VexRmi , V(660F3A,61,_,0,I,_,_,_ ), 0 , 67 , 0 , 6716 , 319, 135), // #1115 INST(Vpcmpestrm , VexRmi , V(660F3A,60,_,0,I,_,_,_ ), 0 , 67 , 0 , 6727 , 320, 135), // #1116 INST(Vpcmpgtb , VexRvm_Lx , V(660F00,64,_,x,I,I,4,FV ), 0 , 118, 0 , 6738 , 316, 131), // #1117 - INST(Vpcmpgtd , VexRvm_Lx , V(660F00,66,_,x,I,0,4,FVM), 0 , 153, 0 , 6747 , 317, 117), // #1118 + INST(Vpcmpgtd , VexRvm_Lx , V(660F00,66,_,x,I,0,4,FVM), 0 , 152, 0 , 6747 , 317, 117), // #1118 INST(Vpcmpgtq , VexRvm_Lx , V(660F38,37,_,x,I,1,4,FVM), 0 , 103, 0 , 6756 , 318, 117), // #1119 INST(Vpcmpgtw , VexRvm_Lx , V(660F00,65,_,x,I,I,4,FV ), 0 , 118, 0 , 6765 , 316, 131), // #1120 INST(Vpcmpistri , VexRmi , V(660F3A,63,_,0,I,_,_,_ ), 0 , 67 , 0 , 6774 , 321, 135), // #1121 @@ -1204,26 +1204,26 @@ const InstDB::InstInfo InstDB::_instInfoTable[] = { INST(Vpcmpub , VexRvmi_Lx , V(660F3A,3E,_,x,_,0,4,FVM), 0 , 129, 0 , 6803 , 314, 114), // #1124 INST(Vpcmpud , VexRvmi_Lx , V(660F3A,1E,_,x,_,0,4,FV ), 0 , 99 , 0 , 6811 , 315, 112), // #1125 INST(Vpcmpuq , VexRvmi_Lx , V(660F3A,1E,_,x,_,1,4,FV ), 0 , 100, 0 , 6819 , 323, 112), // #1126 - INST(Vpcmpuw , VexRvmi_Lx , V(660F3A,3E,_,x,_,1,4,FVM), 0 , 165, 0 , 6827 , 323, 114), // #1127 - INST(Vpcmpw , VexRvmi_Lx , V(660F3A,3F,_,x,_,1,4,FVM), 0 , 165, 0 , 6835 , 323, 114), // #1128 - INST(Vpcomb , VexRvmi , V(XOP_M8,CC,_,0,0,_,_,_ ), 0 , 164, 0 , 6842 , 238, 125), // #1129 - INST(Vpcomd , VexRvmi , V(XOP_M8,CE,_,0,0,_,_,_ ), 0 , 164, 0 , 6849 , 238, 125), // #1130 - INST(Vpcompressb , VexMr_Lx , V(660F38,63,_,x,_,0,0,T1S), 0 , 161, 0 , 6856 , 207, 136), // #1131 + INST(Vpcmpuw , VexRvmi_Lx , V(660F3A,3E,_,x,_,1,4,FVM), 0 , 164, 0 , 6827 , 323, 114), // #1127 + INST(Vpcmpw , VexRvmi_Lx , V(660F3A,3F,_,x,_,1,4,FVM), 0 , 164, 0 , 6835 , 323, 114), // #1128 + INST(Vpcomb , VexRvmi , V(XOP_M8,CC,_,0,0,_,_,_ ), 0 , 163, 0 , 6842 , 238, 125), // #1129 + INST(Vpcomd , VexRvmi , V(XOP_M8,CE,_,0,0,_,_,_ ), 0 , 163, 0 , 6849 , 238, 125), // #1130 + INST(Vpcompressb , VexMr_Lx , V(660F38,63,_,x,_,0,0,T1S), 0 , 160, 0 , 6856 , 207, 136), // #1131 INST(Vpcompressd , VexMr_Lx , V(660F38,8B,_,x,_,0,2,T1S), 0 , 111, 0 , 6868 , 207, 112), // #1132 INST(Vpcompressq , VexMr_Lx , V(660F38,8B,_,x,_,1,3,T1S), 0 , 110, 0 , 6880 , 207, 112), // #1133 - INST(Vpcompressw , VexMr_Lx , V(660F38,63,_,x,_,1,1,T1S), 0 , 166, 0 , 6892 , 207, 136), // #1134 - INST(Vpcomq , VexRvmi , V(XOP_M8,CF,_,0,0,_,_,_ ), 0 , 164, 0 , 6904 , 238, 125), // #1135 - INST(Vpcomub , VexRvmi , V(XOP_M8,EC,_,0,0,_,_,_ ), 0 , 164, 0 , 6911 , 238, 125), // #1136 - INST(Vpcomud , VexRvmi , V(XOP_M8,EE,_,0,0,_,_,_ ), 0 , 164, 0 , 6919 , 238, 125), // #1137 - INST(Vpcomuq , VexRvmi , V(XOP_M8,EF,_,0,0,_,_,_ ), 0 , 164, 0 , 6927 , 238, 125), // #1138 - INST(Vpcomuw , VexRvmi , V(XOP_M8,ED,_,0,0,_,_,_ ), 0 , 164, 0 , 6935 , 238, 125), // #1139 - INST(Vpcomw , VexRvmi , V(XOP_M8,CD,_,0,0,_,_,_ ), 0 , 164, 0 , 6943 , 238, 125), // #1140 + INST(Vpcompressw , VexMr_Lx , V(660F38,63,_,x,_,1,1,T1S), 0 , 165, 0 , 6892 , 207, 136), // #1134 + INST(Vpcomq , VexRvmi , V(XOP_M8,CF,_,0,0,_,_,_ ), 0 , 163, 0 , 6904 , 238, 125), // #1135 + INST(Vpcomub , VexRvmi , V(XOP_M8,EC,_,0,0,_,_,_ ), 0 , 163, 0 , 6911 , 238, 125), // #1136 + INST(Vpcomud , VexRvmi , V(XOP_M8,EE,_,0,0,_,_,_ ), 0 , 163, 0 , 6919 , 238, 125), // #1137 + INST(Vpcomuq , VexRvmi , V(XOP_M8,EF,_,0,0,_,_,_ ), 0 , 163, 0 , 6927 , 238, 125), // #1138 + INST(Vpcomuw , VexRvmi , V(XOP_M8,ED,_,0,0,_,_,_ ), 0 , 163, 0 , 6935 , 238, 125), // #1139 + INST(Vpcomw , VexRvmi , V(XOP_M8,CD,_,0,0,_,_,_ ), 0 , 163, 0 , 6943 , 238, 125), // #1140 INST(Vpconflictd , VexRm_Lx , V(660F38,C4,_,x,_,0,4,FV ), 0 , 101, 0 , 6950 , 324, 133), // #1141 INST(Vpconflictq , VexRm_Lx , V(660F38,C4,_,x,_,1,4,FV ), 0 , 102, 0 , 6962 , 324, 133), // #1142 - INST(Vpdpbusd , VexRvm_Lx , V(660F38,50,_,x,_,0,_,FV ), 0 , 147, 0 , 6974 , 190, 137), // #1143 - INST(Vpdpbusds , VexRvm_Lx , V(660F38,51,_,x,_,0,_,FV ), 0 , 147, 0 , 6983 , 190, 137), // #1144 - INST(Vpdpwssd , VexRvm_Lx , V(660F38,52,_,x,_,0,_,FV ), 0 , 147, 0 , 6993 , 190, 137), // #1145 - INST(Vpdpwssds , VexRvm_Lx , V(660F38,53,_,x,_,0,_,FV ), 0 , 147, 0 , 7002 , 190, 137), // #1146 + INST(Vpdpbusd , VexRvm_Lx , V(660F38,50,_,x,_,0,4,FV ), 0 , 101, 0 , 6974 , 190, 137), // #1143 + INST(Vpdpbusds , VexRvm_Lx , V(660F38,51,_,x,_,0,4,FV ), 0 , 101, 0 , 6983 , 190, 137), // #1144 + INST(Vpdpwssd , VexRvm_Lx , V(660F38,52,_,x,_,0,4,FV ), 0 , 101, 0 , 6993 , 190, 137), // #1145 + INST(Vpdpwssds , VexRvm_Lx , V(660F38,53,_,x,_,0,4,FV ), 0 , 101, 0 , 7002 , 190, 137), // #1146 INST(Vperm2f128 , VexRvmi , V(660F3A,06,_,1,0,_,_,_ ), 0 , 132, 0 , 7012 , 325, 109), // #1147 INST(Vperm2i128 , VexRvmi , V(660F3A,46,_,1,0,_,_,_ ), 0 , 132, 0 , 7023 , 325, 116), // #1148 INST(Vpermb , VexRvm_Lx , V(660F38,8D,_,x,_,0,4,FVM), 0 , 98 , 0 , 7034 , 189, 138), // #1149 @@ -1238,7 +1238,7 @@ const InstDB::InstInfo InstDB::_instInfoTable[] = { INST(Vpermil2ps , VexRvrmiRvmri_Lx , V(660F3A,48,_,x,x,_,_,_ ), 0 , 67 , 0 , 7115 , 327, 125), // #1158 INST(Vpermilpd , VexRvmRmi_Lx , V(660F38,0D,_,x,0,1,4,FV ), V(660F3A,05,_,x,0,1,4,FV ), 102, 105, 7126 , 328, 107), // #1159 INST(Vpermilps , VexRvmRmi_Lx , V(660F38,0C,_,x,0,0,4,FV ), V(660F3A,04,_,x,0,0,4,FV ), 101, 106, 7136 , 328, 107), // #1160 - INST(Vpermpd , VexRmi , V(660F3A,01,_,1,1,_,_,_ ), 0 , 167, 0 , 7146 , 329, 116), // #1161 + INST(Vpermpd , VexRmi , V(660F3A,01,_,1,1,_,_,_ ), 0 , 166, 0 , 7146 , 329, 116), // #1161 INST(Vpermps , VexRvm , V(660F38,16,_,1,0,_,_,_ ), 0 , 104, 0 , 7154 , 330, 116), // #1162 INST(Vpermq , VexRvmRmi_Lx , V(660F38,36,_,x,_,1,4,FV ), V(660F3A,00,_,x,1,1,4,FV ), 102, 107, 7162 , 331, 126), // #1163 INST(Vpermt2b , VexRvm_Lx , V(660F38,7D,_,x,_,0,4,FVM), 0 , 98 , 0 , 7169 , 189, 138), // #1164 @@ -1248,14 +1248,14 @@ const InstDB::InstInfo InstDB::_instInfoTable[] = { INST(Vpermt2q , VexRvm_Lx , V(660F38,7E,_,x,_,1,4,FV ), 0 , 102, 0 , 7207 , 191, 112), // #1168 INST(Vpermt2w , VexRvm_Lx , V(660F38,7D,_,x,_,1,4,FVM), 0 , 103, 0 , 7216 , 189, 114), // #1169 INST(Vpermw , VexRvm_Lx , V(660F38,8D,_,x,_,1,4,FVM), 0 , 103, 0 , 7225 , 189, 114), // #1170 - INST(Vpexpandb , VexRm_Lx , V(660F38,62,_,x,_,0,0,T1S), 0 , 161, 0 , 7232 , 241, 136), // #1171 + INST(Vpexpandb , VexRm_Lx , V(660F38,62,_,x,_,0,0,T1S), 0 , 160, 0 , 7232 , 241, 136), // #1171 INST(Vpexpandd , VexRm_Lx , V(660F38,89,_,x,_,0,2,T1S), 0 , 111, 0 , 7242 , 241, 112), // #1172 INST(Vpexpandq , VexRm_Lx , V(660F38,89,_,x,_,1,3,T1S), 0 , 110, 0 , 7252 , 241, 112), // #1173 - INST(Vpexpandw , VexRm_Lx , V(660F38,62,_,x,_,1,1,T1S), 0 , 166, 0 , 7262 , 241, 136), // #1174 - INST(Vpextrb , VexMri , V(660F3A,14,_,0,0,I,0,T1S), 0 , 168, 0 , 7272 , 332, 139), // #1175 + INST(Vpexpandw , VexRm_Lx , V(660F38,62,_,x,_,1,1,T1S), 0 , 165, 0 , 7262 , 241, 136), // #1174 + INST(Vpextrb , VexMri , V(660F3A,14,_,0,0,I,0,T1S), 0 , 167, 0 , 7272 , 332, 139), // #1175 INST(Vpextrd , VexMri , V(660F3A,16,_,0,0,0,2,T1S), 0 , 137, 0 , 7280 , 245, 140), // #1176 - INST(Vpextrq , VexMri , V(660F3A,16,_,0,1,1,3,T1S), 0 , 169, 0 , 7288 , 333, 140), // #1177 - INST(Vpextrw , VexMri , V(660F3A,15,_,0,0,I,1,T1S), 0 , 170, 0 , 7296 , 334, 139), // #1178 + INST(Vpextrq , VexMri , V(660F3A,16,_,0,1,1,3,T1S), 0 , 168, 0 , 7288 , 333, 140), // #1177 + INST(Vpextrw , VexMri , V(660F3A,15,_,0,0,I,1,T1S), 0 , 169, 0 , 7296 , 334, 139), // #1178 INST(Vpgatherdd , VexRmvRm_VM , V(660F38,90,_,x,0,_,_,_ ), V(660F38,90,_,x,_,0,2,T1S), 88 , 108, 7304 , 261, 126), // #1179 INST(Vpgatherdq , VexRmvRm_VM , V(660F38,90,_,x,1,_,_,_ ), V(660F38,90,_,x,_,1,3,T1S), 141, 109, 7315 , 260, 126), // #1180 INST(Vpgatherqd , VexRmvRm_VM , V(660F38,91,_,x,0,_,_,_ ), V(660F38,91,_,x,_,0,2,T1S), 88 , 110, 7326 , 266, 126), // #1181 @@ -1282,92 +1282,92 @@ const InstDB::InstInfo InstDB::_instInfoTable[] = { INST(Vphsubsw , VexRvm_Lx , V(660F38,07,_,x,I,_,_,_ ), 0 , 88 , 0 , 7525 , 179, 129), // #1202 INST(Vphsubw , VexRvm_Lx , V(660F38,05,_,x,I,_,_,_ ), 0 , 88 , 0 , 7534 , 179, 129), // #1203 INST(Vphsubwd , VexRm , V(XOP_M9,E2,_,0,0,_,_,_ ), 0 , 72 , 0 , 7542 , 181, 125), // #1204 - INST(Vpinsrb , VexRvmi , V(660F3A,20,_,0,0,I,0,T1S), 0 , 168, 0 , 7551 , 335, 139), // #1205 + INST(Vpinsrb , VexRvmi , V(660F3A,20,_,0,0,I,0,T1S), 0 , 167, 0 , 7551 , 335, 139), // #1205 INST(Vpinsrd , VexRvmi , V(660F3A,22,_,0,0,0,2,T1S), 0 , 137, 0 , 7559 , 336, 140), // #1206 - INST(Vpinsrq , VexRvmi , V(660F3A,22,_,0,1,1,3,T1S), 0 , 169, 0 , 7567 , 337, 140), // #1207 - INST(Vpinsrw , VexRvmi , V(660F00,C4,_,0,0,I,1,T1S), 0 , 171, 0 , 7575 , 338, 139), // #1208 + INST(Vpinsrq , VexRvmi , V(660F3A,22,_,0,1,1,3,T1S), 0 , 168, 0 , 7567 , 337, 140), // #1207 + INST(Vpinsrw , VexRvmi , V(660F00,C4,_,0,0,I,1,T1S), 0 , 170, 0 , 7575 , 338, 139), // #1208 INST(Vplzcntd , VexRm_Lx , V(660F38,44,_,x,_,0,4,FV ), 0 , 101, 0 , 7583 , 324, 133), // #1209 INST(Vplzcntq , VexRm_Lx , V(660F38,44,_,x,_,1,4,FV ), 0 , 102, 0 , 7592 , 339, 133), // #1210 - INST(Vpmacsdd , VexRvmr , V(XOP_M8,9E,_,0,0,_,_,_ ), 0 , 164, 0 , 7601 , 340, 125), // #1211 - INST(Vpmacsdqh , VexRvmr , V(XOP_M8,9F,_,0,0,_,_,_ ), 0 , 164, 0 , 7610 , 340, 125), // #1212 - INST(Vpmacsdql , VexRvmr , V(XOP_M8,97,_,0,0,_,_,_ ), 0 , 164, 0 , 7620 , 340, 125), // #1213 - INST(Vpmacssdd , VexRvmr , V(XOP_M8,8E,_,0,0,_,_,_ ), 0 , 164, 0 , 7630 , 340, 125), // #1214 - INST(Vpmacssdqh , VexRvmr , V(XOP_M8,8F,_,0,0,_,_,_ ), 0 , 164, 0 , 7640 , 340, 125), // #1215 - INST(Vpmacssdql , VexRvmr , V(XOP_M8,87,_,0,0,_,_,_ ), 0 , 164, 0 , 7651 , 340, 125), // #1216 - INST(Vpmacsswd , VexRvmr , V(XOP_M8,86,_,0,0,_,_,_ ), 0 , 164, 0 , 7662 , 340, 125), // #1217 - INST(Vpmacssww , VexRvmr , V(XOP_M8,85,_,0,0,_,_,_ ), 0 , 164, 0 , 7672 , 340, 125), // #1218 - INST(Vpmacswd , VexRvmr , V(XOP_M8,96,_,0,0,_,_,_ ), 0 , 164, 0 , 7682 , 340, 125), // #1219 - INST(Vpmacsww , VexRvmr , V(XOP_M8,95,_,0,0,_,_,_ ), 0 , 164, 0 , 7691 , 340, 125), // #1220 - INST(Vpmadcsswd , VexRvmr , V(XOP_M8,A6,_,0,0,_,_,_ ), 0 , 164, 0 , 7700 , 340, 125), // #1221 - INST(Vpmadcswd , VexRvmr , V(XOP_M8,B6,_,0,0,_,_,_ ), 0 , 164, 0 , 7711 , 340, 125), // #1222 + INST(Vpmacsdd , VexRvmr , V(XOP_M8,9E,_,0,0,_,_,_ ), 0 , 163, 0 , 7601 , 340, 125), // #1211 + INST(Vpmacsdqh , VexRvmr , V(XOP_M8,9F,_,0,0,_,_,_ ), 0 , 163, 0 , 7610 , 340, 125), // #1212 + INST(Vpmacsdql , VexRvmr , V(XOP_M8,97,_,0,0,_,_,_ ), 0 , 163, 0 , 7620 , 340, 125), // #1213 + INST(Vpmacssdd , VexRvmr , V(XOP_M8,8E,_,0,0,_,_,_ ), 0 , 163, 0 , 7630 , 340, 125), // #1214 + INST(Vpmacssdqh , VexRvmr , V(XOP_M8,8F,_,0,0,_,_,_ ), 0 , 163, 0 , 7640 , 340, 125), // #1215 + INST(Vpmacssdql , VexRvmr , V(XOP_M8,87,_,0,0,_,_,_ ), 0 , 163, 0 , 7651 , 340, 125), // #1216 + INST(Vpmacsswd , VexRvmr , V(XOP_M8,86,_,0,0,_,_,_ ), 0 , 163, 0 , 7662 , 340, 125), // #1217 + INST(Vpmacssww , VexRvmr , V(XOP_M8,85,_,0,0,_,_,_ ), 0 , 163, 0 , 7672 , 340, 125), // #1218 + INST(Vpmacswd , VexRvmr , V(XOP_M8,96,_,0,0,_,_,_ ), 0 , 163, 0 , 7682 , 340, 125), // #1219 + INST(Vpmacsww , VexRvmr , V(XOP_M8,95,_,0,0,_,_,_ ), 0 , 163, 0 , 7691 , 340, 125), // #1220 + INST(Vpmadcsswd , VexRvmr , V(XOP_M8,A6,_,0,0,_,_,_ ), 0 , 163, 0 , 7700 , 340, 125), // #1221 + INST(Vpmadcswd , VexRvmr , V(XOP_M8,B6,_,0,0,_,_,_ ), 0 , 163, 0 , 7711 , 340, 125), // #1222 INST(Vpmadd52huq , VexRvm_Lx , V(660F38,B5,_,x,_,1,4,FV ), 0 , 102, 0 , 7721 , 191, 141), // #1223 INST(Vpmadd52luq , VexRvm_Lx , V(660F38,B4,_,x,_,1,4,FV ), 0 , 102, 0 , 7733 , 191, 141), // #1224 INST(Vpmaddubsw , VexRvm_Lx , V(660F38,04,_,x,I,I,4,FVM), 0 , 98 , 0 , 7745 , 272, 131), // #1225 - INST(Vpmaddwd , VexRvm_Lx , V(660F00,F5,_,x,I,I,4,FVM), 0 , 153, 0 , 7756 , 272, 131), // #1226 + INST(Vpmaddwd , VexRvm_Lx , V(660F00,F5,_,x,I,I,4,FVM), 0 , 152, 0 , 7756 , 272, 131), // #1226 INST(Vpmaskmovd , VexRvmMvr_Lx , V(660F38,8C,_,x,0,_,_,_ ), V(660F38,8E,_,x,0,_,_,_ ), 88 , 112, 7765 , 280, 116), // #1227 INST(Vpmaskmovq , VexRvmMvr_Lx , V(660F38,8C,_,x,1,_,_,_ ), V(660F38,8E,_,x,1,_,_,_ ), 141, 113, 7776 , 280, 116), // #1228 INST(Vpmaxsb , VexRvm_Lx , V(660F38,3C,_,x,I,I,4,FVM), 0 , 98 , 0 , 7787 , 341, 131), // #1229 INST(Vpmaxsd , VexRvm_Lx , V(660F38,3D,_,x,I,0,4,FV ), 0 , 101, 0 , 7795 , 188, 117), // #1230 INST(Vpmaxsq , VexRvm_Lx , V(660F38,3D,_,x,_,1,4,FV ), 0 , 102, 0 , 7803 , 191, 112), // #1231 - INST(Vpmaxsw , VexRvm_Lx , V(660F00,EE,_,x,I,I,4,FVM), 0 , 153, 0 , 7811 , 341, 131), // #1232 - INST(Vpmaxub , VexRvm_Lx , V(660F00,DE,_,x,I,I,4,FVM), 0 , 153, 0 , 7819 , 341, 131), // #1233 + INST(Vpmaxsw , VexRvm_Lx , V(660F00,EE,_,x,I,I,4,FVM), 0 , 152, 0 , 7811 , 341, 131), // #1232 + INST(Vpmaxub , VexRvm_Lx , V(660F00,DE,_,x,I,I,4,FVM), 0 , 152, 0 , 7819 , 341, 131), // #1233 INST(Vpmaxud , VexRvm_Lx , V(660F38,3F,_,x,I,0,4,FV ), 0 , 101, 0 , 7827 , 188, 117), // #1234 INST(Vpmaxuq , VexRvm_Lx , V(660F38,3F,_,x,_,1,4,FV ), 0 , 102, 0 , 7835 , 191, 112), // #1235 INST(Vpmaxuw , VexRvm_Lx , V(660F38,3E,_,x,I,I,4,FVM), 0 , 98 , 0 , 7843 , 341, 131), // #1236 INST(Vpminsb , VexRvm_Lx , V(660F38,38,_,x,I,I,4,FVM), 0 , 98 , 0 , 7851 , 341, 131), // #1237 INST(Vpminsd , VexRvm_Lx , V(660F38,39,_,x,I,0,4,FV ), 0 , 101, 0 , 7859 , 188, 117), // #1238 INST(Vpminsq , VexRvm_Lx , V(660F38,39,_,x,_,1,4,FV ), 0 , 102, 0 , 7867 , 191, 112), // #1239 - INST(Vpminsw , VexRvm_Lx , V(660F00,EA,_,x,I,I,4,FVM), 0 , 153, 0 , 7875 , 341, 131), // #1240 - INST(Vpminub , VexRvm_Lx , V(660F00,DA,_,x,I,_,4,FVM), 0 , 153, 0 , 7883 , 341, 131), // #1241 + INST(Vpminsw , VexRvm_Lx , V(660F00,EA,_,x,I,I,4,FVM), 0 , 152, 0 , 7875 , 341, 131), // #1240 + INST(Vpminub , VexRvm_Lx , V(660F00,DA,_,x,I,_,4,FVM), 0 , 152, 0 , 7883 , 341, 131), // #1241 INST(Vpminud , VexRvm_Lx , V(660F38,3B,_,x,I,0,4,FV ), 0 , 101, 0 , 7891 , 188, 117), // #1242 INST(Vpminuq , VexRvm_Lx , V(660F38,3B,_,x,_,1,4,FV ), 0 , 102, 0 , 7899 , 191, 112), // #1243 INST(Vpminuw , VexRvm_Lx , V(660F38,3A,_,x,I,_,4,FVM), 0 , 98 , 0 , 7907 , 341, 131), // #1244 INST(Vpmovb2m , VexRm_Lx , V(F30F38,29,_,x,_,0,_,_ ), 0 , 82 , 0 , 7915 , 342, 114), // #1245 INST(Vpmovd2m , VexRm_Lx , V(F30F38,39,_,x,_,0,_,_ ), 0 , 82 , 0 , 7924 , 342, 115), // #1246 - INST(Vpmovdb , VexMr_Lx , V(F30F38,31,_,x,_,0,2,QVM), 0 , 172, 0 , 7933 , 343, 112), // #1247 - INST(Vpmovdw , VexMr_Lx , V(F30F38,33,_,x,_,0,3,HVM), 0 , 173, 0 , 7941 , 344, 112), // #1248 + INST(Vpmovdb , VexMr_Lx , V(F30F38,31,_,x,_,0,2,QVM), 0 , 171, 0 , 7933 , 343, 112), // #1247 + INST(Vpmovdw , VexMr_Lx , V(F30F38,33,_,x,_,0,3,HVM), 0 , 172, 0 , 7941 , 344, 112), // #1248 INST(Vpmovm2b , VexRm_Lx , V(F30F38,28,_,x,_,0,_,_ ), 0 , 82 , 0 , 7949 , 310, 114), // #1249 INST(Vpmovm2d , VexRm_Lx , V(F30F38,38,_,x,_,0,_,_ ), 0 , 82 , 0 , 7958 , 310, 115), // #1250 - INST(Vpmovm2q , VexRm_Lx , V(F30F38,38,_,x,_,1,_,_ ), 0 , 162, 0 , 7967 , 310, 115), // #1251 - INST(Vpmovm2w , VexRm_Lx , V(F30F38,28,_,x,_,1,_,_ ), 0 , 162, 0 , 7976 , 310, 114), // #1252 + INST(Vpmovm2q , VexRm_Lx , V(F30F38,38,_,x,_,1,_,_ ), 0 , 161, 0 , 7967 , 310, 115), // #1251 + INST(Vpmovm2w , VexRm_Lx , V(F30F38,28,_,x,_,1,_,_ ), 0 , 161, 0 , 7976 , 310, 114), // #1252 INST(Vpmovmskb , VexRm_Lx , V(660F00,D7,_,x,I,_,_,_ ), 0 , 63 , 0 , 7985 , 293, 129), // #1253 - INST(Vpmovq2m , VexRm_Lx , V(F30F38,39,_,x,_,1,_,_ ), 0 , 162, 0 , 7995 , 342, 115), // #1254 - INST(Vpmovqb , VexMr_Lx , V(F30F38,32,_,x,_,0,1,OVM), 0 , 174, 0 , 8004 , 345, 112), // #1255 - INST(Vpmovqd , VexMr_Lx , V(F30F38,35,_,x,_,0,3,HVM), 0 , 173, 0 , 8012 , 344, 112), // #1256 - INST(Vpmovqw , VexMr_Lx , V(F30F38,34,_,x,_,0,2,QVM), 0 , 172, 0 , 8020 , 343, 112), // #1257 - INST(Vpmovsdb , VexMr_Lx , V(F30F38,21,_,x,_,0,2,QVM), 0 , 172, 0 , 8028 , 343, 112), // #1258 - INST(Vpmovsdw , VexMr_Lx , V(F30F38,23,_,x,_,0,3,HVM), 0 , 173, 0 , 8037 , 344, 112), // #1259 - INST(Vpmovsqb , VexMr_Lx , V(F30F38,22,_,x,_,0,1,OVM), 0 , 174, 0 , 8046 , 345, 112), // #1260 - INST(Vpmovsqd , VexMr_Lx , V(F30F38,25,_,x,_,0,3,HVM), 0 , 173, 0 , 8055 , 344, 112), // #1261 - INST(Vpmovsqw , VexMr_Lx , V(F30F38,24,_,x,_,0,2,QVM), 0 , 172, 0 , 8064 , 343, 112), // #1262 - INST(Vpmovswb , VexMr_Lx , V(F30F38,20,_,x,_,0,3,HVM), 0 , 173, 0 , 8073 , 344, 114), // #1263 - INST(Vpmovsxbd , VexRm_Lx , V(660F38,21,_,x,I,I,2,QVM), 0 , 175, 0 , 8082 , 346, 117), // #1264 - INST(Vpmovsxbq , VexRm_Lx , V(660F38,22,_,x,I,I,1,OVM), 0 , 176, 0 , 8092 , 347, 117), // #1265 + INST(Vpmovq2m , VexRm_Lx , V(F30F38,39,_,x,_,1,_,_ ), 0 , 161, 0 , 7995 , 342, 115), // #1254 + INST(Vpmovqb , VexMr_Lx , V(F30F38,32,_,x,_,0,1,OVM), 0 , 173, 0 , 8004 , 345, 112), // #1255 + INST(Vpmovqd , VexMr_Lx , V(F30F38,35,_,x,_,0,3,HVM), 0 , 172, 0 , 8012 , 344, 112), // #1256 + INST(Vpmovqw , VexMr_Lx , V(F30F38,34,_,x,_,0,2,QVM), 0 , 171, 0 , 8020 , 343, 112), // #1257 + INST(Vpmovsdb , VexMr_Lx , V(F30F38,21,_,x,_,0,2,QVM), 0 , 171, 0 , 8028 , 343, 112), // #1258 + INST(Vpmovsdw , VexMr_Lx , V(F30F38,23,_,x,_,0,3,HVM), 0 , 172, 0 , 8037 , 344, 112), // #1259 + INST(Vpmovsqb , VexMr_Lx , V(F30F38,22,_,x,_,0,1,OVM), 0 , 173, 0 , 8046 , 345, 112), // #1260 + INST(Vpmovsqd , VexMr_Lx , V(F30F38,25,_,x,_,0,3,HVM), 0 , 172, 0 , 8055 , 344, 112), // #1261 + INST(Vpmovsqw , VexMr_Lx , V(F30F38,24,_,x,_,0,2,QVM), 0 , 171, 0 , 8064 , 343, 112), // #1262 + INST(Vpmovswb , VexMr_Lx , V(F30F38,20,_,x,_,0,3,HVM), 0 , 172, 0 , 8073 , 344, 114), // #1263 + INST(Vpmovsxbd , VexRm_Lx , V(660F38,21,_,x,I,I,2,QVM), 0 , 174, 0 , 8082 , 346, 117), // #1264 + INST(Vpmovsxbq , VexRm_Lx , V(660F38,22,_,x,I,I,1,OVM), 0 , 175, 0 , 8092 , 347, 117), // #1265 INST(Vpmovsxbw , VexRm_Lx , V(660F38,20,_,x,I,I,3,HVM), 0 , 117, 0 , 8102 , 348, 131), // #1266 INST(Vpmovsxdq , VexRm_Lx , V(660F38,25,_,x,I,0,3,HVM), 0 , 117, 0 , 8112 , 348, 117), // #1267 INST(Vpmovsxwd , VexRm_Lx , V(660F38,23,_,x,I,I,3,HVM), 0 , 117, 0 , 8122 , 348, 117), // #1268 - INST(Vpmovsxwq , VexRm_Lx , V(660F38,24,_,x,I,I,2,QVM), 0 , 175, 0 , 8132 , 346, 117), // #1269 - INST(Vpmovusdb , VexMr_Lx , V(F30F38,11,_,x,_,0,2,QVM), 0 , 172, 0 , 8142 , 343, 112), // #1270 - INST(Vpmovusdw , VexMr_Lx , V(F30F38,13,_,x,_,0,3,HVM), 0 , 173, 0 , 8152 , 344, 112), // #1271 - INST(Vpmovusqb , VexMr_Lx , V(F30F38,12,_,x,_,0,1,OVM), 0 , 174, 0 , 8162 , 345, 112), // #1272 - INST(Vpmovusqd , VexMr_Lx , V(F30F38,15,_,x,_,0,3,HVM), 0 , 173, 0 , 8172 , 344, 112), // #1273 - INST(Vpmovusqw , VexMr_Lx , V(F30F38,14,_,x,_,0,2,QVM), 0 , 172, 0 , 8182 , 343, 112), // #1274 - INST(Vpmovuswb , VexMr_Lx , V(F30F38,10,_,x,_,0,3,HVM), 0 , 173, 0 , 8192 , 344, 114), // #1275 - INST(Vpmovw2m , VexRm_Lx , V(F30F38,29,_,x,_,1,_,_ ), 0 , 162, 0 , 8202 , 342, 114), // #1276 - INST(Vpmovwb , VexMr_Lx , V(F30F38,30,_,x,_,0,3,HVM), 0 , 173, 0 , 8211 , 344, 114), // #1277 - INST(Vpmovzxbd , VexRm_Lx , V(660F38,31,_,x,I,I,2,QVM), 0 , 175, 0 , 8219 , 346, 117), // #1278 - INST(Vpmovzxbq , VexRm_Lx , V(660F38,32,_,x,I,I,1,OVM), 0 , 176, 0 , 8229 , 347, 117), // #1279 + INST(Vpmovsxwq , VexRm_Lx , V(660F38,24,_,x,I,I,2,QVM), 0 , 174, 0 , 8132 , 346, 117), // #1269 + INST(Vpmovusdb , VexMr_Lx , V(F30F38,11,_,x,_,0,2,QVM), 0 , 171, 0 , 8142 , 343, 112), // #1270 + INST(Vpmovusdw , VexMr_Lx , V(F30F38,13,_,x,_,0,3,HVM), 0 , 172, 0 , 8152 , 344, 112), // #1271 + INST(Vpmovusqb , VexMr_Lx , V(F30F38,12,_,x,_,0,1,OVM), 0 , 173, 0 , 8162 , 345, 112), // #1272 + INST(Vpmovusqd , VexMr_Lx , V(F30F38,15,_,x,_,0,3,HVM), 0 , 172, 0 , 8172 , 344, 112), // #1273 + INST(Vpmovusqw , VexMr_Lx , V(F30F38,14,_,x,_,0,2,QVM), 0 , 171, 0 , 8182 , 343, 112), // #1274 + INST(Vpmovuswb , VexMr_Lx , V(F30F38,10,_,x,_,0,3,HVM), 0 , 172, 0 , 8192 , 344, 114), // #1275 + INST(Vpmovw2m , VexRm_Lx , V(F30F38,29,_,x,_,1,_,_ ), 0 , 161, 0 , 8202 , 342, 114), // #1276 + INST(Vpmovwb , VexMr_Lx , V(F30F38,30,_,x,_,0,3,HVM), 0 , 172, 0 , 8211 , 344, 114), // #1277 + INST(Vpmovzxbd , VexRm_Lx , V(660F38,31,_,x,I,I,2,QVM), 0 , 174, 0 , 8219 , 346, 117), // #1278 + INST(Vpmovzxbq , VexRm_Lx , V(660F38,32,_,x,I,I,1,OVM), 0 , 175, 0 , 8229 , 347, 117), // #1279 INST(Vpmovzxbw , VexRm_Lx , V(660F38,30,_,x,I,I,3,HVM), 0 , 117, 0 , 8239 , 348, 131), // #1280 INST(Vpmovzxdq , VexRm_Lx , V(660F38,35,_,x,I,0,3,HVM), 0 , 117, 0 , 8249 , 348, 117), // #1281 INST(Vpmovzxwd , VexRm_Lx , V(660F38,33,_,x,I,I,3,HVM), 0 , 117, 0 , 8259 , 348, 117), // #1282 - INST(Vpmovzxwq , VexRm_Lx , V(660F38,34,_,x,I,I,2,QVM), 0 , 175, 0 , 8269 , 346, 117), // #1283 + INST(Vpmovzxwq , VexRm_Lx , V(660F38,34,_,x,I,I,2,QVM), 0 , 174, 0 , 8269 , 346, 117), // #1283 INST(Vpmuldq , VexRvm_Lx , V(660F38,28,_,x,I,1,4,FV ), 0 , 102, 0 , 8279 , 185, 117), // #1284 INST(Vpmulhrsw , VexRvm_Lx , V(660F38,0B,_,x,I,I,4,FVM), 0 , 98 , 0 , 8287 , 272, 131), // #1285 - INST(Vpmulhuw , VexRvm_Lx , V(660F00,E4,_,x,I,I,4,FVM), 0 , 153, 0 , 8297 , 272, 131), // #1286 - INST(Vpmulhw , VexRvm_Lx , V(660F00,E5,_,x,I,I,4,FVM), 0 , 153, 0 , 8306 , 272, 131), // #1287 + INST(Vpmulhuw , VexRvm_Lx , V(660F00,E4,_,x,I,I,4,FVM), 0 , 152, 0 , 8297 , 272, 131), // #1286 + INST(Vpmulhw , VexRvm_Lx , V(660F00,E5,_,x,I,I,4,FVM), 0 , 152, 0 , 8306 , 272, 131), // #1287 INST(Vpmulld , VexRvm_Lx , V(660F38,40,_,x,I,0,4,FV ), 0 , 101, 0 , 8314 , 186, 117), // #1288 INST(Vpmullq , VexRvm_Lx , V(660F38,40,_,x,_,1,4,FV ), 0 , 102, 0 , 8322 , 191, 115), // #1289 - INST(Vpmullw , VexRvm_Lx , V(660F00,D5,_,x,I,I,4,FVM), 0 , 153, 0 , 8330 , 272, 131), // #1290 + INST(Vpmullw , VexRvm_Lx , V(660F00,D5,_,x,I,I,4,FVM), 0 , 152, 0 , 8330 , 272, 131), // #1290 INST(Vpmultishiftqb , VexRvm_Lx , V(660F38,83,_,x,_,1,4,FV ), 0 , 102, 0 , 8338 , 191, 138), // #1291 INST(Vpmuludq , VexRvm_Lx , V(660F00,F4,_,x,I,1,4,FV ), 0 , 93 , 0 , 8353 , 185, 117), // #1292 INST(Vpopcntb , VexRm_Lx , V(660F38,54,_,x,_,0,4,FV ), 0 , 101, 0 , 8362 , 241, 142), // #1293 @@ -1377,9 +1377,9 @@ const InstDB::InstInfo InstDB::_instInfoTable[] = { INST(Vpor , VexRvm_Lx , V(660F00,EB,_,x,I,_,_,_ ), 0 , 63 , 0 , 8398 , 302, 129), // #1297 INST(Vpord , VexRvm_Lx , V(660F00,EB,_,x,_,0,4,FV ), 0 , 118, 0 , 8403 , 303, 112), // #1298 INST(Vporq , VexRvm_Lx , V(660F00,EB,_,x,_,1,4,FV ), 0 , 93 , 0 , 8409 , 307, 112), // #1299 - INST(Vpperm , VexRvrmRvmr , V(XOP_M8,A3,_,0,x,_,_,_ ), 0 , 164, 0 , 8415 , 349, 125), // #1300 - INST(Vprold , VexVmi_Lx , V(660F00,72,1,x,_,0,4,FV ), 0 , 177, 0 , 8422 , 350, 112), // #1301 - INST(Vprolq , VexVmi_Lx , V(660F00,72,1,x,_,1,4,FV ), 0 , 178, 0 , 8429 , 351, 112), // #1302 + INST(Vpperm , VexRvrmRvmr , V(XOP_M8,A3,_,0,x,_,_,_ ), 0 , 163, 0 , 8415 , 349, 125), // #1300 + INST(Vprold , VexVmi_Lx , V(660F00,72,1,x,_,0,4,FV ), 0 , 176, 0 , 8422 , 350, 112), // #1301 + INST(Vprolq , VexVmi_Lx , V(660F00,72,1,x,_,1,4,FV ), 0 , 177, 0 , 8429 , 351, 112), // #1302 INST(Vprolvd , VexRvm_Lx , V(660F38,15,_,x,_,0,4,FV ), 0 , 101, 0 , 8436 , 190, 112), // #1303 INST(Vprolvq , VexRvm_Lx , V(660F38,15,_,x,_,1,4,FV ), 0 , 102, 0 , 8444 , 191, 112), // #1304 INST(Vprord , VexVmi_Lx , V(660F00,72,0,x,_,0,4,FV ), 0 , 118, 0 , 8452 , 350, 112), // #1305 @@ -1390,7 +1390,7 @@ const InstDB::InstInfo InstDB::_instInfoTable[] = { INST(Vprotd , VexRvmRmvRmi , V(XOP_M9,92,_,0,x,_,_,_ ), V(XOP_M8,C2,_,0,x,_,_,_ ), 72 , 115, 8489 , 352, 125), // #1310 INST(Vprotq , VexRvmRmvRmi , V(XOP_M9,93,_,0,x,_,_,_ ), V(XOP_M8,C3,_,0,x,_,_,_ ), 72 , 116, 8496 , 352, 125), // #1311 INST(Vprotw , VexRvmRmvRmi , V(XOP_M9,91,_,0,x,_,_,_ ), V(XOP_M8,C1,_,0,x,_,_,_ ), 72 , 117, 8503 , 352, 125), // #1312 - INST(Vpsadbw , VexRvm_Lx , V(660F00,F6,_,x,I,I,4,FVM), 0 , 153, 0 , 8510 , 180, 131), // #1313 + INST(Vpsadbw , VexRvm_Lx , V(660F00,F6,_,x,I,I,4,FVM), 0 , 152, 0 , 8510 , 180, 131), // #1313 INST(Vpscatterdd , VexMr_VM , V(660F38,A0,_,x,_,0,2,T1S), 0 , 111, 0 , 8518 , 353, 112), // #1314 INST(Vpscatterdq , VexMr_VM , V(660F38,A0,_,x,_,1,3,T1S), 0 , 110, 0 , 8530 , 353, 112), // #1315 INST(Vpscatterqd , VexMr_VM , V(660F38,A1,_,x,_,0,2,T1S), 0 , 111, 0 , 8542 , 354, 112), // #1316 @@ -1418,39 +1418,39 @@ const InstDB::InstInfo InstDB::_instInfoTable[] = { INST(Vpshufb , VexRvm_Lx , V(660F38,00,_,x,I,I,4,FVM), 0 , 98 , 0 , 8724 , 272, 131), // #1338 INST(Vpshufbitqmb , VexRvm_Lx , V(660F38,8F,_,x,0,0,4,FVM), 0 , 98 , 0 , 8732 , 357, 142), // #1339 INST(Vpshufd , VexRmi_Lx , V(660F00,70,_,x,I,0,4,FV ), 0 , 118, 0 , 8745 , 358, 117), // #1340 - INST(Vpshufhw , VexRmi_Lx , V(F30F00,70,_,x,I,I,4,FVM), 0 , 156, 0 , 8753 , 359, 131), // #1341 - INST(Vpshuflw , VexRmi_Lx , V(F20F00,70,_,x,I,I,4,FVM), 0 , 158, 0 , 8762 , 359, 131), // #1342 + INST(Vpshufhw , VexRmi_Lx , V(F30F00,70,_,x,I,I,4,FVM), 0 , 155, 0 , 8753 , 359, 131), // #1341 + INST(Vpshuflw , VexRmi_Lx , V(F20F00,70,_,x,I,I,4,FVM), 0 , 157, 0 , 8762 , 359, 131), // #1342 INST(Vpsignb , VexRvm_Lx , V(660F38,08,_,x,I,_,_,_ ), 0 , 88 , 0 , 8771 , 179, 129), // #1343 INST(Vpsignd , VexRvm_Lx , V(660F38,0A,_,x,I,_,_,_ ), 0 , 88 , 0 , 8779 , 179, 129), // #1344 INST(Vpsignw , VexRvm_Lx , V(660F38,09,_,x,I,_,_,_ ), 0 , 88 , 0 , 8787 , 179, 129), // #1345 - INST(Vpslld , VexRvmVmi_Lx , V(660F00,F2,_,x,I,0,4,128), V(660F00,72,6,x,I,0,4,FV ), 179, 118, 8795 , 360, 117), // #1346 - INST(Vpslldq , VexEvexVmi_Lx , V(660F00,73,7,x,I,I,4,FVM), 0 , 180, 0 , 8802 , 361, 131), // #1347 - INST(Vpsllq , VexRvmVmi_Lx , V(660F00,F3,_,x,I,1,4,128), V(660F00,73,6,x,I,1,4,FV ), 181, 119, 8810 , 362, 117), // #1348 + INST(Vpslld , VexRvmVmi_Lx , V(660F00,F2,_,x,I,0,4,128), V(660F00,72,6,x,I,0,4,FV ), 178, 118, 8795 , 360, 117), // #1346 + INST(Vpslldq , VexEvexVmi_Lx , V(660F00,73,7,x,I,I,4,FVM), 0 , 179, 0 , 8802 , 361, 131), // #1347 + INST(Vpsllq , VexRvmVmi_Lx , V(660F00,F3,_,x,I,1,4,128), V(660F00,73,6,x,I,1,4,FV ), 180, 119, 8810 , 362, 117), // #1348 INST(Vpsllvd , VexRvm_Lx , V(660F38,47,_,x,0,0,4,FV ), 0 , 101, 0 , 8817 , 186, 126), // #1349 INST(Vpsllvq , VexRvm_Lx , V(660F38,47,_,x,1,1,4,FV ), 0 , 139, 0 , 8825 , 185, 126), // #1350 INST(Vpsllvw , VexRvm_Lx , V(660F38,12,_,x,_,1,4,FVM), 0 , 103, 0 , 8833 , 189, 114), // #1351 - INST(Vpsllw , VexRvmVmi_Lx , V(660F00,F1,_,x,I,I,4,FVM), V(660F00,71,6,x,I,I,4,FVM), 153, 120, 8841 , 363, 131), // #1352 - INST(Vpsrad , VexRvmVmi_Lx , V(660F00,E2,_,x,I,0,4,128), V(660F00,72,4,x,I,0,4,FV ), 179, 121, 8848 , 360, 117), // #1353 - INST(Vpsraq , VexRvmVmi_Lx , V(660F00,E2,_,x,_,1,4,128), V(660F00,72,4,x,_,1,4,FV ), 181, 122, 8855 , 364, 112), // #1354 + INST(Vpsllw , VexRvmVmi_Lx , V(660F00,F1,_,x,I,I,4,FVM), V(660F00,71,6,x,I,I,4,FVM), 152, 120, 8841 , 363, 131), // #1352 + INST(Vpsrad , VexRvmVmi_Lx , V(660F00,E2,_,x,I,0,4,128), V(660F00,72,4,x,I,0,4,FV ), 178, 121, 8848 , 360, 117), // #1353 + INST(Vpsraq , VexRvmVmi_Lx , V(660F00,E2,_,x,_,1,4,128), V(660F00,72,4,x,_,1,4,FV ), 180, 122, 8855 , 364, 112), // #1354 INST(Vpsravd , VexRvm_Lx , V(660F38,46,_,x,0,0,4,FV ), 0 , 101, 0 , 8862 , 186, 126), // #1355 INST(Vpsravq , VexRvm_Lx , V(660F38,46,_,x,_,1,4,FV ), 0 , 102, 0 , 8870 , 191, 112), // #1356 INST(Vpsravw , VexRvm_Lx , V(660F38,11,_,x,_,1,4,FVM), 0 , 103, 0 , 8878 , 189, 114), // #1357 - INST(Vpsraw , VexRvmVmi_Lx , V(660F00,E1,_,x,I,I,4,128), V(660F00,71,4,x,I,I,4,FVM), 179, 123, 8886 , 363, 131), // #1358 - INST(Vpsrld , VexRvmVmi_Lx , V(660F00,D2,_,x,I,0,4,128), V(660F00,72,2,x,I,0,4,FV ), 179, 124, 8893 , 360, 117), // #1359 - INST(Vpsrldq , VexEvexVmi_Lx , V(660F00,73,3,x,I,I,4,FVM), 0 , 182, 0 , 8900 , 361, 131), // #1360 - INST(Vpsrlq , VexRvmVmi_Lx , V(660F00,D3,_,x,I,1,4,128), V(660F00,73,2,x,I,1,4,FV ), 181, 125, 8908 , 362, 117), // #1361 + INST(Vpsraw , VexRvmVmi_Lx , V(660F00,E1,_,x,I,I,4,128), V(660F00,71,4,x,I,I,4,FVM), 178, 123, 8886 , 363, 131), // #1358 + INST(Vpsrld , VexRvmVmi_Lx , V(660F00,D2,_,x,I,0,4,128), V(660F00,72,2,x,I,0,4,FV ), 178, 124, 8893 , 360, 117), // #1359 + INST(Vpsrldq , VexEvexVmi_Lx , V(660F00,73,3,x,I,I,4,FVM), 0 , 181, 0 , 8900 , 361, 131), // #1360 + INST(Vpsrlq , VexRvmVmi_Lx , V(660F00,D3,_,x,I,1,4,128), V(660F00,73,2,x,I,1,4,FV ), 180, 125, 8908 , 362, 117), // #1361 INST(Vpsrlvd , VexRvm_Lx , V(660F38,45,_,x,0,0,4,FV ), 0 , 101, 0 , 8915 , 186, 126), // #1362 INST(Vpsrlvq , VexRvm_Lx , V(660F38,45,_,x,1,1,4,FV ), 0 , 139, 0 , 8923 , 185, 126), // #1363 INST(Vpsrlvw , VexRvm_Lx , V(660F38,10,_,x,_,1,4,FVM), 0 , 103, 0 , 8931 , 189, 114), // #1364 - INST(Vpsrlw , VexRvmVmi_Lx , V(660F00,D1,_,x,I,I,4,128), V(660F00,71,2,x,I,I,4,FVM), 179, 126, 8939 , 363, 131), // #1365 - INST(Vpsubb , VexRvm_Lx , V(660F00,F8,_,x,I,I,4,FVM), 0 , 153, 0 , 8946 , 365, 131), // #1366 + INST(Vpsrlw , VexRvmVmi_Lx , V(660F00,D1,_,x,I,I,4,128), V(660F00,71,2,x,I,I,4,FVM), 178, 126, 8939 , 363, 131), // #1365 + INST(Vpsubb , VexRvm_Lx , V(660F00,F8,_,x,I,I,4,FVM), 0 , 152, 0 , 8946 , 365, 131), // #1366 INST(Vpsubd , VexRvm_Lx , V(660F00,FA,_,x,I,0,4,FV ), 0 , 118, 0 , 8953 , 366, 117), // #1367 INST(Vpsubq , VexRvm_Lx , V(660F00,FB,_,x,I,1,4,FV ), 0 , 93 , 0 , 8960 , 367, 117), // #1368 - INST(Vpsubsb , VexRvm_Lx , V(660F00,E8,_,x,I,I,4,FVM), 0 , 153, 0 , 8967 , 365, 131), // #1369 - INST(Vpsubsw , VexRvm_Lx , V(660F00,E9,_,x,I,I,4,FVM), 0 , 153, 0 , 8975 , 365, 131), // #1370 - INST(Vpsubusb , VexRvm_Lx , V(660F00,D8,_,x,I,I,4,FVM), 0 , 153, 0 , 8983 , 365, 131), // #1371 - INST(Vpsubusw , VexRvm_Lx , V(660F00,D9,_,x,I,I,4,FVM), 0 , 153, 0 , 8992 , 365, 131), // #1372 - INST(Vpsubw , VexRvm_Lx , V(660F00,F9,_,x,I,I,4,FVM), 0 , 153, 0 , 9001 , 365, 131), // #1373 + INST(Vpsubsb , VexRvm_Lx , V(660F00,E8,_,x,I,I,4,FVM), 0 , 152, 0 , 8967 , 365, 131), // #1369 + INST(Vpsubsw , VexRvm_Lx , V(660F00,E9,_,x,I,I,4,FVM), 0 , 152, 0 , 8975 , 365, 131), // #1370 + INST(Vpsubusb , VexRvm_Lx , V(660F00,D8,_,x,I,I,4,FVM), 0 , 152, 0 , 8983 , 365, 131), // #1371 + INST(Vpsubusw , VexRvm_Lx , V(660F00,D9,_,x,I,I,4,FVM), 0 , 152, 0 , 8992 , 365, 131), // #1372 + INST(Vpsubw , VexRvm_Lx , V(660F00,F9,_,x,I,I,4,FVM), 0 , 152, 0 , 9001 , 365, 131), // #1373 INST(Vpternlogd , VexRvmi_Lx , V(660F3A,25,_,x,_,0,4,FV ), 0 , 99 , 0 , 9008 , 183, 112), // #1374 INST(Vpternlogq , VexRvmi_Lx , V(660F3A,25,_,x,_,1,4,FV ), 0 , 100, 0 , 9019 , 184, 112), // #1375 INST(Vptest , VexRm_Lx , V(660F38,17,_,x,I,_,_,_ ), 0 , 88 , 0 , 9030 , 257, 135), // #1376 @@ -1458,18 +1458,18 @@ const InstDB::InstInfo InstDB::_instInfoTable[] = { INST(Vptestmd , VexRvm_Lx , V(660F38,27,_,x,_,0,4,FV ), 0 , 101, 0 , 9046 , 368, 112), // #1378 INST(Vptestmq , VexRvm_Lx , V(660F38,27,_,x,_,1,4,FV ), 0 , 102, 0 , 9055 , 369, 112), // #1379 INST(Vptestmw , VexRvm_Lx , V(660F38,26,_,x,_,1,4,FVM), 0 , 103, 0 , 9064 , 357, 114), // #1380 - INST(Vptestnmb , VexRvm_Lx , V(F30F38,26,_,x,_,0,4,FVM), 0 , 183, 0 , 9073 , 357, 114), // #1381 - INST(Vptestnmd , VexRvm_Lx , V(F30F38,27,_,x,_,0,4,FV ), 0 , 184, 0 , 9083 , 368, 112), // #1382 - INST(Vptestnmq , VexRvm_Lx , V(F30F38,27,_,x,_,1,4,FV ), 0 , 185, 0 , 9093 , 369, 112), // #1383 - INST(Vptestnmw , VexRvm_Lx , V(F30F38,26,_,x,_,1,4,FVM), 0 , 186, 0 , 9103 , 357, 114), // #1384 - INST(Vpunpckhbw , VexRvm_Lx , V(660F00,68,_,x,I,I,4,FVM), 0 , 153, 0 , 9113 , 272, 131), // #1385 + INST(Vptestnmb , VexRvm_Lx , V(F30F38,26,_,x,_,0,4,FVM), 0 , 182, 0 , 9073 , 357, 114), // #1381 + INST(Vptestnmd , VexRvm_Lx , V(F30F38,27,_,x,_,0,4,FV ), 0 , 183, 0 , 9083 , 368, 112), // #1382 + INST(Vptestnmq , VexRvm_Lx , V(F30F38,27,_,x,_,1,4,FV ), 0 , 184, 0 , 9093 , 369, 112), // #1383 + INST(Vptestnmw , VexRvm_Lx , V(F30F38,26,_,x,_,1,4,FVM), 0 , 185, 0 , 9103 , 357, 114), // #1384 + INST(Vpunpckhbw , VexRvm_Lx , V(660F00,68,_,x,I,I,4,FVM), 0 , 152, 0 , 9113 , 272, 131), // #1385 INST(Vpunpckhdq , VexRvm_Lx , V(660F00,6A,_,x,I,0,4,FV ), 0 , 118, 0 , 9124 , 186, 117), // #1386 INST(Vpunpckhqdq , VexRvm_Lx , V(660F00,6D,_,x,I,1,4,FV ), 0 , 93 , 0 , 9135 , 185, 117), // #1387 - INST(Vpunpckhwd , VexRvm_Lx , V(660F00,69,_,x,I,I,4,FVM), 0 , 153, 0 , 9147 , 272, 131), // #1388 - INST(Vpunpcklbw , VexRvm_Lx , V(660F00,60,_,x,I,I,4,FVM), 0 , 153, 0 , 9158 , 272, 131), // #1389 + INST(Vpunpckhwd , VexRvm_Lx , V(660F00,69,_,x,I,I,4,FVM), 0 , 152, 0 , 9147 , 272, 131), // #1388 + INST(Vpunpcklbw , VexRvm_Lx , V(660F00,60,_,x,I,I,4,FVM), 0 , 152, 0 , 9158 , 272, 131), // #1389 INST(Vpunpckldq , VexRvm_Lx , V(660F00,62,_,x,I,0,4,FV ), 0 , 118, 0 , 9169 , 186, 117), // #1390 INST(Vpunpcklqdq , VexRvm_Lx , V(660F00,6C,_,x,I,1,4,FV ), 0 , 93 , 0 , 9180 , 185, 117), // #1391 - INST(Vpunpcklwd , VexRvm_Lx , V(660F00,61,_,x,I,I,4,FVM), 0 , 153, 0 , 9192 , 272, 131), // #1392 + INST(Vpunpcklwd , VexRvm_Lx , V(660F00,61,_,x,I,I,4,FVM), 0 , 152, 0 , 9192 , 272, 131), // #1392 INST(Vpxor , VexRvm_Lx , V(660F00,EF,_,x,I,_,_,_ ), 0 , 63 , 0 , 9203 , 304, 129), // #1393 INST(Vpxord , VexRvm_Lx , V(660F00,EF,_,x,_,0,4,FV ), 0 , 118, 0 , 9209 , 305, 112), // #1394 INST(Vpxorq , VexRvm_Lx , V(660F00,EF,_,x,_,1,4,FV ), 0 , 93 , 0 , 9216 , 306, 112), // #1395 @@ -1486,7 +1486,7 @@ const InstDB::InstInfo InstDB::_instInfoTable[] = { INST(Vrcp28sd , VexRvm , V(660F38,CB,_,I,_,1,3,T1S), 0 , 110, 0 , 9313 , 267, 121), // #1406 INST(Vrcp28ss , VexRvm , V(660F38,CB,_,I,_,0,2,T1S), 0 , 111, 0 , 9322 , 268, 121), // #1407 INST(Vrcpps , VexRm_Lx , V(000F00,53,_,x,I,_,_,_ ), 0 , 66 , 0 , 9331 , 257, 109), // #1408 - INST(Vrcpss , VexRvm , V(F30F00,53,_,I,I,_,_,_ ), 0 , 154, 0 , 9338 , 372, 109), // #1409 + INST(Vrcpss , VexRvm , V(F30F00,53,_,I,I,_,_,_ ), 0 , 153, 0 , 9338 , 372, 109), // #1409 INST(Vreducepd , VexRmi_Lx , V(660F3A,56,_,x,_,1,4,FV ), 0 , 100, 0 , 9345 , 351, 115), // #1410 INST(Vreduceps , VexRmi_Lx , V(660F3A,56,_,x,_,0,4,FV ), 0 , 99 , 0 , 9355 , 350, 115), // #1411 INST(Vreducesd , VexRvmi , V(660F3A,57,_,I,_,1,3,T1S), 0 , 138, 0 , 9365 , 373, 62 ), // #1412 @@ -1508,21 +1508,21 @@ const InstDB::InstInfo InstDB::_instInfoTable[] = { INST(Vrsqrt28sd , VexRvm , V(660F38,CD,_,I,_,1,3,T1S), 0 , 110, 0 , 9535 , 267, 121), // #1428 INST(Vrsqrt28ss , VexRvm , V(660F38,CD,_,I,_,0,2,T1S), 0 , 111, 0 , 9546 , 268, 121), // #1429 INST(Vrsqrtps , VexRm_Lx , V(000F00,52,_,x,I,_,_,_ ), 0 , 66 , 0 , 9557 , 257, 109), // #1430 - INST(Vrsqrtss , VexRvm , V(F30F00,52,_,I,I,_,_,_ ), 0 , 154, 0 , 9566 , 372, 109), // #1431 + INST(Vrsqrtss , VexRvm , V(F30F00,52,_,I,I,_,_,_ ), 0 , 153, 0 , 9566 , 372, 109), // #1431 INST(Vscalefpd , VexRvm_Lx , V(660F38,2C,_,x,_,1,4,FV ), 0 , 102, 0 , 9575 , 378, 112), // #1432 INST(Vscalefps , VexRvm_Lx , V(660F38,2C,_,x,_,0,4,FV ), 0 , 101, 0 , 9585 , 379, 112), // #1433 INST(Vscalefsd , VexRvm , V(660F38,2D,_,I,_,1,3,T1S), 0 , 110, 0 , 9595 , 380, 64 ), // #1434 INST(Vscalefss , VexRvm , V(660F38,2D,_,I,_,0,2,T1S), 0 , 111, 0 , 9605 , 381, 64 ), // #1435 INST(Vscatterdpd , VexMr_Lx , V(660F38,A2,_,x,_,1,3,T1S), 0 , 110, 0 , 9615 , 382, 112), // #1436 INST(Vscatterdps , VexMr_Lx , V(660F38,A2,_,x,_,0,2,T1S), 0 , 111, 0 , 9627 , 353, 112), // #1437 - INST(Vscatterpf0dpd , VexM_VM , V(660F38,C6,5,2,_,1,3,T1S), 0 , 187, 0 , 9639 , 262, 127), // #1438 - INST(Vscatterpf0dps , VexM_VM , V(660F38,C6,5,2,_,0,2,T1S), 0 , 188, 0 , 9654 , 263, 127), // #1439 - INST(Vscatterpf0qpd , VexM_VM , V(660F38,C7,5,2,_,1,3,T1S), 0 , 187, 0 , 9669 , 264, 127), // #1440 - INST(Vscatterpf0qps , VexM_VM , V(660F38,C7,5,2,_,0,2,T1S), 0 , 188, 0 , 9684 , 264, 127), // #1441 - INST(Vscatterpf1dpd , VexM_VM , V(660F38,C6,6,2,_,1,3,T1S), 0 , 189, 0 , 9699 , 262, 127), // #1442 - INST(Vscatterpf1dps , VexM_VM , V(660F38,C6,6,2,_,0,2,T1S), 0 , 190, 0 , 9714 , 263, 127), // #1443 - INST(Vscatterpf1qpd , VexM_VM , V(660F38,C7,6,2,_,1,3,T1S), 0 , 189, 0 , 9729 , 264, 127), // #1444 - INST(Vscatterpf1qps , VexM_VM , V(660F38,C7,6,2,_,0,2,T1S), 0 , 190, 0 , 9744 , 264, 127), // #1445 + INST(Vscatterpf0dpd , VexM_VM , V(660F38,C6,5,2,_,1,3,T1S), 0 , 186, 0 , 9639 , 262, 127), // #1438 + INST(Vscatterpf0dps , VexM_VM , V(660F38,C6,5,2,_,0,2,T1S), 0 , 187, 0 , 9654 , 263, 127), // #1439 + INST(Vscatterpf0qpd , VexM_VM , V(660F38,C7,5,2,_,1,3,T1S), 0 , 186, 0 , 9669 , 264, 127), // #1440 + INST(Vscatterpf0qps , VexM_VM , V(660F38,C7,5,2,_,0,2,T1S), 0 , 187, 0 , 9684 , 264, 127), // #1441 + INST(Vscatterpf1dpd , VexM_VM , V(660F38,C6,6,2,_,1,3,T1S), 0 , 188, 0 , 9699 , 262, 127), // #1442 + INST(Vscatterpf1dps , VexM_VM , V(660F38,C6,6,2,_,0,2,T1S), 0 , 189, 0 , 9714 , 263, 127), // #1443 + INST(Vscatterpf1qpd , VexM_VM , V(660F38,C7,6,2,_,1,3,T1S), 0 , 188, 0 , 9729 , 264, 127), // #1444 + INST(Vscatterpf1qps , VexM_VM , V(660F38,C7,6,2,_,0,2,T1S), 0 , 189, 0 , 9744 , 264, 127), // #1445 INST(Vscatterqpd , VexMr_Lx , V(660F38,A3,_,x,_,1,3,T1S), 0 , 110, 0 , 9759 , 355, 112), // #1446 INST(Vscatterqps , VexMr_Lx , V(660F38,A3,_,x,_,0,2,T1S), 0 , 111, 0 , 9771 , 354, 112), // #1447 INST(Vshuff32x4 , VexRvmi_Lx , V(660F3A,23,_,x,_,0,4,FV ), 0 , 99 , 0 , 9783 , 383, 112), // #1448 @@ -1535,7 +1535,7 @@ const InstDB::InstInfo InstDB::_instInfoTable[] = { INST(Vsqrtps , VexRm_Lx , V(000F00,51,_,x,I,0,4,FV ), 0 , 94 , 0 , 9851 , 209, 107), // #1455 INST(Vsqrtsd , VexRvm , V(F20F00,51,_,I,I,1,3,T1S), 0 , 95 , 0 , 9859 , 177, 108), // #1456 INST(Vsqrtss , VexRvm , V(F30F00,51,_,I,I,0,2,T1S), 0 , 96 , 0 , 9867 , 178, 108), // #1457 - INST(Vstmxcsr , VexM , V(000F00,AE,3,0,I,_,_,_ ), 0 , 191, 0 , 9875 , 278, 109), // #1458 + INST(Vstmxcsr , VexM , V(000F00,AE,3,0,I,_,_,_ ), 0 , 190, 0 , 9875 , 278, 109), // #1458 INST(Vsubpd , VexRvm_Lx , V(660F00,5C,_,x,I,1,4,FV ), 0 , 93 , 0 , 9884 , 175, 107), // #1459 INST(Vsubps , VexRvm_Lx , V(000F00,5C,_,x,I,0,4,FV ), 0 , 94 , 0 , 9891 , 176, 107), // #1460 INST(Vsubsd , VexRvm , V(F20F00,5C,_,I,I,1,3,T1S), 0 , 95 , 0 , 9898 , 177, 108), // #1461 @@ -1554,8 +1554,8 @@ const InstDB::InstInfo InstDB::_instInfoTable[] = { INST(Vzeroupper , VexOp , V(000F00,77,_,0,I,_,_,_ ), 0 , 66 , 0 , 10009, 388, 109), // #1474 INST(Wbinvd , X86Op , O(000F00,09,_,_,_,_,_,_ ), 0 , 4 , 0 , 10020, 30 , 0 ), // #1475 INST(Wbnoinvd , X86Op , O(F30F00,09,_,_,_,_,_,_ ), 0 , 6 , 0 , 10027, 30 , 144), // #1476 - INST(Wrfsbase , X86M , O(F30F00,AE,2,_,x,_,_,_ ), 0 , 192, 0 , 10036, 160, 95 ), // #1477 - INST(Wrgsbase , X86M , O(F30F00,AE,3,_,x,_,_,_ ), 0 , 193, 0 , 10045, 160, 95 ), // #1478 + INST(Wrfsbase , X86M , O(F30F00,AE,2,_,x,_,_,_ ), 0 , 191, 0 , 10036, 160, 95 ), // #1477 + INST(Wrgsbase , X86M , O(F30F00,AE,3,_,x,_,_,_ ), 0 , 192, 0 , 10045, 160, 95 ), // #1478 INST(Wrmsr , X86Op , O(000F00,30,_,_,_,_,_,_ ), 0 , 4 , 0 , 10054, 161, 96 ), // #1479 INST(Xabort , X86Op_O_I8 , O(000000,C6,7,_,_,_,_,_ ), 0 , 25 , 0 , 10060, 74 , 145), // #1480 INST(Xadd , X86Xadd , O(000F00,C0,_,_,x,_,_,_ ), 0 , 4 , 0 , 10067, 389, 146), // #1481 @@ -1568,17 +1568,17 @@ const InstDB::InstInfo InstDB::_instInfoTable[] = { INST(Xorpd , ExtRm , O(660F00,57,_,_,_,_,_,_ ), 0 , 3 , 0 , 9987 , 139, 4 ), // #1488 INST(Xorps , ExtRm , O(000F00,57,_,_,_,_,_,_ ), 0 , 4 , 0 , 9994 , 139, 5 ), // #1489 INST(Xrstor , X86M_Only , O(000F00,AE,5,_,_,_,_,_ ), 0 , 70 , 0 , 1134 , 392, 147), // #1490 - INST(Xrstor64 , X86M_Only , O(000F00,AE,5,_,1,_,_,_ ), 0 , 194, 0 , 1142 , 393, 147), // #1491 + INST(Xrstor64 , X86M_Only , O(000F00,AE,5,_,1,_,_,_ ), 0 , 193, 0 , 1142 , 393, 147), // #1491 INST(Xrstors , X86M_Only , O(000F00,C7,3,_,_,_,_,_ ), 0 , 71 , 0 , 10097, 392, 148), // #1492 - INST(Xrstors64 , X86M_Only , O(000F00,C7,3,_,1,_,_,_ ), 0 , 195, 0 , 10105, 393, 148), // #1493 + INST(Xrstors64 , X86M_Only , O(000F00,C7,3,_,1,_,_,_ ), 0 , 194, 0 , 10105, 393, 148), // #1493 INST(Xsave , X86M_Only , O(000F00,AE,4,_,_,_,_,_ ), 0 , 89 , 0 , 1152 , 392, 147), // #1494 - INST(Xsave64 , X86M_Only , O(000F00,AE,4,_,1,_,_,_ ), 0 , 196, 0 , 1159 , 393, 147), // #1495 + INST(Xsave64 , X86M_Only , O(000F00,AE,4,_,1,_,_,_ ), 0 , 195, 0 , 1159 , 393, 147), // #1495 INST(Xsavec , X86M_Only , O(000F00,C7,4,_,_,_,_,_ ), 0 , 89 , 0 , 10115, 392, 149), // #1496 - INST(Xsavec64 , X86M_Only , O(000F00,C7,4,_,1,_,_,_ ), 0 , 196, 0 , 10122, 393, 149), // #1497 + INST(Xsavec64 , X86M_Only , O(000F00,C7,4,_,1,_,_,_ ), 0 , 195, 0 , 10122, 393, 149), // #1497 INST(Xsaveopt , X86M_Only , O(000F00,AE,6,_,_,_,_,_ ), 0 , 73 , 0 , 10131, 392, 150), // #1498 - INST(Xsaveopt64 , X86M_Only , O(000F00,AE,6,_,1,_,_,_ ), 0 , 197, 0 , 10140, 393, 150), // #1499 + INST(Xsaveopt64 , X86M_Only , O(000F00,AE,6,_,1,_,_,_ ), 0 , 196, 0 , 10140, 393, 150), // #1499 INST(Xsaves , X86M_Only , O(000F00,C7,5,_,_,_,_,_ ), 0 , 70 , 0 , 10151, 392, 148), // #1500 - INST(Xsaves64 , X86M_Only , O(000F00,C7,5,_,1,_,_,_ ), 0 , 194, 0 , 10158, 393, 148), // #1501 + INST(Xsaves64 , X86M_Only , O(000F00,C7,5,_,1,_,_,_ ), 0 , 193, 0 , 10158, 393, 148), // #1501 INST(Xsetbv , X86Op , O(000F01,D1,_,_,_,_,_,_ ), 0 , 21 , 0 , 10167, 161, 147), // #1502 INST(Xtest , X86Op , O(000F01,D6,_,_,_,_,_,_ ), 0 , 21 , 0 , 10174, 30 , 151) // #1503 // ${InstInfo:End} @@ -1694,7 +1694,7 @@ const uint32_t InstDB::_mainOpcodeTable[] = { V(660F38,00,0,0,0,0,4,FVM), // #98 [ref=23x] V(660F3A,00,0,0,0,0,4,FV ), // #99 [ref=14x] V(660F3A,00,0,0,0,1,4,FV ), // #100 [ref=14x] - V(660F38,00,0,0,0,0,4,FV ), // #101 [ref=48x] + V(660F38,00,0,0,0,0,4,FV ), // #101 [ref=53x] V(660F38,00,0,0,0,1,4,FV ), // #102 [ref=31x] V(660F38,00,0,0,0,1,4,FVM), // #103 [ref=11x] V(660F38,00,0,1,0,0,0,_ ), // #104 [ref=3x] @@ -1739,58 +1739,57 @@ const uint32_t InstDB::_mainOpcodeTable[] = { V(660F38,00,1,2,0,0,2,T1S), // #143 [ref=2x] V(660F38,00,2,2,0,1,3,T1S), // #144 [ref=2x] V(660F38,00,2,2,0,0,2,T1S), // #145 [ref=2x] - V(660F3A,00,0,0,1,1,0,FV ), // #146 [ref=2x] - V(660F38,00,0,0,0,0,0,FV ), // #147 [ref=5x] - V(000F00,00,2,0,0,0,0,_ ), // #148 [ref=1x] - V(660F00,00,0,0,0,1,4,FVM), // #149 [ref=4x] - V(000F00,00,0,0,0,0,4,FVM), // #150 [ref=3x] - V(660F00,00,0,0,0,0,2,T1S), // #151 [ref=1x] - V(F20F00,00,0,0,0,1,3,DUP), // #152 [ref=1x] - V(660F00,00,0,0,0,0,4,FVM), // #153 [ref=34x] - V(F30F00,00,0,0,0,0,0,_ ), // #154 [ref=3x] - V(F20F00,00,0,0,0,1,4,FVM), // #155 [ref=1x] - V(F30F00,00,0,0,0,0,4,FVM), // #156 [ref=4x] - V(F30F00,00,0,0,0,1,4,FVM), // #157 [ref=1x] - V(F20F00,00,0,0,0,0,4,FVM), // #158 [ref=2x] - V(000F00,00,0,0,0,0,3,T2 ), // #159 [ref=2x] - O(F30F00,00,6,0,0,0,0,_ ), // #160 [ref=1x] - V(660F38,00,0,0,0,0,0,T1S), // #161 [ref=3x] - V(F30F38,00,0,0,0,1,0,_ ), // #162 [ref=5x] - V(660F38,00,0,0,0,0,1,T1S), // #163 [ref=1x] - V(XOP_M8,00,0,0,0,0,0,_ ), // #164 [ref=22x] - V(660F3A,00,0,0,0,1,4,FVM), // #165 [ref=2x] - V(660F38,00,0,0,0,1,1,T1S), // #166 [ref=2x] - V(660F3A,00,0,1,1,0,0,_ ), // #167 [ref=1x] - V(660F3A,00,0,0,0,0,0,T1S), // #168 [ref=2x] - V(660F3A,00,0,0,1,1,3,T1S), // #169 [ref=2x] - V(660F3A,00,0,0,0,0,1,T1S), // #170 [ref=1x] - V(660F00,00,0,0,0,0,1,T1S), // #171 [ref=1x] - V(F30F38,00,0,0,0,0,2,QVM), // #172 [ref=6x] - V(F30F38,00,0,0,0,0,3,HVM), // #173 [ref=9x] - V(F30F38,00,0,0,0,0,1,OVM), // #174 [ref=3x] - V(660F38,00,0,0,0,0,2,QVM), // #175 [ref=4x] - V(660F38,00,0,0,0,0,1,OVM), // #176 [ref=2x] - V(660F00,00,1,0,0,0,4,FV ), // #177 [ref=1x] - V(660F00,00,1,0,0,1,4,FV ), // #178 [ref=1x] - V(660F00,00,0,0,0,0,4,128), // #179 [ref=5x] - V(660F00,00,7,0,0,0,4,FVM), // #180 [ref=1x] - V(660F00,00,0,0,0,1,4,128), // #181 [ref=3x] - V(660F00,00,3,0,0,0,4,FVM), // #182 [ref=1x] - V(F30F38,00,0,0,0,0,4,FVM), // #183 [ref=1x] - V(F30F38,00,0,0,0,0,4,FV ), // #184 [ref=1x] - V(F30F38,00,0,0,0,1,4,FV ), // #185 [ref=1x] - V(F30F38,00,0,0,0,1,4,FVM), // #186 [ref=1x] - V(660F38,00,5,2,0,1,3,T1S), // #187 [ref=2x] - V(660F38,00,5,2,0,0,2,T1S), // #188 [ref=2x] - V(660F38,00,6,2,0,1,3,T1S), // #189 [ref=2x] - V(660F38,00,6,2,0,0,2,T1S), // #190 [ref=2x] - V(000F00,00,3,0,0,0,0,_ ), // #191 [ref=1x] - O(F30F00,00,2,0,0,0,0,_ ), // #192 [ref=1x] - O(F30F00,00,3,0,0,0,0,_ ), // #193 [ref=1x] - O(000F00,00,5,0,1,0,0,_ ), // #194 [ref=2x] - O(000F00,00,3,0,1,0,0,_ ), // #195 [ref=1x] - O(000F00,00,4,0,1,0,0,_ ), // #196 [ref=2x] - O(000F00,00,6,0,1,0,0,_ ) // #197 [ref=1x] + V(660F3A,00,0,0,1,1,4,FV ), // #146 [ref=2x] + V(000F00,00,2,0,0,0,0,_ ), // #147 [ref=1x] + V(660F00,00,0,0,0,1,4,FVM), // #148 [ref=4x] + V(000F00,00,0,0,0,0,4,FVM), // #149 [ref=3x] + V(660F00,00,0,0,0,0,2,T1S), // #150 [ref=1x] + V(F20F00,00,0,0,0,1,3,DUP), // #151 [ref=1x] + V(660F00,00,0,0,0,0,4,FVM), // #152 [ref=34x] + V(F30F00,00,0,0,0,0,0,_ ), // #153 [ref=3x] + V(F20F00,00,0,0,0,1,4,FVM), // #154 [ref=1x] + V(F30F00,00,0,0,0,0,4,FVM), // #155 [ref=4x] + V(F30F00,00,0,0,0,1,4,FVM), // #156 [ref=1x] + V(F20F00,00,0,0,0,0,4,FVM), // #157 [ref=2x] + V(000F00,00,0,0,0,0,3,T2 ), // #158 [ref=2x] + O(F30F00,00,6,0,0,0,0,_ ), // #159 [ref=1x] + V(660F38,00,0,0,0,0,0,T1S), // #160 [ref=3x] + V(F30F38,00,0,0,0,1,0,_ ), // #161 [ref=5x] + V(660F38,00,0,0,0,0,1,T1S), // #162 [ref=1x] + V(XOP_M8,00,0,0,0,0,0,_ ), // #163 [ref=22x] + V(660F3A,00,0,0,0,1,4,FVM), // #164 [ref=2x] + V(660F38,00,0,0,0,1,1,T1S), // #165 [ref=2x] + V(660F3A,00,0,1,1,0,0,_ ), // #166 [ref=1x] + V(660F3A,00,0,0,0,0,0,T1S), // #167 [ref=2x] + V(660F3A,00,0,0,1,1,3,T1S), // #168 [ref=2x] + V(660F3A,00,0,0,0,0,1,T1S), // #169 [ref=1x] + V(660F00,00,0,0,0,0,1,T1S), // #170 [ref=1x] + V(F30F38,00,0,0,0,0,2,QVM), // #171 [ref=6x] + V(F30F38,00,0,0,0,0,3,HVM), // #172 [ref=9x] + V(F30F38,00,0,0,0,0,1,OVM), // #173 [ref=3x] + V(660F38,00,0,0,0,0,2,QVM), // #174 [ref=4x] + V(660F38,00,0,0,0,0,1,OVM), // #175 [ref=2x] + V(660F00,00,1,0,0,0,4,FV ), // #176 [ref=1x] + V(660F00,00,1,0,0,1,4,FV ), // #177 [ref=1x] + V(660F00,00,0,0,0,0,4,128), // #178 [ref=5x] + V(660F00,00,7,0,0,0,4,FVM), // #179 [ref=1x] + V(660F00,00,0,0,0,1,4,128), // #180 [ref=3x] + V(660F00,00,3,0,0,0,4,FVM), // #181 [ref=1x] + V(F30F38,00,0,0,0,0,4,FVM), // #182 [ref=1x] + V(F30F38,00,0,0,0,0,4,FV ), // #183 [ref=1x] + V(F30F38,00,0,0,0,1,4,FV ), // #184 [ref=1x] + V(F30F38,00,0,0,0,1,4,FVM), // #185 [ref=1x] + V(660F38,00,5,2,0,1,3,T1S), // #186 [ref=2x] + V(660F38,00,5,2,0,0,2,T1S), // #187 [ref=2x] + V(660F38,00,6,2,0,1,3,T1S), // #188 [ref=2x] + V(660F38,00,6,2,0,0,2,T1S), // #189 [ref=2x] + V(000F00,00,3,0,0,0,0,_ ), // #190 [ref=1x] + O(F30F00,00,2,0,0,0,0,_ ), // #191 [ref=1x] + O(F30F00,00,3,0,0,0,0,_ ), // #192 [ref=1x] + O(000F00,00,5,0,1,0,0,_ ), // #193 [ref=2x] + O(000F00,00,3,0,1,0,0,_ ), // #194 [ref=1x] + O(000F00,00,4,0,1,0,0,_ ), // #195 [ref=2x] + O(000F00,00,6,0,1,0,0,_ ) // #196 [ref=1x] }; // ---------------------------------------------------------------------------- // ${MainOpcodeTable:End} diff --git a/test/asmjit_test_x86_cc.cpp b/test/asmjit_test_x86_cc.cpp index b49d2a9..9175201 100644 --- a/test/asmjit_test_x86_cc.cpp +++ b/test/asmjit_test_x86_cc.cpp @@ -2886,10 +2886,7 @@ public: b += b; c += c; d += d; - return a + - b + - c + - d; + return a + b + c + d; } virtual void compile(x86::Compiler& cc) { @@ -3642,15 +3639,15 @@ public: }; // ============================================================================ -// [X86Test_MiscConstPool] +// [X86Test_MiscLocalConstPool] // ============================================================================ -class X86Test_MiscConstPool : public X86Test { +class X86Test_MiscLocalConstPool : public X86Test { public: - X86Test_MiscConstPool() : X86Test("MiscConstPool1") {} + X86Test_MiscLocalConstPool() : X86Test("MiscLocalConstPool") {} static void add(X86TestApp& app) { - app.add(new X86Test_MiscConstPool()); + app.add(new X86Test_MiscLocalConstPool()); } virtual void compile(x86::Compiler& cc) { @@ -3684,6 +3681,49 @@ public: } }; +// ============================================================================ +// [X86Test_MiscGlobalConstPool] +// ============================================================================ + +class X86Test_MiscGlobalConstPool : public X86Test { +public: + X86Test_MiscGlobalConstPool() : X86Test("MiscGlobalConstPool") {} + + static void add(X86TestApp& app) { + app.add(new X86Test_MiscGlobalConstPool()); + } + + virtual void compile(x86::Compiler& cc) { + cc.addFunc(FuncSignatureT(CallConv::kIdHost)); + + x86::Gp v0 = cc.newInt32("v0"); + x86::Gp v1 = cc.newInt32("v1"); + + x86::Mem c0 = cc.newInt32Const(ConstPool::kScopeGlobal, 200); + x86::Mem c1 = cc.newInt32Const(ConstPool::kScopeGlobal, 33); + + cc.mov(v0, c0); + cc.mov(v1, c1); + cc.add(v0, v1); + + cc.ret(v0); + cc.endFunc(); + } + + virtual bool run(void* _func, String& result, String& expect) { + typedef int (*Func)(void); + Func func = ptr_as_func(_func); + + int resultRet = func(); + int expectRet = 233; + + result.assignFormat("ret=%d", resultRet); + expect.assignFormat("ret=%d", expectRet); + + return resultRet == expectRet; + } +}; + // ============================================================================ // [X86Test_MiscMultiRet] // ============================================================================ @@ -3977,7 +4017,8 @@ int main(int argc, char* argv[]) { app.addT(); // Miscellaneous tests. - app.addT(); + app.addT(); + app.addT(); app.addT(); app.addT(); app.addT(); diff --git a/test/broken.cpp b/test/broken.cpp index de67218..eae6e5c 100644 --- a/test/broken.cpp +++ b/test/broken.cpp @@ -47,6 +47,14 @@ static bool BrokenAPI_startsWith(const char* a, const char* b) noexcept { } } +//! Compares names and priority of two unit tests. +static int BrokenAPI_compareUnits(const BrokenAPI::Unit* a, const BrokenAPI::Unit* b) noexcept { + if (a->priority == b->priority) + return strcmp(a->name, b->name); + else + return a->priority > b->priority ? 1 : -1; +} + // Get whether the strings `a` and `b` are equal, ignoring case and treating // `-` as `_`. static bool BrokenAPI_matchesFilter(const char* a, const char* b) noexcept { @@ -109,9 +117,17 @@ static void BrokenAPI_runAll() noexcept { bool hasUnits = unit != NULL; size_t count = 0; + int currentPriority = 0; while (unit != NULL) { if (BrokenAPI_canRun(unit)) { + if (currentPriority != unit->priority) { + if (count) + INFO(""); + INFO("[[Priority=%d]]", unit->priority); + } + + currentPriority = unit->priority; BrokenAPI_runUnit(unit); count++; } @@ -134,7 +150,7 @@ static void BrokenAPI_listAll() noexcept { if (unit != NULL) { INFO("Units:"); do { - INFO(" %s", unit->name); + INFO(" %s [priority=%d]", unit->name, unit->priority); unit = unit->next; } while (unit != NULL); } @@ -155,7 +171,7 @@ void BrokenAPI::add(Unit* unit) noexcept { // C++ static initialization doesn't guarantee anything. We sort all units by // name so the execution will always happen in deterministic order. while (current != NULL) { - if (strcmp(current->name, unit->name) >= 0) + if (BrokenAPI_compareUnits(current, unit) >= 0) break; pPrev = ¤t->next; @@ -172,7 +188,7 @@ void BrokenAPI::setOutputFile(FILE* file) noexcept { global._file = file; } -int BrokenAPI::run(int argc, const char* argv[], Entry onBeforeRun, Entry onAfterRun) noexcept { +int BrokenAPI::run(int argc, const char* argv[], Entry onBeforeRun, Entry onAfterRun) { BrokenGlobal& global = _brokenGlobal; global._argc = argc; @@ -183,7 +199,7 @@ int BrokenAPI::run(int argc, const char* argv[], Entry onBeforeRun, Entry onAfte INFO(" --help - print this usage"); INFO(" --list - list all tests"); INFO(" --run-... - run a test(s), trailing wildcards supported"); - INFO(" --run-all - run all tests"); + INFO(" --run-all - run all tests (default)"); return 0; } @@ -248,6 +264,7 @@ static void BrokenAPI_printMessage(const char* prefix, const char* fmt, va_list void BrokenAPI::info(const char* fmt, ...) noexcept { BrokenGlobal& global = _brokenGlobal; + va_list ap; va_start(ap, fmt); BrokenAPI_printMessage(global._unitRunning ? " " : "", fmt, ap); diff --git a/test/broken.h b/test/broken.h index 8d7db6f..9923ce1 100644 --- a/test/broken.h +++ b/test/broken.h @@ -2,7 +2,7 @@ // Lightweight Unit Testing for C++. // // [License] -// Public Domain (Unlicense) +// Public Domain (Unlicense) or Zlib. #ifndef BROKEN_INTERNAL_H #define BROKEN_INTERNAL_H @@ -15,8 +15,7 @@ // Hide everything when using Doxygen. Ideally this can be protected by a macro, // but there is not globally and widely used one across multiple projects. -//! \internal -//! \{ +//! \cond // ============================================================================ // [Broken - API] @@ -26,22 +25,30 @@ struct BrokenAPI { //! Entry point of a unit test defined by `UNIT` macro. typedef void (*Entry)(void); + enum Flags : unsigned { + kFlagFinished = 0x1 + }; + //! Test defined by `UNIT` macro. struct Unit { - const char* name; Entry entry; - size_t finished; + const char* name; + int priority; + unsigned flags; Unit* next; }; //! Automatic unit registration by using static initialization. struct AutoUnit : Unit { - inline AutoUnit(const char* _name, Entry _entry) noexcept { - name = _name; - entry = _entry; - finished = false; - next = NULL; + inline AutoUnit(Entry entry_, const char* name_, int priority_ = 0, int dummy_ = 0) noexcept { + // Not used, only to trick `UNIT()` macro. + (void)dummy_; + this->entry = entry_; + this->name = name_; + this->priority = priority_; + this->flags = 0; + this->next = nullptr; BrokenAPI::add(this); } }; @@ -57,7 +64,7 @@ struct BrokenAPI { //! Initialize `Broken` framework. //! //! Returns `true` if `run()` should be called. - static int run(int argc, const char* argv[], Entry onBeforeRun = nullptr, Entry onAfterRun = nullptr) noexcept; + static int run(int argc, const char* argv[], Entry onBeforeRun = nullptr, Entry onAfterRun = nullptr); //! Log message, adds automatically new line if not present. static void info(const char* fmt, ...) noexcept; @@ -84,17 +91,23 @@ struct BrokenAPI { // [Broken - Macros] // ============================================================================ -//! Define a unit test. +//! Internal macro used by `UNIT()`. +#define UNIT_INTERNAL(NAME, ...) \ + static void unit_##NAME##_entry(void); \ + static ::BrokenAPI::AutoUnit unit_##NAME##_autoinit(unit_##NAME##_entry, #NAME, __VA_ARGS__); \ + static void unit_##NAME##_entry(void) + +//! \def UNIT(NAME [, PRIORITY]) +//! +//! Define a unit test with an optional priority. //! //! `NAME` can only contain ASCII characters, numbers and underscore. It has //! the same rules as identifiers in C and C++. -#define UNIT(NAME) \ - static void unit_##NAME##_entry(void) noexcept; \ - \ - static ::BrokenAPI::AutoUnit unit_##NAME##_autoinit( \ - #NAME, unit_##NAME##_entry); \ - \ - static void unit_##NAME##_entry(void) noexcept +//! +//! `PRIORITY` specifies the order in which unit tests are run. Lesses value +//! increases the priority. At the moment all units are first sorted by +//! priority and then by name - this makes the run always deterministic. +#define UNIT(...) UNIT_INTERNAL(__VA_ARGS__, 0) //! #define INFO(FORMAT [, ...]) //! @@ -106,6 +119,6 @@ struct BrokenAPI { //! Expect `EXP` to be true or evaluates to true, fail otherwise. #define EXPECT(...) ::BrokenAPI::expect(__FILE__, __LINE__, __VA_ARGS__) -//! \} +//! \endcond #endif // BROKEN_INTERNAL_H