diff options
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/globtype.pas | 4 | ||||
-rw-r--r-- | compiler/i386/i386att.inc | 20 | ||||
-rw-r--r-- | compiler/i386/i386atts.inc | 20 | ||||
-rw-r--r-- | compiler/i386/i386int.inc | 20 | ||||
-rw-r--r-- | compiler/i386/i386nop.inc | 2 | ||||
-rw-r--r-- | compiler/i386/i386op.inc | 20 | ||||
-rw-r--r-- | compiler/i386/i386prop.inc | 20 | ||||
-rw-r--r-- | compiler/i386/i386tab.inc | 1192 | ||||
-rw-r--r-- | compiler/i8086/i8086att.inc | 20 | ||||
-rw-r--r-- | compiler/i8086/i8086atts.inc | 20 | ||||
-rw-r--r-- | compiler/i8086/i8086int.inc | 20 | ||||
-rw-r--r-- | compiler/i8086/i8086nop.inc | 2 | ||||
-rw-r--r-- | compiler/i8086/i8086op.inc | 20 | ||||
-rw-r--r-- | compiler/i8086/i8086prop.inc | 20 | ||||
-rw-r--r-- | compiler/i8086/i8086tab.inc | 1192 | ||||
-rw-r--r-- | compiler/x86/aasmcpu.pas | 11 | ||||
-rw-r--r-- | compiler/x86/rax86.pas | 47 | ||||
-rw-r--r-- | compiler/x86/x86ins.dat | 243 | ||||
-rw-r--r-- | compiler/x86_64/x8664ats.inc | 20 | ||||
-rw-r--r-- | compiler/x86_64/x8664att.inc | 20 | ||||
-rw-r--r-- | compiler/x86_64/x8664int.inc | 20 | ||||
-rw-r--r-- | compiler/x86_64/x8664nop.inc | 2 | ||||
-rw-r--r-- | compiler/x86_64/x8664op.inc | 20 | ||||
-rw-r--r-- | compiler/x86_64/x8664pro.inc | 20 | ||||
-rw-r--r-- | compiler/x86_64/x8664tab.inc | 1192 |
25 files changed, 4175 insertions, 12 deletions
diff --git a/compiler/globtype.pas b/compiler/globtype.pas index f4bbd8038f..c73443df3d 100644 --- a/compiler/globtype.pas +++ b/compiler/globtype.pas @@ -289,10 +289,10 @@ interface twpoptimizerswitches = set of twpoptimizerswitch; type - { Used by ARM / AVR / MIPSEL to differentiate between specific microcontrollers } + { Used by ARM / AVR to differentiate between specific microcontrollers } tcontrollerdatatype = record controllertypestr, controllerunitstr: string[20]; - flashbase, flashsize, srambase, sramsize, eeprombase, eepromsize, bootbase, bootsize: dword; + flashbase, flashsize, srambase, sramsize, eeprombase, eepromsize: dword; end; ttargetswitchinfo = record diff --git a/compiler/i386/i386att.inc b/compiler/i386/i386att.inc index ed2f7848a1..354a187ae2 100644 --- a/compiler/i386/i386att.inc +++ b/compiler/i386/i386att.inc @@ -951,6 +951,26 @@ 'sarx', 'shlx', 'shrx', +'vbroadcasti128', +'vextracti128', +'vinserti128', +'vpblendd', +'vpbroadcastb', +'vpbroadcastd', +'vpbroadcastq', +'vpbroadcastw', +'vperm2i128', +'vpermd', +'vpermpd', +'vpermps', +'vpermq', +'vpmaskmovd', +'vpmaskmovq', +'vpsllvd', +'vpsllvq', +'vpsravd', +'vpsrlvd', +'vpsrlvq', 'add4s', 'brkem', 'clr1', diff --git a/compiler/i386/i386atts.inc b/compiler/i386/i386atts.inc index 5a53788dd6..944e5635fa 100644 --- a/compiler/i386/i386atts.inc +++ b/compiler/i386/i386atts.inc @@ -964,5 +964,25 @@ attsufNONE, attsufNONE, attsufNONE, attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, attsufNONE ); diff --git a/compiler/i386/i386int.inc b/compiler/i386/i386int.inc index dc4ebb3dd2..aa667b7ab1 100644 --- a/compiler/i386/i386int.inc +++ b/compiler/i386/i386int.inc @@ -951,6 +951,26 @@ 'sarx', 'shlx', 'shrx', +'vbroadcasti128', +'vextracti128', +'vinserti128', +'vpblendd', +'vpbroadcastb', +'vpbroadcastd', +'vpbroadcastq', +'vpbroadcastw', +'vperm2i128', +'vpermd', +'vpermpd', +'vpermps', +'vpermq', +'vpmaskmovd', +'vpmaskmovq', +'vpsllvd', +'vpsllvq', +'vpsravd', +'vpsrlvd', +'vpsrlvq', 'add4s', 'brkem', 'clr1', diff --git a/compiler/i386/i386nop.inc b/compiler/i386/i386nop.inc index e670d6a963..2593eab274 100644 --- a/compiler/i386/i386nop.inc +++ b/compiler/i386/i386nop.inc @@ -1,2 +1,2 @@ { don't edit, this file is generated from x86ins.dat } -1658; +1828; diff --git a/compiler/i386/i386op.inc b/compiler/i386/i386op.inc index 48dbdd334d..8af33b19da 100644 --- a/compiler/i386/i386op.inc +++ b/compiler/i386/i386op.inc @@ -951,6 +951,26 @@ A_RORX, A_SARX, A_SHLX, A_SHRX, +A_VBROADCASTI128, +A_VEXTRACTI128, +A_VINSERTI128, +A_VPBLENDD, +A_VPBROADCASTB, +A_VPBROADCASTD, +A_VPBROADCASTQ, +A_VPBROADCASTW, +A_VPERM2I128, +A_VPERMD, +A_VPERMPD, +A_VPERMPS, +A_VPERMQ, +A_VPMASKMOVD, +A_VPMASKMOVQ, +A_VPSLLVD, +A_VPSLLVQ, +A_VPSRAVD, +A_VPSRLVD, +A_VPSRLVQ, A_ADD4S, A_BRKEM, A_CLR1, diff --git a/compiler/i386/i386prop.inc b/compiler/i386/i386prop.inc index 47e1495c0d..5a454e454e 100644 --- a/compiler/i386/i386prop.inc +++ b/compiler/i386/i386prop.inc @@ -953,6 +953,26 @@ (Ch: (Ch_Rop1, Ch_Rop2, Ch_Wop3)), (Ch: (Ch_All, Ch_None, Ch_None)), (Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), (Ch: (Ch_Mop2, Ch_Rop1, Ch_None)), (Ch: (Ch_All, Ch_None, Ch_None)), (Ch: (Ch_All, Ch_None, Ch_None)), diff --git a/compiler/i386/i386tab.inc b/compiler/i386/i386tab.inc index d9dde010f8..d7dc2dff3f 100644 --- a/compiler/i386/i386tab.inc +++ b/compiler/i386/i386tab.inc @@ -8702,6 +8702,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VBROADCASTSD; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#25#72; + flags : if_avx2 + ), + ( opcode : A_VBROADCASTSS; ops : 2; optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none); @@ -8716,6 +8723,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VBROADCASTSS; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#24#72; + flags : if_avx2 + ), + ( + opcode : A_VBROADCASTSS; + ops : 2; + optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#249#1#24#72; + flags : if_avx2 + ), + ( opcode : A_VCMPPD; ops : 4; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8); @@ -8816,7 +8837,7 @@ ( opcode : A_VCVTDQ2PD; ops : 2; - optypes : (ot_ymmreg,ot_ymmreg,ot_none,ot_none); + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); code : #219#242#244#248#1#230#72; flags : if_avx or if_sandybridge ), @@ -9759,6 +9780,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VMOVNTDQA; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits256,ot_none,ot_none); + code : #241#242#244#249#1#42#72; + flags : if_avx2 + ), + ( opcode : A_VMOVNTPD; ops : 2; optypes : (ot_memory or ot_bits256,ot_ymmreg,ot_none,ot_none); @@ -9948,6 +9976,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VMPSADBW; + ops : 4; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8); + code : #241#242#244#250#1#66#61#80#23; + flags : if_avx2 + ), + ( opcode : A_VMULPD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10032,6 +10067,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPABSB; + ops : 2; + optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none); + code : #241#242#244#249#1#28#72; + flags : if_avx2 + ), + ( opcode : A_VPABSD; ops : 2; optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none); @@ -10039,6 +10081,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPABSD; + ops : 2; + optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none); + code : #241#242#244#249#1#30#72; + flags : if_avx2 + ), + ( opcode : A_VPABSW; ops : 2; optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none); @@ -10046,6 +10095,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPABSW; + ops : 2; + optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none); + code : #241#242#244#249#1#29#72; + flags : if_avx2 + ), + ( opcode : A_VPACKSSDW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10053,6 +10109,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPACKSSDW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#107#61#80; + flags : if_avx2 + ), + ( opcode : A_VPACKSSWB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10060,6 +10123,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPACKSSWB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#99#61#80; + flags : if_avx2 + ), + ( opcode : A_VPACKUSDW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10067,6 +10137,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPACKUSDW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#43#61#80; + flags : if_avx2 + ), + ( opcode : A_VPACKUSWB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10074,6 +10151,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPACKUSWB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#103#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10081,6 +10165,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#252#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10088,6 +10179,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#254#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10095,6 +10193,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#212#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDSB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10102,6 +10207,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDSB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#236#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10109,6 +10221,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#237#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDUSB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10116,6 +10235,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDUSB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#220#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDUSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10123,6 +10249,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDUSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#221#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10130,6 +10263,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#253#61#80; + flags : if_avx2 + ), + ( opcode : A_VPALIGNR; ops : 4; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8); @@ -10137,6 +10277,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPALIGNR; + ops : 4; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8); + code : #241#242#244#250#1#15#61#80#23; + flags : if_avx2 + ), + ( opcode : A_VPAND; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10144,6 +10291,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPAND; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#219#61#80; + flags : if_avx2 + ), + ( opcode : A_VPANDN; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10151,6 +10305,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPANDN; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#223#61#80; + flags : if_avx2 + ), + ( opcode : A_VPAVGB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10158,6 +10319,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPAVGB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#224#61#80; + flags : if_avx2 + ), + ( opcode : A_VPAVGW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10165,6 +10333,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPAVGW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#227#61#80; + flags : if_avx2 + ), + ( opcode : A_VPBLENDVB; ops : 4; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_xmmreg); @@ -10172,6 +10347,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPBLENDVB; + ops : 4; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_ymmreg); + code : #241#242#244#250#1#76#61#80#247; + flags : if_avx2 + ), + ( opcode : A_VPBLENDW; ops : 4; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8); @@ -10179,6 +10361,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPBLENDW; + ops : 4; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8); + code : #241#242#244#250#1#14#61#80#23; + flags : if_avx2 + ), + ( opcode : A_VPCLMULQDQ; ops : 4; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8); @@ -10193,6 +10382,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPEQB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#116#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPEQD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10200,6 +10396,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPEQD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#118#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPEQQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10207,6 +10410,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPEQQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#41#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPEQW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10214,6 +10424,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPEQW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#117#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPESTRI; ops : 3; optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none); @@ -10235,6 +10452,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPGTB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#100#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPGTD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10242,6 +10466,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPGTD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#102#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPGTQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10249,6 +10480,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPGTQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#55#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPGTW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10256,6 +10494,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPGTW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#101#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPISTRI; ops : 3; optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none); @@ -10410,6 +10655,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPHADDD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#2#61#80; + flags : if_avx2 + ), + ( opcode : A_VPHADDSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10417,6 +10669,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPHADDSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#3#61#80; + flags : if_avx2 + ), + ( opcode : A_VPHADDW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10424,6 +10683,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPHADDW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#1#61#80; + flags : if_avx2 + ), + ( opcode : A_VPHMINPOSUW; ops : 2; optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none); @@ -10438,6 +10704,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPHSUBD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#6#61#80; + flags : if_avx2 + ), + ( opcode : A_VPHSUBSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10445,6 +10718,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPHSUBSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#7#61#80; + flags : if_avx2 + ), + ( opcode : A_VPHSUBW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10452,6 +10732,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPHSUBW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#5#61#80; + flags : if_avx2 + ), + ( opcode : A_VPINSRB; ops : 4; optypes : (ot_xmmreg,ot_xmmreg,ot_reg32,ot_immediate or ot_bits8); @@ -10501,6 +10788,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMADDUBSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#4#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMADDWD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10508,6 +10802,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMADDWD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#245#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMAXSB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10515,6 +10816,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMAXSB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#60#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMAXSD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10522,6 +10830,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMAXSD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#61#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMAXSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10529,6 +10844,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMAXSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#238#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMAXUB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10536,6 +10858,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMAXUB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#222#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMAXUD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10543,6 +10872,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMAXUD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#63#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMAXUW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10550,6 +10886,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMAXUW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#62#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMINSB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10557,6 +10900,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMINSB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#56#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMINSD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10564,6 +10914,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMINSD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#57#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMINSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10571,6 +10928,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMINSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#234#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMINUB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10578,6 +10942,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMINUB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#218#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMINUD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10585,6 +10956,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMINUD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#59#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMINUW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10592,6 +10970,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMINUW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#58#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMOVMSKB; ops : 2; optypes : (ot_reg64,ot_xmmreg,ot_none,ot_none); @@ -10606,6 +10991,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVMSKB; + ops : 2; + optypes : (ot_reg32,ot_ymmreg,ot_none,ot_none); + code : #241#242#244#248#1#215#72; + flags : if_avx2 + ), + ( + opcode : A_VPMOVMSKB; + ops : 2; + optypes : (ot_reg64,ot_ymmreg,ot_none,ot_none); + code : #241#242#244#248#1#215#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVSXBD; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none); @@ -10620,6 +11019,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVSXBD; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#33#72; + flags : if_avx2 + ), + ( + opcode : A_VPMOVSXBD; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none); + code : #241#242#244#249#1#33#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVSXBQ; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits16,ot_none,ot_none); @@ -10634,6 +11047,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVSXBQ; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none); + code : #241#242#244#249#1#34#72; + flags : if_avx2 + ), + ( + opcode : A_VPMOVSXBQ; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#34#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVSXBW; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none); @@ -10648,6 +11075,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVSXBW; + ops : 2; + optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none); + code : #241#242#244#249#1#32#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVSXDQ; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none); @@ -10662,6 +11096,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVSXDQ; + ops : 2; + optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none); + code : #241#242#244#249#1#37#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVSXWD; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none); @@ -10676,6 +11117,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVSXWD; + ops : 2; + optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none); + code : #241#242#244#249#1#35#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVSXWQ; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none); @@ -10690,6 +11138,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVSXWQ; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none); + code : #241#242#244#249#1#36#72; + flags : if_avx2 + ), + ( + opcode : A_VPMOVSXWQ; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#36#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVZXBD; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none); @@ -10704,6 +11166,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVZXBD; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none); + code : #241#242#244#249#1#49#72; + flags : if_avx2 + ), + ( + opcode : A_VPMOVZXBD; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#49#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVZXBQ; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits16,ot_none,ot_none); @@ -10718,6 +11194,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVZXBQ; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none); + code : #241#242#244#249#1#50#72; + flags : if_avx2 + ), + ( + opcode : A_VPMOVZXBQ; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#50#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVZXBW; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none); @@ -10732,6 +11222,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVZXBW; + ops : 2; + optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none); + code : #241#242#244#249#1#48#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVZXDQ; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none); @@ -10746,6 +11243,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVZXDQ; + ops : 2; + optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none); + code : #241#242#244#249#1#53#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVZXWD; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none); @@ -10760,6 +11264,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVZXWD; + ops : 2; + optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none); + code : #241#242#244#249#1#51#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVZXWQ; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none); @@ -10774,6 +11285,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVZXWQ; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none); + code : #241#242#244#249#1#52#72; + flags : if_avx2 + ), + ( + opcode : A_VPMOVZXWQ; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#52#72; + flags : if_avx2 + ), + ( opcode : A_VPMULDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10781,6 +11306,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMULDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#40#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMULHRSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10788,6 +11320,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMULHRSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#11#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMULHUW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10795,6 +11334,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMULHUW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#228#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMULHW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10802,6 +11348,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMULHW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#229#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMULLD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10809,6 +11362,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMULLD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#64#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMULLW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10816,6 +11376,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMULLW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#213#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMULUDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10823,6 +11390,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMULUDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#244#61#80; + flags : if_avx2 + ), + ( opcode : A_VPOR; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10830,6 +11404,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPOR; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#235#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSADBW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10837,6 +11418,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSADBW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#246#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSHUFB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10844,6 +11432,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSHUFB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#0#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSHUFD; ops : 3; optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none); @@ -10851,6 +11446,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSHUFD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#112#72#22; + flags : if_avx2 + ), + ( opcode : A_VPSHUFHW; ops : 3; optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none); @@ -10858,6 +11460,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSHUFHW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none); + code : #219#242#244#248#1#112#72#22; + flags : if_avx2 + ), + ( opcode : A_VPSHUFLW; ops : 3; optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none); @@ -10865,6 +11474,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSHUFLW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none); + code : #220#242#244#248#1#112#72#22; + flags : if_avx2 + ), + ( opcode : A_VPSIGNB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10872,6 +11488,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSIGNB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#8#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSIGND; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10879,6 +11502,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSIGND; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#10#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSIGNW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10886,6 +11516,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSIGNW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#9#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSLLD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -10900,6 +11537,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSLLD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#114#60#142#22; + flags : if_avx2 + ), + ( + opcode : A_VPSLLD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#242#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSLLDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -10907,6 +11558,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSLLDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#115#60#143#22; + flags : if_avx2 + ), + ( opcode : A_VPSLLQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10921,6 +11579,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSLLQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#243#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSLLQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#115#60#142#22; + flags : if_avx2 + ), + ( opcode : A_VPSLLW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -10935,6 +11607,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSLLW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#113#60#142#22; + flags : if_avx2 + ), + ( + opcode : A_VPSLLW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#241#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSRAD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -10949,6 +11635,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSRAD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#114#60#140#22; + flags : if_avx2 + ), + ( + opcode : A_VPSRAD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#226#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSRAW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -10963,6 +11663,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSRAW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#113#60#140#22; + flags : if_avx2 + ), + ( + opcode : A_VPSRAW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#225#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSRLD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -10977,6 +11691,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSRLD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#114#60#138#22; + flags : if_avx2 + ), + ( + opcode : A_VPSRLD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#210#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSRLDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -10984,6 +11712,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSRLDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#115#60#139#22; + flags : if_avx2 + ), + ( opcode : A_VPSRLQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -10998,6 +11733,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSRLQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#115#60#138#22; + flags : if_avx2 + ), + ( + opcode : A_VPSRLQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#211#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSRLW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -11012,6 +11761,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSRLW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#113#60#138#22; + flags : if_avx2 + ), + ( + opcode : A_VPSRLW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#209#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11019,6 +11782,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#248#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11026,6 +11796,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#250#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11033,6 +11810,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#251#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBSB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11040,6 +11824,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBSB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#232#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11047,6 +11838,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#233#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBUSB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11054,6 +11852,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBUSB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#216#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBUSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11061,6 +11866,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBUSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#217#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11068,6 +11880,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#249#61#80; + flags : if_avx2 + ), + ( opcode : A_VPTEST; ops : 2; optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none); @@ -11089,6 +11908,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKHBW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#104#61#80; + flags : if_avx2 + ), + ( opcode : A_VPUNPCKHDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11096,6 +11922,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKHDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#106#61#80; + flags : if_avx2 + ), + ( opcode : A_VPUNPCKHQDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11103,6 +11936,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKHQDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#109#61#80; + flags : if_avx2 + ), + ( opcode : A_VPUNPCKHWD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11110,6 +11950,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKHWD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#105#61#80; + flags : if_avx2 + ), + ( opcode : A_VPUNPCKLBW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11117,6 +11964,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKLBW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#96#61#80; + flags : if_avx2 + ), + ( opcode : A_VPUNPCKLDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11124,6 +11978,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKLDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#98#61#80; + flags : if_avx2 + ), + ( opcode : A_VPUNPCKLQDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11131,6 +11992,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKLQDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#108#61#80; + flags : if_avx2 + ), + ( opcode : A_VPUNPCKLWD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11138,6 +12006,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKLWD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#97#61#80; + flags : if_avx2 + ), + ( opcode : A_VPXOR; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11145,6 +12020,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPXOR; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#239#61#80; + flags : if_avx2 + ), + ( opcode : A_VRCPPS; ops : 2; optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none); @@ -11605,5 +12487,313 @@ optypes : (ot_reg32,ot_rm_gpr or ot_bits32,ot_reg32,ot_none); code : #220#242#249#1#247#62#72; flags : if_bmi2 + ), + ( + opcode : A_VBROADCASTI128; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits128,ot_none,ot_none); + code : #241#242#244#249#1#90#72; + flags : if_avx2 + ), + ( + opcode : A_VEXTRACTI128; + ops : 3; + optypes : (ot_xmmrm,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#250#1#57#65#22; + flags : if_avx2 + ), + ( + opcode : A_VINSERTI128; + ops : 4; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_immediate or ot_bits8); + code : #241#242#244#250#1#56#61#80#23; + flags : if_avx2 + ), + ( + opcode : A_VPBLENDD; + ops : 4; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8); + code : #241#242#244#250#1#2#61#80#23; + flags : if_avx2 + ), + ( + opcode : A_VPBLENDD; + ops : 4; + optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8); + code : #241#242#250#1#2#61#80#23; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTB; + ops : 2; + optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#249#1#120#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTB; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#120#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTB; + ops : 2; + optypes : (ot_xmmreg,ot_memory or ot_bits8,ot_none,ot_none); + code : #241#242#249#1#120#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTB; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits8,ot_none,ot_none); + code : #241#242#244#249#1#120#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTD; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#88#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTD; + ops : 2; + optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none); + code : #241#242#249#1#88#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTD; + ops : 2; + optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#249#1#88#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTD; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none); + code : #241#242#244#249#1#88#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTQ; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none); + code : #241#242#244#249#1#89#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTQ; + ops : 2; + optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none); + code : #241#242#249#1#89#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTQ; + ops : 2; + optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#249#1#89#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTQ; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#89#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTW; + ops : 2; + optypes : (ot_xmmreg,ot_memory or ot_bits16,ot_none,ot_none); + code : #241#242#249#1#121#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTW; + ops : 2; + optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#249#1#121#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTW; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits16,ot_none,ot_none); + code : #241#242#244#249#1#121#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTW; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#121#72; + flags : if_avx2 + ), + ( + opcode : A_VPERM2I128; + ops : 4; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8); + code : #241#242#244#250#1#70#61#80#23; + flags : if_avx2 + ), + ( + opcode : A_VPERMD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#54#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPERMPD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none); + code : #241#242#243#244#250#1#1#72#22; + flags : if_avx2 + ), + ( + opcode : A_VPERMPS; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#22#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPERMQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none); + code : #241#242#243#244#250#1#0#72#22; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVD; + ops : 3; + optypes : (ot_xmmreg,ot_xmmreg,ot_memory or ot_bits128,ot_none); + code : #241#242#249#1#140#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVD; + ops : 3; + optypes : (ot_memory or ot_bits128,ot_xmmreg,ot_xmmreg,ot_none); + code : #241#242#249#1#142#61#66; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_memory or ot_bits256,ot_none); + code : #241#242#244#249#1#140#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVD; + ops : 3; + optypes : (ot_memory or ot_bits256,ot_ymmreg,ot_ymmreg,ot_none); + code : #241#242#244#249#1#142#61#66; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVQ; + ops : 3; + optypes : (ot_xmmreg,ot_xmmreg,ot_memory or ot_bits128,ot_none); + code : #241#242#243#249#1#140#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVQ; + ops : 3; + optypes : (ot_memory or ot_bits128,ot_xmmreg,ot_xmmreg,ot_none); + code : #241#242#243#249#1#142#61#66; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVQ; + ops : 3; + optypes : (ot_memory or ot_bits256,ot_ymmreg,ot_ymmreg,ot_none); + code : #241#242#243#244#249#1#142#61#66; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_memory or ot_bits256,ot_none); + code : #241#242#243#244#249#1#140#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSLLVD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#71#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSLLVD; + ops : 3; + optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); + code : #241#242#249#1#71#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSLLVQ; + ops : 3; + optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); + code : #241#242#243#249#1#71#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSLLVQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#243#244#249#1#71#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSRAVD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#70#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSRAVD; + ops : 3; + optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); + code : #241#242#249#1#70#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSRLVD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#69#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSRLVD; + ops : 3; + optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); + code : #241#242#249#1#69#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSRLVQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#243#244#249#1#69#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSRLVQ; + ops : 3; + optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); + code : #241#242#243#249#1#69#61#80; + flags : if_avx2 ) ); diff --git a/compiler/i8086/i8086att.inc b/compiler/i8086/i8086att.inc index ed2f7848a1..354a187ae2 100644 --- a/compiler/i8086/i8086att.inc +++ b/compiler/i8086/i8086att.inc @@ -951,6 +951,26 @@ 'sarx', 'shlx', 'shrx', +'vbroadcasti128', +'vextracti128', +'vinserti128', +'vpblendd', +'vpbroadcastb', +'vpbroadcastd', +'vpbroadcastq', +'vpbroadcastw', +'vperm2i128', +'vpermd', +'vpermpd', +'vpermps', +'vpermq', +'vpmaskmovd', +'vpmaskmovq', +'vpsllvd', +'vpsllvq', +'vpsravd', +'vpsrlvd', +'vpsrlvq', 'add4s', 'brkem', 'clr1', diff --git a/compiler/i8086/i8086atts.inc b/compiler/i8086/i8086atts.inc index 5a53788dd6..944e5635fa 100644 --- a/compiler/i8086/i8086atts.inc +++ b/compiler/i8086/i8086atts.inc @@ -964,5 +964,25 @@ attsufNONE, attsufNONE, attsufNONE, attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, attsufNONE ); diff --git a/compiler/i8086/i8086int.inc b/compiler/i8086/i8086int.inc index dc4ebb3dd2..aa667b7ab1 100644 --- a/compiler/i8086/i8086int.inc +++ b/compiler/i8086/i8086int.inc @@ -951,6 +951,26 @@ 'sarx', 'shlx', 'shrx', +'vbroadcasti128', +'vextracti128', +'vinserti128', +'vpblendd', +'vpbroadcastb', +'vpbroadcastd', +'vpbroadcastq', +'vpbroadcastw', +'vperm2i128', +'vpermd', +'vpermpd', +'vpermps', +'vpermq', +'vpmaskmovd', +'vpmaskmovq', +'vpsllvd', +'vpsllvq', +'vpsravd', +'vpsrlvd', +'vpsrlvq', 'add4s', 'brkem', 'clr1', diff --git a/compiler/i8086/i8086nop.inc b/compiler/i8086/i8086nop.inc index 80c4fcebce..a30a9a4065 100644 --- a/compiler/i8086/i8086nop.inc +++ b/compiler/i8086/i8086nop.inc @@ -1,2 +1,2 @@ { don't edit, this file is generated from x86ins.dat } -1686; +1856; diff --git a/compiler/i8086/i8086op.inc b/compiler/i8086/i8086op.inc index 48dbdd334d..8af33b19da 100644 --- a/compiler/i8086/i8086op.inc +++ b/compiler/i8086/i8086op.inc @@ -951,6 +951,26 @@ A_RORX, A_SARX, A_SHLX, A_SHRX, +A_VBROADCASTI128, +A_VEXTRACTI128, +A_VINSERTI128, +A_VPBLENDD, +A_VPBROADCASTB, +A_VPBROADCASTD, +A_VPBROADCASTQ, +A_VPBROADCASTW, +A_VPERM2I128, +A_VPERMD, +A_VPERMPD, +A_VPERMPS, +A_VPERMQ, +A_VPMASKMOVD, +A_VPMASKMOVQ, +A_VPSLLVD, +A_VPSLLVQ, +A_VPSRAVD, +A_VPSRLVD, +A_VPSRLVQ, A_ADD4S, A_BRKEM, A_CLR1, diff --git a/compiler/i8086/i8086prop.inc b/compiler/i8086/i8086prop.inc index 47e1495c0d..5a454e454e 100644 --- a/compiler/i8086/i8086prop.inc +++ b/compiler/i8086/i8086prop.inc @@ -953,6 +953,26 @@ (Ch: (Ch_Rop1, Ch_Rop2, Ch_Wop3)), (Ch: (Ch_All, Ch_None, Ch_None)), (Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), (Ch: (Ch_Mop2, Ch_Rop1, Ch_None)), (Ch: (Ch_All, Ch_None, Ch_None)), (Ch: (Ch_All, Ch_None, Ch_None)), diff --git a/compiler/i8086/i8086tab.inc b/compiler/i8086/i8086tab.inc index a661cd5fd5..343b67499f 100644 --- a/compiler/i8086/i8086tab.inc +++ b/compiler/i8086/i8086tab.inc @@ -8702,6 +8702,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VBROADCASTSD; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#25#72; + flags : if_avx2 + ), + ( opcode : A_VBROADCASTSS; ops : 2; optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none); @@ -8716,6 +8723,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VBROADCASTSS; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#24#72; + flags : if_avx2 + ), + ( + opcode : A_VBROADCASTSS; + ops : 2; + optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#249#1#24#72; + flags : if_avx2 + ), + ( opcode : A_VCMPPD; ops : 4; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8); @@ -8816,7 +8837,7 @@ ( opcode : A_VCVTDQ2PD; ops : 2; - optypes : (ot_ymmreg,ot_ymmreg,ot_none,ot_none); + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); code : #219#242#244#248#1#230#72; flags : if_avx or if_sandybridge ), @@ -9759,6 +9780,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VMOVNTDQA; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits256,ot_none,ot_none); + code : #241#242#244#249#1#42#72; + flags : if_avx2 + ), + ( opcode : A_VMOVNTPD; ops : 2; optypes : (ot_memory or ot_bits256,ot_ymmreg,ot_none,ot_none); @@ -9948,6 +9976,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VMPSADBW; + ops : 4; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8); + code : #241#242#244#250#1#66#61#80#23; + flags : if_avx2 + ), + ( opcode : A_VMULPD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10032,6 +10067,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPABSB; + ops : 2; + optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none); + code : #241#242#244#249#1#28#72; + flags : if_avx2 + ), + ( opcode : A_VPABSD; ops : 2; optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none); @@ -10039,6 +10081,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPABSD; + ops : 2; + optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none); + code : #241#242#244#249#1#30#72; + flags : if_avx2 + ), + ( opcode : A_VPABSW; ops : 2; optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none); @@ -10046,6 +10095,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPABSW; + ops : 2; + optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none); + code : #241#242#244#249#1#29#72; + flags : if_avx2 + ), + ( opcode : A_VPACKSSDW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10053,6 +10109,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPACKSSDW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#107#61#80; + flags : if_avx2 + ), + ( opcode : A_VPACKSSWB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10060,6 +10123,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPACKSSWB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#99#61#80; + flags : if_avx2 + ), + ( opcode : A_VPACKUSDW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10067,6 +10137,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPACKUSDW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#43#61#80; + flags : if_avx2 + ), + ( opcode : A_VPACKUSWB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10074,6 +10151,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPACKUSWB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#103#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10081,6 +10165,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#252#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10088,6 +10179,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#254#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10095,6 +10193,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#212#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDSB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10102,6 +10207,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDSB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#236#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10109,6 +10221,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#237#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDUSB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10116,6 +10235,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDUSB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#220#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDUSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10123,6 +10249,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDUSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#221#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10130,6 +10263,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#253#61#80; + flags : if_avx2 + ), + ( opcode : A_VPALIGNR; ops : 4; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8); @@ -10137,6 +10277,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPALIGNR; + ops : 4; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8); + code : #241#242#244#250#1#15#61#80#23; + flags : if_avx2 + ), + ( opcode : A_VPAND; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10144,6 +10291,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPAND; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#219#61#80; + flags : if_avx2 + ), + ( opcode : A_VPANDN; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10151,6 +10305,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPANDN; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#223#61#80; + flags : if_avx2 + ), + ( opcode : A_VPAVGB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10158,6 +10319,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPAVGB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#224#61#80; + flags : if_avx2 + ), + ( opcode : A_VPAVGW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10165,6 +10333,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPAVGW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#227#61#80; + flags : if_avx2 + ), + ( opcode : A_VPBLENDVB; ops : 4; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_xmmreg); @@ -10172,6 +10347,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPBLENDVB; + ops : 4; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_ymmreg); + code : #241#242#244#250#1#76#61#80#247; + flags : if_avx2 + ), + ( opcode : A_VPBLENDW; ops : 4; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8); @@ -10179,6 +10361,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPBLENDW; + ops : 4; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8); + code : #241#242#244#250#1#14#61#80#23; + flags : if_avx2 + ), + ( opcode : A_VPCLMULQDQ; ops : 4; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8); @@ -10193,6 +10382,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPEQB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#116#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPEQD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10200,6 +10396,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPEQD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#118#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPEQQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10207,6 +10410,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPEQQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#41#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPEQW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10214,6 +10424,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPEQW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#117#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPESTRI; ops : 3; optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none); @@ -10235,6 +10452,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPGTB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#100#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPGTD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10242,6 +10466,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPGTD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#102#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPGTQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10249,6 +10480,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPGTQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#55#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPGTW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10256,6 +10494,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPGTW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#101#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPISTRI; ops : 3; optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none); @@ -10410,6 +10655,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPHADDD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#2#61#80; + flags : if_avx2 + ), + ( opcode : A_VPHADDSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10417,6 +10669,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPHADDSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#3#61#80; + flags : if_avx2 + ), + ( opcode : A_VPHADDW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10424,6 +10683,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPHADDW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#1#61#80; + flags : if_avx2 + ), + ( opcode : A_VPHMINPOSUW; ops : 2; optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none); @@ -10438,6 +10704,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPHSUBD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#6#61#80; + flags : if_avx2 + ), + ( opcode : A_VPHSUBSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10445,6 +10718,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPHSUBSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#7#61#80; + flags : if_avx2 + ), + ( opcode : A_VPHSUBW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10452,6 +10732,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPHSUBW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#5#61#80; + flags : if_avx2 + ), + ( opcode : A_VPINSRB; ops : 4; optypes : (ot_xmmreg,ot_xmmreg,ot_reg32,ot_immediate or ot_bits8); @@ -10501,6 +10788,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMADDUBSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#4#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMADDWD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10508,6 +10802,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMADDWD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#245#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMAXSB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10515,6 +10816,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMAXSB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#60#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMAXSD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10522,6 +10830,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMAXSD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#61#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMAXSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10529,6 +10844,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMAXSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#238#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMAXUB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10536,6 +10858,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMAXUB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#222#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMAXUD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10543,6 +10872,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMAXUD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#63#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMAXUW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10550,6 +10886,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMAXUW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#62#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMINSB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10557,6 +10900,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMINSB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#56#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMINSD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10564,6 +10914,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMINSD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#57#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMINSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10571,6 +10928,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMINSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#234#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMINUB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10578,6 +10942,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMINUB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#218#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMINUD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10585,6 +10956,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMINUD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#59#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMINUW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10592,6 +10970,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMINUW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#58#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMOVMSKB; ops : 2; optypes : (ot_reg64,ot_xmmreg,ot_none,ot_none); @@ -10606,6 +10991,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVMSKB; + ops : 2; + optypes : (ot_reg32,ot_ymmreg,ot_none,ot_none); + code : #241#242#244#248#1#215#72; + flags : if_avx2 + ), + ( + opcode : A_VPMOVMSKB; + ops : 2; + optypes : (ot_reg64,ot_ymmreg,ot_none,ot_none); + code : #241#242#244#248#1#215#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVSXBD; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none); @@ -10620,6 +11019,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVSXBD; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#33#72; + flags : if_avx2 + ), + ( + opcode : A_VPMOVSXBD; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none); + code : #241#242#244#249#1#33#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVSXBQ; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits16,ot_none,ot_none); @@ -10634,6 +11047,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVSXBQ; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none); + code : #241#242#244#249#1#34#72; + flags : if_avx2 + ), + ( + opcode : A_VPMOVSXBQ; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#34#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVSXBW; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none); @@ -10648,6 +11075,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVSXBW; + ops : 2; + optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none); + code : #241#242#244#249#1#32#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVSXDQ; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none); @@ -10662,6 +11096,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVSXDQ; + ops : 2; + optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none); + code : #241#242#244#249#1#37#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVSXWD; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none); @@ -10676,6 +11117,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVSXWD; + ops : 2; + optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none); + code : #241#242#244#249#1#35#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVSXWQ; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none); @@ -10690,6 +11138,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVSXWQ; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none); + code : #241#242#244#249#1#36#72; + flags : if_avx2 + ), + ( + opcode : A_VPMOVSXWQ; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#36#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVZXBD; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none); @@ -10704,6 +11166,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVZXBD; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none); + code : #241#242#244#249#1#49#72; + flags : if_avx2 + ), + ( + opcode : A_VPMOVZXBD; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#49#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVZXBQ; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits16,ot_none,ot_none); @@ -10718,6 +11194,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVZXBQ; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none); + code : #241#242#244#249#1#50#72; + flags : if_avx2 + ), + ( + opcode : A_VPMOVZXBQ; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#50#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVZXBW; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none); @@ -10732,6 +11222,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVZXBW; + ops : 2; + optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none); + code : #241#242#244#249#1#48#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVZXDQ; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none); @@ -10746,6 +11243,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVZXDQ; + ops : 2; + optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none); + code : #241#242#244#249#1#53#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVZXWD; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none); @@ -10760,6 +11264,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVZXWD; + ops : 2; + optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none); + code : #241#242#244#249#1#51#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVZXWQ; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none); @@ -10774,6 +11285,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVZXWQ; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none); + code : #241#242#244#249#1#52#72; + flags : if_avx2 + ), + ( + opcode : A_VPMOVZXWQ; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#52#72; + flags : if_avx2 + ), + ( opcode : A_VPMULDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10781,6 +11306,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMULDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#40#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMULHRSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10788,6 +11320,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMULHRSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#11#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMULHUW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10795,6 +11334,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMULHUW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#228#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMULHW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10802,6 +11348,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMULHW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#229#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMULLD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10809,6 +11362,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMULLD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#64#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMULLW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10816,6 +11376,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMULLW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#213#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMULUDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10823,6 +11390,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMULUDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#244#61#80; + flags : if_avx2 + ), + ( opcode : A_VPOR; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10830,6 +11404,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPOR; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#235#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSADBW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10837,6 +11418,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSADBW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#246#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSHUFB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10844,6 +11432,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSHUFB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#0#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSHUFD; ops : 3; optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none); @@ -10851,6 +11446,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSHUFD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#112#72#22; + flags : if_avx2 + ), + ( opcode : A_VPSHUFHW; ops : 3; optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none); @@ -10858,6 +11460,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSHUFHW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none); + code : #219#242#244#248#1#112#72#22; + flags : if_avx2 + ), + ( opcode : A_VPSHUFLW; ops : 3; optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none); @@ -10865,6 +11474,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSHUFLW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none); + code : #220#242#244#248#1#112#72#22; + flags : if_avx2 + ), + ( opcode : A_VPSIGNB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10872,6 +11488,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSIGNB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#8#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSIGND; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10879,6 +11502,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSIGND; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#10#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSIGNW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10886,6 +11516,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSIGNW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#9#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSLLD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -10900,6 +11537,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSLLD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#114#60#142#22; + flags : if_avx2 + ), + ( + opcode : A_VPSLLD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#242#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSLLDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -10907,6 +11558,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSLLDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#115#60#143#22; + flags : if_avx2 + ), + ( opcode : A_VPSLLQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10921,6 +11579,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSLLQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#243#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSLLQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#115#60#142#22; + flags : if_avx2 + ), + ( opcode : A_VPSLLW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -10935,6 +11607,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSLLW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#113#60#142#22; + flags : if_avx2 + ), + ( + opcode : A_VPSLLW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#241#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSRAD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -10949,6 +11635,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSRAD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#114#60#140#22; + flags : if_avx2 + ), + ( + opcode : A_VPSRAD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#226#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSRAW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -10963,6 +11663,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSRAW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#113#60#140#22; + flags : if_avx2 + ), + ( + opcode : A_VPSRAW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#225#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSRLD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -10977,6 +11691,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSRLD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#114#60#138#22; + flags : if_avx2 + ), + ( + opcode : A_VPSRLD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#210#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSRLDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -10984,6 +11712,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSRLDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#115#60#139#22; + flags : if_avx2 + ), + ( opcode : A_VPSRLQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -10998,6 +11733,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSRLQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#115#60#138#22; + flags : if_avx2 + ), + ( + opcode : A_VPSRLQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#211#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSRLW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -11012,6 +11761,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSRLW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#113#60#138#22; + flags : if_avx2 + ), + ( + opcode : A_VPSRLW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#209#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11019,6 +11782,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#248#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11026,6 +11796,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#250#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11033,6 +11810,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#251#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBSB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11040,6 +11824,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBSB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#232#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11047,6 +11838,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#233#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBUSB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11054,6 +11852,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBUSB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#216#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBUSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11061,6 +11866,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBUSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#217#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11068,6 +11880,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#249#61#80; + flags : if_avx2 + ), + ( opcode : A_VPTEST; ops : 2; optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none); @@ -11089,6 +11908,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKHBW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#104#61#80; + flags : if_avx2 + ), + ( opcode : A_VPUNPCKHDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11096,6 +11922,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKHDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#106#61#80; + flags : if_avx2 + ), + ( opcode : A_VPUNPCKHQDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11103,6 +11936,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKHQDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#109#61#80; + flags : if_avx2 + ), + ( opcode : A_VPUNPCKHWD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11110,6 +11950,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKHWD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#105#61#80; + flags : if_avx2 + ), + ( opcode : A_VPUNPCKLBW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11117,6 +11964,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKLBW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#96#61#80; + flags : if_avx2 + ), + ( opcode : A_VPUNPCKLDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11124,6 +11978,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKLDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#98#61#80; + flags : if_avx2 + ), + ( opcode : A_VPUNPCKLQDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11131,6 +11992,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKLQDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#108#61#80; + flags : if_avx2 + ), + ( opcode : A_VPUNPCKLWD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11138,6 +12006,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKLWD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#97#61#80; + flags : if_avx2 + ), + ( opcode : A_VPXOR; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11145,6 +12020,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPXOR; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#239#61#80; + flags : if_avx2 + ), + ( opcode : A_VRCPPS; ops : 2; optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none); @@ -11607,6 +12489,314 @@ flags : if_bmi2 ), ( + opcode : A_VBROADCASTI128; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits128,ot_none,ot_none); + code : #241#242#244#249#1#90#72; + flags : if_avx2 + ), + ( + opcode : A_VEXTRACTI128; + ops : 3; + optypes : (ot_xmmrm,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#250#1#57#65#22; + flags : if_avx2 + ), + ( + opcode : A_VINSERTI128; + ops : 4; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_immediate or ot_bits8); + code : #241#242#244#250#1#56#61#80#23; + flags : if_avx2 + ), + ( + opcode : A_VPBLENDD; + ops : 4; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8); + code : #241#242#244#250#1#2#61#80#23; + flags : if_avx2 + ), + ( + opcode : A_VPBLENDD; + ops : 4; + optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8); + code : #241#242#250#1#2#61#80#23; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTB; + ops : 2; + optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#249#1#120#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTB; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#120#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTB; + ops : 2; + optypes : (ot_xmmreg,ot_memory or ot_bits8,ot_none,ot_none); + code : #241#242#249#1#120#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTB; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits8,ot_none,ot_none); + code : #241#242#244#249#1#120#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTD; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#88#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTD; + ops : 2; + optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none); + code : #241#242#249#1#88#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTD; + ops : 2; + optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#249#1#88#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTD; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none); + code : #241#242#244#249#1#88#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTQ; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none); + code : #241#242#244#249#1#89#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTQ; + ops : 2; + optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none); + code : #241#242#249#1#89#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTQ; + ops : 2; + optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#249#1#89#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTQ; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#89#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTW; + ops : 2; + optypes : (ot_xmmreg,ot_memory or ot_bits16,ot_none,ot_none); + code : #241#242#249#1#121#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTW; + ops : 2; + optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#249#1#121#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTW; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits16,ot_none,ot_none); + code : #241#242#244#249#1#121#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTW; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#121#72; + flags : if_avx2 + ), + ( + opcode : A_VPERM2I128; + ops : 4; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8); + code : #241#242#244#250#1#70#61#80#23; + flags : if_avx2 + ), + ( + opcode : A_VPERMD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#54#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPERMPD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none); + code : #241#242#243#244#250#1#1#72#22; + flags : if_avx2 + ), + ( + opcode : A_VPERMPS; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#22#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPERMQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none); + code : #241#242#243#244#250#1#0#72#22; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVD; + ops : 3; + optypes : (ot_xmmreg,ot_xmmreg,ot_memory or ot_bits128,ot_none); + code : #241#242#249#1#140#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVD; + ops : 3; + optypes : (ot_memory or ot_bits128,ot_xmmreg,ot_xmmreg,ot_none); + code : #241#242#249#1#142#61#66; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_memory or ot_bits256,ot_none); + code : #241#242#244#249#1#140#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVD; + ops : 3; + optypes : (ot_memory or ot_bits256,ot_ymmreg,ot_ymmreg,ot_none); + code : #241#242#244#249#1#142#61#66; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVQ; + ops : 3; + optypes : (ot_xmmreg,ot_xmmreg,ot_memory or ot_bits128,ot_none); + code : #241#242#243#249#1#140#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVQ; + ops : 3; + optypes : (ot_memory or ot_bits128,ot_xmmreg,ot_xmmreg,ot_none); + code : #241#242#243#249#1#142#61#66; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVQ; + ops : 3; + optypes : (ot_memory or ot_bits256,ot_ymmreg,ot_ymmreg,ot_none); + code : #241#242#243#244#249#1#142#61#66; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_memory or ot_bits256,ot_none); + code : #241#242#243#244#249#1#140#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSLLVD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#71#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSLLVD; + ops : 3; + optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); + code : #241#242#249#1#71#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSLLVQ; + ops : 3; + optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); + code : #241#242#243#249#1#71#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSLLVQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#243#244#249#1#71#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSRAVD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#70#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSRAVD; + ops : 3; + optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); + code : #241#242#249#1#70#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSRLVD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#69#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSRLVD; + ops : 3; + optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); + code : #241#242#249#1#69#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSRLVQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#243#244#249#1#69#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSRLVQ; + ops : 3; + optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); + code : #241#242#243#249#1#69#61#80; + flags : if_avx2 + ), + ( opcode : A_ADD4S; ops : 0; optypes : (ot_none,ot_none,ot_none,ot_none); diff --git a/compiler/x86/aasmcpu.pas b/compiler/x86/aasmcpu.pas index 4487258d19..8b9b49aaca 100644 --- a/compiler/x86/aasmcpu.pas +++ b/compiler/x86/aasmcpu.pas @@ -227,7 +227,7 @@ interface TMemRefSizeInfo = (msiUnkown, msiUnsupported, msiNoSize, msiMultiple, msiMultiple8, msiMultiple16, msiMultiple32, msiMultiple64, msiMultiple128, msiMultiple256, - msiMemRegSize, msiMemRegx64y128, msiMemRegx64y256, + msiMemRegSize, msiMemRegx16y32, msiMemRegx32y64, msiMemRegx64y128, msiMemRegx64y256, msiMem8, msiMem16, msiMem32, msiMem64, msiMem128, msiMem256); TConstSizeInfo = (csiUnkown, csiMultiple, csiNoSize, csiMem8, csiMem16, csiMem32, csiMem64); @@ -427,6 +427,7 @@ implementation IF_SSE41 = $00200000; IF_SSE42 = $00200000; IF_AVX = $00200000; + IF_AVX2 = $00200000; IF_BMI1 = $00200000; IF_BMI2 = $00200000; IF_16BITONLY = $00200000; @@ -3247,7 +3248,7 @@ implementation actConstSize := 0; actConstCount := 0; - if asmop = a_movups then + if asmop = a_vpmovzxbq then begin RegXMMSizeMask := RegXMMSizeMask; end; @@ -3397,6 +3398,12 @@ implementation (InsTabMemRefSizeInfoCache^[AsmOp].ExistsSSEAVX)then begin case RegXMMSizeMask of + OT_BITS16: case RegYMMSizeMask of + OT_BITS32: InsTabMemRefSizeInfoCache^[AsmOp].MemRefSize := msiMemRegx16y32; + end; + OT_BITS32: case RegYMMSizeMask of + OT_BITS64: InsTabMemRefSizeInfoCache^[AsmOp].MemRefSize := msiMemRegx32y64; + end; OT_BITS64: case RegYMMSizeMask of OT_BITS128: InsTabMemRefSizeInfoCache^[AsmOp].MemRefSize := msiMemRegx64y128; OT_BITS256: InsTabMemRefSizeInfoCache^[AsmOp].MemRefSize := msiMemRegx64y256; diff --git a/compiler/x86/rax86.pas b/compiler/x86/rax86.pas index 63302cc99c..391ed7ad05 100644 --- a/compiler/x86/rax86.pas +++ b/compiler/x86/rax86.pas @@ -591,6 +591,51 @@ begin end; end; end; + msiMemRegx16y32: + begin + for j := 1 to ops do + begin + if operands[j].Opr.Typ = OPR_REGISTER then + begin + case getsubreg(operands[j].opr.reg) of + R_SUBMMX: begin + tx86operand(operands[i]).opsize := S_L; + tx86operand(operands[i]).size := OS_M16; + break; + end; + R_SUBMMY: begin + tx86operand(operands[i]).opsize := S_Q; + tx86operand(operands[i]).size := OS_M32; + break; + end; + else Message(asmr_e_unable_to_determine_reference_size); + end; + end; + end; + end; + + msiMemRegx32y64: + begin + for j := 1 to ops do + begin + if operands[j].Opr.Typ = OPR_REGISTER then + begin + case getsubreg(operands[j].opr.reg) of + R_SUBMMX: begin + tx86operand(operands[i]).opsize := S_L; + tx86operand(operands[i]).size := OS_M32; + break; + end; + R_SUBMMY: begin + tx86operand(operands[i]).opsize := S_Q; + tx86operand(operands[i]).size := OS_M64; + break; + end; + else Message(asmr_e_unable_to_determine_reference_size); + end; + end; + end; + end; msiMemRegx64y128: begin for j := 1 to ops do @@ -1139,7 +1184,7 @@ begin case operands[i].size of OS_8,OS_S8 : asize:=OT_BITS8; - OS_16,OS_S16 : + OS_16,OS_S16, OS_M16: asize:=OT_BITS16; OS_32,OS_S32,OS_F32,OS_M32 : asize:=OT_BITS32; diff --git a/compiler/x86/x86ins.dat b/compiler/x86/x86ins.dat index d4ba5cbab5..b4e6c90461 100644 --- a/compiler/x86/x86ins.dat +++ b/compiler/x86/x86ins.dat @@ -3552,11 +3552,14 @@ ymmreg,mem128 \361\362\364\371\1\x1A\110 AVX,SA [VBROADCASTSD] (Ch_All, Ch_None, Ch_None) ymmreg,mem64 \361\362\364\371\1\x19\110 AVX,SANDYBRIDGE +ymmreg,xmmreg \361\362\364\371\1\x19\110 AVX2 [VBROADCASTSS] (Ch_All, Ch_None, Ch_None) ymmreg,mem32 \361\362\364\371\1\x18\110 AVX,SANDYBRIDGE xmmreg,mem32 \361\362\371\1\x18\110 AVX,SANDYBRIDGE +ymmreg,xmmreg \361\362\364\371\1\x18\110 AVX2 +xmmreg,xmmreg \361\362\371\1\x18\110 AVX2 [VCMPPD] (Ch_All, Ch_None, Ch_None) @@ -3592,7 +3595,7 @@ xmmreg,xmmreg \362\370\1\x2F\110 AVX,SA (Ch_All, Ch_None, Ch_None) xmmreg,mem64 \333\362\370\1\xE6\110 AVX,SANDYBRIDGE xmmreg,xmmreg \333\362\370\1\xE6\110 AVX,SANDYBRIDGE -ymmreg,ymmreg \333\362\364\370\1\xE6\110 AVX,SANDYBRIDGE +ymmreg,xmmreg \333\362\364\370\1\xE6\110 AVX,SANDYBRIDGE ymmreg,mem128 \333\362\364\370\1\xE6\110 AVX,SANDYBRIDGE [VCVTDQ2PS] @@ -3901,6 +3904,7 @@ mem256,ymmreg \361\362\364\370\1\xE7\101 AVX,SA [VMOVNTDQA] (Ch_Wop2, Ch_Rop1, Ch_None) xmmreg,mem128 \361\362\371\1\x2A\110 AVX,SANDYBRIDGE +ymmreg,mem256 \361\362\364\371\1\x2A\110 AVX2 [VMOVNTPD] (Ch_Wop2, Ch_Rop1, Ch_None) @@ -3960,6 +3964,7 @@ ymmrm,ymmreg \362\364\370\1\x11\101 AVX,SA [VMPSADBW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm,imm8 \361\362\372\1\x42\75\120\27 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm,imm8 \361\362\364\372\1\x42\75\120\27 AVX2 [VMULPD] (Ch_Wop3, Ch_Rop2, Ch_Rop1) @@ -3993,90 +3998,112 @@ ymmreg,ymmreg,ymmrm \362\364\370\1\x56\75\120 AVX,SA [VPABSB] (Ch_All, Ch_None, Ch_None) xmmreg,xmmrm \361\362\371\1\x1C\110 AVX,SANDYBRIDGE +ymmreg,ymmrm \361\362\364\371\1\x1C\110 AVX2 [VPABSD] (Ch_All, Ch_None, Ch_None) xmmreg,xmmrm \361\362\371\1\x1E\110 AVX,SANDYBRIDGE +ymmreg,ymmrm \361\362\364\371\1\x1E\110 AVX2 [VPABSW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmrm \361\362\371\1\x1D\110 AVX,SANDYBRIDGE +ymmreg,ymmrm \361\362\364\371\1\x1D\110 AVX2 [VPACKSSDW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\x6B\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\x6B\75\120 AVX2 [VPACKSSWB] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\x63\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\x63\75\120 AVX2 [VPACKUSDW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\371\1\x2B\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x2B\75\120 AVX2 [VPACKUSWB] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\x67\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\x67\75\120 AVX2 [VPADDB] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\xFC\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xFC\75\120 AVX2 [VPADDD] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\xFE\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xFE\75\120 AVX2 [VPADDQ] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xD4\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xD4\75\120 AVX2 [VPADDSB] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xEC\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xEC\75\120 AVX2 [VPADDSW] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xED\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xED\75\120 AVX2 [VPADDUSB] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xDC\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xDC\75\120 AVX2 [VPADDUSW] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xDD\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xDD\75\120 AVX2 [VPADDW] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xFD\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xFD\75\120 AVX2 [VPALIGNR] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm,imm8 \361\362\372\1\x0F\75\120\27 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm,imm8 \361\362\364\372\1\x0F\75\120\27 AVX2 [VPAND] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xDB\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xDB\75\120 AVX2 [VPANDN] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xDF\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xDF\75\120 AVX2 [VPAVGB] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\xE0\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xE0\75\120 AVX2 [VPAVGW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\xE3\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xE3\75\120 AVX2 [VPBLENDVB] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm,xmmreg \361\362\372\1\x4C\75\120\367 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm,ymmreg \361\362\364\372\1\x4C\75\120\367 AVX2 [VPBLENDW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm,imm8 \361\362\372\1\x0E\75\120\27 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm,imm8 \361\362\364\372\1\x0E\75\120\27 AVX2 [VPCLMULQDQ] (Ch_All, Ch_None, Ch_None) @@ -4085,18 +4112,22 @@ xmmreg,xmmreg,xmmrm,imm8 \361\362\372\1\x44\75\120\27 AVX,SA [VPCMPEQB] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\x74\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\x74\75\120 AVX2 [VPCMPEQD] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\x76\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\x76\75\120 AVX2 [VPCMPEQQ] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\371\1\x29\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x29\75\120 AVX2 [VPCMPEQW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\x75\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\x75\75\120 AVX2 [VPCMPESTRI] (Ch_All, Ch_None, Ch_None) @@ -4109,18 +4140,22 @@ xmmreg,xmmrm,imm8 \361\362\372\1\x60\110\26 AVX,SA [VPCMPGTB] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\x64\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\x64\75\120 AVX2 [VPCMPGTD] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\x66\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\x66\75\120 AVX2 [VPCMPGTQ] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\371\1\x37\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x37\75\120 AVX2 [VPCMPGTW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\x65\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\x65\75\120 AVX2 [VPCMPISTRI] (Ch_All, Ch_None, Ch_None) @@ -4174,14 +4209,17 @@ mem16,xmmreg,imm8 \361\362\372\1\x15\101\26 AVX,SA [VPHADDD] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\371\1\x02\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x02\75\120 AVX2 [VPHADDSW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\371\1\x03\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x03\75\120 AVX2 [VPHADDW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\371\1\x01\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x01\75\120 AVX2 [VPHMINPOSUW] (Ch_All, Ch_None, Ch_None) @@ -4190,14 +4228,17 @@ xmmreg,xmmrm \361\362\371\1\x41\110 AVX,SA [VPHSUBD] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\371\1\x06\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x06\75\120 AVX2 [VPHSUBSW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\371\1\x07\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x07\75\120 AVX2 [VPHSUBW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\371\1\x05\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x05\75\120 AVX2 [VPINSRB] (Ch_All, Ch_None, Ch_None) @@ -4220,267 +4261,347 @@ xmmreg,xmmreg,mem16,imm8 \361\362\370\1\xC4\75\120\27 AVX,SA [VPMADDUBSW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\371\1\x04\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x04\75\120 AVX2 [VPMADDWD] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\xF5\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xF5\75\120 AVX2 [VPMAXSB] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\371\1\x3C\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x3C\75\120 AVX2 [VPMAXSD] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\371\1\x3D\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x3D\75\120 AVX2 [VPMAXSW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\xEE\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xEE\75\120 AVX2 [VPMAXUB] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\xDE\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xDE\75\120 AVX2 [VPMAXUD] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\371\1\x3F\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x3F\75\120 AVX2 [VPMAXUW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\371\1\x3E\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x3E\75\120 AVX2 [VPMINSB] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\371\1\x38\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x38\75\120 AVX2 [VPMINSD] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\371\1\x39\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x39\75\120 AVX2 [VPMINSW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\xEA\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xEA\75\120 AVX2 [VPMINUB] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\xDA\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xDA\75\120 AVX2 [VPMINUD] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\371\1\x3B\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x3B\75\120 AVX2 [VPMINUW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\371\1\x3A\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x3A\75\120 AVX2 [VPMOVMSKB] (Ch_All, Ch_None, Ch_None) reg64,xmmreg \361\362\370\1\xD7\110 AVX,SANDYBRIDGE reg32,xmmreg \361\362\370\1\xD7\110 AVX,SANDYBRIDGE +reg32,ymmreg \361\362\364\370\1\xD7\110 AVX2 +reg64,ymmreg \361\362\364\370\1\xD7\110 AVX2 [VPMOVSXBD] (Ch_All, Ch_None, Ch_None) xmmreg,mem32 \361\362\371\1\x21\110 AVX,SANDYBRIDGE xmmreg,xmmreg \361\362\371\1\x21\110 AVX,SANDYBRIDGE +ymmreg,xmmreg \361\362\364\371\1\x21\110 AVX2 +ymmreg,mem64 \361\362\364\371\1\x21\110 AVX2 [VPMOVSXBQ] (Ch_All, Ch_None, Ch_None) xmmreg,mem16 \361\362\371\1\x22\110 AVX,SANDYBRIDGE xmmreg,xmmreg \361\362\371\1\x22\110 AVX,SANDYBRIDGE +ymmreg,mem32 \361\362\364\371\1\x22\110 AVX2 +ymmreg,xmmreg \361\362\364\371\1\x22\110 AVX2 [VPMOVSXBW] (Ch_All, Ch_None, Ch_None) xmmreg,mem64 \361\362\371\1\x20\110 AVX,SANDYBRIDGE xmmreg,xmmreg \361\362\371\1\x20\110 AVX,SANDYBRIDGE +ymmreg,xmmrm \361\362\364\371\1\x20\110 AVX2 [VPMOVSXDQ] (Ch_All, Ch_None, Ch_None) xmmreg,mem64 \361\362\371\1\x25\110 AVX,SANDYBRIDGE xmmreg,xmmreg \361\362\371\1\x25\110 AVX,SANDYBRIDGE +ymmreg,xmmrm \361\362\364\371\1\x25\110 AVX2 [VPMOVSXWD] (Ch_All, Ch_None, Ch_None) xmmreg,mem64 \361\362\371\1\x23\110 AVX,SANDYBRIDGE xmmreg,xmmreg \361\362\371\1\x23\110 AVX,SANDYBRIDGE +ymmreg,xmmrm \361\362\364\371\1\x23\110 AVX2 [VPMOVSXWQ] (Ch_All, Ch_None, Ch_None) xmmreg,mem32 \361\362\371\1\x24\110 AVX,SANDYBRIDGE xmmreg,xmmreg \361\362\371\1\x24\110 AVX,SANDYBRIDGE +ymmreg,mem64 \361\362\364\371\1\x24\110 AVX2 +ymmreg,xmmreg \361\362\364\371\1\x24\110 AVX2 [VPMOVZXBD] (Ch_All, Ch_None, Ch_None) xmmreg,mem32 \361\362\371\1\x31\110 AVX,SANDYBRIDGE xmmreg,xmmreg \361\362\371\1\x31\110 AVX,SANDYBRIDGE +ymmreg,mem64 \361\362\364\371\1\x31\110 AVX2 +ymmreg,xmmreg \361\362\364\371\1\x31\110 AVX2 [VPMOVZXBQ] (Ch_All, Ch_None, Ch_None) xmmreg,mem16 \361\362\371\1\x32\110 AVX,SANDYBRIDGE xmmreg,xmmreg \361\362\371\1\x32\110 AVX,SANDYBRIDGE +ymmreg,mem32 \361\362\364\371\1\x32\110 AVX2 +ymmreg,xmmreg \361\362\364\371\1\x32\110 AVX2 [VPMOVZXBW] (Ch_All, Ch_None, Ch_None) xmmreg,mem64 \361\362\371\1\x30\110 AVX,SANDYBRIDGE xmmreg,xmmreg \361\362\371\1\x30\110 AVX,SANDYBRIDGE +ymmreg,xmmrm \361\362\364\371\1\x30\110 AVX2 [VPMOVZXDQ] (Ch_All, Ch_None, Ch_None) xmmreg,mem64 \361\362\371\1\x35\110 AVX,SANDYBRIDGE xmmreg,xmmreg \361\362\371\1\x35\110 AVX,SANDYBRIDGE +ymmreg,xmmrm \361\362\364\371\1\x35\110 AVX2 [VPMOVZXWD] (Ch_All, Ch_None, Ch_None) xmmreg,mem64 \361\362\371\1\x33\110 AVX,SANDYBRIDGE xmmreg,xmmreg \361\362\371\1\x33\110 AVX,SANDYBRIDGE +ymmreg,xmmrm \361\362\364\371\1\x33\110 AVX2 [VPMOVZXWQ] (Ch_All, Ch_None, Ch_None) xmmreg,mem32 \361\362\371\1\x34\110 AVX,SANDYBRIDGE xmmreg,xmmreg \361\362\371\1\x34\110 AVX,SANDYBRIDGE +ymmreg,mem64 \361\362\364\371\1\x34\110 AVX2 +ymmreg,xmmreg \361\362\364\371\1\x34\110 AVX2 + [VPMULDQ] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\371\1\x28\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x28\75\120 AVX2 [VPMULHRSW] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\371\1\x0B\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x0B\75\120 AVX2 [VPMULHUW] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xE4\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xE4\75\120 AVX2 [VPMULHW] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xE5\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xE5\75\120 AVX2 [VPMULLD] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\371\1\x40\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x40\75\120 AVX2 [VPMULLW] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xD5\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xD5\75\120 AVX2 [VPMULUDQ] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xF4\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xF4\75\120 AVX2 [VPOR] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xEB\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xEB\75\120 AVX2 [VPSADBW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\xF6\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xF6\75\120 AVX2 [VPSHUFB] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\371\1\x00\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x00\75\120 AVX2 [VPSHUFD] (Ch_All, Ch_None, Ch_None) xmmreg,xmmrm,imm8 \361\362\370\1\x70\110\26 AVX,SANDYBRIDGE +ymmreg,ymmrm,imm8 \361\362\364\370\1\x70\110\26 AVX2 [VPSHUFHW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmrm,imm8 \333\362\370\1\x70\110\26 AVX,SANDYBRIDGE +ymmreg,ymmrm,imm8 \333\362\364\370\1\x70\110\26 AVX2 [VPSHUFLW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmrm,imm8 \334\362\370\1\x70\110\26 AVX,SANDYBRIDGE +ymmreg,ymmrm,imm8 \334\362\364\370\1\x70\110\26 AVX2 [VPSIGNB] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\371\1\x08\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x08\75\120 AVX2 [VPSIGND] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\371\1\x0A\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x0A\75\120 AVX2 [VPSIGNW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\371\1\x09\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x09\75\120 AVX2 [VPSLLD] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,imm8 \361\362\370\1\x72\74\216\26 AVX,SANDYBRIDGE xmmreg,xmmreg,xmmrm \361\362\370\1\xF2\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,imm8 \361\362\364\370\1\x72\74\216\26 AVX2 +ymmreg,ymmreg,xmmrm \361\362\364\370\1\xF2\75\120 AVX2 [VPSLLDQ] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,imm8 \361\362\370\1\x73\74\217\26 AVX,SANDYBRIDGE +ymmreg,ymmreg,imm8 \361\362\364\370\1\x73\74\217\26 AVX2 + [VPSLLQ] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xF3\75\120 AVX,SANDYBRIDGE xmmreg,xmmreg,imm8 \361\362\370\1\x73\74\216\26 AVX,SANDYBRIDGE +ymmreg,ymmreg,xmmrm \361\362\364\370\1\xF3\75\120 AVX2 +ymmreg,ymmreg,imm8 \361\362\364\370\1\x73\74\216\26 AVX2 [VPSLLW] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,imm8 \361\362\370\1\x71\74\216\26 AVX,SANDYBRIDGE xmmreg,xmmreg,xmmrm \361\362\370\1\xF1\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,imm8 \361\362\364\370\1\x71\74\216\26 AVX2 +ymmreg,ymmreg,xmmrm \361\362\364\370\1\xF1\75\120 AVX2 + [VPSRAD] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,imm8 \361\362\370\1\x72\74\214\26 AVX,SANDYBRIDGE xmmreg,xmmreg,xmmrm \361\362\370\1\xE2\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,imm8 \361\362\364\370\1\x72\74\214\26 AVX2 +ymmreg,ymmreg,xmmrm \361\362\364\370\1\xE2\75\120 AVX2 [VPSRAW] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,imm8 \361\362\370\1\x71\74\214\26 AVX,SANDYBRIDGE xmmreg,xmmreg,xmmrm \361\362\370\1\xE1\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,imm8 \361\362\364\370\1\x71\74\214\26 AVX2 +ymmreg,ymmreg,xmmrm \361\362\364\370\1\xE1\75\120 AVX2 [VPSRLD] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,imm8 \361\362\370\1\x72\74\212\26 AVX,SANDYBRIDGE xmmreg,xmmreg,xmmrm \361\362\370\1\xD2\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,imm8 \361\362\364\370\1\x72\74\212\26 AVX2 +ymmreg,ymmreg,xmmrm \361\362\364\370\1\xD2\75\120 AVX2 + [VPSRLDQ] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,imm8 \361\362\370\1\x73\74\213\26 AVX,SANDYBRIDGE +ymmreg,ymmreg,imm8 \361\362\364\370\1\x73\74\213\26 AVX2 [VPSRLQ] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,imm8 \361\362\370\1\x73\74\212\26 AVX,SANDYBRIDGE xmmreg,xmmreg,xmmrm \361\362\370\1\xD3\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,imm8 \361\362\364\370\1\x73\74\212\26 AVX2 +ymmreg,ymmreg,xmmrm \361\362\364\370\1\xD3\75\120 AVX2 [VPSRLW] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,imm8 \361\362\370\1\x71\74\212\26 AVX,SANDYBRIDGE xmmreg,xmmreg,xmmrm \361\362\370\1\xD1\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,imm8 \361\362\364\370\1\x71\74\212\26 AVX2 +ymmreg,ymmreg,xmmrm \361\362\364\370\1\xD1\75\120 AVX2 [VPSUBB] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xF8\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xF8\75\120 AVX2 [VPSUBD] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xFA\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xFA\75\120 AVX2 [VPSUBQ] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xFB\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xFB\75\120 AVX2 [VPSUBSB] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xE8\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xE8\75\120 AVX2 [VPSUBSW] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xE9\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xE9\75\120 AVX2 [VPSUBUSB] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xD8\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xD8\75\120 AVX2 [VPSUBUSW] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xD9\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xD9\75\120 AVX2 [VPSUBW] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xF9\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xF9\75\120 AVX2 [VPTEST] (Ch_All, Ch_None, Ch_None) @@ -4490,38 +4611,47 @@ xmmreg,xmmrm \361\362\371\1\x17\110 AVX,SA [VPUNPCKHBW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\x68\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\x68\75\120 AVX2 [VPUNPCKHDQ] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\x6A\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\x6A\75\120 AVX2 [VPUNPCKHQDQ] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\x6D\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\x6D\75\120 AVX2 [VPUNPCKHWD] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\x69\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\x69\75\120 AVX2 [VPUNPCKLBW] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\x60\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\x60\75\120 AVX2 [VPUNPCKLDQ] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\x62\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\x62\75\120 AVX2 [VPUNPCKLQDQ] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\x6C\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\x6C\75\120 AVX2 [VPUNPCKLWD] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,xmmrm \361\362\370\1\x61\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\x61\75\120 AVX2 [VPXOR] (Ch_Rop1, Ch_Rop2, Ch_Wop3) xmmreg,xmmreg,xmmrm \361\362\370\1\xEF\75\120 AVX,SANDYBRIDGE +ymmreg,ymmreg,ymmrm \361\362\364\370\1\xEF\75\120 AVX2 [VRCPPS] (Ch_All, Ch_None, Ch_None) @@ -4717,6 +4847,117 @@ reg64,rm64,reg64 \361\362\363\371\1\xf7\76\110 BMI2,X reg32,rm32,reg32 \334\362\371\1\xf7\76\110 BMI2 reg64,rm64,reg64 \334\362\363\371\1\xf7\76\110 BMI2,X86_64 + +;******************************************************************************* +;********** AVX2 *************************************************************** +;******************************************************************************* + +[VBROADCASTI128] +(Ch_All, Ch_None, Ch_None) +ymmreg,mem128 \361\362\364\371\1\x5A\110 AVX2 + +[VEXTRACTI128] +(Ch_All, Ch_None, Ch_None) +xmmrm,ymmreg,imm8 \361\362\364\372\1\x39\101\26 AVX2 + +[VINSERTI128] +(Ch_All, Ch_None, Ch_None) +ymmreg,ymmreg,xmmrm,imm8 \361\362\364\372\1\x38\75\120\27 AVX2 + +[VPBLENDD] +(Ch_All, Ch_None, Ch_None) +ymmreg,ymmreg,ymmrm,imm8 \361\362\364\372\1\x02\75\120\27 AVX2 +xmmreg,xmmreg,xmmrm,imm8 \361\362\372\1\x02\75\120\27 AVX2 + +[VPBROADCASTB] +(Ch_All, Ch_None, Ch_None) +xmmreg,xmmreg \361\362\371\1\x78\110 AVX2 +ymmreg,xmmreg \361\362\364\371\1\x78\110 AVX2 +xmmreg,mem8 \361\362\371\1\x78\110 AVX2 +ymmreg,mem8 \361\362\364\371\1\x78\110 AVX2 + +[VPBROADCASTD] +(Ch_All, Ch_None, Ch_None) +ymmreg,xmmreg \361\362\364\371\1\x58\110 AVX2 +xmmreg,mem32 \361\362\371\1\x58\110 AVX2 +xmmreg,xmmreg \361\362\371\1\x58\110 AVX2 +ymmreg,mem32 \361\362\364\371\1\x58\110 AVX2 + +[VPBROADCASTQ] +(Ch_All, Ch_None, Ch_None) +ymmreg,mem64 \361\362\364\371\1\x59\110 AVX2 +xmmreg,mem64 \361\362\371\1\x59\110 AVX2 +xmmreg,xmmreg \361\362\371\1\x59\110 AVX2 +ymmreg,xmmreg \361\362\364\371\1\x59\110 AVX2 + +[VPBROADCASTW] +(Ch_All, Ch_None, Ch_None) +xmmreg,mem16 \361\362\371\1\x79\110 AVX2 +xmmreg,xmmreg \361\362\371\1\x79\110 AVX2 +ymmreg,mem16 \361\362\364\371\1\x79\110 AVX2 +ymmreg,xmmreg \361\362\364\371\1\x79\110 AVX2 + +[VPERM2I128] +(Ch_All, Ch_None, Ch_None) +ymmreg,ymmreg,ymmrm,imm8 \361\362\364\372\1\x46\75\120\27 AVX2 + +[VPERMD] +(Ch_All, Ch_None, Ch_None) +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x36\75\120 AVX2 + +[VPERMPD] +(Ch_All, Ch_None, Ch_None) +ymmreg,ymmrm,imm8 \361\362\363\364\372\1\x01\110\26 AVX2 + +[VPERMPS] +(Ch_All, Ch_None, Ch_None) +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x16\75\120 AVX2 + +[VPERMQ] +(Ch_All, Ch_None, Ch_None) +ymmreg,ymmrm,imm8 \361\362\363\364\372\1\x00\110\26 AVX2 + +[VPMASKMOVD] +(Ch_All, Ch_None, Ch_None) +xmmreg,xmmreg,mem128 \361\362\371\1\x8C\75\120 AVX2 +mem128,xmmreg,xmmreg \361\362\371\1\x8E\75\102 AVX2 +ymmreg,ymmreg,mem256 \361\362\364\371\1\x8C\75\120 AVX2 +mem256,ymmreg,ymmreg \361\362\364\371\1\x8E\75\102 AVX2 + +[VPMASKMOVQ] +(Ch_All, Ch_None, Ch_None) +xmmreg,xmmreg,mem128 \361\362\363\371\1\x8C\75\120 AVX2 +mem128,xmmreg,xmmreg \361\362\363\371\1\x8E\75\102 AVX2 +mem256,ymmreg,ymmreg \361\362\363\364\371\1\x8E\75\102 AVX2 +ymmreg,ymmreg,mem256 \361\362\363\364\371\1\x8C\75\120 AVX2 + +[VPSLLVD] +(Ch_All, Ch_None, Ch_None) +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x47\75\120 AVX2 +xmmreg,xmmreg,xmmrm \361\362\371\1\x47\75\120 AVX2 + +[VPSLLVQ] +(Ch_All, Ch_None, Ch_None) +xmmreg,xmmreg,xmmrm \361\362\363\371\1\x47\75\120 AVX2 +ymmreg,ymmreg,ymmrm \361\362\363\364\371\1\x47\75\120 AVX2 + +[VPSRAVD] +(Ch_All, Ch_None, Ch_None) +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x46\75\120 AVX2 +xmmreg,xmmreg,xmmrm \361\362\371\1\x46\75\120 AVX2 + +[VPSRLVD] +(Ch_All, Ch_None, Ch_None) +ymmreg,ymmreg,ymmrm \361\362\364\371\1\x45\75\120 AVX2 +xmmreg,xmmreg,xmmrm \361\362\371\1\x45\75\120 AVX2 + +[VPSRLVQ] +(Ch_All, Ch_None, Ch_None) +ymmreg,ymmreg,ymmrm \361\362\363\364\371\1\x45\75\120 AVX2 +xmmreg,xmmreg,xmmrm \361\362\363\371\1\x45\75\120 AVX2 + + + ;******************************************************************************* ;********** NEC V20/V30 ******************************************************** ;******************************************************************************* diff --git a/compiler/x86_64/x8664ats.inc b/compiler/x86_64/x8664ats.inc index 5a53788dd6..944e5635fa 100644 --- a/compiler/x86_64/x8664ats.inc +++ b/compiler/x86_64/x8664ats.inc @@ -964,5 +964,25 @@ attsufNONE, attsufNONE, attsufNONE, attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, attsufNONE ); diff --git a/compiler/x86_64/x8664att.inc b/compiler/x86_64/x8664att.inc index ed2f7848a1..354a187ae2 100644 --- a/compiler/x86_64/x8664att.inc +++ b/compiler/x86_64/x8664att.inc @@ -951,6 +951,26 @@ 'sarx', 'shlx', 'shrx', +'vbroadcasti128', +'vextracti128', +'vinserti128', +'vpblendd', +'vpbroadcastb', +'vpbroadcastd', +'vpbroadcastq', +'vpbroadcastw', +'vperm2i128', +'vpermd', +'vpermpd', +'vpermps', +'vpermq', +'vpmaskmovd', +'vpmaskmovq', +'vpsllvd', +'vpsllvq', +'vpsravd', +'vpsrlvd', +'vpsrlvq', 'add4s', 'brkem', 'clr1', diff --git a/compiler/x86_64/x8664int.inc b/compiler/x86_64/x8664int.inc index dc4ebb3dd2..aa667b7ab1 100644 --- a/compiler/x86_64/x8664int.inc +++ b/compiler/x86_64/x8664int.inc @@ -951,6 +951,26 @@ 'sarx', 'shlx', 'shrx', +'vbroadcasti128', +'vextracti128', +'vinserti128', +'vpblendd', +'vpbroadcastb', +'vpbroadcastd', +'vpbroadcastq', +'vpbroadcastw', +'vperm2i128', +'vpermd', +'vpermpd', +'vpermps', +'vpermq', +'vpmaskmovd', +'vpmaskmovq', +'vpsllvd', +'vpsllvq', +'vpsravd', +'vpsrlvd', +'vpsrlvq', 'add4s', 'brkem', 'clr1', diff --git a/compiler/x86_64/x8664nop.inc b/compiler/x86_64/x8664nop.inc index 24830769e7..2805df453d 100644 --- a/compiler/x86_64/x8664nop.inc +++ b/compiler/x86_64/x8664nop.inc @@ -1,2 +1,2 @@ { don't edit, this file is generated from x86ins.dat } -1679; +1849; diff --git a/compiler/x86_64/x8664op.inc b/compiler/x86_64/x8664op.inc index 48dbdd334d..8af33b19da 100644 --- a/compiler/x86_64/x8664op.inc +++ b/compiler/x86_64/x8664op.inc @@ -951,6 +951,26 @@ A_RORX, A_SARX, A_SHLX, A_SHRX, +A_VBROADCASTI128, +A_VEXTRACTI128, +A_VINSERTI128, +A_VPBLENDD, +A_VPBROADCASTB, +A_VPBROADCASTD, +A_VPBROADCASTQ, +A_VPBROADCASTW, +A_VPERM2I128, +A_VPERMD, +A_VPERMPD, +A_VPERMPS, +A_VPERMQ, +A_VPMASKMOVD, +A_VPMASKMOVQ, +A_VPSLLVD, +A_VPSLLVQ, +A_VPSRAVD, +A_VPSRLVD, +A_VPSRLVQ, A_ADD4S, A_BRKEM, A_CLR1, diff --git a/compiler/x86_64/x8664pro.inc b/compiler/x86_64/x8664pro.inc index 47e1495c0d..5a454e454e 100644 --- a/compiler/x86_64/x8664pro.inc +++ b/compiler/x86_64/x8664pro.inc @@ -953,6 +953,26 @@ (Ch: (Ch_Rop1, Ch_Rop2, Ch_Wop3)), (Ch: (Ch_All, Ch_None, Ch_None)), (Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), (Ch: (Ch_Mop2, Ch_Rop1, Ch_None)), (Ch: (Ch_All, Ch_None, Ch_None)), (Ch: (Ch_All, Ch_None, Ch_None)), diff --git a/compiler/x86_64/x8664tab.inc b/compiler/x86_64/x8664tab.inc index cfd0430494..73f7080b0d 100644 --- a/compiler/x86_64/x8664tab.inc +++ b/compiler/x86_64/x8664tab.inc @@ -8807,6 +8807,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VBROADCASTSD; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#25#72; + flags : if_avx2 + ), + ( opcode : A_VBROADCASTSS; ops : 2; optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none); @@ -8821,6 +8828,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VBROADCASTSS; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#24#72; + flags : if_avx2 + ), + ( + opcode : A_VBROADCASTSS; + ops : 2; + optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#249#1#24#72; + flags : if_avx2 + ), + ( opcode : A_VCMPPD; ops : 4; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8); @@ -8921,7 +8942,7 @@ ( opcode : A_VCVTDQ2PD; ops : 2; - optypes : (ot_ymmreg,ot_ymmreg,ot_none,ot_none); + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); code : #219#242#244#248#1#230#72; flags : if_avx or if_sandybridge ), @@ -9864,6 +9885,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VMOVNTDQA; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits256,ot_none,ot_none); + code : #241#242#244#249#1#42#72; + flags : if_avx2 + ), + ( opcode : A_VMOVNTPD; ops : 2; optypes : (ot_memory or ot_bits256,ot_ymmreg,ot_none,ot_none); @@ -10053,6 +10081,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VMPSADBW; + ops : 4; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8); + code : #241#242#244#250#1#66#61#80#23; + flags : if_avx2 + ), + ( opcode : A_VMULPD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10137,6 +10172,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPABSB; + ops : 2; + optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none); + code : #241#242#244#249#1#28#72; + flags : if_avx2 + ), + ( opcode : A_VPABSD; ops : 2; optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none); @@ -10144,6 +10186,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPABSD; + ops : 2; + optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none); + code : #241#242#244#249#1#30#72; + flags : if_avx2 + ), + ( opcode : A_VPABSW; ops : 2; optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none); @@ -10151,6 +10200,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPABSW; + ops : 2; + optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none); + code : #241#242#244#249#1#29#72; + flags : if_avx2 + ), + ( opcode : A_VPACKSSDW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10158,6 +10214,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPACKSSDW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#107#61#80; + flags : if_avx2 + ), + ( opcode : A_VPACKSSWB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10165,6 +10228,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPACKSSWB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#99#61#80; + flags : if_avx2 + ), + ( opcode : A_VPACKUSDW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10172,6 +10242,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPACKUSDW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#43#61#80; + flags : if_avx2 + ), + ( opcode : A_VPACKUSWB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10179,6 +10256,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPACKUSWB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#103#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10186,6 +10270,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#252#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10193,6 +10284,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#254#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10200,6 +10298,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#212#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDSB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10207,6 +10312,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDSB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#236#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10214,6 +10326,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#237#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDUSB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10221,6 +10340,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDUSB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#220#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDUSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10228,6 +10354,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDUSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#221#61#80; + flags : if_avx2 + ), + ( opcode : A_VPADDW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10235,6 +10368,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPADDW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#253#61#80; + flags : if_avx2 + ), + ( opcode : A_VPALIGNR; ops : 4; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8); @@ -10242,6 +10382,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPALIGNR; + ops : 4; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8); + code : #241#242#244#250#1#15#61#80#23; + flags : if_avx2 + ), + ( opcode : A_VPAND; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10249,6 +10396,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPAND; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#219#61#80; + flags : if_avx2 + ), + ( opcode : A_VPANDN; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10256,6 +10410,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPANDN; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#223#61#80; + flags : if_avx2 + ), + ( opcode : A_VPAVGB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10263,6 +10424,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPAVGB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#224#61#80; + flags : if_avx2 + ), + ( opcode : A_VPAVGW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10270,6 +10438,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPAVGW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#227#61#80; + flags : if_avx2 + ), + ( opcode : A_VPBLENDVB; ops : 4; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_xmmreg); @@ -10277,6 +10452,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPBLENDVB; + ops : 4; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_ymmreg); + code : #241#242#244#250#1#76#61#80#247; + flags : if_avx2 + ), + ( opcode : A_VPBLENDW; ops : 4; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8); @@ -10284,6 +10466,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPBLENDW; + ops : 4; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8); + code : #241#242#244#250#1#14#61#80#23; + flags : if_avx2 + ), + ( opcode : A_VPCLMULQDQ; ops : 4; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8); @@ -10298,6 +10487,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPEQB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#116#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPEQD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10305,6 +10501,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPEQD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#118#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPEQQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10312,6 +10515,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPEQQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#41#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPEQW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10319,6 +10529,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPEQW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#117#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPESTRI; ops : 3; optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none); @@ -10340,6 +10557,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPGTB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#100#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPGTD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10347,6 +10571,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPGTD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#102#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPGTQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10354,6 +10585,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPGTQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#55#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPGTW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10361,6 +10599,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPCMPGTW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#101#61#80; + flags : if_avx2 + ), + ( opcode : A_VPCMPISTRI; ops : 3; optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none); @@ -10515,6 +10760,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPHADDD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#2#61#80; + flags : if_avx2 + ), + ( opcode : A_VPHADDSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10522,6 +10774,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPHADDSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#3#61#80; + flags : if_avx2 + ), + ( opcode : A_VPHADDW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10529,6 +10788,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPHADDW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#1#61#80; + flags : if_avx2 + ), + ( opcode : A_VPHMINPOSUW; ops : 2; optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none); @@ -10543,6 +10809,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPHSUBD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#6#61#80; + flags : if_avx2 + ), + ( opcode : A_VPHSUBSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10550,6 +10823,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPHSUBSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#7#61#80; + flags : if_avx2 + ), + ( opcode : A_VPHSUBW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10557,6 +10837,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPHSUBW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#5#61#80; + flags : if_avx2 + ), + ( opcode : A_VPINSRB; ops : 4; optypes : (ot_xmmreg,ot_xmmreg,ot_reg32,ot_immediate or ot_bits8); @@ -10606,6 +10893,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMADDUBSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#4#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMADDWD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10613,6 +10907,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMADDWD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#245#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMAXSB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10620,6 +10921,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMAXSB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#60#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMAXSD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10627,6 +10935,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMAXSD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#61#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMAXSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10634,6 +10949,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMAXSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#238#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMAXUB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10641,6 +10963,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMAXUB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#222#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMAXUD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10648,6 +10977,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMAXUD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#63#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMAXUW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10655,6 +10991,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMAXUW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#62#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMINSB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10662,6 +11005,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMINSB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#56#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMINSD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10669,6 +11019,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMINSD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#57#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMINSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10676,6 +11033,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMINSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#234#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMINUB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10683,6 +11047,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMINUB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#218#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMINUD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10690,6 +11061,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMINUD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#59#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMINUW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10697,6 +11075,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMINUW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#58#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMOVMSKB; ops : 2; optypes : (ot_reg64,ot_xmmreg,ot_none,ot_none); @@ -10711,6 +11096,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVMSKB; + ops : 2; + optypes : (ot_reg32,ot_ymmreg,ot_none,ot_none); + code : #241#242#244#248#1#215#72; + flags : if_avx2 + ), + ( + opcode : A_VPMOVMSKB; + ops : 2; + optypes : (ot_reg64,ot_ymmreg,ot_none,ot_none); + code : #241#242#244#248#1#215#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVSXBD; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none); @@ -10725,6 +11124,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVSXBD; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#33#72; + flags : if_avx2 + ), + ( + opcode : A_VPMOVSXBD; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none); + code : #241#242#244#249#1#33#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVSXBQ; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits16,ot_none,ot_none); @@ -10739,6 +11152,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVSXBQ; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none); + code : #241#242#244#249#1#34#72; + flags : if_avx2 + ), + ( + opcode : A_VPMOVSXBQ; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#34#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVSXBW; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none); @@ -10753,6 +11180,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVSXBW; + ops : 2; + optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none); + code : #241#242#244#249#1#32#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVSXDQ; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none); @@ -10767,6 +11201,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVSXDQ; + ops : 2; + optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none); + code : #241#242#244#249#1#37#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVSXWD; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none); @@ -10781,6 +11222,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVSXWD; + ops : 2; + optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none); + code : #241#242#244#249#1#35#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVSXWQ; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none); @@ -10795,6 +11243,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVSXWQ; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none); + code : #241#242#244#249#1#36#72; + flags : if_avx2 + ), + ( + opcode : A_VPMOVSXWQ; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#36#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVZXBD; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none); @@ -10809,6 +11271,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVZXBD; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none); + code : #241#242#244#249#1#49#72; + flags : if_avx2 + ), + ( + opcode : A_VPMOVZXBD; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#49#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVZXBQ; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits16,ot_none,ot_none); @@ -10823,6 +11299,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVZXBQ; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none); + code : #241#242#244#249#1#50#72; + flags : if_avx2 + ), + ( + opcode : A_VPMOVZXBQ; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#50#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVZXBW; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none); @@ -10837,6 +11327,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVZXBW; + ops : 2; + optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none); + code : #241#242#244#249#1#48#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVZXDQ; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none); @@ -10851,6 +11348,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVZXDQ; + ops : 2; + optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none); + code : #241#242#244#249#1#53#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVZXWD; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none); @@ -10865,6 +11369,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVZXWD; + ops : 2; + optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none); + code : #241#242#244#249#1#51#72; + flags : if_avx2 + ), + ( opcode : A_VPMOVZXWQ; ops : 2; optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none); @@ -10879,6 +11390,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMOVZXWQ; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none); + code : #241#242#244#249#1#52#72; + flags : if_avx2 + ), + ( + opcode : A_VPMOVZXWQ; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#52#72; + flags : if_avx2 + ), + ( opcode : A_VPMULDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10886,6 +11411,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMULDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#40#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMULHRSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10893,6 +11425,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMULHRSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#11#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMULHUW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10900,6 +11439,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMULHUW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#228#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMULHW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10907,6 +11453,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMULHW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#229#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMULLD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10914,6 +11467,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMULLD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#64#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMULLW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10921,6 +11481,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMULLW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#213#61#80; + flags : if_avx2 + ), + ( opcode : A_VPMULUDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10928,6 +11495,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPMULUDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#244#61#80; + flags : if_avx2 + ), + ( opcode : A_VPOR; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10935,6 +11509,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPOR; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#235#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSADBW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10942,6 +11523,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSADBW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#246#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSHUFB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10949,6 +11537,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSHUFB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#0#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSHUFD; ops : 3; optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none); @@ -10956,6 +11551,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSHUFD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#112#72#22; + flags : if_avx2 + ), + ( opcode : A_VPSHUFHW; ops : 3; optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none); @@ -10963,6 +11565,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSHUFHW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none); + code : #219#242#244#248#1#112#72#22; + flags : if_avx2 + ), + ( opcode : A_VPSHUFLW; ops : 3; optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none); @@ -10970,6 +11579,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSHUFLW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none); + code : #220#242#244#248#1#112#72#22; + flags : if_avx2 + ), + ( opcode : A_VPSIGNB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10977,6 +11593,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSIGNB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#8#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSIGND; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10984,6 +11607,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSIGND; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#10#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSIGNW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -10991,6 +11621,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSIGNW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#9#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSLLD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -11005,6 +11642,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSLLD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#114#60#142#22; + flags : if_avx2 + ), + ( + opcode : A_VPSLLD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#242#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSLLDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -11012,6 +11663,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSLLDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#115#60#143#22; + flags : if_avx2 + ), + ( opcode : A_VPSLLQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11026,6 +11684,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSLLQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#243#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSLLQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#115#60#142#22; + flags : if_avx2 + ), + ( opcode : A_VPSLLW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -11040,6 +11712,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSLLW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#113#60#142#22; + flags : if_avx2 + ), + ( + opcode : A_VPSLLW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#241#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSRAD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -11054,6 +11740,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSRAD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#114#60#140#22; + flags : if_avx2 + ), + ( + opcode : A_VPSRAD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#226#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSRAW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -11068,6 +11768,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSRAW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#113#60#140#22; + flags : if_avx2 + ), + ( + opcode : A_VPSRAW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#225#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSRLD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -11082,6 +11796,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSRLD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#114#60#138#22; + flags : if_avx2 + ), + ( + opcode : A_VPSRLD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#210#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSRLDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -11089,6 +11817,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSRLDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#115#60#139#22; + flags : if_avx2 + ), + ( opcode : A_VPSRLQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -11103,6 +11838,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSRLQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#115#60#138#22; + flags : if_avx2 + ), + ( + opcode : A_VPSRLQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#211#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSRLW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_bits8,ot_none); @@ -11117,6 +11866,20 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSRLW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#248#1#113#60#138#22; + flags : if_avx2 + ), + ( + opcode : A_VPSRLW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_none); + code : #241#242#244#248#1#209#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11124,6 +11887,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#248#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11131,6 +11901,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#250#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11138,6 +11915,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#251#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBSB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11145,6 +11929,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBSB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#232#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11152,6 +11943,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#233#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBUSB; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11159,6 +11957,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBUSB; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#216#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBUSW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11166,6 +11971,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBUSW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#217#61#80; + flags : if_avx2 + ), + ( opcode : A_VPSUBW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11173,6 +11985,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPSUBW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#249#61#80; + flags : if_avx2 + ), + ( opcode : A_VPTEST; ops : 2; optypes : (ot_ymmreg,ot_ymmrm,ot_none,ot_none); @@ -11194,6 +12013,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKHBW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#104#61#80; + flags : if_avx2 + ), + ( opcode : A_VPUNPCKHDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11201,6 +12027,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKHDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#106#61#80; + flags : if_avx2 + ), + ( opcode : A_VPUNPCKHQDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11208,6 +12041,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKHQDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#109#61#80; + flags : if_avx2 + ), + ( opcode : A_VPUNPCKHWD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11215,6 +12055,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKHWD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#105#61#80; + flags : if_avx2 + ), + ( opcode : A_VPUNPCKLBW; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11222,6 +12069,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKLBW; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#96#61#80; + flags : if_avx2 + ), + ( opcode : A_VPUNPCKLDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11229,6 +12083,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKLDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#98#61#80; + flags : if_avx2 + ), + ( opcode : A_VPUNPCKLQDQ; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11236,6 +12097,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKLQDQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#108#61#80; + flags : if_avx2 + ), + ( opcode : A_VPUNPCKLWD; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11243,6 +12111,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPUNPCKLWD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#97#61#80; + flags : if_avx2 + ), + ( opcode : A_VPXOR; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); @@ -11250,6 +12125,13 @@ flags : if_avx or if_sandybridge ), ( + opcode : A_VPXOR; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#248#1#239#61#80; + flags : if_avx2 + ), + ( opcode : A_VRCPPS; ops : 2; optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none); @@ -11752,5 +12634,313 @@ optypes : (ot_reg64,ot_rm_gpr or ot_bits64,ot_reg64,ot_none); code : #220#242#243#249#1#247#62#72; flags : if_bmi2 or if_x86_64 + ), + ( + opcode : A_VBROADCASTI128; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits128,ot_none,ot_none); + code : #241#242#244#249#1#90#72; + flags : if_avx2 + ), + ( + opcode : A_VEXTRACTI128; + ops : 3; + optypes : (ot_xmmrm,ot_ymmreg,ot_immediate or ot_bits8,ot_none); + code : #241#242#244#250#1#57#65#22; + flags : if_avx2 + ), + ( + opcode : A_VINSERTI128; + ops : 4; + optypes : (ot_ymmreg,ot_ymmreg,ot_xmmrm,ot_immediate or ot_bits8); + code : #241#242#244#250#1#56#61#80#23; + flags : if_avx2 + ), + ( + opcode : A_VPBLENDD; + ops : 4; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8); + code : #241#242#244#250#1#2#61#80#23; + flags : if_avx2 + ), + ( + opcode : A_VPBLENDD; + ops : 4; + optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8); + code : #241#242#250#1#2#61#80#23; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTB; + ops : 2; + optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#249#1#120#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTB; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#120#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTB; + ops : 2; + optypes : (ot_xmmreg,ot_memory or ot_bits8,ot_none,ot_none); + code : #241#242#249#1#120#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTB; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits8,ot_none,ot_none); + code : #241#242#244#249#1#120#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTD; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#88#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTD; + ops : 2; + optypes : (ot_xmmreg,ot_memory or ot_bits32,ot_none,ot_none); + code : #241#242#249#1#88#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTD; + ops : 2; + optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#249#1#88#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTD; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits32,ot_none,ot_none); + code : #241#242#244#249#1#88#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTQ; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits64,ot_none,ot_none); + code : #241#242#244#249#1#89#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTQ; + ops : 2; + optypes : (ot_xmmreg,ot_memory or ot_bits64,ot_none,ot_none); + code : #241#242#249#1#89#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTQ; + ops : 2; + optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#249#1#89#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTQ; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#89#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTW; + ops : 2; + optypes : (ot_xmmreg,ot_memory or ot_bits16,ot_none,ot_none); + code : #241#242#249#1#121#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTW; + ops : 2; + optypes : (ot_xmmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#249#1#121#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTW; + ops : 2; + optypes : (ot_ymmreg,ot_memory or ot_bits16,ot_none,ot_none); + code : #241#242#244#249#1#121#72; + flags : if_avx2 + ), + ( + opcode : A_VPBROADCASTW; + ops : 2; + optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none); + code : #241#242#244#249#1#121#72; + flags : if_avx2 + ), + ( + opcode : A_VPERM2I128; + ops : 4; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8); + code : #241#242#244#250#1#70#61#80#23; + flags : if_avx2 + ), + ( + opcode : A_VPERMD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#54#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPERMPD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none); + code : #241#242#243#244#250#1#1#72#22; + flags : if_avx2 + ), + ( + opcode : A_VPERMPS; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#22#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPERMQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmrm,ot_immediate or ot_bits8,ot_none); + code : #241#242#243#244#250#1#0#72#22; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVD; + ops : 3; + optypes : (ot_xmmreg,ot_xmmreg,ot_memory or ot_bits128,ot_none); + code : #241#242#249#1#140#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVD; + ops : 3; + optypes : (ot_memory or ot_bits128,ot_xmmreg,ot_xmmreg,ot_none); + code : #241#242#249#1#142#61#66; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_memory or ot_bits256,ot_none); + code : #241#242#244#249#1#140#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVD; + ops : 3; + optypes : (ot_memory or ot_bits256,ot_ymmreg,ot_ymmreg,ot_none); + code : #241#242#244#249#1#142#61#66; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVQ; + ops : 3; + optypes : (ot_xmmreg,ot_xmmreg,ot_memory or ot_bits128,ot_none); + code : #241#242#243#249#1#140#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVQ; + ops : 3; + optypes : (ot_memory or ot_bits128,ot_xmmreg,ot_xmmreg,ot_none); + code : #241#242#243#249#1#142#61#66; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVQ; + ops : 3; + optypes : (ot_memory or ot_bits256,ot_ymmreg,ot_ymmreg,ot_none); + code : #241#242#243#244#249#1#142#61#66; + flags : if_avx2 + ), + ( + opcode : A_VPMASKMOVQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_memory or ot_bits256,ot_none); + code : #241#242#243#244#249#1#140#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSLLVD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#71#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSLLVD; + ops : 3; + optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); + code : #241#242#249#1#71#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSLLVQ; + ops : 3; + optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); + code : #241#242#243#249#1#71#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSLLVQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#243#244#249#1#71#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSRAVD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#70#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSRAVD; + ops : 3; + optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); + code : #241#242#249#1#70#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSRLVD; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#244#249#1#69#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSRLVD; + ops : 3; + optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); + code : #241#242#249#1#69#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSRLVQ; + ops : 3; + optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none); + code : #241#242#243#244#249#1#69#61#80; + flags : if_avx2 + ), + ( + opcode : A_VPSRLVQ; + ops : 3; + optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none); + code : #241#242#243#249#1#69#61#80; + flags : if_avx2 ) ); |