Browse Source

* mantis #32001, add 32 vcmpps variants.

git-svn-id: trunk@38403 -
marco 7 years ago
parent
commit
f21a141144

+ 32 - 0
compiler/i386/i386att.inc

@@ -707,6 +707,38 @@
 'vbroadcastf128',
 'vbroadcastf128',
 'vbroadcastsd',
 'vbroadcastsd',
 'vbroadcastss',
 'vbroadcastss',
+'vcmpeqps',
+'vcmpltps',
+'vcmpleps',
+'vcmpunordps',
+'vcmpneqps',
+'vcmpnltps',
+'vcmpnleps',
+'vcmpordps',
+'vcmpeq_uqps',
+'vcmpngeps',
+'vcmpngtps',
+'vcmpfalseps',
+'vcmpneq_oqps',
+'vcmpgeps',
+'vcmpgtps',
+'vcmptrueps',
+'vcmpeq_osps',
+'vcmplt_oqps',
+'vcmple_oqps',
+'vcmpunord_sps',
+'vcmpneq_usps',
+'vcmpnlt_uqps',
+'vcmpnle_uqps',
+'vcmpord_sps',
+'vcmpeq_usps',
+'vcmpnge_uqps',
+'vcmpngt_uqps',
+'vcmpfalse_osps',
+'vcmpneq_osps',
+'vcmpge_oqps',
+'vcmpgt_oqps',
+'vcmptrue_usps',
 'vcmppd',
 'vcmppd',
 'vcmpps',
 'vcmpps',
 'vcmpsd',
 'vcmpsd',

+ 32 - 0
compiler/i386/i386atts.inc

@@ -715,6 +715,38 @@ 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,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
 attsufMM,
 attsufMM,
 attsufMM,
 attsufMM,
 attsufNONE,
 attsufNONE,

+ 32 - 0
compiler/i386/i386int.inc

@@ -707,6 +707,38 @@
 'vbroadcastf128',
 'vbroadcastf128',
 'vbroadcastsd',
 'vbroadcastsd',
 'vbroadcastss',
 'vbroadcastss',
+'vcmpeqps',
+'vcmpltps',
+'vcmpleps',
+'vcmpunordps',
+'vcmpneqps',
+'vcmpnltps',
+'vcmpnleps',
+'vcmpordps',
+'vcmpeq_uqps',
+'vcmpngeps',
+'vcmpngtps',
+'vcmpfalseps',
+'vcmpneq_oqps',
+'vcmpgeps',
+'vcmpgtps',
+'vcmptrueps',
+'vcmpeq_osps',
+'vcmplt_oqps',
+'vcmple_oqps',
+'vcmpunord_sps',
+'vcmpneq_usps',
+'vcmpnlt_uqps',
+'vcmpnle_uqps',
+'vcmpord_sps',
+'vcmpeq_usps',
+'vcmpnge_uqps',
+'vcmpngt_uqps',
+'vcmpfalse_osps',
+'vcmpneq_osps',
+'vcmpge_oqps',
+'vcmpgt_oqps',
+'vcmptrue_usps',
 'vcmppd',
 'vcmppd',
 'vcmpps',
 'vcmpps',
 'vcmpsd',
 'vcmpsd',

+ 1 - 1
compiler/i386/i386nop.inc

