Răsfoiți Sursa

new AVX512 instructions vextracti..,vextractf..

git-svn-id: branches/tg74/avx512@39674 -
tg74 7 ani în urmă
părinte
comite
914e31dbd1

+ 9 - 1
compiler/i386/i386att.inc

@@ -1165,5 +1165,13 @@
 'kxorb',
 'kxord',
 'kxorq',
-'kxorw'
+'kxorw',
+'vextractf32x4',
+'vextractf32x8',
+'vextractf64x2',
+'vextractf64x4',
+'vextracti32x4',
+'vextracti32x8',
+'vextracti64x2',
+'vextracti64x4'
 );

+ 8 - 0
compiler/i386/i386atts.inc

@@ -1165,5 +1165,13 @@ attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
 attsufNONE
 );

+ 9 - 1
compiler/i386/i386int.inc

@@ -1165,5 +1165,13 @@
 'kxorb',
 'kxord',
 'kxorq',
-'kxorw'
+'kxorw',
+'vextractf32x4',
+'vextractf32x8',
+'vextractf64x2',
+'vextractf64x4',
+'vextracti32x4',
+'vextracti32x8',
+'vextracti64x2',
+'vextracti64x4'
 );

+ 1 - 1
compiler/i386/i386nop.inc

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

+ 9 - 1
compiler/i386/i386op.inc

@@ -1165,5 +1165,13 @@ A_KXNORW,
 A_KXORB,
 A_KXORD,
 A_KXORQ,
-A_KXORW
+A_KXORW,
+A_VEXTRACTF32X4,
+A_VEXTRACTF32X8,
+A_VEXTRACTF64X2,
+A_VEXTRACTF64X4,
+A_VEXTRACTI32X4,
+A_VEXTRACTI32X8,
+A_VEXTRACTI64X2,
+A_VEXTRACTI64X4
 );

+ 8 - 0
compiler/i386/i386prop.inc

@@ -1165,5 +1165,13 @@
 (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])
 );

+ 168 - 0
compiler/i386/i386tab.inc

@@ -19382,5 +19382,173 @@
     optypes : (ot_kreg,ot_kreg,ot_kreg,ot_none);
     code    : #242#244#248#1#71#61#80;
     flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF32X4;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#241#244#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF32X4;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF32X4;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#241#244#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF32X4;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF32X8;
+    ops     : 3;
+    optypes : (ot_mem256_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#27#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF32X8;
+    ops     : 3;
+    optypes : (ot_ymmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#27#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF64X2;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#234#241#244#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF64X2;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF64X2;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#234#241#244#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF64X2;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF64X4;
+    ops     : 3;
+    optypes : (ot_mem256_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#27#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF64X4;
+    ops     : 3;
+    optypes : (ot_ymmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#27#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI32X4;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#241#244#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI32X4;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI32X4;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#241#244#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI32X4;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI32X8;
+    ops     : 3;
+    optypes : (ot_mem256_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#59#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI32X8;
+    ops     : 3;
+    optypes : (ot_ymmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#59#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI64X2;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#234#241#244#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI64X2;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI64X2;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#234#241#244#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI64X2;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI64X4;
+    ops     : 3;
+    optypes : (ot_mem256_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#59#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI64X4;
+    ops     : 3;
+    optypes : (ot_ymmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#59#65#22;
+    flags   : [if_avx512]
   )
 );

+ 9 - 1
compiler/i8086/i8086att.inc

@@ -1179,5 +1179,13 @@
 'kxorb',
 'kxord',
 'kxorq',
-'kxorw'
+'kxorw',
+'vextractf32x4',
+'vextractf32x8',
+'vextractf64x2',
+'vextractf64x4',
+'vextracti32x4',
+'vextracti32x8',
+'vextracti64x2',
+'vextracti64x4'
 );

+ 8 - 0
compiler/i8086/i8086atts.inc

@@ -1179,5 +1179,13 @@ attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
 attsufNONE
 );

+ 9 - 1
compiler/i8086/i8086int.inc

@@ -1179,5 +1179,13 @@
 'kxorb',
 'kxord',
 'kxorq',
-'kxorw'
+'kxorw',
+'vextractf32x4',
+'vextractf32x8',
+'vextractf64x2',
+'vextractf64x4',
+'vextracti32x4',
+'vextracti32x8',
+'vextracti64x2',
+'vextracti64x4'
 );

+ 1 - 1
compiler/i8086/i8086nop.inc

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

+ 9 - 1
compiler/i8086/i8086op.inc

@@ -1179,5 +1179,13 @@ A_KXNORW,
 A_KXORB,
 A_KXORD,
 A_KXORQ,
-A_KXORW
+A_KXORW,
+A_VEXTRACTF32X4,
+A_VEXTRACTF32X8,
+A_VEXTRACTF64X2,
+A_VEXTRACTF64X4,
+A_VEXTRACTI32X4,
+A_VEXTRACTI32X8,
+A_VEXTRACTI64X2,
+A_VEXTRACTI64X4
 );

+ 8 - 0
compiler/i8086/i8086prop.inc

@@ -1179,5 +1179,13 @@
 (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])
 );

