浏览代码

* vcmppd hardcoded primitives like vcmpeqpd.
* required increasing maxinfolen to 9

git-svn-id: trunk@38404 -

marco 7 年之前
父节点
当前提交
f0042a4719

+ 32 - 0
compiler/i386/i386att.inc

@@ -739,6 +739,38 @@
 'vcmpge_oqps',
 'vcmpgt_oqps',
 'vcmptrue_usps',
+'vcmpeqpd',
+'vcmpltpd',
+'vcmplepd',
+'vcmpunordpd',
+'vcmpneqpd',
+'vcmpnltpd',
+'vcmpnlepd',
+'vcmpordpd',
+'vcmpeq_uqpd',
+'vcmpngepd',
+'vcmpngtpd',
+'vcmpfalsepd',
+'vcmpneq_oqpd',
+'vcmpgepd',
+'vcmpgtpd',
+'vcmptruepd',
+'vcmpeq_ospd',
+'vcmplt_oqpd',
+'vcmple_oqpd',
+'vcmpunord_spd',
+'vcmpneq_uspd',
+'vcmpnlt_uqpd',
+'vcmpnle_uqpd',
+'vcmpord_spd',
+'vcmpeq_uspd',
+'vcmpnge_uqpd',
+'vcmpngt_uqpd',
+'vcmpfalse_ospd',
+'vcmpneq_ospd',
+'vcmpge_oqpd',
+'vcmpgt_oqpd',
+'vcmptrue_uspd',
 'vcmppd',
 'vcmpps',
 'vcmpsd',

+ 32 - 0
compiler/i386/i386atts.inc

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

+ 32 - 0
compiler/i386/i386int.inc

@@ -739,6 +739,38 @@
 'vcmpge_oqps',
 'vcmpgt_oqps',
 'vcmptrue_usps',
+'vcmpeqpd',
+'vcmpltpd',
+'vcmplepd',
+'vcmpunordpd',
+'vcmpneqpd',
+'vcmpnltpd',
+'vcmpnlepd',
+'vcmpordpd',
+'vcmpeq_uqpd',
+'vcmpngepd',
+'vcmpngtpd',
+'vcmpfalsepd',
+'vcmpneq_oqpd',
+'vcmpgepd',
+'vcmpgtpd',
+'vcmptruepd',
+'vcmpeq_ospd',
+'vcmplt_oqpd',
+'vcmple_oqpd',
+'vcmpunord_spd',
+'vcmpneq_uspd',
+'vcmpnlt_uqpd',
+'vcmpnle_uqpd',
+'vcmpord_spd',
+'vcmpeq_uspd',
+'vcmpnge_uqpd',
+'vcmpngt_uqpd',
+'vcmpfalse_ospd',
+'vcmpneq_ospd',
+'vcmpge_oqpd',
+'vcmpgt_oqpd',
+'vcmptrue_uspd',
 'vcmppd',
 'vcmpps',
 'vcmpsd',

+ 1 - 1
compiler/i386/i386nop.inc

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

+ 32 - 0
compiler/i386/i386op.inc

@@ -739,6 +739,38 @@ A_VCMPNEQ_OSPS,
 A_VCMPGE_OQPS,
 A_VCMPGT_OQPS,
 A_VCMPTRUE_USPS,
+A_VCMPEQPD,
+A_VCMPLTPD,
+A_VCMPLEPD,
+A_VCMPUNORDPD,
+A_VCMPNEQPD,
+A_VCMPNLTPD,
+A_VCMPNLEPD,
+A_VCMPORDPD,
+A_VCMPEQ_UQPD,
+A_VCMPNGEPD,
+A_VCMPNGTPD,
+A_VCMPFALSEPD,
+A_VCMPNEQ_OQPD,
+A_VCMPGEPD,
+A_VCMPGTPD,
+A_VCMPTRUEPD,
+A_VCMPEQ_OSPD,
+A_VCMPLT_OQPD,
+A_VCMPLE_OQPD,
+A_VCMPUNORD_SPD,
+A_VCMPNEQ_USPD,
+A_VCMPNLT_UQPD,
+A_VCMPNLE_UQPD,
+A_VCMPORD_SPD,
+A_VCMPEQ_USPD,
+A_VCMPNGE_UQPD,
+A_VCMPNGT_UQPD,
+A_VCMPFALSE_OSPD,
+A_VCMPNEQ_OSPD,
+A_VCMPGE_OQPD,
+A_VCMPGT_OQPD,
+A_VCMPTRUE_USPD,
 A_VCMPPD,
 A_VCMPPS,
 A_VCMPSD,