@@ -1,2 +1,2 @@
 { don't edit, this file is generated from x86ins.dat }
 { don't edit, this file is generated from x86ins.dat }
-1989;
+2053;

+ 32 - 0
compiler/i386/i386op.inc

@@ -707,6 +707,38 @@ A_VBLENDVPS,
 A_VBROADCASTF128,
 A_VBROADCASTF128,
 A_VBROADCASTSD,
 A_VBROADCASTSD,
 A_VBROADCASTSS,
 A_VBROADCASTSS,
+A_VCMPEQPS,
+A_VCMPLTPS,
+A_VCMPLEPS,
+A_VCMPUNORDPS,
+A_VCMPNEQPS,
+A_VCMPNLTPS,
+A_VCMPNLEPS,
+A_VCMPORDPS,
+A_VCMPEQ_UQPS,
+A_VCMPNGEPS,
+A_VCMPNGTPS,
+A_VCMPFALSEPS,
+A_VCMPNEQ_OQPS,
+A_VCMPGEPS,
+A_VCMPGTPS,
+A_VCMPTRUEPS,
+A_VCMPEQ_OSPS,
+A_VCMPLT_OQPS,
+A_VCMPLE_OQPS,
+A_VCMPUNORD_SPS,
+A_VCMPNEQ_USPS,
+A_VCMPNLT_UQPS,
+A_VCMPNLE_UQPS,
+A_VCMPORD_SPS,
+A_VCMPEQ_USPS,
+A_VCMPNGE_UQPS,
+A_VCMPNGT_UQPS,
+A_VCMPFALSE_OSPS,
+A_VCMPNEQ_OSPS,
+A_VCMPGE_OQPS,
+A_VCMPGT_OQPS,
+A_VCMPTRUE_USPS,
 A_VCMPPD,
 A_VCMPPD,
 A_VCMPPS,
 A_VCMPPS,
 A_VCMPSD,
 A_VCMPSD,

+ 32 - 0
compiler/i386/i386prop.inc

@@ -711,6 +711,38 @@
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
 (Ch: [Ch_Rop1, Ch_Rop2, Ch_WFlags]),
 (Ch: [Ch_Rop1, Ch_Rop2, Ch_WFlags]),
 (Ch: [Ch_Rop1, Ch_Rop2, Ch_WFlags]),
 (Ch: [Ch_Rop1, Ch_Rop2, Ch_WFlags]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_Wop2, Ch_Rop1]),

+ 448 - 0
compiler/i386/i386tab.inc

@@ -8995,6 +8995,454 @@
     code    : #241#242#249#1#24#72;
     code    : #241#242#249#1#24#72;
     flags   : [if_avx2]
     flags   : [if_avx2]
   ),
   ),
