Browse Source

avx512 broadcast vcvt...,vfpclass...

git-svn-id: branches/tg74/avx512@39778 -
tg74 6 năm trước cách đây
mục cha
commit
fba72b280b

+ 1 - 1
compiler/i386/i386nop.inc

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

+ 88 - 39
compiler/i386/i386tab.inc

@@ -10449,7 +10449,14 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #220#232#234#248#1#230#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
+  ),
+  (
+    opcode  : A_VCVTPD2DQ;
+    ops     : 2;
+    optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
+    code    : #220#232#234#244#248#1#230#72;
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPD2DQ;
@@ -10470,7 +10477,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #220#232#233#234#248#1#230#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPD2DQ;
@@ -10505,7 +10512,14 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#234#241#248#1#90#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
+  ),
+  (
+    opcode  : A_VCVTPD2PS;
+    ops     : 2;
+    optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
+    code    : #232#234#241#244#248#1#90#72;
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPD2PS;
@@ -10526,7 +10540,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#233#234#241#248#1#90#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPD2PS;
@@ -10659,7 +10673,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#248#1#90#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VCVTPS2PD;
@@ -10680,7 +10694,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#244#248#1#90#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPS2PD;
@@ -10701,7 +10715,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#233#248#1#90#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPS2PH;
@@ -10869,7 +10883,14 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#234#241#248#1#230#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
+  ),
+  (
+    opcode  : A_VCVTTPD2DQ;
+    ops     : 2;
+    optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
+    code    : #232#234#241#244#248#1#230#72;
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTTPD2DQ;
@@ -10890,7 +10911,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#233#234#241#248#1#230#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTTPD2DQ;
@@ -20207,7 +20228,7 @@
     ops     : 3;
     optypes : (ot_xmmreg_mz,ot_xmmreg,ot_bmem32,ot_none);
     code    : #232#241#249#1#190#61#80;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VFNMSUB231PS;
@@ -21271,7 +21292,14 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#234#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
+  ),
+  (
+    opcode  : A_VCVTPD2UDQ;
+    ops     : 2;
+    optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
+    code    : #232#234#244#248#1#121#72;
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPD2UDQ;
@@ -21292,7 +21320,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#233#234#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPD2UDQ;
@@ -21313,7 +21341,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#234#241#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VCVTPD2UQQ;
@@ -21327,7 +21355,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#234#241#244#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPD2UQQ;
@@ -21341,7 +21369,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#233#234#241#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPD2UQQ;
@@ -21369,7 +21397,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#248#1#123#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VCVTPS2QQ;
@@ -21383,7 +21411,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#244#248#1#123#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPS2QQ;
@@ -21397,7 +21425,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#233#241#248#1#123#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPS2QQ;
@@ -21418,7 +21446,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPS2UDQ;
@@ -21432,7 +21460,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#244#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPS2UDQ;
@@ -21446,7 +21474,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#233#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst16]
   ),
   (
     opcode  : A_VCVTPS2UDQ;
@@ -21474,7 +21502,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VCVTPS2UQQ;
@@ -21488,7 +21516,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#244#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPS2UQQ;
@@ -21502,7 +21530,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#233#241#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPS2UQQ;
@@ -21586,7 +21614,14 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#234#248#1#91#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
+  ),
+  (
+    opcode  : A_VCVTQQ2PS;
+    ops     : 2;
+    optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
+    code    : #232#234#244#248#1#91#72;
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTQQ2PS;
@@ -21607,7 +21642,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#233#234#248#1#91#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTQQ2PS;
@@ -21747,7 +21782,14 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#234#248#1#120#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
+  ),
+  (
+    opcode  : A_VCVTTPD2UDQ;
+    ops     : 2;
+    optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
+    code    : #232#234#244#248#1#120#72;
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTTPD2UDQ;
@@ -21768,7 +21810,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#233#234#248#1#120#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTTPD2UDQ;
@@ -21845,7 +21887,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VCVTTPS2QQ;
@@ -21859,7 +21901,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#244#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTTPS2QQ;
@@ -21873,7 +21915,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#233#241#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTTPS2QQ;
@@ -21950,7 +21992,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#248#1#120#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VCVTTPS2UQQ;
@@ -21964,7 +22006,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#244#248#1#120#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTTPS2UQQ;
@@ -21978,7 +22020,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#233#241#248#1#120#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTTPS2UQQ;
@@ -22062,7 +22104,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #219#232#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VCVTUDQ2PD;
@@ -22076,7 +22118,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #219#232#244#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTUDQ2PD;
@@ -22090,7 +22132,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #219#232#233#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTUDQ2PD;
@@ -22223,7 +22265,14 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #220#232#234#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
+  ),
+  (
+    opcode  : A_VCVTUQQ2PS;
+    ops     : 2;
+    optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
+    code    : #220#232#234#244#248#1#122#72;
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTUQQ2PS;
@@ -22244,7 +22293,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #220#232#233#234#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTUQQ2PS;

+ 1 - 1
compiler/i8086/i8086nop.inc

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

+ 88 - 39
compiler/i8086/i8086tab.inc

@@ -10477,7 +10477,14 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #220#232#234#248#1#230#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
+  ),
+  (
+    opcode  : A_VCVTPD2DQ;
+    ops     : 2;
+    optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
+    code    : #220#232#234#244#248#1#230#72;
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPD2DQ;
@@ -10498,7 +10505,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #220#232#233#234#248#1#230#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPD2DQ;
@@ -10533,7 +10540,14 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#234#241#248#1#90#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
+  ),
+  (
+    opcode  : A_VCVTPD2PS;
+    ops     : 2;
+    optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
+    code    : #232#234#241#244#248#1#90#72;
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPD2PS;
@@ -10554,7 +10568,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#233#234#241#248#1#90#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPD2PS;
@@ -10687,7 +10701,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#248#1#90#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VCVTPS2PD;
@@ -10708,7 +10722,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#244#248#1#90#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPS2PD;
@@ -10729,7 +10743,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#233#248#1#90#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPS2PH;
@@ -10897,7 +10911,14 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#234#241#248#1#230#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
+  ),
+  (
+    opcode  : A_VCVTTPD2DQ;
+    ops     : 2;
+    optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
+    code    : #232#234#241#244#248#1#230#72;
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTTPD2DQ;
@@ -10918,7 +10939,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#233#234#241#248#1#230#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTTPD2DQ;
@@ -20431,7 +20452,7 @@
     ops     : 3;
     optypes : (ot_xmmreg_mz,ot_xmmreg,ot_bmem32,ot_none);
     code    : #232#241#249#1#190#61#80;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VFNMSUB231PS;
@@ -21495,7 +21516,14 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#234#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
+  ),
+  (
+    opcode  : A_VCVTPD2UDQ;
+    ops     : 2;
+    optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
+    code    : #232#234#244#248#1#121#72;
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPD2UDQ;
@@ -21516,7 +21544,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#233#234#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPD2UDQ;
@@ -21537,7 +21565,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#234#241#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VCVTPD2UQQ;
@@ -21551,7 +21579,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#234#241#244#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPD2UQQ;
@@ -21565,7 +21593,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#233#234#241#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPD2UQQ;
@@ -21593,7 +21621,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#248#1#123#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VCVTPS2QQ;
@@ -21607,7 +21635,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#244#248#1#123#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPS2QQ;
@@ -21621,7 +21649,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#233#241#248#1#123#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPS2QQ;
@@ -21642,7 +21670,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPS2UDQ;
@@ -21656,7 +21684,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#244#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPS2UDQ;
@@ -21670,7 +21698,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#233#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst16]
   ),
   (
     opcode  : A_VCVTPS2UDQ;
@@ -21698,7 +21726,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VCVTPS2UQQ;
@@ -21712,7 +21740,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#244#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPS2UQQ;
@@ -21726,7 +21754,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#233#241#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPS2UQQ;
@@ -21810,7 +21838,14 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#234#248#1#91#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
+  ),
+  (
+    opcode  : A_VCVTQQ2PS;
+    ops     : 2;
+    optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
+    code    : #232#234#244#248#1#91#72;
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTQQ2PS;
@@ -21831,7 +21866,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#233#234#248#1#91#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTQQ2PS;
@@ -21971,7 +22006,14 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#234#248#1#120#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
+  ),
+  (
+    opcode  : A_VCVTTPD2UDQ;
+    ops     : 2;
+    optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
+    code    : #232#234#244#248#1#120#72;
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTTPD2UDQ;
@@ -21992,7 +22034,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#233#234#248#1#120#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTTPD2UDQ;
@@ -22069,7 +22111,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VCVTTPS2QQ;
@@ -22083,7 +22125,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#244#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTTPS2QQ;
@@ -22097,7 +22139,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#233#241#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTTPS2QQ;
@@ -22174,7 +22216,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#248#1#120#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VCVTTPS2UQQ;
@@ -22188,7 +22230,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#244#248#1#120#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTTPS2UQQ;
@@ -22202,7 +22244,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#233#241#248#1#120#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTTPS2UQQ;
@@ -22286,7 +22328,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #219#232#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VCVTUDQ2PD;
@@ -22300,7 +22342,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #219#232#244#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTUDQ2PD;
@@ -22314,7 +22356,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #219#232#233#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTUDQ2PD;
@@ -22447,7 +22489,14 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #220#232#234#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
+  ),
+  (
+    opcode  : A_VCVTUQQ2PS;
+    ops     : 2;
+    optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
+    code    : #220#232#234#244#248#1#122#72;
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTUQQ2PS;
@@ -22468,7 +22517,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #220#232#233#234#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTUQQ2PS;

+ 1 - 4
compiler/ppcx64.lpi

@@ -25,7 +25,7 @@
     <RunParams>
       <local>
         <FormatVersion Value="1"/>
-        <CommandLineParams Value="-O- \home\torsten\tmp\test.pp"/>
+        <CommandLineParams Value="-O- \home\torsten\tmp\test.pp -Fu\home\torsten\avx512\rtl\units\x86_64-linux"/>
         <LaunchingApplication PathPlusParams="\usr\X11R6\bin\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\tools\runwait.sh $(TargetCmdLine)"/>
       </local>
     </RunParams>
@@ -33,12 +33,10 @@
       <Unit0>
         <Filename Value="pp.pas"/>
         <IsPartOfProject Value="True"/>
-        <UnitName Value="pp"/>
       </Unit0>
       <Unit1>
         <Filename Value="x86\aasmcpu.pas"/>
         <IsPartOfProject Value="True"/>
-        <UnitName Value="aasmcpu"/>
       </Unit1>
     </Units>
   </ProjectOptions>
@@ -71,7 +69,6 @@
         <StopAfterErrCount Value="50"/>
       </ConfigFile>
       <CustomOptions Value="-dx86_64"/>
-      <CompilerPath Value="$(CompPath)"/>
     </Other>
   </CompilerOptions>
 </CONFIG>

+ 1 - 7
compiler/x86/aasmcpu.pas

@@ -1807,13 +1807,6 @@ implementation
            end;
         end;
 
-
-        if opcode = A_VFPCLASSPD then
-        begin
-          vopext := 0;
-
-        end;
-
         if (InsTabMemRefSizeInfoCache^[opcode].ExistsSSEAVX) then
         begin
           for i:=0 to p^.ops-1 do
@@ -1852,6 +1845,7 @@ implementation
                  // e.g. vfpclasspd  k1, [RAX] {1to8}, 0
                  // =>> check flags
 
+
                  case oper[i]^.vopext and (OTVE_VECTOR_BCST2 or OTVE_VECTOR_BCST4 or OTVE_VECTOR_BCST8 or OTVE_VECTOR_BCST16) of
                     OTVE_VECTOR_BCST2: if not(IF_BCST2 in p^.flags) then exit;
                     OTVE_VECTOR_BCST4: if not(IF_BCST4 in p^.flags) then exit;

+ 49 - 42
compiler/x86/x86ins.dat

@@ -4132,13 +4132,13 @@ xmmreg,xmmreg_sae                         \350\362\370\1\x2F\110
 (Ch_Wop2, Ch_Rop1)
 xmmreg_mz,mem64                           \333\350\362\370\1\xE6\110                AVX,SANDYBRIDGE
 xmmreg_mz,xmmreg                          \333\350\362\370\1\xE6\110                AVX,SANDYBRIDGE
-xmmreg_mz,bmem32                          \333\350\370\1\xE6\110                    AVX512
+xmmreg_mz,bmem32                          \333\350\370\1\xE6\110                    AVX512,BCST2
 ymmreg_mz,mem128                          \333\350\362\364\370\1\xE6\110            AVX,SANDYBRIDGE
 ymmreg_mz,xmmreg                          \333\350\362\364\370\1\xE6\110            AVX,SANDYBRIDGE
-ymmreg_mz,bmem32                          \333\350\364\370\1\xE6\110                AVX512
+ymmreg_mz,bmem32                          \333\350\364\370\1\xE6\110                AVX512,BCST4
 zmmreg_mz,mem256                          \333\350\351\370\1\xE6\110                AVX512
 zmmreg_mz,ymmreg_er                       \333\350\351\370\1\xE6\110                AVX512
-zmmreg_mz,bmem32                          \333\350\351\370\1\xE6\110                AVX512
+zmmreg_mz,bmem32                          \333\350\351\370\1\xE6\110                AVX512,BCST8
 
 
 
@@ -4158,10 +4158,11 @@ zmmreg_mz,zmmreg_er                       \350\351\370\1\x5B\110
 xmmreg_mz,mem128                          \334\350\352\362\370\1\xE6\110            AVX,SANDYBRIDGE
 xmmreg_mz,mem256                          \334\350\352\362\364\370\1\xE6\110        AVX,SANDYBRIDGE
 xmmreg_mz,xmmreg                          \334\350\352\362\370\1\xE6\110            AVX,SANDYBRIDGE
-xmmreg_mz,bmem64                          \334\350\352\370\1\xE6\110                AVX512
+xmmreg_mz,bmem64                          \334\350\352\370\1\xE6\110                AVX512,BCST2
+xmmreg_mz,bmem64                          \334\350\352\364\370\1\xE6\110            AVX512,BCST4
 xmmreg_mz,ymmreg                          \334\350\352\362\364\370\1\xE6\110        AVX,SANDYBRIDGE
 ymmreg_mz,mem512                          \334\350\351\352\370\1\xE6\110            AVX512
-ymmreg_mz,bmem64                          \334\350\351\352\370\1\xE6\110            AVX512
+ymmreg_mz,bmem64                          \334\350\351\352\370\1\xE6\110            AVX512,BCST8
 ymmreg_mz,zmmreg_er                       \334\350\351\352\370\1\xE6\110            AVX512
 
 
@@ -4170,10 +4171,11 @@ ymmreg_mz,zmmreg_er                       \334\350\351\352\370\1\xE6\110
 xmmreg_mz,mem128                          \350\352\361\362\370\1\x5A\110            AVX,SANDYBRIDGE
 xmmreg_mz,mem256                          \350\352\361\362\364\370\1\x5A\110        AVX,SANDYBRIDGE
 xmmreg_mz,xmmreg                          \350\352\361\362\370\1\x5A\110            AVX,SANDYBRIDGE
-xmmreg_mz,bmem64                          \350\352\361\370\1\x5A\110                AVX512
+xmmreg_mz,bmem64                          \350\352\361\370\1\x5A\110                AVX512,BCST2
+xmmreg_mz,bmem64                          \350\352\361\364\370\1\x5A\110            AVX512,BCST4
 xmmreg_mz,ymmreg                          \350\352\361\362\364\370\1\x5A\110        AVX,SANDYBRIDGE
 ymmreg_mz,mem512                          \350\351\352\361\370\1\x5A\110            AVX512
-ymmreg_mz,bmem64                          \350\351\352\361\370\1\x5A\110            AVX512
+ymmreg_mz,bmem64                          \350\351\352\361\370\1\x5A\110            AVX512,BCST8
 ymmreg_mz,zmmreg_er                       \350\351\352\361\370\1\x5A\110            AVX512
 
 [VCVTPH2PS]
@@ -4203,13 +4205,13 @@ zmmreg_mz,zmmreg_er                       \350\351\361\370\1\x5B\110
 (Ch_Wop2, Ch_Rop1)
 xmmreg_mz,mem64                           \350\362\370\1\x5A\110                    AVX,SANDYBRIDGE
 xmmreg_mz,xmmreg                          \350\362\370\1\x5A\110                    AVX,SANDYBRIDGE
-xmmreg_mz,bmem32                          \350\370\1\x5A\110                        AVX512
+xmmreg_mz,bmem32                          \350\370\1\x5A\110                        AVX512,BCST2
 ymmreg_mz,mem128                          \350\362\364\370\1\x5A\110                AVX,SANDYBRIDGE
 ymmreg_mz,xmmreg                          \350\362\364\370\1\x5A\110                AVX,SANDYBRIDGE
-ymmreg_mz,bmem32                          \350\364\370\1\x5A\110                    AVX512
+ymmreg_mz,bmem32                          \350\364\370\1\x5A\110                    AVX512,BCST4
 zmmreg_mz,mem256                          \350\351\370\1\x5A\110                    AVX512
 zmmreg_mz,ymmreg_sae                      \350\351\370\1\x5A\110                    AVX512
-zmmreg_mz,bmem32                          \350\351\370\1\x5A\110                    AVX512
+zmmreg_mz,bmem32                          \350\351\370\1\x5A\110                    AVX512,BCST8
 
 
 [VCVTPS2PH]
@@ -4267,10 +4269,11 @@ reg64,xmmreg_er                           \333\350\352\362\363\370\1\x2D\110
 xmmreg_mz,mem128                          \350\352\361\362\370\1\xE6\110            AVX,SANDYBRIDGE,AVX512
 xmmreg_mz,mem256                          \350\352\361\362\364\370\1\xE6\110        AVX,SANDYBRIDGE,AVX512
 xmmreg_mz,xmmreg                          \350\352\361\362\370\1\xE6\110            AVX,SANDYBRIDGE,AVX512
-xmmreg_mz,bmem64                          \350\352\361\370\1\xE6\110                AVX512
+xmmreg_mz,bmem64                          \350\352\361\370\1\xE6\110                AVX512,BCST2
+xmmreg_mz,bmem64                          \350\352\361\364\370\1\xE6\110            AVX512,BCST4
 xmmreg_mz,ymmreg                          \350\352\361\362\364\370\1\xE6\110        AVX,SANDYBRIDGE,AVX512
 ymmreg_mz,mem512                          \350\351\352\361\370\1\xE6\110            AVX512
-ymmreg_mz,bmem64                          \350\351\352\361\370\1\xE6\110            AVX512
+ymmreg_mz,bmem64                          \350\351\352\361\370\1\xE6\110            AVX512,BCST8
 ymmreg_mz,zmmreg_sae                      \350\351\352\361\370\1\xE6\110            AVX512
 
 [VCVTTPS2DQ]
@@ -6821,7 +6824,7 @@ zmmreg_mz,zmmreg,bmem64                   \350\351\352\361\371\1\xBE\75\120
 [VFNMSUB231PS]
 (Ch_All)
 xmmreg_mz,xmmreg,xmmrm                    \350\361\362\371\1\xBE\75\120             FMA
-xmmreg_mz,xmmreg,bmem32                   \350\361\371\1\xBE\75\120                 AVX512
+xmmreg_mz,xmmreg,bmem32                   \350\361\371\1\xBE\75\120                 AVX512,BCST2
 ymmreg_mz,ymmreg,ymmrm                    \350\361\362\364\371\1\xBE\75\120         FMA
 ymmreg_mz,ymmreg,bmem32                   \350\361\364\371\1\xBE\75\120             AVX512
 zmmreg_mz,zmmreg,zmmreg_er                \350\351\361\371\1\xBE\75\120             AVX512
@@ -7244,52 +7247,53 @@ zmmreg_mz,zmmreg_er                       \350\351\352\361\370\1\x7B\110
 xmmreg_mz,mem128                          \350\352\370\1\x79\110                    AVX512
 xmmreg_mz,mem256                          \350\352\364\370\1\x79\110                AVX512
 xmmreg_mz,xmmreg                          \350\352\370\1\x79\110                    AVX512
-xmmreg_mz,bmem64                          \350\352\370\1\x79\110                    AVX512
+xmmreg_mz,bmem64                          \350\352\370\1\x79\110                    AVX512,BCST2
+xmmreg_mz,bmem64                          \350\352\364\370\1\x79\110                AVX512,BCST4
 xmmreg_mz,ymmreg                          \350\352\364\370\1\x79\110                AVX512
 ymmreg_mz,mem512                          \350\351\352\370\1\x79\110                AVX512
-ymmreg_mz,bmem64                          \350\351\352\370\1\x79\110                AVX512
+ymmreg_mz,bmem64                          \350\351\352\370\1\x79\110                AVX512,BCST8
 ymmreg_mz,zmmreg_er                       \350\351\352\370\1\x79\110                AVX512
 
 [VCVTPD2UQQ]
 (Ch_All)
 xmmreg_mz,xmmrm                           \350\352\361\370\1\x79\110                AVX512
-xmmreg_mz,bmem64                          \350\352\361\370\1\x79\110                AVX512
+xmmreg_mz,bmem64                          \350\352\361\370\1\x79\110                AVX512,BCST2
 ymmreg_mz,ymmrm                           \350\352\361\364\370\1\x79\110            AVX512
-ymmreg_mz,bmem64                          \350\352\361\364\370\1\x79\110            AVX512
+ymmreg_mz,bmem64                          \350\352\361\364\370\1\x79\110            AVX512,BCST4
 zmmreg_mz,mem512                          \350\351\352\361\370\1\x79\110            AVX512
-zmmreg_mz,bmem64                          \350\351\352\361\370\1\x79\110            AVX512
+zmmreg_mz,bmem64                          \350\351\352\361\370\1\x79\110            AVX512,BCST8
 zmmreg_mz,zmmreg_er                       \350\351\352\361\370\1\x79\110            AVX512
 
 [VCVTPS2QQ]
 (Ch_All)
 xmmreg_mz,xmmreg                          \350\361\370\1\x7B\110                    AVX512
 xmmreg_mz,mem64                           \350\361\370\1\x7B\110                    AVX512
-xmmreg_mz,bmem32                          \350\361\370\1\x7B\110                    AVX512
+xmmreg_mz,bmem32                          \350\361\370\1\x7B\110                    AVX512,BCST2
 ymmreg_mz,xmmrm                           \350\361\364\370\1\x7B\110                AVX512
-ymmreg_mz,bmem32                          \350\361\364\370\1\x7B\110                AVX512
+ymmreg_mz,bmem32                          \350\361\364\370\1\x7B\110                AVX512,BCST4
 zmmreg_mz,mem256                          \350\351\361\370\1\x7B\110                AVX512
-zmmreg_mz,bmem32                          \350\351\361\370\1\x7B\110                AVX512
+zmmreg_mz,bmem32                          \350\351\361\370\1\x7B\110                AVX512,BCST8
 zmmreg_mz,ymmreg_er                       \350\351\361\370\1\x7B\110                AVX512
 
 [VCVTPS2UDQ]
 (Ch_All)
 xmmreg_mz,xmmrm                           \350\370\1\x79\110                        AVX512
-xmmreg_mz,bmem32                          \350\370\1\x79\110                        AVX512
+xmmreg_mz,bmem32                          \350\370\1\x79\110                        AVX512,BCST4
 ymmreg_mz,ymmrm                           \350\364\370\1\x79\110                    AVX512
-ymmreg_mz,bmem32                          \350\364\370\1\x79\110                    AVX512
+ymmreg_mz,bmem32                          \350\364\370\1\x79\110                    AVX512,BCST8
 zmmreg_mz,mem512                          \350\351\370\1\x79\110                    AVX512
-zmmreg_mz,bmem32                          \350\351\370\1\x79\110                    AVX512
+zmmreg_mz,bmem32                          \350\351\370\1\x79\110                    AVX512,BCST16
 zmmreg_mz,zmmreg_er                       \350\351\370\1\x79\110                    AVX512
 
 [VCVTPS2UQQ]
 (Ch_All)
 xmmreg_mz,xmmreg                          \350\361\370\1\x79\110                    AVX512
 xmmreg_mz,mem64                           \350\361\370\1\x79\110                    AVX512
-xmmreg_mz,bmem32                          \350\361\370\1\x79\110                    AVX512
+xmmreg_mz,bmem32                          \350\361\370\1\x79\110                    AVX512,BCST2
 ymmreg_mz,xmmrm                           \350\361\364\370\1\x79\110                AVX512
-ymmreg_mz,bmem32                          \350\361\364\370\1\x79\110                AVX512
+ymmreg_mz,bmem32                          \350\361\364\370\1\x79\110                AVX512,BCST4
 zmmreg_mz,mem256                          \350\351\361\370\1\x79\110                AVX512
-zmmreg_mz,bmem32                          \350\351\361\370\1\x79\110                AVX512
+zmmreg_mz,bmem32                          \350\351\361\370\1\x79\110                AVX512,BCST8
 zmmreg_mz,ymmreg_er                       \350\351\361\370\1\x79\110                AVX512
 
 [VCVTQQ2PD]
@@ -7307,10 +7311,11 @@ zmmreg_mz,zmmreg_er                       \333\350\351\352\370\1\xE6\110
 xmmreg_mz,mem128                          \350\352\370\1\x5B\110                    AVX512
 xmmreg_mz,mem256                          \350\352\364\370\1\x5B\110                AVX512
 xmmreg_mz,xmmreg                          \350\352\370\1\x5B\110                    AVX512
-xmmreg_mz,bmem64                          \350\352\370\1\x5B\110                    AVX512
+xmmreg_mz,bmem64                          \350\352\370\1\x5B\110                    AVX512,BCST2
+xmmreg_mz,bmem64                          \350\352\364\370\1\x5B\110                AVX512,BCST4
 xmmreg_mz,ymmreg                          \350\352\364\370\1\x5B\110                AVX512
 ymmreg_mz,mem512                          \350\351\352\370\1\x5B\110                AVX512
-ymmreg_mz,bmem64                          \350\351\352\370\1\x5B\110                AVX512
+ymmreg_mz,bmem64                          \350\351\352\370\1\x5B\110                AVX512,BCST8
 ymmreg_mz,zmmreg_er                       \350\351\352\370\1\x5B\110                AVX512
 
 [VCVTSD2USI]
@@ -7342,10 +7347,11 @@ zmmreg_mz,zmmreg_sae                      \350\351\352\361\370\1\x7A\110
 xmmreg_mz,mem128                          \350\352\370\1\x78\110                    AVX512
 xmmreg_mz,mem256                          \350\352\364\370\1\x78\110                AVX512
 xmmreg_mz,xmmreg                          \350\352\370\1\x78\110                    AVX512
-xmmreg_mz,bmem64                          \350\352\370\1\x78\110                    AVX512
+xmmreg_mz,bmem64                          \350\352\370\1\x78\110                    AVX512,BCST2
+xmmreg_mz,bmem64                          \350\352\364\370\1\x78\110                AVX512,BCST4
 xmmreg_mz,ymmreg                          \350\352\364\370\1\x78\110                AVX512
 ymmreg_mz,mem512                          \350\351\352\370\1\x78\110                AVX512
-ymmreg_mz,bmem64                          \350\351\352\370\1\x78\110                AVX512
+ymmreg_mz,bmem64                          \350\351\352\370\1\x78\110                AVX512,BCST8                          \350\352\370\1\x78\110                    AVX512,BCST2
 ymmreg_mz,zmmreg_sae                      \350\351\352\370\1\x78\110                AVX512
 
 [VCVTTPD2UQQ]
@@ -7362,11 +7368,11 @@ zmmreg_mz,zmmreg_sae                      \350\351\352\361\370\1\x78\110
 (Ch_All)
 xmmreg_mz,xmmreg                          \350\361\370\1\x7A\110                    AVX512
 xmmreg_mz,mem64                           \350\361\370\1\x7A\110                    AVX512
-xmmreg_mz,bmem32                          \350\361\370\1\x7A\110                    AVX512
+xmmreg_mz,bmem32                          \350\361\370\1\x7A\110                    AVX512,BCST2
 ymmreg_mz,xmmrm                           \350\361\364\370\1\x7A\110                AVX512
-ymmreg_mz,bmem32                          \350\361\364\370\1\x7A\110                AVX512
+ymmreg_mz,bmem32                          \350\361\364\370\1\x7A\110                AVX512,BCST4
 zmmreg_mz,mem256                          \350\351\361\370\1\x7A\110                AVX512
-zmmreg_mz,bmem32                          \350\351\361\370\1\x7A\110                AVX512
+zmmreg_mz,bmem32                          \350\351\361\370\1\x7A\110                AVX512,BCST8
 zmmreg_mz,ymmreg_sae                      \350\351\361\370\1\x7A\110                AVX512
 
 [VCVTTPS2UDQ]
@@ -7383,11 +7389,11 @@ zmmreg_mz,zmmreg_sae                      \350\351\370\1\x78\110
 (Ch_All)
 xmmreg_mz,xmmreg                          \350\361\370\1\x78\110                    AVX512
 xmmreg_mz,mem64                           \350\361\370\1\x78\110                    AVX512
-xmmreg_mz,bmem32                          \350\361\370\1\x78\110                    AVX512
+xmmreg_mz,bmem32                          \350\361\370\1\x78\110                    AVX512,BCST2
 ymmreg_mz,xmmrm                           \350\361\364\370\1\x78\110                AVX512
-ymmreg_mz,bmem32                          \350\361\364\370\1\x78\110                AVX512
+ymmreg_mz,bmem32                          \350\361\364\370\1\x78\110                AVX512,BCST4
 zmmreg_mz,mem256                          \350\351\361\370\1\x78\110                AVX512
-zmmreg_mz,bmem32                          \350\351\361\370\1\x78\110                AVX512
+zmmreg_mz,bmem32                          \350\351\361\370\1\x78\110                AVX512,BCST8
 zmmreg_mz,ymmreg_sae                      \350\351\361\370\1\x78\110                AVX512
 
 [VCVTTSD2USI]
@@ -7408,11 +7414,11 @@ reg64,xmmreg_sae                          \333\350\352\370\1\x78\110
 (Ch_All)
 xmmreg_mz,xmmreg                          \333\350\370\1\x7A\110                    AVX512
 xmmreg_mz,mem64                           \333\350\370\1\x7A\110                    AVX512
-xmmreg_mz,bmem32                          \333\350\370\1\x7A\110                    AVX512
+xmmreg_mz,bmem32                          \333\350\370\1\x7A\110                    AVX512,BCST2
 ymmreg_mz,xmmrm                           \333\350\364\370\1\x7A\110                AVX512
-ymmreg_mz,bmem32                          \333\350\364\370\1\x7A\110                AVX512
+ymmreg_mz,bmem32                          \333\350\364\370\1\x7A\110                AVX512,BCST4
 zmmreg_mz,mem256                          \333\350\351\370\1\x7A\110                AVX512
-zmmreg_mz,bmem32                          \333\350\351\370\1\x7A\110                AVX512
+zmmreg_mz,bmem32                          \333\350\351\370\1\x7A\110                AVX512,BCST8
 zmmreg_mz,ymmreg_er                       \333\350\351\370\1\x7A\110                AVX512
 
 [VCVTUDQ2PS]
@@ -7440,10 +7446,11 @@ zmmreg_mz,zmmreg_er                       \333\350\351\352\370\1\x7A\110
 xmmreg_mz,mem128                          \334\350\352\370\1\x7A\110                AVX512
 xmmreg_mz,mem256                          \334\350\352\364\370\1\x7A\110            AVX512
 xmmreg_mz,xmmreg                          \334\350\352\370\1\x7A\110                AVX512
-xmmreg_mz,bmem64                          \334\350\352\370\1\x7A\110                AVX512
+xmmreg_mz,bmem64                          \334\350\352\370\1\x7A\110                AVX512,BCST2
+xmmreg_mz,bmem64                          \334\350\352\364\370\1\x7A\110            AVX512,BCST4
 xmmreg_mz,ymmreg                          \334\350\352\364\370\1\x7A\110            AVX512
 ymmreg_mz,mem512                          \334\350\351\352\370\1\x7A\110            AVX512
-ymmreg_mz,bmem64                          \334\350\351\352\370\1\x7A\110            AVX512
+ymmreg_mz,bmem64                          \334\350\351\352\370\1\x7A\110            AVX512,BCST8
 ymmreg_mz,zmmreg_er                       \334\350\351\352\370\1\x7A\110            AVX512
 
 [VCVTUSI2SD]

+ 1 - 1
compiler/x86_64/x8664nop.inc

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

+ 88 - 39
compiler/x86_64/x8664tab.inc

@@ -10750,7 +10750,14 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #220#232#234#248#1#230#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
+  ),
+  (
+    opcode  : A_VCVTPD2DQ;
+    ops     : 2;
+    optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
+    code    : #220#232#234#244#248#1#230#72;
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPD2DQ;
@@ -10771,7 +10778,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #220#232#233#234#248#1#230#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPD2DQ;
@@ -10806,7 +10813,14 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#234#241#248#1#90#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
+  ),
+  (
+    opcode  : A_VCVTPD2PS;
+    ops     : 2;
+    optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
+    code    : #232#234#241#244#248#1#90#72;
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPD2PS;
@@ -10827,7 +10841,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#233#234#241#248#1#90#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPD2PS;
@@ -10960,7 +10974,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#248#1#90#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VCVTPS2PD;
@@ -10981,7 +10995,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#244#248#1#90#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPS2PD;
@@ -11002,7 +11016,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#233#248#1#90#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPS2PH;
@@ -11184,7 +11198,14 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#234#241#248#1#230#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
+  ),
+  (
+    opcode  : A_VCVTTPD2DQ;
+    ops     : 2;
+    optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
+    code    : #232#234#241#244#248#1#230#72;
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTTPD2DQ;
@@ -11205,7 +11226,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#233#234#241#248#1#230#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTTPD2DQ;
@@ -20578,7 +20599,7 @@
     ops     : 3;
     optypes : (ot_xmmreg_mz,ot_xmmreg,ot_bmem32,ot_none);
     code    : #232#241#249#1#190#61#80;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VFNMSUB231PS;
@@ -21642,7 +21663,14 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#234#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
+  ),
+  (
+    opcode  : A_VCVTPD2UDQ;
+    ops     : 2;
+    optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
+    code    : #232#234#244#248#1#121#72;
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPD2UDQ;
@@ -21663,7 +21691,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#233#234#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPD2UDQ;
@@ -21684,7 +21712,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#234#241#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VCVTPD2UQQ;
@@ -21698,7 +21726,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#234#241#244#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPD2UQQ;
@@ -21712,7 +21740,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#233#234#241#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPD2UQQ;
@@ -21740,7 +21768,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#248#1#123#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VCVTPS2QQ;
@@ -21754,7 +21782,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#244#248#1#123#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPS2QQ;
@@ -21768,7 +21796,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#233#241#248#1#123#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPS2QQ;
@@ -21789,7 +21817,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPS2UDQ;
@@ -21803,7 +21831,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#244#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPS2UDQ;
@@ -21817,7 +21845,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#233#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst16]
   ),
   (
     opcode  : A_VCVTPS2UDQ;
@@ -21845,7 +21873,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VCVTPS2UQQ;
@@ -21859,7 +21887,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#244#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTPS2UQQ;
@@ -21873,7 +21901,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#233#241#248#1#121#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTPS2UQQ;
@@ -21957,7 +21985,14 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#234#248#1#91#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
+  ),
+  (
+    opcode  : A_VCVTQQ2PS;
+    ops     : 2;
+    optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
+    code    : #232#234#244#248#1#91#72;
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTQQ2PS;
@@ -21978,7 +22013,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#233#234#248#1#91#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTQQ2PS;
@@ -22118,7 +22153,14 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#234#248#1#120#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
+  ),
+  (
+    opcode  : A_VCVTTPD2UDQ;
+    ops     : 2;
+    optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
+    code    : #232#234#244#248#1#120#72;
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTTPD2UDQ;
@@ -22139,7 +22181,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #232#233#234#248#1#120#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTTPD2UDQ;
@@ -22216,7 +22258,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VCVTTPS2QQ;
@@ -22230,7 +22272,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#244#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTTPS2QQ;
@@ -22244,7 +22286,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#233#241#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTTPS2QQ;
@@ -22321,7 +22363,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#248#1#120#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VCVTTPS2UQQ;
@@ -22335,7 +22377,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#241#244#248#1#120#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTTPS2UQQ;
@@ -22349,7 +22391,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #232#233#241#248#1#120#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTTPS2UQQ;
@@ -22433,7 +22475,7 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #219#232#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
   ),
   (
     opcode  : A_VCVTUDQ2PD;
@@ -22447,7 +22489,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #219#232#244#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTUDQ2PD;
@@ -22461,7 +22503,7 @@
     ops     : 2;
     optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none);
     code    : #219#232#233#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTUDQ2PD;
@@ -22594,7 +22636,14 @@
     ops     : 2;
     optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #220#232#234#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst2]
+  ),
+  (
+    opcode  : A_VCVTUQQ2PS;
+    ops     : 2;
+    optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none);
+    code    : #220#232#234#244#248#1#122#72;
+    flags   : [if_avx512,if_bcst4]
   ),
   (
     opcode  : A_VCVTUQQ2PS;
@@ -22615,7 +22664,7 @@
     ops     : 2;
     optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none);
     code    : #220#232#233#234#248#1#122#72;
-    flags   : [if_avx512]
+    flags   : [if_avx512,if_bcst8]
   ),
   (
     opcode  : A_VCVTUQQ2PS;