+ 32 - 0
compiler/i386/i386prop.inc

@@ -743,6 +743,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_Rop1, Ch_Rop2, Ch_WFlags]),
 (Ch: [Ch_Rop1, Ch_Rop2, Ch_WFlags]),
 (Ch: [Ch_Wop2, Ch_Rop1]),

+ 448 - 0
compiler/i386/i386tab.inc

@@ -9443,6 +9443,454 @@
     code    : #242#244#248#1#194#61#80#1#31;
     flags   : [if_avx,if_sandybridge]
   ),
+  (
+    opcode  : A_VCMPEQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#0;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#0;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLTPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#1;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLTPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#1;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLEPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#2;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLEPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#2;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORDPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#3;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORDPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#3;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#4;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#4;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLTPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#5;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLTPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#5;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLEPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#6;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLEPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#6;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORDPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#7;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORDPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#7;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_UQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#8;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_UQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#8;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGEPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#9;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGEPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#9;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGTPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#10;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGTPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#10;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSEPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#11;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSEPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#11;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#12;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#12;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGEPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#13;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGEPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#13;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGTPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#14;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGTPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#14;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUEPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#15;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUEPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#15;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_OSPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#16;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_OSPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#16;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLT_OQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#17;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLT_OQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#17;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLE_OQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#18;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLE_OQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#18;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORD_SPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#19;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORD_SPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#19;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_USPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#20;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_USPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#20;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLT_UQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#21;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLT_UQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#21;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLE_UQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#22;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLE_UQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#22;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORD_SPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#23;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORD_SPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#23;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_USPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#24;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_USPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#24;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGE_UQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#25;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGE_UQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#25;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGT_UQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#26;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGT_UQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#26;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSE_OSPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#27;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSE_OSPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#27;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OSPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#28;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OSPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#28;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGE_OQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#29;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGE_OQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#29;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGT_OQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#30;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGT_OQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#30;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUE_USPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#31;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUE_USPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#31;
+    flags   : [if_avx,if_sandybridge]
+  ),
   (
     opcode  : A_VCMPPD;
     ops     : 4;

+ 32 - 0
compiler/i8086/i8086att.inc

@@ -739,6 +739,38 @@
 'vcmpge_oqps',
 'vcmpgt_oqps',
 'vcmptrue_usps',
+'vcmpeqpd',
+'vcmpltpd',
+'vcmplepd',
+'vcmpunordpd',
+'vcmpneqpd',
+'vcmpnltpd',
+'vcmpnlepd',
+'vcmpordpd',
+'vcmpeq_uqpd',
+'vcmpngepd',
+'vcmpngtpd',
+'vcmpfalsepd',
+'vcmpneq_oqpd',
+'vcmpgepd',
+'vcmpgtpd',
+'vcmptruepd',
+'vcmpeq_ospd',
+'vcmplt_oqpd',
+'vcmple_oqpd',
+'vcmpunord_spd',
+'vcmpneq_uspd',
+'vcmpnlt_uqpd',
+'vcmpnle_uqpd',
+'vcmpord_spd',
+'vcmpeq_uspd',
+'vcmpnge_uqpd',
+'vcmpngt_uqpd',
+'vcmpfalse_ospd',
+'vcmpneq_ospd',
+'vcmpge_oqpd',
+'vcmpgt_oqpd',
+'vcmptrue_uspd',
 'vcmppd',
 'vcmpps',
 'vcmpsd',

+ 32 - 0
compiler/i8086/i8086atts.inc

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

+ 32 - 0
compiler/i8086/i8086int.inc

@@ -739,6 +739,38 @@
 'vcmpge_oqps',
 'vcmpgt_oqps',
 'vcmptrue_usps',
+'vcmpeqpd',
+'vcmpltpd',
+'vcmplepd',
+'vcmpunordpd',
+'vcmpneqpd',
+'vcmpnltpd',
+'vcmpnlepd',
+'vcmpordpd',
+'vcmpeq_uqpd',
+'vcmpngepd',
+'vcmpngtpd',
+'vcmpfalsepd',
+'vcmpneq_oqpd',
+'vcmpgepd',
+'vcmpgtpd',
+'vcmptruepd',
+'vcmpeq_ospd',
+'vcmplt_oqpd',
+'vcmple_oqpd',
+'vcmpunord_spd',
+'vcmpneq_uspd',
+'vcmpnlt_uqpd',
+'vcmpnle_uqpd',
+'vcmpord_spd',
+'vcmpeq_uspd',
+'vcmpnge_uqpd',
+'vcmpngt_uqpd',
+'vcmpfalse_ospd',
+'vcmpneq_ospd',
+'vcmpge_oqpd',
+'vcmpgt_oqpd',
+'vcmptrue_uspd',
 'vcmppd',
 'vcmpps',
 'vcmpsd',

+ 1 - 1
compiler/i8086/i8086nop.inc

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

+ 32 - 0
compiler/i8086/i8086op.inc

@@ -739,6 +739,38 @@ A_VCMPNEQ_OSPS,
 A_VCMPGE_OQPS,
 A_VCMPGT_OQPS,
 A_VCMPTRUE_USPS,
+A_VCMPEQPD,
+A_VCMPLTPD,
+A_VCMPLEPD,
+A_VCMPUNORDPD,
+A_VCMPNEQPD,
+A_VCMPNLTPD,
+A_VCMPNLEPD,
+A_VCMPORDPD,
+A_VCMPEQ_UQPD,
+A_VCMPNGEPD,
+A_VCMPNGTPD,
+A_VCMPFALSEPD,
+A_VCMPNEQ_OQPD,
+A_VCMPGEPD,
+A_VCMPGTPD,
+A_VCMPTRUEPD,
+A_VCMPEQ_OSPD,
+A_VCMPLT_OQPD,
+A_VCMPLE_OQPD,
+A_VCMPUNORD_SPD,
+A_VCMPNEQ_USPD,
+A_VCMPNLT_UQPD,
+A_VCMPNLE_UQPD,
+A_VCMPORD_SPD,
+A_VCMPEQ_USPD,
+A_VCMPNGE_UQPD,
+A_VCMPNGT_UQPD,
+A_VCMPFALSE_OSPD,
+A_VCMPNEQ_OSPD,
+A_VCMPGE_OQPD,
+A_VCMPGT_OQPD,
+A_VCMPTRUE_USPD,
 A_VCMPPD,
 A_VCMPPS,
 A_VCMPSD,

+ 32 - 0
compiler/i8086/i8086prop.inc

@@ -743,6 +743,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_Rop1, Ch_Rop2, Ch_WFlags]),
 (Ch: [Ch_Rop1, Ch_Rop2, Ch_WFlags]),
 (Ch: [Ch_Wop2, Ch_Rop1]),