+ 168 - 0
compiler/i8086/i8086tab.inc

@@ -19606,5 +19606,173 @@
     optypes : (ot_kreg,ot_kreg,ot_kreg,ot_none);
     code    : #242#244#248#1#71#61#80;
     flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF32X4;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#241#244#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF32X4;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF32X4;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#241#244#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF32X4;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF32X8;
+    ops     : 3;
+    optypes : (ot_mem256_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#27#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF32X8;
+    ops     : 3;
+    optypes : (ot_ymmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#27#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF64X2;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#234#241#244#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF64X2;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF64X2;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#234#241#244#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF64X2;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF64X4;
+    ops     : 3;
+    optypes : (ot_mem256_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#27#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF64X4;
+    ops     : 3;
+    optypes : (ot_ymmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#27#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI32X4;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#241#244#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI32X4;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI32X4;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#241#244#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI32X4;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI32X8;
+    ops     : 3;
+    optypes : (ot_mem256_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#59#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI32X8;
+    ops     : 3;
+    optypes : (ot_ymmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#59#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI64X2;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#234#241#244#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI64X2;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI64X2;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#234#241#244#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI64X2;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI64X4;
+    ops     : 3;
+    optypes : (ot_mem256_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#59#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI64X4;
+    ops     : 3;
+    optypes : (ot_ymmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#59#65#22;
+    flags   : [if_avx512]
   )
 );

+ 53 - 0
compiler/x86/x86ins.dat

@@ -6915,4 +6915,57 @@ kreg,kreg,kreg                            \362\363\364\370\1\x47\75\120
 kreg,kreg,kreg                            \362\364\370\1\x47\75\120                 AVX512
 
 
+;*******************************************************************************
+;***********************  AVX 512  *********************************************
+;*******************************************************************************
+
+
+[VEXTRACTF32X4]
+(Ch_All)
+mem128_m,ymmreg,imm8                      \350\361\364\372\1\x19\101\26             AVX512
+mem128_m,zmmreg,imm8                      \350\351\361\372\1\x19\101\26             AVX512
+xmmreg_mz,ymmreg,imm8                     \350\361\364\372\1\x19\101\26             AVX512
+xmmreg_mz,zmmreg,imm8                     \350\351\361\372\1\x19\101\26             AVX512
+
+[VEXTRACTF32X8]
+(Ch_All)
+mem256_m,zmmreg,imm8                      \350\351\361\372\1\x1B\101\26             AVX512
+ymmreg_mz,zmmreg,imm8                     \350\351\361\372\1\x1B\101\26             AVX512
+
+[VEXTRACTF64X2]
+(Ch_All)
+mem128_m,ymmreg,imm8                      \350\352\361\364\372\1\x19\101\26         AVX512
+mem128_m,zmmreg,imm8                      \350\351\352\361\372\1\x19\101\26         AVX512
+xmmreg_mz,ymmreg,imm8                     \350\352\361\364\372\1\x19\101\26         AVX512
+xmmreg_mz,zmmreg,imm8                     \350\351\352\361\372\1\x19\101\26         AVX512
+
+[VEXTRACTF64X4]
+(Ch_All)
+mem256_m,zmmreg,imm8                      \350\351\352\361\372\1\x1B\101\26         AVX512
+ymmreg_mz,zmmreg,imm8                     \350\351\352\361\372\1\x1B\101\26         AVX512
+
+[VEXTRACTI32X4]
+(Ch_All)
+mem128_m,ymmreg,imm8                      \350\361\364\372\1\x39\101\26             AVX512
+mem128_m,zmmreg,imm8                      \350\351\361\372\1\x39\101\26             AVX512
+xmmreg_mz,ymmreg,imm8                     \350\361\364\372\1\x39\101\26             AVX512
+xmmreg_mz,zmmreg,imm8                     \350\351\361\372\1\x39\101\26             AVX512
+
+[VEXTRACTI32X8]
+(Ch_All)
+mem256_m,zmmreg,imm8                      \350\351\361\372\1\x3B\101\26             AVX512
+ymmreg_mz,zmmreg,imm8                     \350\351\361\372\1\x3B\101\26             AVX512
+
+[VEXTRACTI64X2]
+(Ch_All)
+mem128_m,ymmreg,imm8                      \350\352\361\364\372\1\x39\101\26         AVX512
+mem128_m,zmmreg,imm8                      \350\351\352\361\372\1\x39\101\26         AVX512
+xmmreg_mz,ymmreg,imm8                     \350\352\361\364\372\1\x39\101\26         AVX512
+xmmreg_mz,zmmreg,imm8                     \350\351\352\361\372\1\x39\101\26         AVX512
+
+[VEXTRACTI64X4]
+(Ch_All)
+mem256_m,zmmreg,imm8                      \350\351\352\361\372\1\x3B\101\26         AVX512
+ymmreg_mz,zmmreg,imm8                     \350\351\352\361\372\1\x3B\101\26         AVX512
+
 

+ 8 - 0
compiler/x86_64/x8664ats.inc

@@ -1161,5 +1161,13 @@ attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
 attsufNONE
 );

+ 9 - 1
compiler/x86_64/x8664att.inc

@@ -1161,5 +1161,13 @@
 'kxorb',
 'kxord',
 'kxorq',
-'kxorw'
+'kxorw',
+'vextractf32x4',
+'vextractf32x8',
+'vextractf64x2',
+'vextractf64x4',
+'vextracti32x4',
+'vextracti32x8',
+'vextracti64x2',
+'vextracti64x4'
 );

+ 9 - 1
compiler/x86_64/x8664int.inc

@@ -1161,5 +1161,13 @@
 'kxorb',
 'kxord',
 'kxorq',
-'kxorw'
+'kxorw',
+'vextractf32x4',
+'vextractf32x8',
+'vextractf64x2',
+'vextractf64x4',
+'vextracti32x4',
+'vextracti32x8',
+'vextracti64x2',
+'vextracti64x4'
 );

+ 1 - 1
compiler/x86_64/x8664nop.inc

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

+ 9 - 1
compiler/x86_64/x8664op.inc

@@ -1161,5 +1161,13 @@ A_KXNORW,
 A_KXORB,
 A_KXORD,
 A_KXORQ,
-A_KXORW
+A_KXORW,
+A_VEXTRACTF32X4,
+A_VEXTRACTF32X8,
+A_VEXTRACTF64X2,
+A_VEXTRACTF64X4,
+A_VEXTRACTI32X4,
+A_VEXTRACTI32X8,
+A_VEXTRACTI64X2,
+A_VEXTRACTI64X4
 );

+ 8 - 0
compiler/x86_64/x8664pro.inc

@@ -1161,5 +1161,13 @@
 (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])
 );