+  (
+    opcode  : A_VCMPEQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#0;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#0;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLTPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#1;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLTPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#1;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLEPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#2;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLEPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#2;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORDPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#3;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORDPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#3;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#4;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#4;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLTPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#5;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLTPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#5;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLEPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#6;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLEPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#6;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORDPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#7;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORDPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#7;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_UQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#8;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_UQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#8;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGEPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#9;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGEPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#9;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGTPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#10;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGTPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#10;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSEPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#11;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSEPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#11;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#12;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#12;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGEPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#13;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGEPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#13;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGTPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#14;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGTPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#14;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUEPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#15;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUEPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#15;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_OSPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#16;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_OSPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#16;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLT_OQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#17;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLT_OQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#17;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLE_OQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#18;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLE_OQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#18;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORD_SPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#19;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORD_SPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#19;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_USPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#20;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_USPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#20;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLT_UQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#21;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLT_UQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#21;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLE_UQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#22;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLE_UQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#22;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORD_SPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#23;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORD_SPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#23;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_USPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#24;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_USPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#24;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGE_UQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#25;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGE_UQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#25;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGT_UQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#26;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGT_UQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#26;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSE_OSPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#27;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSE_OSPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#27;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OSPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#28;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OSPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#28;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGE_OQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#29;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGE_OQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#29;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGT_OQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#30;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGT_OQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#30;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUE_USPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#31;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUE_USPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#31;
+    flags   : [if_avx,if_sandybridge]
+  ),
   (
   (
     opcode  : A_VCMPPD;
     opcode  : A_VCMPPD;
     ops     : 4;
     ops     : 4;

+ 32 - 0
compiler/i8086/i8086att.inc

@@ -707,6 +707,38 @@
 'vbroadcastf128',
 'vbroadcastf128',
 'vbroadcastsd',
 'vbroadcastsd',
 'vbroadcastss',
 'vbroadcastss',
+'vcmpeqps',
+'vcmpltps',
+'vcmpleps',
+'vcmpunordps',
+'vcmpneqps',
+'vcmpnltps',
+'vcmpnleps',
+'vcmpordps',
+'vcmpeq_uqps',
+'vcmpngeps',
+'vcmpngtps',
+'vcmpfalseps',
+'vcmpneq_oqps',
+'vcmpgeps',
+'vcmpgtps',
+'vcmptrueps',
+'vcmpeq_osps',
+'vcmplt_oqps',
+'vcmple_oqps',
+'vcmpunord_sps',
+'vcmpneq_usps',
+'vcmpnlt_uqps',
+'vcmpnle_uqps',
+'vcmpord_sps',
+'vcmpeq_usps',
+'vcmpnge_uqps',
+'vcmpngt_uqps',
+'vcmpfalse_osps',
+'vcmpneq_osps',
+'vcmpge_oqps',
+'vcmpgt_oqps',
+'vcmptrue_usps',
 'vcmppd',
 'vcmppd',
 'vcmpps',
 'vcmpps',
 'vcmpsd',
 'vcmpsd',

+ 32 - 0
compiler/i8086/i8086atts.inc

@@ -715,6 +715,38 @@ 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,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
 attsufMM,
 attsufMM,
 attsufMM,
 attsufMM,
 attsufNONE,
 attsufNONE,

+ 32 - 0
compiler/i8086/i8086int.inc

@@ -707,6 +707,38 @@
 'vbroadcastf128',
 'vbroadcastf128',
 'vbroadcastsd',
 'vbroadcastsd',
 'vbroadcastss',
 'vbroadcastss',
+'vcmpeqps',
+'vcmpltps',
+'vcmpleps',
+'vcmpunordps',
+'vcmpneqps',
+'vcmpnltps',
+'vcmpnleps',
+'vcmpordps',
+'vcmpeq_uqps',
+'vcmpngeps',
+'vcmpngtps',
+'vcmpfalseps',
+'vcmpneq_oqps',
+'vcmpgeps',
+'vcmpgtps',
+'vcmptrueps',
+'vcmpeq_osps',
+'vcmplt_oqps',
+'vcmple_oqps',
+'vcmpunord_sps',
+'vcmpneq_usps',
+'vcmpnlt_uqps',
+'vcmpnle_uqps',
+'vcmpord_sps',
+'vcmpeq_usps',
+'vcmpnge_uqps',
+'vcmpngt_uqps',
+'vcmpfalse_osps',
+'vcmpneq_osps',
+'vcmpge_oqps',
+'vcmpgt_oqps',
+'vcmptrue_usps',
 'vcmppd',
 'vcmppd',
 'vcmpps',
 'vcmpps',
 'vcmpsd',
 'vcmpsd',

+ 1 - 1
compiler/i8086/i8086nop.inc

@@ -1,2 +1,2 @@
 { don't edit, this file is generated from x86ins.dat }
 { don't edit, this file is generated from x86ins.dat }
-2021;
+2085;

+ 32 - 0
compiler/i8086/i8086op.inc

@@ -707,6 +707,38 @@ A_VBLENDVPS,
 A_VBROADCASTF128,
 A_VBROADCASTF128,
 A_VBROADCASTSD,
 A_VBROADCASTSD,
 A_VBROADCASTSS,
 A_VBROADCASTSS,
+A_VCMPEQPS,
+A_VCMPLTPS,
+A_VCMPLEPS,
+A_VCMPUNORDPS,
+A_VCMPNEQPS,
+A_VCMPNLTPS,
+A_VCMPNLEPS,
+A_VCMPORDPS,
+A_VCMPEQ_UQPS,
+A_VCMPNGEPS,
+A_VCMPNGTPS,
+A_VCMPFALSEPS,
+A_VCMPNEQ_OQPS,
+A_VCMPGEPS,
+A_VCMPGTPS,
+A_VCMPTRUEPS,
+A_VCMPEQ_OSPS,
+A_VCMPLT_OQPS,
+A_VCMPLE_OQPS,
+A_VCMPUNORD_SPS,
+A_VCMPNEQ_USPS,
+A_VCMPNLT_UQPS,
+A_VCMPNLE_UQPS,
+A_VCMPORD_SPS,
+A_VCMPEQ_USPS,
+A_VCMPNGE_UQPS,
+A_VCMPNGT_UQPS,
+A_VCMPFALSE_OSPS,
+A_VCMPNEQ_OSPS,
+A_VCMPGE_OQPS,
+A_VCMPGT_OQPS,
+A_VCMPTRUE_USPS,
 A_VCMPPD,
 A_VCMPPD,
 A_VCMPPS,
 A_VCMPPS,
 A_VCMPSD,
 A_VCMPSD,

+ 32 - 0
compiler/i8086/i8086prop.inc

@@ -711,6 +711,38 @@
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
 (Ch: [Ch_Rop1, Ch_Rop2, Ch_WFlags]),
 (Ch: [Ch_Rop1, Ch_Rop2, Ch_WFlags]),
 (Ch: [Ch_Rop1, Ch_Rop2, Ch_WFlags]),
 (Ch: [Ch_Rop1, Ch_Rop2, Ch_WFlags]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_Wop2, Ch_Rop1]),

+ 448 - 0
compiler/i8086/i8086tab.inc

@@ -9023,6 +9023,454 @@
     code    : #241#242#249#1#24#72;
     code    : #241#242#249#1#24#72;
     flags   : [if_avx2]
     flags   : [if_avx2]
   ),
   ),
+  (
+    opcode  : A_VCMPEQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#0;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#0;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLTPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#1;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLTPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#1;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLEPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#2;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLEPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#2;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORDPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#3;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORDPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#3;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#4;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#4;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLTPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#5;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLTPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#5;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLEPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#6;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLEPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#6;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORDPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#7;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORDPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#7;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_UQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#8;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_UQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#8;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGEPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#9;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGEPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#9;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGTPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#10;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGTPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#10;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSEPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#11;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSEPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#11;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#12;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#12;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGEPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#13;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGEPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#13;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGTPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#14;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGTPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#14;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUEPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#15;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUEPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#15;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_OSPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#16;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_OSPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#16;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLT_OQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#17;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLT_OQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#17;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLE_OQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#18;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLE_OQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#18;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORD_SPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#19;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORD_SPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#19;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_USPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#20;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_USPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#20;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLT_UQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#21;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLT_UQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#21;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLE_UQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#22;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLE_UQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#22;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORD_SPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#23;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORD_SPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#23;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_USPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#24;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_USPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#24;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGE_UQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#25;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGE_UQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#25;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGT_UQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#26;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGT_UQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#26;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSE_OSPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#27;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSE_OSPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#27;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OSPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#28;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OSPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#28;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGE_OQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#29;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGE_OQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#29;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGT_OQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#30;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGT_OQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#30;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUE_USPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#31;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUE_USPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#31;
+    flags   : [if_avx,if_sandybridge]
+  ),
   (
   (
     opcode  : A_VCMPPD;
     opcode  : A_VCMPPD;
     ops     : 4;
     ops     : 4;

+ 165 - 0
compiler/x86/x86ins.dat

@@ -3697,6 +3697,171 @@ xmmreg,mem32                         \361\362\371\1\x18\110               AVX,SA
 ymmreg,xmmreg                        \361\362\364\371\1\x18\110           AVX2
 ymmreg,xmmreg                        \361\362\364\371\1\x18\110           AVX2
 xmmreg,xmmreg                        \361\362\371\1\x18\110               AVX2
 xmmreg,xmmreg                        \361\362\371\1\x18\110               AVX2
 
 
+[VCMPEQPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x0         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x0     AVX,SANDYBRIDGE
+
+[VCMPLTPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x1         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x1     AVX,SANDYBRIDGE
+
+[VCMPLEPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x2         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x2     AVX,SANDYBRIDGE
+
+[VCMPUNORDPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x3         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x3     AVX,SANDYBRIDGE
+
+[VCMPNEQPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x4         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x4     AVX,SANDYBRIDGE
+
+[VCMPNLTPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x5         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x5     AVX,SANDYBRIDGE
+
+[VCMPNLEPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x6         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x6     AVX,SANDYBRIDGE
+
+[VCMPORDPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x7         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x7     AVX,SANDYBRIDGE
+
+[VCMPEQ_UQPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x8         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x8     AVX,SANDYBRIDGE
+
+[VCMPNGEPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x9         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x9     AVX,SANDYBRIDGE
+
+[VCMPNGTPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x0A         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x0A     AVX,SANDYBRIDGE
+
+[VCMPFALSEPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x0B         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x0B     AVX,SANDYBRIDGE
+
+[VCMPNEQ_OQPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x0C         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x0C     AVX,SANDYBRIDGE
+
+[VCMPGEPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x0D         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x0D     AVX,SANDYBRIDGE
+
+[VCMPGTPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x0E         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x0E     AVX,SANDYBRIDGE
+
+[VCMPTRUEPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x0F         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x0F     AVX,SANDYBRIDGE
+
+[VCMPEQ_OSPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x10         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x10     AVX,SANDYBRIDGE
+
+[VCMPLT_OQPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x11         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x11     AVX,SANDYBRIDGE
+
+[VCMPLE_OQPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x12         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x12     AVX,SANDYBRIDGE
+
+[VCMPUNORD_SPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x13         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x13     AVX,SANDYBRIDGE
+
+[VCMPNEQ_USPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x14         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x14     AVX,SANDYBRIDGE
+
+[VCMPNLT_UQPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x15         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x15     AVX,SANDYBRIDGE
+
+[VCMPNLE_UQPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x16         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x16     AVX,SANDYBRIDGE
+
+[VCMPORD_SPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x17         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x17     AVX,SANDYBRIDGE
+
+[VCMPEQ_USPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x18         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x18     AVX,SANDYBRIDGE
+
+[VCMPNGE_UQPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x19         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x19     AVX,SANDYBRIDGE
+
+[VCMPNGT_UQPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x1A         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x1A     AVX,SANDYBRIDGE
+
+[VCMPFALSE_OSPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x1B         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x1B     AVX,SANDYBRIDGE
+
+[VCMPNEQ_OSPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x1C         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x1C     AVX,SANDYBRIDGE
+
+[VCMPGE_OQPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x1D         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x1D     AVX,SANDYBRIDGE
+
+[VCMPGT_OQPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x1E         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x1E     AVX,SANDYBRIDGE
+
+[VCMPTRUE_USPS]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \362\370\1\xC2\75\120\1\x1F         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x1F     AVX,SANDYBRIDGE
+
+;
+; VCMPPS/VCMPSS must come after the specific ops; that way the disassembler will find the
+; specific ops first and only disassemble illegal ones as cmpps.
+;
+
 [VCMPPD]
 [VCMPPD]
 (Ch_All)
 (Ch_All)
 xmmreg,xmmreg,xmmrm,imm8             \361\362\370\1\xC2\75\120\27         AVX,SANDYBRIDGE
 xmmreg,xmmreg,xmmrm,imm8             \361\362\370\1\xC2\75\120\27         AVX,SANDYBRIDGE

+ 32 - 0
compiler/x86_64/x8664ats.inc

@@ -711,6 +711,38 @@ 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,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
 attsufMM,
 attsufMM,
 attsufMM,
 attsufMM,
 attsufNONE,
 attsufNONE,

+ 32 - 0
compiler/x86_64/x8664att.inc

@@ -703,6 +703,38 @@
 'vbroadcastf128',
 'vbroadcastf128',
 'vbroadcastsd',
 'vbroadcastsd',
 'vbroadcastss',
 'vbroadcastss',
+'vcmpeqps',
+'vcmpltps',
+'vcmpleps',
+'vcmpunordps',
+'vcmpneqps',
+'vcmpnltps',
+'vcmpnleps',
+'vcmpordps',
+'vcmpeq_uqps',
+'vcmpngeps',
+'vcmpngtps',
+'vcmpfalseps',
+'vcmpneq_oqps',
+'vcmpgeps',
+'vcmpgtps',
+'vcmptrueps',
+'vcmpeq_osps',
+'vcmplt_oqps',
+'vcmple_oqps',
+'vcmpunord_sps',
+'vcmpneq_usps',
+'vcmpnlt_uqps',
+'vcmpnle_uqps',
+'vcmpord_sps',
+'vcmpeq_usps',
+'vcmpnge_uqps',
+'vcmpngt_uqps',
+'vcmpfalse_osps',
+'vcmpneq_osps',
+'vcmpge_oqps',
+'vcmpgt_oqps',
+'vcmptrue_usps',
 'vcmppd',
 'vcmppd',
 'vcmpps',
 'vcmpps',
 'vcmpsd',
 'vcmpsd',

+ 32 - 0
compiler/x86_64/x8664int.inc

@@ -703,6 +703,38 @@
 'vbroadcastf128',
 'vbroadcastf128',
 'vbroadcastsd',
 'vbroadcastsd',
 'vbroadcastss',
 'vbroadcastss',
+'vcmpeqps',
+'vcmpltps',
+'vcmpleps',
+'vcmpunordps',
+'vcmpneqps',
+'vcmpnltps',
+'vcmpnleps',
+'vcmpordps',
+'vcmpeq_uqps',
+'vcmpngeps',
+'vcmpngtps',
+'vcmpfalseps',
+'vcmpneq_oqps',
+'vcmpgeps',
+'vcmpgtps',
+'vcmptrueps',
+'vcmpeq_osps',
+'vcmplt_oqps',
+'vcmple_oqps',
+'vcmpunord_sps',
+'vcmpneq_usps',
+'vcmpnlt_uqps',
+'vcmpnle_uqps',
+'vcmpord_sps',
+'vcmpeq_usps',
+'vcmpnge_uqps',
+'vcmpngt_uqps',
+'vcmpfalse_osps',
+'vcmpneq_osps',
+'vcmpge_oqps',
+'vcmpgt_oqps',
+'vcmptrue_usps',
 'vcmppd',
 'vcmppd',
 'vcmpps',
 'vcmpps',
 'vcmpsd',
 'vcmpsd',

+ 1 - 1
compiler/x86_64/x8664nop.inc

@@ -1,2 +1,2 @@
 { don't edit, this file is generated from x86ins.dat }
 { don't edit, this file is generated from x86ins.dat }
-2042;
+2106;

+ 32 - 0
compiler/x86_64/x8664op.inc

@@ -703,6 +703,38 @@ A_VBLENDVPS,
 A_VBROADCASTF128,
 A_VBROADCASTF128,
 A_VBROADCASTSD,
 A_VBROADCASTSD,
 A_VBROADCASTSS,
 A_VBROADCASTSS,
+A_VCMPEQPS,
+A_VCMPLTPS,
+A_VCMPLEPS,
+A_VCMPUNORDPS,
+A_VCMPNEQPS,
+A_VCMPNLTPS,
+A_VCMPNLEPS,
+A_VCMPORDPS,
+A_VCMPEQ_UQPS,
+A_VCMPNGEPS,
+A_VCMPNGTPS,
+A_VCMPFALSEPS,
+A_VCMPNEQ_OQPS,
+A_VCMPGEPS,
+A_VCMPGTPS,
+A_VCMPTRUEPS,
+A_VCMPEQ_OSPS,
+A_VCMPLT_OQPS,
+A_VCMPLE_OQPS,
+A_VCMPUNORD_SPS,
+A_VCMPNEQ_USPS,
+A_VCMPNLT_UQPS,
+A_VCMPNLE_UQPS,
+A_VCMPORD_SPS,
+A_VCMPEQ_USPS,
+A_VCMPNGE_UQPS,
+A_VCMPNGT_UQPS,
+A_VCMPFALSE_OSPS,
+A_VCMPNEQ_OSPS,
+A_VCMPGE_OQPS,
+A_VCMPGT_OQPS,
+A_VCMPTRUE_USPS,
 A_VCMPPD,
 A_VCMPPD,
 A_VCMPPS,
 A_VCMPPS,
 A_VCMPSD,
 A_VCMPSD,

+ 32 - 0
compiler/x86_64/x8664pro.inc

@@ -707,6 +707,38 @@
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
 (Ch: [Ch_Rop1, Ch_Rop2, Ch_WFlags]),
 (Ch: [Ch_Rop1, Ch_Rop2, Ch_WFlags]),
 (Ch: [Ch_Rop1, Ch_Rop2, Ch_WFlags]),
 (Ch: [Ch_Rop1, Ch_Rop2, Ch_WFlags]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_Wop2, Ch_Rop1]),

+ 448 - 0
compiler/x86_64/x8664tab.inc

@@ -9296,6 +9296,454 @@
     code    : #241#242#249#1#24#72;
     code    : #241#242#249#1#24#72;
     flags   : [if_avx2]
     flags   : [if_avx2]
   ),
   ),
+  (
+    opcode  : A_VCMPEQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#0;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#0;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLTPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#1;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLTPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#1;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLEPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#2;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLEPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#2;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORDPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#3;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORDPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#3;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#4;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#4;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLTPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#5;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLTPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#5;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLEPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#6;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLEPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#6;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORDPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#7;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORDPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#7;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_UQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#8;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_UQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#8;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGEPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#9;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGEPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#9;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGTPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#10;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGTPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#10;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSEPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#11;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSEPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#11;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#12;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#12;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGEPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#13;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGEPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#13;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGTPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#14;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGTPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#14;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUEPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#15;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUEPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#15;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_OSPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#16;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_OSPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#16;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLT_OQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#17;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLT_OQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#17;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLE_OQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#18;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLE_OQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#18;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORD_SPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#19;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORD_SPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#19;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_USPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#20;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_USPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#20;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLT_UQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#21;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLT_UQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#21;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLE_UQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#22;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLE_UQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#22;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORD_SPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#23;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORD_SPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#23;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_USPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#24;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_USPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#24;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGE_UQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#25;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGE_UQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#25;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGT_UQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#26;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGT_UQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#26;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSE_OSPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#27;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSE_OSPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#27;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OSPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#28;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OSPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#28;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGE_OQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#29;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGE_OQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#29;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGT_OQPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#30;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGT_OQPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#30;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUE_USPS;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #242#248#1#194#61#80#1#31;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUE_USPS;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #242#244#248#1#194#61#80#1#31;
+    flags   : [if_avx,if_sandybridge]
+  ),
   (
   (
     opcode  : A_VCMPPD;
     opcode  : A_VCMPPD;
     ops     : 4;
     ops     : 4;