+ 448 - 0
compiler/i8086/i8086tab.inc

@@ -9471,6 +9471,454 @@
     code    : #242#244#248#1#194#61#80#1#31;
     flags   : [if_avx,if_sandybridge]
   ),
+  (
+    opcode  : A_VCMPEQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#0;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#0;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLTPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#1;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLTPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#1;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLEPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#2;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLEPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#2;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORDPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#3;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORDPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#3;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#4;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#4;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLTPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#5;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLTPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#5;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLEPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#6;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLEPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#6;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORDPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#7;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORDPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#7;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_UQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#8;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_UQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#8;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGEPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#9;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGEPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#9;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGTPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#10;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGTPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#10;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSEPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#11;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSEPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#11;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#12;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#12;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGEPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#13;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGEPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#13;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGTPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#14;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGTPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#14;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUEPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#15;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUEPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#15;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_OSPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#16;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_OSPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#16;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLT_OQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#17;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLT_OQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#17;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLE_OQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#18;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLE_OQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#18;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORD_SPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#19;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORD_SPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#19;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_USPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#20;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_USPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#20;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLT_UQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#21;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLT_UQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#21;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLE_UQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#22;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLE_UQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#22;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORD_SPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#23;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORD_SPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#23;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_USPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#24;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_USPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#24;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGE_UQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#25;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGE_UQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#25;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGT_UQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#26;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGT_UQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#26;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSE_OSPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#27;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSE_OSPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#27;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OSPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#28;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OSPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#28;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGE_OQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#29;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGE_OQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#29;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGT_OQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#30;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGT_OQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#30;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUE_USPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#31;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUE_USPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#31;
+    flags   : [if_avx,if_sandybridge]
+  ),
   (
     opcode  : A_VCMPPD;
     ops     : 4;

+ 2 - 2
compiler/x86/aasmcpu.pas

@@ -1,4 +1,4 @@
-{
+{
     Copyright (c) 1998-2002 by Florian Klaempfl and Peter Vreman
 
     Contains the abstract assembler implementation for the i386
@@ -199,7 +199,7 @@ interface
 {$elseif defined(i8086)}
       instabentries = {$i i8086nop.inc}
 {$endif}
-      maxinfolen    = 8;
+      maxinfolen    = 9;
 
     type
       { What an instruction can change. Needed for optimizer and spilling code.

+ 161 - 0
compiler/x86/x86ins.dat

@@ -3857,6 +3857,167 @@ ymmreg,ymmreg,ymmrm             \362\364\370\1\xC2\75\120\1\x1E     AVX,SANDYBRI
 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
 
+[VCMPEQPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x0         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x0     AVX,SANDYBRIDGE
+
+[VCMPLTPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x1         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x1     AVX,SANDYBRIDGE
+
+[VCMPLEPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x2         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x2     AVX,SANDYBRIDGE
+
+[VCMPUNORDPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x3         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x3     AVX,SANDYBRIDGE
+
+[VCMPNEQPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x4         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x4     AVX,SANDYBRIDGE
+
+[VCMPNLTPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x5         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x5     AVX,SANDYBRIDGE
+
+[VCMPNLEPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x6         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x6     AVX,SANDYBRIDGE
+
+[VCMPORDPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x7         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x7     AVX,SANDYBRIDGE
+
+[VCMPEQ_UQPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x8         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x8     AVX,SANDYBRIDGE
+
+[VCMPNGEPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x9         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x9     AVX,SANDYBRIDGE
+
+[VCMPNGTPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x0A         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x0A     AVX,SANDYBRIDGE
+
+[VCMPFALSEPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x0B         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x0B     AVX,SANDYBRIDGE
+
+[VCMPNEQ_OQPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x0C         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x0C     AVX,SANDYBRIDGE
+
+[VCMPGEPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x0D         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x0D     AVX,SANDYBRIDGE
+
+[VCMPGTPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x0E         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x0E     AVX,SANDYBRIDGE
+
+[VCMPTRUEPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x0F         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x0F     AVX,SANDYBRIDGE
+
+[VCMPEQ_OSPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x10         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x10     AVX,SANDYBRIDGE
+
+[VCMPLT_OQPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x11         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x11     AVX,SANDYBRIDGE
+
+[VCMPLE_OQPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x12         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x12     AVX,SANDYBRIDGE
+
+[VCMPUNORD_SPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x13         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x13     AVX,SANDYBRIDGE
+
+[VCMPNEQ_USPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x14         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x14     AVX,SANDYBRIDGE
+
+[VCMPNLT_UQPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x15         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x15     AVX,SANDYBRIDGE
+
+[VCMPNLE_UQPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x16         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x16     AVX,SANDYBRIDGE
+
+[VCMPORD_SPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x17         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x17     AVX,SANDYBRIDGE
+
+[VCMPEQ_USPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x18         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x18     AVX,SANDYBRIDGE
+
+[VCMPNGE_UQPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x19         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x19     AVX,SANDYBRIDGE
+
+[VCMPNGT_UQPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x1A         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x1A     AVX,SANDYBRIDGE
+
+[VCMPFALSE_OSPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x1B         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x1B     AVX,SANDYBRIDGE
+
+[VCMPNEQ_OSPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x1C         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x1C     AVX,SANDYBRIDGE
+
+[VCMPGE_OQPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x1D         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x1D     AVX,SANDYBRIDGE
+
+[VCMPGT_OQPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x1E         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\362\364\370\1\xC2\75\120\1\x1E     AVX,SANDYBRIDGE
+
+[VCMPTRUE_USPD]
+(Ch_All)
+xmmreg,xmmreg,xmmrm             \361\362\370\1\xC2\75\120\1\x1F         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm             \361\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.

+ 32 - 0
compiler/x86_64/x8664ats.inc

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

+ 32 - 0
compiler/x86_64/x8664att.inc

@@ -735,6 +735,38 @@
 'vcmpge_oqps',
 'vcmpgt_oqps',
 'vcmptrue_usps',
+'vcmpeqpd',
+'vcmpltpd',
+'vcmplepd',
+'vcmpunordpd',
+'vcmpneqpd',
+'vcmpnltpd',
+'vcmpnlepd',
+'vcmpordpd',
+'vcmpeq_uqpd',
+'vcmpngepd',
+'vcmpngtpd',
+'vcmpfalsepd',
+'vcmpneq_oqpd',
+'vcmpgepd',
+'vcmpgtpd',
+'vcmptruepd',
+'vcmpeq_ospd',
+'vcmplt_oqpd',
+'vcmple_oqpd',
+'vcmpunord_spd',
+'vcmpneq_uspd',
+'vcmpnlt_uqpd',
+'vcmpnle_uqpd',
+'vcmpord_spd',
+'vcmpeq_uspd',
+'vcmpnge_uqpd',
+'vcmpngt_uqpd',
+'vcmpfalse_ospd',
+'vcmpneq_ospd',
+'vcmpge_oqpd',
+'vcmpgt_oqpd',
+'vcmptrue_uspd',
 'vcmppd',
 'vcmpps',
 'vcmpsd',

+ 32 - 0
compiler/x86_64/x8664int.inc

@@ -735,6 +735,38 @@
 'vcmpge_oqps',
 'vcmpgt_oqps',
 'vcmptrue_usps',
+'vcmpeqpd',
+'vcmpltpd',
+'vcmplepd',
+'vcmpunordpd',
+'vcmpneqpd',
+'vcmpnltpd',
+'vcmpnlepd',
+'vcmpordpd',
+'vcmpeq_uqpd',
+'vcmpngepd',
+'vcmpngtpd',
+'vcmpfalsepd',
+'vcmpneq_oqpd',
+'vcmpgepd',
+'vcmpgtpd',
+'vcmptruepd',
+'vcmpeq_ospd',
+'vcmplt_oqpd',
+'vcmple_oqpd',
+'vcmpunord_spd',
+'vcmpneq_uspd',
+'vcmpnlt_uqpd',
+'vcmpnle_uqpd',
+'vcmpord_spd',
+'vcmpeq_uspd',
+'vcmpnge_uqpd',
+'vcmpngt_uqpd',
+'vcmpfalse_ospd',
+'vcmpneq_ospd',
+'vcmpge_oqpd',
+'vcmpgt_oqpd',
+'vcmptrue_uspd',
 'vcmppd',
 'vcmpps',
 'vcmpsd',

+ 1 - 1
compiler/x86_64/x8664nop.inc

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

+ 32 - 0
compiler/x86_64/x8664op.inc

@@ -735,6 +735,38 @@ A_VCMPNEQ_OSPS,
 A_VCMPGE_OQPS,
 A_VCMPGT_OQPS,
 A_VCMPTRUE_USPS,
+A_VCMPEQPD,
+A_VCMPLTPD,
+A_VCMPLEPD,
+A_VCMPUNORDPD,
+A_VCMPNEQPD,
+A_VCMPNLTPD,
+A_VCMPNLEPD,
+A_VCMPORDPD,
+A_VCMPEQ_UQPD,
+A_VCMPNGEPD,
+A_VCMPNGTPD,
+A_VCMPFALSEPD,
+A_VCMPNEQ_OQPD,
+A_VCMPGEPD,
+A_VCMPGTPD,
+A_VCMPTRUEPD,
+A_VCMPEQ_OSPD,
+A_VCMPLT_OQPD,
+A_VCMPLE_OQPD,
+A_VCMPUNORD_SPD,
+A_VCMPNEQ_USPD,
+A_VCMPNLT_UQPD,
+A_VCMPNLE_UQPD,
+A_VCMPORD_SPD,
+A_VCMPEQ_USPD,
+A_VCMPNGE_UQPD,
+A_VCMPNGT_UQPD,
+A_VCMPFALSE_OSPD,
+A_VCMPNEQ_OSPD,
+A_VCMPGE_OQPD,
+A_VCMPGT_OQPD,
+A_VCMPTRUE_USPD,
 A_VCMPPD,
 A_VCMPPS,
 A_VCMPSD,

+ 32 - 0
compiler/x86_64/x8664pro.inc

@@ -739,6 +739,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_Rop1, Ch_Rop2, Ch_WFlags]),
 (Ch: [Ch_Rop1, Ch_Rop2, Ch_WFlags]),
 (Ch: [Ch_Wop2, Ch_Rop1]),

+ 448 - 0
compiler/x86_64/x8664tab.inc

@@ -9744,6 +9744,454 @@
     code    : #242#244#248#1#194#61#80#1#31;
     flags   : [if_avx,if_sandybridge]
   ),
+  (
+    opcode  : A_VCMPEQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#0;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#0;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLTPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#1;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLTPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#1;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLEPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#2;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLEPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#2;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORDPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#3;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORDPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#3;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#4;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#4;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLTPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#5;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLTPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#5;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLEPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#6;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLEPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#6;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORDPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#7;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORDPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#7;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_UQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#8;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_UQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#8;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGEPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#9;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGEPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#9;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGTPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#10;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGTPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#10;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSEPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#11;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSEPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#11;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#12;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#12;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGEPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#13;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGEPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#13;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGTPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#14;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGTPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#14;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUEPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#15;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUEPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#15;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_OSPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#16;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_OSPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#16;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLT_OQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#17;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLT_OQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#17;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLE_OQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#18;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPLE_OQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#18;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORD_SPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#19;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPUNORD_SPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#19;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_USPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#20;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_USPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#20;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLT_UQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#21;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLT_UQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#21;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLE_UQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#22;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNLE_UQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#22;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORD_SPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#23;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPORD_SPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#23;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_USPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#24;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPEQ_USPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#24;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGE_UQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#25;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGE_UQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#25;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGT_UQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#26;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNGT_UQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#26;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSE_OSPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#27;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPFALSE_OSPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#27;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OSPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#28;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPNEQ_OSPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#28;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGE_OQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#29;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGE_OQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#29;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGT_OQPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#30;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPGT_OQPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#30;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUE_USPD;
+    ops     : 3;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
+    code    : #241#242#248#1#194#61#80#1#31;
+    flags   : [if_avx,if_sandybridge]
+  ),
+  (
+    opcode  : A_VCMPTRUE_USPD;
+    ops     : 3;
+    optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
+    code    : #241#242#244#248#1#194#61#80#1#31;
+    flags   : [if_avx,if_sandybridge]
+  ),
   (
     opcode  : A_VCMPPD;
     ops     : 4;