+ 168 - 0
compiler/x86_64/x8664tab.inc

@@ -19753,5 +19753,173 @@
     optypes : (ot_kreg,ot_kreg,ot_kreg,ot_none);
     code    : #242#244#248#1#71#61#80;
     flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF32X4;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#241#244#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF32X4;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF32X4;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#241#244#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF32X4;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF32X8;
+    ops     : 3;
+    optypes : (ot_mem256_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#27#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF32X8;
+    ops     : 3;
+    optypes : (ot_ymmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#27#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF64X2;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#234#241#244#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF64X2;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF64X2;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#234#241#244#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF64X2;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#25#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF64X4;
+    ops     : 3;
+    optypes : (ot_mem256_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#27#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTF64X4;
+    ops     : 3;
+    optypes : (ot_ymmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#27#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI32X4;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#241#244#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI32X4;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI32X4;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#241#244#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI32X4;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI32X8;
+    ops     : 3;
+    optypes : (ot_mem256_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#59#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI32X8;
+    ops     : 3;
+    optypes : (ot_ymmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#241#250#1#59#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI64X2;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#234#241#244#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI64X2;
+    ops     : 3;
+    optypes : (ot_mem128_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI64X2;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#234#241#244#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI64X2;
+    ops     : 3;
+    optypes : (ot_xmmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#57#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI64X4;
+    ops     : 3;
+    optypes : (ot_mem256_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#59#65#22;
+    flags   : [if_avx512]
+  ),
+  (
+    opcode  : A_VEXTRACTI64X4;
+    ops     : 3;
+    optypes : (ot_ymmreg_mz,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
+    code    : #232#233#234#241#250#1#59#65#22;
+    flags   : [if_avx512]
   )
 );