-- Zusammenführen von r47033 bis r47401 in ».«:

C    compiler/i386/i386nop.inc
U    compiler/i386/i386tab.inc
U    compiler/i386/i386atts.inc
U    compiler/i386/i386att.inc
C    compiler/i8086/i8086nop.inc
U    compiler/i8086/i8086tab.inc
U    compiler/i8086/i8086atts.inc
U    compiler/i8086/i8086att.inc
U    compiler/x86/x86ins.dat
C    compiler/x86/rax86.pas
U    compiler/x86/aasmcpu.pas
U    compiler/x86/cpubase.pas
U    compiler/x86/agx86att.pas
U    compiler/x86/itcpugas.pas
U    compiler/x86/rax86att.pas
C    compiler/x86_64/x8664nop.inc
U    compiler/x86_64/x8664tab.inc
U    compiler/x86_64/x8664ats.inc
U    compiler/x86_64/x8664att.inc
U    compiler/utils/mkx86ins.pp
U    tests/utils/avx/asmtestgenerator.pas
U    tests/utils/avx/avxopcodes.pas
-- Aufzeichnung der Informationen für Zusammenführung von r47033 bis r47401 in ».«:
 U   .
Konfliktübersicht:
  Textkonflikte: 4
Konfliktübersicht:
  Textkonflikte: 4

git-svn-id: trunk@47402 -
This commit is contained in:
florian 2020-11-12 20:31:29 +00:00
commit fc960879de
22 changed files with 1226 additions and 526 deletions

View File

@ -1201,7 +1201,7 @@
'vcompresspd',
'vcompressps',
'vcvtpd2qq',
'vcvtpd2udq',
' vcvtpd2udq',
'vcvtpd2uqq',
'vcvtps2qq',
'vcvtps2udq',

View File

@ -781,8 +781,8 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufMM,
attsufMM,
attsufMMX,
attsufMMX,
attsufNONE,
attsufNONE,
attsufNONE,
@ -793,7 +793,7 @@ attsufINT,
attsufINT,
attsufNONE,
attsufNONE,
attsufMM,
attsufMMX,
attsufNONE,
attsufNONE,
attsufNONE,
@ -1201,6 +1201,29 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufMMX,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufMMX,
attsufNONE,
attsufNONE,
attsufNONE,
attsufMMX,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufMMX,
attsufINT,
attsufINT,
attsufNONE,
attsufNONE,
attsufNONE,
@ -1218,31 +1241,8 @@ 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,
attsufINT,
attsufINT,
attsufNONE,
attsufNONE,
attsufNONE,

View File

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

View File

@ -10433,7 +10433,7 @@
(
opcode : A_VCVTDQ2PD;
ops : 2;
optypes : (ot_zmmreg_mz,ot_ymmreg_er,ot_none,ot_none);
optypes : (ot_zmmreg_mz,ot_ymmreg,ot_none,ot_none);
code : #219#232#233#248#1#230#72;
flags : [if_avx512]
),
@ -10493,6 +10493,13 @@
code : #232#233#248#1#91#72;
flags : [if_avx512]
),
(
opcode : A_VCVTPD2DQ;
ops : 2;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits256,ot_none,ot_none);
code : #220#232#234#242#244#248#1#230#72;
flags : [if_avx,if_sandybridge,if_tfv]
),
(
opcode : A_VCVTPD2DQ;
ops : 2;
@ -10503,9 +10510,9 @@
(
opcode : A_VCVTPD2DQ;
ops : 2;
optypes : (ot_xmmreg_mz,ot_ymmrm,ot_none,ot_none);
optypes : (ot_xmmreg_mz,ot_ymmreg,ot_none,ot_none);
code : #220#232#234#242#244#248#1#230#72;
flags : [if_avx,if_sandybridge,if_tfv]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VCVTPD2DQ;
@ -10832,7 +10839,7 @@
(
opcode : A_VCVTSI2SD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg_er,ot_reg32,ot_none);
optypes : (ot_xmmreg,ot_xmmreg,ot_reg32,ot_none);
code : #220#232#242#248#1#42#61#80;
flags : [if_avx,if_sandybridge,if_sd]
),
@ -10846,7 +10853,7 @@
(
opcode : A_VCVTSI2SS;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg_er,ot_reg32,ot_none);
optypes : (ot_xmmreg,ot_xmmreg,ot_reg32,ot_none);
code : #219#232#242#248#1#42#61#80;
flags : [if_avx,if_sandybridge,if_sd]
),
@ -11232,7 +11239,7 @@
opcode : A_VEXTRACTPS;
ops : 3;
optypes : (ot_reg64,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#250#1#23#65#22;
code : #232#241#242#250#1#23#65#22;
flags : [if_avx512]
),
(
@ -15039,9 +15046,16 @@
(
opcode : A_VPSLLD;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#248#1#114#60#142#22;
flags : [if_avx,if_sandybridge,if_tfv]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPSLLD;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#241#248#1#114#60#142#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSLLD;
@ -15060,9 +15074,16 @@
(
opcode : A_VPSLLD;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#244#248#1#114#60#142#22;
flags : [if_avx2,if_tfv]
flags : [if_avx2]
),
(
opcode : A_VPSLLD;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#248#1#114#60#142#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSLLD;
@ -15151,10 +15172,17 @@
(
opcode : A_VPSLLQ;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#242#248#1#115#60#142#22;
flags : [if_avx,if_sandybridge,if_tfv]
),
(
opcode : A_VPSLLQ;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#248#1#115#60#142#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSLLQ;
ops : 3;
@ -15172,9 +15200,16 @@
(
opcode : A_VPSLLQ;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#242#244#248#1#115#60#142#22;
flags : [if_avx2,if_tfv]
flags : [if_avx2]
),
(
opcode : A_VPSLLQ;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#244#248#1#115#60#142#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSLLQ;
@ -15214,9 +15249,16 @@
(
opcode : A_VPSLLW;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#248#1#113#60#142#22;
flags : [if_avx,if_sandybridge,if_tfvm]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPSLLW;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#241#248#1#113#60#142#22;
flags : [if_avx512,if_tfvm]
),
(
opcode : A_VPSLLW;
@ -15228,9 +15270,16 @@
(
opcode : A_VPSLLW;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#244#248#1#113#60#142#22;
flags : [if_avx2,if_tfvm]
flags : [if_avx2]
),
(
opcode : A_VPSLLW;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#248#1#113#60#142#22;
flags : [if_avx512,if_tfvm]
),
(
opcode : A_VPSLLW;
@ -15249,9 +15298,16 @@
(
opcode : A_VPSRAD;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#248#1#114#60#140#22;
flags : [if_avx,if_sandybridge,if_tfv]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPSRAD;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#241#248#1#114#60#140#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSRAD;
@ -15270,9 +15326,16 @@
(
opcode : A_VPSRAD;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#244#248#1#114#60#140#22;
flags : [if_avx2,if_tfv]
flags : [if_avx2]
),
(
opcode : A_VPSRAD;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#248#1#114#60#140#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSRAD;
@ -15312,9 +15375,16 @@
(
opcode : A_VPSRAW;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#248#1#113#60#140#22;
flags : [if_avx,if_sandybridge,if_tfvm]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPSRAW;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#241#248#1#113#60#140#22;
flags : [if_avx512,if_tfvm]
),
(
opcode : A_VPSRAW;
@ -15326,9 +15396,16 @@
(
opcode : A_VPSRAW;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#244#248#1#113#60#140#22;
flags : [if_avx2,if_tfvm]
flags : [if_avx2]
),
(
opcode : A_VPSRAW;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#248#1#113#60#140#22;
flags : [if_avx512,if_tfvm]
),
(
opcode : A_VPSRAW;
@ -15354,9 +15431,16 @@
(
opcode : A_VPSRLD;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#248#1#114#60#138#22;
flags : [if_avx,if_sandybridge,if_tfv]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPSRLD;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#241#248#1#114#60#138#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSRLD;
@ -15382,10 +15466,17 @@
(
opcode : A_VPSRLD;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#244#248#1#114#60#138#22;
flags : [if_avx2,if_tfv]
),
(
opcode : A_VPSRLD;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#248#1#114#60#138#22;
flags : [if_avx2,if_tfv]
),
(
opcode : A_VPSRLD;
ops : 3;
@ -15459,9 +15550,16 @@
(
opcode : A_VPSRLQ;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#242#248#1#115#60#138#22;
flags : [if_avx,if_sandybridge,if_tfv]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPSRLQ;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#248#1#115#60#138#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSRLQ;
@ -15473,9 +15571,16 @@
(
opcode : A_VPSRLQ;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#242#244#248#1#115#60#138#22;
flags : [if_avx2,if_tfv]
flags : [if_avx2]
),
(
opcode : A_VPSRLQ;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#244#248#1#115#60#138#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSRLQ;
@ -15515,9 +15620,16 @@
(
opcode : A_VPSRLW;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#248#1#113#60#138#22;
flags : [if_avx,if_sandybridge,if_tfvm]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPSRLW;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#241#248#1#113#60#138#22;
flags : [if_avx512,if_tfvm]
),
(
opcode : A_VPSRLW;
@ -15529,9 +15641,16 @@
(
opcode : A_VPSRLW;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#244#248#1#113#60#138#22;
flags : [if_avx2,if_tfvm]
flags : [if_avx2]
),
(
opcode : A_VPSRLW;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#248#1#113#60#138#22;
flags : [if_avx512,if_tfvm]
),
(
opcode : A_VPSRLW;
@ -19758,7 +19877,7 @@
opcode : A_VFNMADD231SD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
code : #223#241#242#243#249#1#189#61#80;
code : #223#232#234#241#242#243#249#1#189#61#80;
flags : [if_fma,if_t1s]
),
(
@ -22053,7 +22172,7 @@
(
opcode : A_VCVTUDQ2PD;
ops : 2;
optypes : (ot_zmmreg_mz,ot_ymmreg_er,ot_none,ot_none);
optypes : (ot_zmmreg_mz,ot_ymmreg,ot_none,ot_none);
code : #219#232#233#248#1#122#72;
flags : [if_avx512]
),
@ -22221,10 +22340,17 @@
(
opcode : A_VCVTUSI2SD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg_er,ot_rm_gpr or ot_bits64,ot_none);
optypes : (ot_xmmreg,ot_xmmreg_er,ot_memory or ot_bits64,ot_none);
code : #220#232#234#248#1#123#61#80;
flags : [if_avx512,if_t1s]
),
(
opcode : A_VCVTUSI2SD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg_er,ot_reg64,ot_none);
code : #220#232#234#248#1#123#61#80;
flags : [if_avx512]
),
(
opcode : A_VCVTUSI2SD;
ops : 3;
@ -22687,6 +22813,20 @@
code : #232#241#250#1#85#61#80#23;
flags : [if_avx512]
),
(
opcode : A_VFPCLASSPD;
ops : 3;
optypes : (ot_kreg_m,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#244#250#1#102#72#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VFPCLASSPD;
ops : 3;
optypes : (ot_kreg_m,ot_memory or ot_bits512,ot_immediate or ot_bits8,ot_none);
code : #232#233#234#241#250#1#102#72#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VFPCLASSPD;
ops : 3;
@ -22704,9 +22844,9 @@
(
opcode : A_VFPCLASSPD;
ops : 3;
optypes : (ot_kreg_m,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_kreg_m,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#244#250#1#102#72#22;
flags : [if_avx512,if_tfv]
flags : [if_avx512]
),
(
opcode : A_VFPCLASSPD;
@ -22718,9 +22858,9 @@
(
opcode : A_VFPCLASSPD;
ops : 3;
optypes : (ot_kreg_m,ot_zmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_kreg_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#233#234#241#250#1#102#72#22;
flags : [if_avx512,if_tfv]
flags : [if_avx512]
),
(
opcode : A_VFPCLASSPD;
@ -22729,6 +22869,20 @@
code : #232#233#234#241#250#1#102#72#22;
flags : [if_avx512,if_bcst8,if_tfv]
),
(
opcode : A_VFPCLASSPS;
ops : 3;
optypes : (ot_kreg_m,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#250#1#102#72#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VFPCLASSPS;
ops : 3;
optypes : (ot_kreg_m,ot_memory or ot_bits512,ot_immediate or ot_bits8,ot_none);
code : #232#233#241#250#1#102#72#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VFPCLASSPS;
ops : 3;
@ -22746,9 +22900,9 @@
(
opcode : A_VFPCLASSPS;
ops : 3;
optypes : (ot_kreg_m,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_kreg_m,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#250#1#102#72#22;
flags : [if_avx512,if_tfv]
flags : [if_avx512]
),
(
opcode : A_VFPCLASSPS;
@ -22760,9 +22914,9 @@
(
opcode : A_VFPCLASSPS;
ops : 3;
optypes : (ot_kreg_m,ot_zmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_kreg_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#233#241#250#1#102#72#22;
flags : [if_avx512,if_tfv]
flags : [if_avx512]
),
(
opcode : A_VFPCLASSPS;
@ -28194,21 +28348,21 @@
ops : 2;
optypes : (ot_mem128_m,ot_xmmreg,ot_none,ot_none);
code : #232#241#249#1#99#65;
flags : [if_avx512,if_t1s]
flags : [if_avx512,if_t1s8]
),
(
opcode : A_VPCOMPRESSB;
ops : 2;
optypes : (ot_mem256_m,ot_ymmreg,ot_none,ot_none);
code : #232#241#244#249#1#99#65;
flags : [if_avx512,if_t1s]
flags : [if_avx512,if_t1s8]
),
(
opcode : A_VPCOMPRESSB;
ops : 2;
optypes : (ot_mem512_m,ot_zmmreg,ot_none,ot_none);
code : #232#233#241#249#1#99#65;
flags : [if_avx512,if_t1s]
flags : [if_avx512,if_t1s8]
),
(
opcode : A_VPCOMPRESSB;
@ -28236,21 +28390,21 @@
ops : 2;
optypes : (ot_mem128_m,ot_xmmreg,ot_none,ot_none);
code : #232#234#241#249#1#99#65;
flags : [if_avx512,if_t1s]
flags : [if_avx512,if_t1s16]
),
(
opcode : A_VPCOMPRESSW;
ops : 2;
optypes : (ot_mem256_m,ot_ymmreg,ot_none,ot_none);
code : #232#234#241#244#249#1#99#65;
flags : [if_avx512,if_t1s]
flags : [if_avx512,if_t1s16]
),
(
opcode : A_VPCOMPRESSW;
ops : 2;
optypes : (ot_mem512_m,ot_zmmreg,ot_none,ot_none);
code : #232#233#234#241#249#1#99#65;
flags : [if_avx512,if_t1s]
flags : [if_avx512,if_t1s16]
),
(
opcode : A_VPCOMPRESSW;
@ -28444,85 +28598,85 @@
(
opcode : A_VPEXPANDB;
ops : 2;
optypes : (ot_mem128_m,ot_xmmreg,ot_none,ot_none);
code : #232#241#249#1#98#65;
flags : [if_avx512,if_t1s]
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_none,ot_none);
code : #232#241#249#1#98#72;
flags : [if_avx512,if_t1s8]
),
(
opcode : A_VPEXPANDB;
ops : 2;
optypes : (ot_mem256_m,ot_ymmreg,ot_none,ot_none);
code : #232#241#244#249#1#98#65;
flags : [if_avx512,if_t1s]
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_none,ot_none);
code : #232#241#244#249#1#98#72;
flags : [if_avx512,if_t1s8]
),
(
opcode : A_VPEXPANDB;
ops : 2;
optypes : (ot_mem512_m,ot_zmmreg,ot_none,ot_none);
code : #232#233#241#249#1#98#65;
flags : [if_avx512,if_t1s]
optypes : (ot_zmmreg_mz,ot_memory or ot_bits512,ot_none,ot_none);
code : #232#233#241#249#1#98#72;
flags : [if_avx512,if_t1s8]
),
(
opcode : A_VPEXPANDB;
ops : 2;
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_none,ot_none);
code : #232#241#249#1#98#65;
code : #232#241#249#1#98#72;
flags : [if_avx512]
),
(
opcode : A_VPEXPANDB;
ops : 2;
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_none,ot_none);
code : #232#241#244#249#1#98#65;
code : #232#241#244#249#1#98#72;
flags : [if_avx512]
),
(
opcode : A_VPEXPANDB;
ops : 2;
optypes : (ot_zmmreg_mz,ot_zmmreg,ot_none,ot_none);
code : #232#233#241#249#1#98#65;
code : #232#233#241#249#1#98#72;
flags : [if_avx512]
),
(
opcode : A_VPEXPANDW;
ops : 2;
optypes : (ot_mem128_m,ot_xmmreg,ot_none,ot_none);
code : #232#234#241#249#1#98#65;
flags : [if_avx512,if_t1s]
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_none,ot_none);
code : #232#234#241#249#1#98#72;
flags : [if_avx512,if_t1s16]
),
(
opcode : A_VPEXPANDW;
ops : 2;
optypes : (ot_mem256_m,ot_ymmreg,ot_none,ot_none);
code : #232#234#241#244#249#1#98#65;
flags : [if_avx512,if_t1s]
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_none,ot_none);
code : #232#234#241#244#249#1#98#72;
flags : [if_avx512,if_t1s16]
),
(
opcode : A_VPEXPANDW;
ops : 2;
optypes : (ot_mem512_m,ot_zmmreg,ot_none,ot_none);
code : #232#233#234#241#249#1#98#65;
flags : [if_avx512,if_t1s]
optypes : (ot_zmmreg_mz,ot_memory or ot_bits512,ot_none,ot_none);
code : #232#233#234#241#249#1#98#72;
flags : [if_avx512,if_t1s16]
),
(
opcode : A_VPEXPANDW;
ops : 2;
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_none,ot_none);
code : #232#234#241#249#1#98#65;
code : #232#234#241#249#1#98#72;
flags : [if_avx512]
),
(
opcode : A_VPEXPANDW;
ops : 2;
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_none,ot_none);
code : #232#234#241#244#249#1#98#65;
code : #232#234#241#244#249#1#98#72;
flags : [if_avx512]
),
(
opcode : A_VPEXPANDW;
ops : 2;
optypes : (ot_zmmreg_mz,ot_zmmreg,ot_none,ot_none);
code : #232#233#234#241#249#1#98#65;
code : #232#233#234#241#249#1#98#72;
flags : [if_avx512]
),
(

View File

@ -1215,7 +1215,7 @@
'vcompresspd',
'vcompressps',
'vcvtpd2qq',
'vcvtpd2udq',
' vcvtpd2udq',
'vcvtpd2uqq',
'vcvtps2qq',
'vcvtps2udq',

View File

@ -781,8 +781,8 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufMM,
attsufMM,
attsufMMX,
attsufMMX,
attsufNONE,
attsufNONE,
attsufNONE,
@ -793,7 +793,7 @@ attsufINT,
attsufINT,
attsufNONE,
attsufNONE,
attsufMM,
attsufMMX,
attsufNONE,
attsufNONE,
attsufNONE,
@ -1215,6 +1215,29 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufMMX,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufMMX,
attsufNONE,
attsufNONE,
attsufNONE,
attsufMMX,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufMMX,
attsufINT,
attsufINT,
attsufNONE,
attsufNONE,
attsufNONE,
@ -1232,31 +1255,8 @@ 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,
attsufINT,
attsufINT,
attsufNONE,
attsufNONE,
attsufNONE,

View File

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

View File

@ -10461,7 +10461,7 @@
(
opcode : A_VCVTDQ2PD;
ops : 2;
optypes : (ot_zmmreg_mz,ot_ymmreg_er,ot_none,ot_none);
optypes : (ot_zmmreg_mz,ot_ymmreg,ot_none,ot_none);
code : #219#232#233#248#1#230#72;
flags : [if_avx512]
),
@ -10521,6 +10521,13 @@
code : #232#233#248#1#91#72;
flags : [if_avx512]
),
(
opcode : A_VCVTPD2DQ;
ops : 2;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits256,ot_none,ot_none);
code : #220#232#234#242#244#248#1#230#72;
flags : [if_avx,if_sandybridge,if_tfv]
),
(
opcode : A_VCVTPD2DQ;
ops : 2;
@ -10531,9 +10538,9 @@
(
opcode : A_VCVTPD2DQ;
ops : 2;
optypes : (ot_xmmreg_mz,ot_ymmrm,ot_none,ot_none);
optypes : (ot_xmmreg_mz,ot_ymmreg,ot_none,ot_none);
code : #220#232#234#242#244#248#1#230#72;
flags : [if_avx,if_sandybridge,if_tfv]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VCVTPD2DQ;
@ -10860,7 +10867,7 @@
(
opcode : A_VCVTSI2SD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg_er,ot_reg32,ot_none);
optypes : (ot_xmmreg,ot_xmmreg,ot_reg32,ot_none);
code : #220#232#242#248#1#42#61#80;
flags : [if_avx,if_sandybridge,if_sd]
),
@ -10874,7 +10881,7 @@
(
opcode : A_VCVTSI2SS;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg_er,ot_reg32,ot_none);
optypes : (ot_xmmreg,ot_xmmreg,ot_reg32,ot_none);
code : #219#232#242#248#1#42#61#80;
flags : [if_avx,if_sandybridge,if_sd]
),
@ -11260,7 +11267,7 @@
opcode : A_VEXTRACTPS;
ops : 3;
optypes : (ot_reg64,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#250#1#23#65#22;
code : #232#241#242#250#1#23#65#22;
flags : [if_avx512]
),
(
@ -15067,9 +15074,16 @@
(
opcode : A_VPSLLD;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#248#1#114#60#142#22;
flags : [if_avx,if_sandybridge,if_tfv]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPSLLD;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#241#248#1#114#60#142#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSLLD;
@ -15088,9 +15102,16 @@
(
opcode : A_VPSLLD;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#244#248#1#114#60#142#22;
flags : [if_avx2,if_tfv]
flags : [if_avx2]
),
(
opcode : A_VPSLLD;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#248#1#114#60#142#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSLLD;
@ -15179,10 +15200,17 @@
(
opcode : A_VPSLLQ;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#242#248#1#115#60#142#22;
flags : [if_avx,if_sandybridge,if_tfv]
),
(
opcode : A_VPSLLQ;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#248#1#115#60#142#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSLLQ;
ops : 3;
@ -15200,9 +15228,16 @@
(
opcode : A_VPSLLQ;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#242#244#248#1#115#60#142#22;
flags : [if_avx2,if_tfv]
flags : [if_avx2]
),
(
opcode : A_VPSLLQ;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#244#248#1#115#60#142#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSLLQ;
@ -15242,9 +15277,16 @@
(
opcode : A_VPSLLW;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#248#1#113#60#142#22;
flags : [if_avx,if_sandybridge,if_tfvm]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPSLLW;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#241#248#1#113#60#142#22;
flags : [if_avx512,if_tfvm]
),
(
opcode : A_VPSLLW;
@ -15256,9 +15298,16 @@
(
opcode : A_VPSLLW;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#244#248#1#113#60#142#22;
flags : [if_avx2,if_tfvm]
flags : [if_avx2]
),
(
opcode : A_VPSLLW;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#248#1#113#60#142#22;
flags : [if_avx512,if_tfvm]
),
(
opcode : A_VPSLLW;
@ -15277,9 +15326,16 @@
(
opcode : A_VPSRAD;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#248#1#114#60#140#22;
flags : [if_avx,if_sandybridge,if_tfv]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPSRAD;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#241#248#1#114#60#140#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSRAD;
@ -15298,9 +15354,16 @@
(
opcode : A_VPSRAD;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#244#248#1#114#60#140#22;
flags : [if_avx2,if_tfv]
flags : [if_avx2]
),
(
opcode : A_VPSRAD;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#248#1#114#60#140#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSRAD;
@ -15340,9 +15403,16 @@
(
opcode : A_VPSRAW;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#248#1#113#60#140#22;
flags : [if_avx,if_sandybridge,if_tfvm]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPSRAW;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#241#248#1#113#60#140#22;
flags : [if_avx512,if_tfvm]
),
(
opcode : A_VPSRAW;
@ -15354,9 +15424,16 @@
(
opcode : A_VPSRAW;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#244#248#1#113#60#140#22;
flags : [if_avx2,if_tfvm]
flags : [if_avx2]
),
(
opcode : A_VPSRAW;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#248#1#113#60#140#22;
flags : [if_avx512,if_tfvm]
),
(
opcode : A_VPSRAW;
@ -15382,9 +15459,16 @@
(
opcode : A_VPSRLD;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#248#1#114#60#138#22;
flags : [if_avx,if_sandybridge,if_tfv]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPSRLD;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#241#248#1#114#60#138#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSRLD;
@ -15410,10 +15494,17 @@
(
opcode : A_VPSRLD;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#244#248#1#114#60#138#22;
flags : [if_avx2,if_tfv]
),
(
opcode : A_VPSRLD;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#248#1#114#60#138#22;
flags : [if_avx2,if_tfv]
),
(
opcode : A_VPSRLD;
ops : 3;
@ -15487,9 +15578,16 @@
(
opcode : A_VPSRLQ;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#242#248#1#115#60#138#22;
flags : [if_avx,if_sandybridge,if_tfv]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPSRLQ;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#248#1#115#60#138#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSRLQ;
@ -15501,9 +15599,16 @@
(
opcode : A_VPSRLQ;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#242#244#248#1#115#60#138#22;
flags : [if_avx2,if_tfv]
flags : [if_avx2]
),
(
opcode : A_VPSRLQ;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#244#248#1#115#60#138#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSRLQ;
@ -15543,9 +15648,16 @@
(
opcode : A_VPSRLW;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#248#1#113#60#138#22;
flags : [if_avx,if_sandybridge,if_tfvm]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPSRLW;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#241#248#1#113#60#138#22;
flags : [if_avx512,if_tfvm]
),
(
opcode : A_VPSRLW;
@ -15557,9 +15669,16 @@
(
opcode : A_VPSRLW;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#244#248#1#113#60#138#22;
flags : [if_avx2,if_tfvm]
flags : [if_avx2]
),
(
opcode : A_VPSRLW;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#248#1#113#60#138#22;
flags : [if_avx512,if_tfvm]
),
(
opcode : A_VPSRLW;
@ -19982,7 +20101,7 @@
opcode : A_VFNMADD231SD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
code : #223#241#242#243#249#1#189#61#80;
code : #223#232#234#241#242#243#249#1#189#61#80;
flags : [if_fma,if_t1s]
),
(
@ -22277,7 +22396,7 @@
(
opcode : A_VCVTUDQ2PD;
ops : 2;
optypes : (ot_zmmreg_mz,ot_ymmreg_er,ot_none,ot_none);
optypes : (ot_zmmreg_mz,ot_ymmreg,ot_none,ot_none);
code : #219#232#233#248#1#122#72;
flags : [if_avx512]
),
@ -22445,10 +22564,17 @@
(
opcode : A_VCVTUSI2SD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg_er,ot_rm_gpr or ot_bits64,ot_none);
optypes : (ot_xmmreg,ot_xmmreg_er,ot_memory or ot_bits64,ot_none);
code : #220#232#234#248#1#123#61#80;
flags : [if_avx512,if_t1s]
),
(
opcode : A_VCVTUSI2SD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg_er,ot_reg64,ot_none);
code : #220#232#234#248#1#123#61#80;
flags : [if_avx512]
),
(
opcode : A_VCVTUSI2SD;
ops : 3;
@ -22911,6 +23037,20 @@
code : #232#241#250#1#85#61#80#23;
flags : [if_avx512]
),
(
opcode : A_VFPCLASSPD;
ops : 3;
optypes : (ot_kreg_m,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#244#250#1#102#72#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VFPCLASSPD;
ops : 3;
optypes : (ot_kreg_m,ot_memory or ot_bits512,ot_immediate or ot_bits8,ot_none);
code : #232#233#234#241#250#1#102#72#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VFPCLASSPD;
ops : 3;
@ -22928,9 +23068,9 @@
(
opcode : A_VFPCLASSPD;
ops : 3;
optypes : (ot_kreg_m,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_kreg_m,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#244#250#1#102#72#22;
flags : [if_avx512,if_tfv]
flags : [if_avx512]
),
(
opcode : A_VFPCLASSPD;
@ -22942,9 +23082,9 @@
(
opcode : A_VFPCLASSPD;
ops : 3;
optypes : (ot_kreg_m,ot_zmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_kreg_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#233#234#241#250#1#102#72#22;
flags : [if_avx512,if_tfv]
flags : [if_avx512]
),
(
opcode : A_VFPCLASSPD;
@ -22953,6 +23093,20 @@
code : #232#233#234#241#250#1#102#72#22;
flags : [if_avx512,if_bcst8,if_tfv]
),
(
opcode : A_VFPCLASSPS;
ops : 3;
optypes : (ot_kreg_m,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#250#1#102#72#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VFPCLASSPS;
ops : 3;
optypes : (ot_kreg_m,ot_memory or ot_bits512,ot_immediate or ot_bits8,ot_none);
code : #232#233#241#250#1#102#72#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VFPCLASSPS;
ops : 3;
@ -22970,9 +23124,9 @@
(
opcode : A_VFPCLASSPS;
ops : 3;
optypes : (ot_kreg_m,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_kreg_m,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#250#1#102#72#22;
flags : [if_avx512,if_tfv]
flags : [if_avx512]
),
(
opcode : A_VFPCLASSPS;
@ -22984,9 +23138,9 @@
(
opcode : A_VFPCLASSPS;
ops : 3;
optypes : (ot_kreg_m,ot_zmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_kreg_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#233#241#250#1#102#72#22;
flags : [if_avx512,if_tfv]
flags : [if_avx512]
),
(
opcode : A_VFPCLASSPS;
@ -28418,21 +28572,21 @@
ops : 2;
optypes : (ot_mem128_m,ot_xmmreg,ot_none,ot_none);
code : #232#241#249#1#99#65;
flags : [if_avx512,if_t1s]
flags : [if_avx512,if_t1s8]
),
(
opcode : A_VPCOMPRESSB;
ops : 2;
optypes : (ot_mem256_m,ot_ymmreg,ot_none,ot_none);
code : #232#241#244#249#1#99#65;
flags : [if_avx512,if_t1s]
flags : [if_avx512,if_t1s8]
),
(
opcode : A_VPCOMPRESSB;
ops : 2;
optypes : (ot_mem512_m,ot_zmmreg,ot_none,ot_none);
code : #232#233#241#249#1#99#65;
flags : [if_avx512,if_t1s]
flags : [if_avx512,if_t1s8]
),
(
opcode : A_VPCOMPRESSB;
@ -28460,21 +28614,21 @@
ops : 2;
optypes : (ot_mem128_m,ot_xmmreg,ot_none,ot_none);
code : #232#234#241#249#1#99#65;
flags : [if_avx512,if_t1s]
flags : [if_avx512,if_t1s16]
),
(
opcode : A_VPCOMPRESSW;
ops : 2;
optypes : (ot_mem256_m,ot_ymmreg,ot_none,ot_none);
code : #232#234#241#244#249#1#99#65;
flags : [if_avx512,if_t1s]
flags : [if_avx512,if_t1s16]
),
(
opcode : A_VPCOMPRESSW;
ops : 2;
optypes : (ot_mem512_m,ot_zmmreg,ot_none,ot_none);
code : #232#233#234#241#249#1#99#65;
flags : [if_avx512,if_t1s]
flags : [if_avx512,if_t1s16]
),
(
opcode : A_VPCOMPRESSW;
@ -28668,85 +28822,85 @@
(
opcode : A_VPEXPANDB;
ops : 2;
optypes : (ot_mem128_m,ot_xmmreg,ot_none,ot_none);
code : #232#241#249#1#98#65;
flags : [if_avx512,if_t1s]
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_none,ot_none);
code : #232#241#249#1#98#72;
flags : [if_avx512,if_t1s8]
),
(
opcode : A_VPEXPANDB;
ops : 2;
optypes : (ot_mem256_m,ot_ymmreg,ot_none,ot_none);
code : #232#241#244#249#1#98#65;
flags : [if_avx512,if_t1s]
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_none,ot_none);
code : #232#241#244#249#1#98#72;
flags : [if_avx512,if_t1s8]
),
(
opcode : A_VPEXPANDB;
ops : 2;
optypes : (ot_mem512_m,ot_zmmreg,ot_none,ot_none);
code : #232#233#241#249#1#98#65;
flags : [if_avx512,if_t1s]
optypes : (ot_zmmreg_mz,ot_memory or ot_bits512,ot_none,ot_none);
code : #232#233#241#249#1#98#72;
flags : [if_avx512,if_t1s8]
),
(
opcode : A_VPEXPANDB;
ops : 2;
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_none,ot_none);
code : #232#241#249#1#98#65;
code : #232#241#249#1#98#72;
flags : [if_avx512]
),
(
opcode : A_VPEXPANDB;
ops : 2;
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_none,ot_none);
code : #232#241#244#249#1#98#65;
code : #232#241#244#249#1#98#72;
flags : [if_avx512]
),
(
opcode : A_VPEXPANDB;
ops : 2;
optypes : (ot_zmmreg_mz,ot_zmmreg,ot_none,ot_none);
code : #232#233#241#249#1#98#65;
code : #232#233#241#249#1#98#72;
flags : [if_avx512]
),
(
opcode : A_VPEXPANDW;
ops : 2;
optypes : (ot_mem128_m,ot_xmmreg,ot_none,ot_none);
code : #232#234#241#249#1#98#65;
flags : [if_avx512,if_t1s]
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_none,ot_none);
code : #232#234#241#249#1#98#72;
flags : [if_avx512,if_t1s16]
),
(
opcode : A_VPEXPANDW;
ops : 2;
optypes : (ot_mem256_m,ot_ymmreg,ot_none,ot_none);
code : #232#234#241#244#249#1#98#65;
flags : [if_avx512,if_t1s]
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_none,ot_none);
code : #232#234#241#244#249#1#98#72;
flags : [if_avx512,if_t1s16]
),
(
opcode : A_VPEXPANDW;
ops : 2;
optypes : (ot_mem512_m,ot_zmmreg,ot_none,ot_none);
code : #232#233#234#241#249#1#98#65;
flags : [if_avx512,if_t1s]
optypes : (ot_zmmreg_mz,ot_memory or ot_bits512,ot_none,ot_none);
code : #232#233#234#241#249#1#98#72;
flags : [if_avx512,if_t1s16]
),
(
opcode : A_VPEXPANDW;
ops : 2;
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_none,ot_none);
code : #232#234#241#249#1#98#65;
code : #232#234#241#249#1#98#72;
flags : [if_avx512]
),
(
opcode : A_VPEXPANDW;
ops : 2;
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_none,ot_none);
code : #232#234#241#244#249#1#98#65;
code : #232#234#241#244#249#1#98#72;
flags : [if_avx512]
),
(
opcode : A_VPEXPANDW;
ops : 2;
optypes : (ot_zmmreg_mz,ot_zmmreg,ot_none,ot_none);
code : #232#233#234#241#249#1#98#65;
code : #232#233#234#241#249#1#98#72;
flags : [if_avx512]
),
(

View File

@ -320,6 +320,11 @@ begin
dec(attopcode[0]);
attsuffix:='attsufMM';
end;
'N' :
begin
dec(attopcode[0]);
attsuffix:='attsufMMX';
end;
'X' :
begin
dec(attopcode[0]);

View File

@ -505,6 +505,8 @@ interface
IF_T4, { disp8 - tuple - 4 }
IF_T8, { disp8 - tuple - 8 }
IF_T1S, { disp8 - tuple - 1 scalar }
IF_T1S8, { disp8 - tuple - 1 scalar byte }
IF_T1S16, { disp8 - tuple - 1 scalar word }
IF_T1F32,
IF_T1F64,
IF_TMDDUP,
@ -2128,6 +2130,8 @@ implementation
else tuplesize := 4;
end;
end
else if IF_T1S8 in aInsEntry^.Flags then tuplesize := 1
else if IF_T1S16 in aInsEntry^.Flags then tuplesize := 2
else if IF_T1F32 in aInsEntry^.Flags then tuplesize := 4
else if IF_T1F64 in aInsEntry^.Flags then tuplesize := 8
else if IF_T2 in aInsEntry^.Flags then
@ -2183,12 +2187,15 @@ implementation
begin
if aInput.typ = top_ref then
begin
if (aInput.ref^.offset <> 0) and
((aInput.ref^.offset mod tuplesize) = 0) and
(abs(aInput.ref^.offset) div tuplesize <= 127) then
begin
aInput.ref^.offset := aInput.ref^.offset div tuplesize;
EVEXTupleState := etsIsTuple;
if aInput.ref^.base <> NR_NO then
begin
if (aInput.ref^.offset <> 0) and
((aInput.ref^.offset mod tuplesize) = 0) and
(abs(aInput.ref^.offset) div tuplesize <= 127) then
begin
aInput.ref^.offset := aInput.ref^.offset div tuplesize;
EVEXTupleState := etsIsTuple;
end;
end;
end;
end;

View File

@ -395,6 +395,8 @@ interface
(getregtype(taicpu(hp).oper[0]^.reg)=R_FPUREGISTER)
) then
begin
if (gas_needsuffix[op]<>AttSufMMX) or
(taicpu(hp).opsize in [S_XMM,S_YMM]) then
owner.writer.AsmWrite(gas_opsize2str[taicpu(hp).opsize]);
end;

View File

@ -509,7 +509,7 @@ implementation
end;
R_ADDRESSREGISTER:
case reg of
NR_K0..NR_K7: reg_cgsize:=OS_64;
NR_K0..NR_K7: reg_cgsize:=OS_NO;
else internalerror(2003031801);
end;
else

View File

@ -29,7 +29,7 @@ interface
cgbase,cpubase;
type
TAttSuffix = (AttSufNONE,AttSufINT,AttSufFPU,AttSufFPUint,AttSufINTdual,AttSufMM);
TAttSuffix = (AttSufNONE,AttSufINT,AttSufFPU,AttSufFPUint,AttSufINTdual,AttSufMM,AttSufMMX);
const
{ include mnemonic strings }
@ -75,6 +75,10 @@ interface
att_sizemmsuffix : array[0..14] of topsize = (
S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,{S_NO,}S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_XMM,S_YMM,S_ZMM
);
att_sizemmxsuffix : array[0..14] of topsize = (
S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,{S_NO,}S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_XMM,S_NO,S_NO
);
{$else x86_64}
gas_opsize2str : array[topsize] of string[2] = ('',
'b','w','l','q','bw','bl','wl',
@ -103,6 +107,10 @@ interface
att_sizemmsuffix : array[0..12] of topsize = (
S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_XMM,S_YMM,S_ZMM
);
att_sizemmxsuffix : array[0..12] of topsize = (
S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_XMM,S_NO,S_NO
);
{$endif x86_64}

View File

@ -239,7 +239,7 @@ begin
;
end;
end
else if gas_needsuffix[opcode]=AttSufMM then
else if gas_needsuffix[opcode] in [AttSufMM, AttSufMMX] then
begin
if (opr.typ=OPR_Reference) then
begin
@ -544,6 +544,21 @@ begin
end;
end;
end;
msiMemRegx16y32z64:
begin
for j := 1 to ops do
begin
if operands[j].Opr.Typ = OPR_REGISTER then
begin
case getsubreg(operands[j].opr.reg) of
R_SUBMMX: memrefsize := 16;
R_SUBMMY: memrefsize := 32;
R_SUBMMZ: memrefsize := 64;
else Message(asmr_e_unable_to_determine_reference_size);
end;
end;
end;
end;
msiMemRegx32y64:
begin
for j := 1 to ops do
@ -558,6 +573,21 @@ begin
end;
end;
end;
msiMemRegx32y64z128:
begin
for j := 1 to ops do
begin
if operands[j].Opr.Typ = OPR_REGISTER then
begin
case getsubreg(operands[j].opr.reg) of
R_SUBMMX: memrefsize := 32;
R_SUBMMY: memrefsize := 64;
R_SUBMMZ: memrefsize := 128;
else Message(asmr_e_unable_to_determine_reference_size);
end;
end;
end;
end;
msiMemRegx64y128:
begin
for j := 1 to ops do
@ -712,7 +742,7 @@ begin
msiMultiple:
;
else
Internalerror(2019081016);
Internalerror(2020111001);
end;
if memrefsize > -1 then
@ -1402,6 +1432,51 @@ end;
procedure Tx86Instruction.SetInstructionOpsize;
function CheckSSEAVX: Boolean;
var
i: integer;
bBroadcastMemRef: boolean;
begin
Result := False;
with MemRefInfo(opcode) do
begin
if (ExistsSSEAVX) then
begin
bBroadcastMemRef := false;
for i := 1 to ops do
bBroadcastMemRef := bBroadcastMemRef or ((tx86operand(operands[i]).vopext and OTVE_VECTOR_BCST) = OTVE_VECTOR_BCST);
if bBroadcastMemRef then
begin
opsize := S_NO;
result := true;
end
else
begin
if MemRefSize in MemRefMultiples - [msiVMemMultiple] then
begin
case ops of
2: begin
opsize:=tx86operand(operands[1]).opsize;
result := true;
end;
3: begin
if (tx86operand(operands[1]).opr.typ <> OPR_CONSTANT) then
opsize:=tx86operand(operands[1]).opsize
else opsize:=tx86operand(operands[2]).opsize;
result := true;
end;
end;
end;
end;
end;
end;
end;
var
isBCastMemRef: boolean;
begin
if opsize<>S_NO then
exit;
@ -1422,78 +1497,91 @@ begin
else
opsize:=tx86operand(operands[1]).opsize;
end;
2 :
begin
case opcode of
A_MOVZX,A_MOVSX :
begin
if tx86operand(operands[1]).opsize=S_NO then
begin
tx86operand(operands[1]).opsize:=S_B;
if (m_delphi in current_settings.modeswitches) then
Message(asmr_w_unable_to_determine_reference_size_using_byte)
else
Message(asmr_e_unable_to_determine_reference_size);
end;
case tx86operand(operands[1]).opsize of
S_W :
case tx86operand(operands[2]).opsize of
S_L :
opsize:=S_WL;
{$ifdef x86_64}
S_Q :
opsize:=S_WQ;
{$endif}
else
;
end;
S_B :
2 : begin
case opcode of
A_MOVZX,A_MOVSX :
begin
if tx86operand(operands[1]).opsize=S_NO then
begin
tx86operand(operands[1]).opsize:=S_B;
if (m_delphi in current_settings.modeswitches) then
Message(asmr_w_unable_to_determine_reference_size_using_byte)
else
Message(asmr_e_unable_to_determine_reference_size);
end;
case tx86operand(operands[1]).opsize of
S_W :
case tx86operand(operands[2]).opsize of
S_W :
opsize:=S_BW;
S_L :
opsize:=S_BL;
{$ifdef x86_64}
opsize:=S_WL;
{$ifdef x86_64}
S_Q :
opsize:=S_BQ;
{$endif}
opsize:=S_WQ;
{$endif}
else
;
end;
end;
else
;
S_B :
begin
case tx86operand(operands[2]).opsize of
S_W :
opsize:=S_BW;
S_L :
opsize:=S_BL;
{$ifdef x86_64}
S_Q :
opsize:=S_BQ;
{$endif}
else
;
end;
end;
else
;
end;
end;
end;
A_MOVSS,
A_VMOVSS,
A_MOVD : { movd is a move from a mmx register to a
32 bit register or memory, so no opsize is correct here PM }
exit;
A_MOVQ :
opsize:=S_IQ;
A_CVTSI2SS,
A_CVTSI2SD,
A_OUT :
opsize:=tx86operand(operands[1]).opsize;
else
opsize:=tx86operand(operands[2]).opsize;
A_MOVSS,
A_VMOVSS,
A_MOVD : { movd is a move from a mmx register to a
32 bit register or memory, so no opsize is correct here PM }
exit;
A_MOVQ :
opsize:=S_IQ;
//A_VCVTPD2DQ,
//A_VCVTPD2PS,
//A_VCVTTPD2DQ,
//A_VCVTPD2UDQ,
//A_VCVTQQ2PS,
//A_VCVTTPD2UDQ,
//A_VCVTUQQ2PS,
A_OUT :
opsize:=tx86operand(operands[1]).opsize;
else
if not CheckSSEAVX then
opsize:=tx86operand(operands[2]).opsize;
end;
end;
end;
3 :
begin
case opcode of
A_VCVTSI2SS,
A_VCVTSI2SD:
opsize:=tx86operand(operands[1]).opsize;
else
opsize:=tx86operand(operands[ops]).opsize;
begin
//case opcode of
//A_VCVTSI2SS,
//A_VCVTSI2SD,
//A_VCVTUSI2SS,
//A_VCVTUSI2SD:
// iops:=tx86operand(operands[1]).opsize;
//A_VFPCLASSPD,
//A_VFPCLASSPS:
// iops:=tx86operand(operands[2]).opsize;
//else
begin
if not CheckSSEAVX then
opsize:=tx86operand(operands[ops]).opsize;
end;
//end;
end;
end;
4 :
opsize:=tx86operand(operands[ops]).opsize;
end;
end;
@ -1988,7 +2076,17 @@ begin
begin
s:=s+'reg';
addsize:=true;
end
else
if getregtype(opr.reg)=R_ADDRESSREGISTER then
begin
// 14102020 TG TODO CHECK
if (opr.reg >= NR_K0) and (opr.reg >= NR_K7) then
begin
s:=s+'k' + regnr;
end;
end;
end;
OPR_LOCAL,
OPR_REFERENCE: begin

View File

@ -1041,6 +1041,8 @@ Implementation
actopsize:=att_sizefpuintsuffix[sufidx]
else if gas_needsuffix[actopcode]=attsufMM then
actopsize:=att_sizemmsuffix[sufidx]
else if gas_needsuffix[actopcode]=attsufMMX then
actopsize:=att_sizemmXsuffix[sufidx]
else
actopsize:=att_sizesuffix[sufidx];
{ only accept suffix from the same category that the opcode belongs to }

View File

@ -4158,7 +4158,7 @@ ymmreg_mz,mem128 \333\350\362\364\370\1\xE6\110
ymmreg_mz,xmmreg \333\350\362\364\370\1\xE6\110 AVX,SANDYBRIDGE
ymmreg_mz,bmem32 \333\350\364\370\1\xE6\110 AVX512,BCST4,THV
zmmreg_mz,mem256 \333\350\351\370\1\xE6\110 AVX512,THV
zmmreg_mz,ymmreg_er \333\350\351\370\1\xE6\110 AVX512
zmmreg_mz,ymmreg \333\350\351\370\1\xE6\110 AVX512
zmmreg_mz,bmem32 \333\350\351\370\1\xE6\110 AVX512,BCST8,THV
@ -4174,10 +4174,13 @@ zmmreg_mz,bmem32 \350\351\370\1\x5B\110
zmmreg_mz,zmmreg_er \350\351\370\1\x5B\110 AVX512
[VCVTPD2DQ,vcvtpd2dqM]
; VCVTPD2DQ xmmreg_mz,mem256 must come first - map MemRefSize 256bits correct
; map all other MemrefSize (without broasdcast MemRef) to xmmreg, xmmrm
[VCVTPD2DQ,vcvtpd2dqN]
(Ch_Wop2, Ch_Rop1)
xmmreg_mz,mem256 \334\350\352\362\364\370\1\xE6\110 AVX,SANDYBRIDGE,TFV
xmmreg_mz,xmmrm \334\350\352\362\370\1\xE6\110 AVX,SANDYBRIDGE,TFV
xmmreg_mz,ymmrm \334\350\352\362\364\370\1\xE6\110 AVX,SANDYBRIDGE,TFV
xmmreg_mz,ymmreg \334\350\352\362\364\370\1\xE6\110 AVX,SANDYBRIDGE
xmmreg_mz,bmem64 \334\350\352\370\1\xE6\110 AVX512,BCST2,TFV
xmmreg_mz,bmem64 \334\350\352\364\370\1\xE6\110 AVX512,BCST4,TFV
@ -4188,7 +4191,7 @@ ymmreg_mz,zmmreg_er \334\350\351\352\370\1\xE6\110
; VCVTPD2PS xmmreg_mz,mem256 must come first - map MemRefSize 256bits correct
; map all other MemrefSize (without broasdcast MemRef) to xmmreg, xmmrm
[VCVTPD2PS,vcvtpd2psM]
[VCVTPD2PS,vcvtpd2psN]
(Ch_Wop2, Ch_Rop1)
xmmreg_mz,mem256 \350\352\361\362\364\370\1\x5A\110 AVX,SANDYBRIDGE,TFV
xmmreg_mz,ymmreg \350\352\361\362\364\370\1\x5A\110 AVX,SANDYBRIDGE
@ -4258,15 +4261,15 @@ xmmreg_mz,xmmreg,xmmreg_er \334\350\352\362\370\1\x5A\75\120
[VCVTSI2SD,vcvtsi2sdX]
(Ch_Wop3, Ch_Rop2, Ch_Rop1)
xmmreg,xmmreg_er,reg32 \334\350\362\370\1\x2A\75\120 AVX,SANDYBRIDGE,SD
xmmreg,xmmreg,reg32 \334\350\362\370\1\x2A\75\120 AVX,SANDYBRIDGE,SD
xmmreg,xmmreg,mem32 \334\350\362\370\1\x2A\75\120 AVX,SANDYBRIDGE,SD,T1S
xmmreg,xmmreg_er,reg64 \334\350\352\362\363\370\1\x2A\75\120 AVX,SANDYBRIDGE,X86_64
xmmreg,xmmreg,mem64 \334\350\352\362\363\370\1\x2A\75\120 AVX,SANDYBRIDGE,X86_64,T1S
xmmreg,xmmreg_er,mem64 \334\350\352\362\363\370\1\x2A\75\120 AVX,SANDYBRIDGE,X86_64,T1S
[VCVTSI2SS,vcvtsi2ssX]
(Ch_Wop3, Ch_Rop2, Ch_Rop1)
xmmreg,xmmreg_er,reg32 \333\350\362\370\1\x2A\75\120 AVX,SANDYBRIDGE,SD
xmmreg,xmmreg,reg32 \333\350\362\370\1\x2A\75\120 AVX,SANDYBRIDGE,SD
xmmreg,xmmreg,mem32 \333\350\362\370\1\x2A\75\120 AVX,SANDYBRIDGE,SD,T1S
xmmreg,xmmreg_er,reg64 \333\350\352\362\363\370\1\x2A\75\120 AVX,SANDYBRIDGE,X86_64
xmmreg,xmmreg_er,mem64 \333\350\352\362\363\370\1\x2A\75\120 AVX,SANDYBRIDGE,X86_64,T1S
@ -4287,7 +4290,7 @@ reg64,xmmreg_er \333\350\352\362\363\370\1\x2D\110
; VCVTTPD2DQ xmmreg_mz,mem256 must come first - map MemRefSize 256bits correct
; map all other MemrefSize (without broasdcast MemRef) to xmmreg, xmmrm
[VCVTTPD2DQ,vcvttpd2dqM]
[VCVTTPD2DQ,vcvttpd2dqN]
(Ch_Wop2, Ch_Rop1)
xmmreg_mz,mem256 \350\352\361\362\364\370\1\xE6\110 AVX,SANDYBRIDGE,AVX512,TFV
xmmreg_mz,ymmreg \350\352\361\362\364\370\1\xE6\110 AVX,SANDYBRIDGE
@ -4376,7 +4379,7 @@ xmmrm,ymmreg,imm8 \361\362\364\372\1\x19\101\26 AVX,SA
(Ch_All)
mem32,xmmreg,imm8 \350\361\362\372\1\x17\101\26 AVX,SANDYBRIDGE,T1S
reg32,xmmreg,imm8 \350\361\362\372\1\x17\101\26 AVX,SANDYBRIDGE
reg64,xmmreg,imm8 \350\361\372\1\x17\101\26 AVX512
reg64,xmmreg,imm8 \350\361\362\372\1\x17\101\26 AVX512
@ -5479,10 +5482,12 @@ ymmreg,ymmreg,ymmrm \361\362\364\371\1\x09\75\120 AVX2
[VPSLLD]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg_mz,xmmrm,imm8 \350\361\362\370\1\x72\74\216\26 AVX,SANDYBRIDGE,TFV
xmmreg_mz,xmmreg,imm8 \350\361\362\370\1\x72\74\216\26 AVX,SANDYBRIDGE
xmmreg_mz,mem128,imm8 \350\361\370\1\x72\74\216\26 AVX512,TFV
xmmreg_mz,bmem32,imm8 \350\361\370\1\x72\74\216\26 AVX512,TFV
xmmreg_mz,xmmreg,xmmrm \350\361\362\370\1\xF2\75\120 AVX,SANDYBRIDGE,TMEM128
ymmreg_mz,ymmrm,imm8 \350\361\362\364\370\1\x72\74\216\26 AVX2,TFV
ymmreg_mz,ymmreg,imm8 \350\361\362\364\370\1\x72\74\216\26 AVX2
ymmreg_mz,mem256,imm8 \350\361\364\370\1\x72\74\216\26 AVX512,TFV
ymmreg_mz,bmem32,imm8 \350\361\364\370\1\x72\74\216\26 AVX512,TFV
ymmreg_mz,ymmreg,xmmrm \350\361\362\364\370\1\xF2\75\120 AVX2,TMEM128
zmmreg_mz,zmmreg,xmmrm \350\351\361\370\1\xF2\75\120 AVX512,TMEM128
@ -5503,10 +5508,12 @@ zmmreg,zmmreg,imm8 \350\351\361\370\1\x73\74\217\26
[VPSLLQ]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg_mz,xmmreg,xmmrm \350\352\361\362\370\1\xF3\75\120 AVX,SANDYBRIDGE,TMEM128
xmmreg_mz,xmmrm,imm8 \350\352\361\362\370\1\x73\74\216\26 AVX,SANDYBRIDGE,TFV
xmmreg_mz,xmmreg,imm8 \350\352\361\362\370\1\x73\74\216\26 AVX,SANDYBRIDGE,TFV
xmmreg_mz,mem128,imm8 \350\352\361\370\1\x73\74\216\26 AVX512,TFV
xmmreg_mz,bmem64,imm8 \350\352\361\370\1\x73\74\216\26 AVX512,TFV
ymmreg_mz,ymmreg,xmmrm \350\352\361\362\364\370\1\xF3\75\120 AVX2,TMEM128
ymmreg_mz,ymmrm,imm8 \350\352\361\362\364\370\1\x73\74\216\26 AVX2,TFV
ymmreg_mz,ymmreg,imm8 \350\352\361\362\364\370\1\x73\74\216\26 AVX2
ymmreg_mz,mem256,imm8 \350\352\361\364\370\1\x73\74\216\26 AVX512,TFV
ymmreg_mz,bmem64,imm8 \350\352\361\364\370\1\x73\74\216\26 AVX512,TFV
zmmreg_mz,zmmreg,xmmrm \350\351\352\361\370\1\xF3\75\120 AVX512,TMEM128
zmmreg_mz,zmmrm,imm8 \350\351\352\361\370\1\x73\74\216\26 AVX512,TFV
@ -5516,19 +5523,23 @@ zmmreg_mz,bmem64,imm8 \350\351\352\361\370\1\x73\74\216\26
[VPSLLW]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg_mz,xmmreg,xmmrm \350\361\362\370\1\xF1\75\120 AVX,SANDYBRIDGE,TMEM128
xmmreg_mz,xmmrm,imm8 \350\361\362\370\1\x71\74\216\26 AVX,SANDYBRIDGE,TFVM
xmmreg_mz,xmmreg,imm8 \350\361\362\370\1\x71\74\216\26 AVX,SANDYBRIDGE
xmmreg_mz,mem128,imm8 \350\361\370\1\x71\74\216\26 AVX512,TFVM
ymmreg_mz,ymmreg,xmmrm \350\361\362\364\370\1\xF1\75\120 AVX2,TMEM128
ymmreg_mz,ymmrm,imm8 \350\361\362\364\370\1\x71\74\216\26 AVX2,TFVM
ymmreg_mz,ymmreg,imm8 \350\361\362\364\370\1\x71\74\216\26 AVX2
ymmreg_mz,mem256,imm8 \350\361\364\370\1\x71\74\216\26 AVX512,TFVM
zmmreg_mz,zmmreg,xmmrm \350\351\361\370\1\xF1\75\120 AVX512,TMEM128
zmmreg_mz,zmmrm,imm8 \350\351\361\370\1\x71\74\216\26 AVX512,TFVM
[VPSRAD]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg_mz,xmmrm,imm8 \350\361\362\370\1\x72\74\214\26 AVX,SANDYBRIDGE,TFV
xmmreg_mz,xmmreg,imm8 \350\361\362\370\1\x72\74\214\26 AVX,SANDYBRIDGE
xmmreg_mz,mem128,imm8 \350\361\370\1\x72\74\214\26 AVX512,TFV
xmmreg_mz,bmem32,imm8 \350\361\370\1\x72\74\214\26 AVX512,TFV
xmmreg_mz,xmmreg,xmmrm \350\361\362\370\1\xE2\75\120 AVX,SANDYBRIDGE,TMEM128
ymmreg_mz,ymmrm,imm8 \350\361\362\364\370\1\x72\74\214\26 AVX2,TFV
ymmreg_mz,ymmreg,imm8 \350\361\362\364\370\1\x72\74\214\26 AVX2
ymmreg_mz,mem256,imm8 \350\361\364\370\1\x72\74\214\26 AVX512,TFV
ymmreg_mz,bmem32,imm8 \350\361\364\370\1\x72\74\214\26 AVX512,TFV
ymmreg_mz,ymmreg,xmmrm \350\361\362\364\370\1\xE2\75\120 AVX2,TMEM128
zmmreg_mz,zmmreg,xmmrm \350\351\361\370\1\xE2\75\120 AVX512,TMEM128
@ -5538,9 +5549,11 @@ zmmreg_mz,bmem32,imm8 \350\351\361\370\1\x72\74\214\26
[VPSRAW]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg_mz,xmmrm,imm8 \350\361\362\370\1\x71\74\214\26 AVX,SANDYBRIDGE,TFVM
xmmreg_mz,xmmreg,imm8 \350\361\362\370\1\x71\74\214\26 AVX,SANDYBRIDGE
xmmreg_mz,mem128,imm8 \350\361\370\1\x71\74\214\26 AVX512,TFVM
xmmreg_mz,xmmreg,xmmrm \350\361\362\370\1\xE1\75\120 AVX,SANDYBRIDGE,TMEM128
ymmreg_mz,ymmrm,imm8 \350\361\362\364\370\1\x71\74\214\26 AVX2,TFVM
ymmreg_mz,ymmreg,imm8 \350\361\362\364\370\1\x71\74\214\26 AVX2
ymmreg_mz,mem256,imm8 \350\361\364\370\1\x71\74\214\26 AVX512,TFVM
ymmreg_mz,ymmreg,xmmrm \350\361\362\364\370\1\xE1\75\120 AVX2,TMEM128
zmmreg_mz,zmmreg,xmmrm \350\351\361\370\1\xE1\75\120 AVX512,TMEM128
zmmreg_mz,zmmrm,imm8 \350\351\361\370\1\x71\74\214\26 AVX512,TFVM
@ -5548,11 +5561,13 @@ zmmreg_mz,zmmrm,imm8 \350\351\361\370\1\x71\74\214\26
[VPSRLD]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg_mz,xmmrm,imm8 \350\361\362\370\1\x72\74\212\26 AVX,SANDYBRIDGE,TFV
xmmreg_mz,xmmreg,imm8 \350\361\362\370\1\x72\74\212\26 AVX,SANDYBRIDGE
xmmreg_mz,mem128,imm8 \350\361\370\1\x72\74\212\26 AVX512,TFV
xmmreg_mz,bmem32,imm8 \350\361\370\1\x72\74\212\26 AVX512,TFV
xmmreg_mz,xmmreg,xmmrm \350\361\362\370\1\xD2\75\120 AVX,SANDYBRIDGE,TMEM128
ymmreg_mz,ymmreg,xmmrm \350\361\362\364\370\1\xD2\75\120 AVX2,TMEM128
ymmreg_mz,ymmrm,imm8 \350\361\362\364\370\1\x72\74\212\26 AVX2,TFV
ymmreg_mz,ymmreg,imm8 \350\361\362\364\370\1\x72\74\212\26 AVX2,TFV
ymmreg_mz,mem256,imm8 \350\361\364\370\1\x72\74\212\26 AVX2,TFV
ymmreg_mz,bmem32,imm8 \350\361\364\370\1\x72\74\212\26 AVX512,TFV
zmmreg_mz,zmmreg,xmmrm \350\351\361\370\1\xD2\75\120 AVX512,TMEM128
zmmreg_mz,zmmrm,imm8 \350\351\361\370\1\x72\74\212\26 AVX512,TFV
@ -5572,9 +5587,11 @@ zmmreg,zmmrm,imm8 \350\351\361\370\1\x73\74\213\26
[VPSRLQ]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg_mz,xmmreg,xmmrm \350\352\361\362\370\1\xD3\75\120 AVX,SANDYBRIDGE,TMEM128
xmmreg_mz,xmmrm,imm8 \350\352\361\362\370\1\x73\74\212\26 AVX,SANDYBRIDGE,TFV
xmmreg_mz,xmmreg,imm8 \350\352\361\362\370\1\x73\74\212\26 AVX,SANDYBRIDGE
xmmreg_mz,mem128,imm8 \350\352\361\370\1\x73\74\212\26 AVX512,TFV
xmmreg_mz,bmem64,imm8 \350\352\361\370\1\x73\74\212\26 AVX512,TFV
ymmreg_mz,ymmrm,imm8 \350\352\361\362\364\370\1\x73\74\212\26 AVX2,TFV
ymmreg_mz,ymmreg,imm8 \350\352\361\362\364\370\1\x73\74\212\26 AVX2
ymmreg_mz,mem256,imm8 \350\352\361\364\370\1\x73\74\212\26 AVX512,TFV
ymmreg_mz,bmem64,imm8 \350\352\361\364\370\1\x73\74\212\26 AVX512,TFV
ymmreg_mz,ymmreg,xmmrm \350\352\361\362\364\370\1\xD3\75\120 AVX2,TMEM128
zmmreg_mz,zmmreg,xmmrm \350\351\352\361\370\1\xD3\75\120 AVX512,TMEM128
@ -5584,9 +5601,11 @@ zmmreg_mz,bmem64,imm8 \350\351\352\361\370\1\x73\74\212\26
[VPSRLW]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg_mz,xmmrm,imm8 \350\361\362\370\1\x71\74\212\26 AVX,SANDYBRIDGE,TFVM
xmmreg_mz,xmmreg,imm8 \350\361\362\370\1\x71\74\212\26 AVX,SANDYBRIDGE
xmmreg_mz,mem128,imm8 \350\361\370\1\x71\74\212\26 AVX512,TFVM
xmmreg_mz,xmmreg,xmmrm \350\361\362\370\1\xD1\75\120 AVX,SANDYBRIDGE,TMEM128
ymmreg_mz,ymmrm,imm8 \350\361\362\364\370\1\x71\74\212\26 AVX2,TFVM
ymmreg_mz,ymmreg,imm8 \350\361\362\364\370\1\x71\74\212\26 AVX2
ymmreg_mz,mem256,imm8 \350\361\364\370\1\x71\74\212\26 AVX512,TFVM
ymmreg_mz,ymmreg,xmmrm \350\361\362\364\370\1\xD1\75\120 AVX2,TMEM128
zmmreg_mz,zmmreg,xmmrm \350\351\361\370\1\xD1\75\120 AVX512,TMEM128
zmmreg_mz,zmmrm,imm8 \350\351\361\370\1\x71\74\212\26 AVX512,TFVM
@ -6779,7 +6798,7 @@ zmmreg_mz,zmmreg,bmem32 \350\351\361\371\1\xBC\75\120
[VFNMADD231SD]
(Ch_Mop3, Ch_Rop2, Ch_Rop1)
xmmreg,xmmreg,xmmrm \337\361\362\363\371\1\xBD\75\120 FMA,T1S
xmmreg,xmmreg,xmmrm \337\350\352\361\362\363\371\1\xBD\75\120 FMA,T1S
xmmreg_mz,xmmreg,xmmreg_er \350\352\361\362\363\371\1\xBD\75\120 FMA
[VFNMADD231SS]
@ -7305,7 +7324,7 @@ zmmreg_mz,mem512 \350\351\352\361\370\1\x7B\110
zmmreg_mz,bmem64 \350\351\352\361\370\1\x7B\110 AVX512,TFV
zmmreg_mz,zmmreg_er \350\351\352\361\370\1\x7B\110 AVX512
[VCVTPD2UDQ]
[VCVTPD2UDQ, vcvtpd2udqN]
(Ch_Wop2, Ch_Rop1)
xmmreg_mz,mem128 \350\352\370\1\x79\110 AVX512,TFV
xmmreg_mz,mem256 \350\352\364\370\1\x79\110 AVX512,TFV
@ -7369,7 +7388,7 @@ zmmreg_mz,mem512 \333\350\351\352\370\1\xE6\110
zmmreg_mz,bmem64 \333\350\351\352\370\1\xE6\110 AVX512,TFV
zmmreg_mz,zmmreg_er \333\350\351\352\370\1\xE6\110 AVX512
[VCVTQQ2PS]
[VCVTQQ2PS,vcvtqq2psN]
(Ch_Wop2, Ch_Rop1)
xmmreg_mz,mem128 \350\352\370\1\x5B\110 AVX512,TFV
xmmreg_mz,mem256 \350\352\364\370\1\x5B\110 AVX512,TFV
@ -7405,7 +7424,7 @@ zmmreg_mz,mem512 \350\351\352\361\370\1\x7A\110
zmmreg_mz,bmem64 \350\351\352\361\370\1\x7A\110 AVX512,TFV
zmmreg_mz,zmmreg_sae \350\351\352\361\370\1\x7A\110 AVX512
[VCVTTPD2UDQ]
[VCVTTPD2UDQ,vcvttpd2udqN]
(Ch_Wop2, Ch_Rop1)
xmmreg_mz,mem128 \350\352\370\1\x78\110 AVX512,TFV
xmmreg_mz,mem256 \350\352\364\370\1\x78\110 AVX512,TFV
@ -7482,7 +7501,7 @@ ymmreg_mz,xmmrm \333\350\364\370\1\x7A\110
ymmreg_mz,bmem32 \333\350\364\370\1\x7A\110 AVX512,BCST4,THV
zmmreg_mz,mem256 \333\350\351\370\1\x7A\110 AVX512,THV
zmmreg_mz,bmem32 \333\350\351\370\1\x7A\110 AVX512,BCST8,THV
zmmreg_mz,ymmreg_er \333\350\351\370\1\x7A\110 AVX512
zmmreg_mz,ymmreg \333\350\351\370\1\x7A\110 AVX512
[VCVTUDQ2PS]
(Ch_Wop2, Ch_Rop1)
@ -7504,7 +7523,7 @@ zmmreg_mz,mem512 \333\350\351\352\370\1\x7A\110
zmmreg_mz,bmem64 \333\350\351\352\370\1\x7A\110 AVX512,TFV
zmmreg_mz,zmmreg_er \333\350\351\352\370\1\x7A\110 AVX512
[VCVTUQQ2PS]
[VCVTUQQ2PS,vcvtuqq2psN]
(Ch_Wop2, Ch_Rop1)
xmmreg_mz,mem128 \334\350\352\370\1\x7A\110 AVX512,TFV
xmmreg_mz,mem256 \334\350\352\364\370\1\x7A\110 AVX512,TFV
@ -7516,12 +7535,13 @@ ymmreg_mz,mem512 \334\350\351\352\370\1\x7A\110
ymmreg_mz,bmem64 \334\350\351\352\370\1\x7A\110 AVX512,BCST8,TFV
ymmreg_mz,zmmreg_er \334\350\351\352\370\1\x7A\110 AVX512
[VCVTUSI2SD]
[VCVTUSI2SD,vcvtusi2sdX]
(Ch_Wop2, Ch_Rop1)
xmmreg,xmmreg_er,rm64 \334\350\352\370\1\x7B\75\120 AVX512,T1S
xmmreg,xmmreg_er,mem64 \334\350\352\370\1\x7B\75\120 AVX512,T1S
xmmreg,xmmreg_er,reg64 \334\350\352\370\1\x7B\75\120 AVX512
xmmreg,xmmreg_er,rm32 \334\350\370\1\x7B\75\120 AVX512,T1S
[VCVTUSI2SS]
[VCVTUSI2SS,vcvtusi2ssX]
(Ch_Wop2, Ch_Rop1)
xmmreg,xmmreg_er,rm64 \333\350\352\370\1\x7B\75\120 AVX512,T1S
xmmreg,xmmreg_er,rm32 \333\350\370\1\x7B\75\120 AVX512,T1S
@ -7641,22 +7661,30 @@ xmmreg_mz,xmmreg,mem32,imm8 \350\361\372\1\x55\75\120\27
xmmreg_mz,xmmreg,xmmreg_sae,imm8 \350\361\372\1\x55\75\120\27 AVX512
[VFPCLASSPD]
; VFPCLASSPD kreg_m,mem256 and mem512 must come first - map MemRefSize 256,512bits correct
; map all other MemrefSize (without broasdcast MemRef) to kreg_m, xmmrm
[VFPCLASSPD,vfpclasspdX]
(Ch_All)
kreg_m,mem256,imm8 \350\352\361\364\372\1\x66\110\26 AVX512,TFV
kreg_m,mem512,imm8 \350\351\352\361\372\1\x66\110\26 AVX512,TFV
kreg_m,xmmrm,imm8 \350\352\361\372\1\x66\110\26 AVX512,TFV
kreg_m,bmem64,imm8 \350\352\361\372\1\x66\110\26 AVX512,BCST2,TFV
kreg_m,ymmrm,imm8 \350\352\361\364\372\1\x66\110\26 AVX512,TFV
kreg_m,ymmreg,imm8 \350\352\361\364\372\1\x66\110\26 AVX512
kreg_m,bmem64,imm8 \350\352\361\364\372\1\x66\110\26 AVX512,BCST4,TFV
kreg_m,zmmrm,imm8 \350\351\352\361\372\1\x66\110\26 AVX512,TFV
kreg_m,zmmreg,imm8 \350\351\352\361\372\1\x66\110\26 AVX512
kreg_m,bmem64,imm8 \350\351\352\361\372\1\x66\110\26 AVX512,BCST8,TFV
[VFPCLASSPS]
; VFPCLASSPS kreg_m,mem256 and mem512 must come first - map MemRefSize 256,512bits correct
; map all other MemrefSize (without broasdcast MemRef) to kreg_m, xmmrm
[VFPCLASSPS,vfpclasspsX]
(Ch_All)
kreg_m,mem256,imm8 \350\361\364\372\1\x66\110\26 AVX512,TFV
kreg_m,mem512,imm8 \350\351\361\372\1\x66\110\26 AVX512,TFV
kreg_m,xmmrm,imm8 \350\361\372\1\x66\110\26 AVX512,TFV
kreg_m,bmem32,imm8 \350\361\372\1\x66\110\26 AVX512,BCST4,TFV
kreg_m,ymmrm,imm8 \350\361\364\372\1\x66\110\26 AVX512,TFV
kreg_m,ymmreg,imm8 \350\361\364\372\1\x66\110\26 AVX512
kreg_m,bmem32,imm8 \350\361\364\372\1\x66\110\26 AVX512,BCST8,TFV
kreg_m,zmmrm,imm8 \350\351\361\372\1\x66\110\26 AVX512,TFV
kreg_m,zmmreg,imm8 \350\351\361\372\1\x66\110\26 AVX512
kreg_m,bmem32,imm8 \350\351\361\372\1\x66\110\26 AVX512,BCST16,TFV
[VFPCLASSSD]
@ -8946,18 +8974,18 @@ zmmreg_mz,zmmreg,bmem64,imm8 \350\351\352\361\372\1\x43\75\120\27
[VPCOMPRESSB]
(Ch_All)
mem128_m,xmmreg \350\361\371\1\x63\101 AVX512,T1S
mem256_m,ymmreg \350\361\364\371\1\x63\101 AVX512,T1S
mem512_m,zmmreg \350\351\361\371\1\x63\101 AVX512,T1S
mem128_m,xmmreg \350\361\371\1\x63\101 AVX512,T1S8
mem256_m,ymmreg \350\361\364\371\1\x63\101 AVX512,T1S8
mem512_m,zmmreg \350\351\361\371\1\x63\101 AVX512,T1S8
xmmreg_mz,xmmreg \350\361\371\1\x63\101 AVX512
ymmreg_mz,ymmreg \350\361\364\371\1\x63\101 AVX512
zmmreg_mz,zmmreg \350\351\361\371\1\x63\101 AVX512
[VPCOMPRESSW]
(Ch_All)
mem128_m,xmmreg \350\352\361\371\1\x63\101 AVX512,T1S
mem256_m,ymmreg \350\352\361\364\371\1\x63\101 AVX512,T1S
mem512_m,zmmreg \350\351\352\361\371\1\x63\101 AVX512,T1S
mem128_m,xmmreg \350\352\361\371\1\x63\101 AVX512,T1S16
mem256_m,ymmreg \350\352\361\364\371\1\x63\101 AVX512,T1S16
mem512_m,zmmreg \350\351\352\361\371\1\x63\101 AVX512,T1S16
xmmreg_mz,xmmreg \350\352\361\371\1\x63\101 AVX512
ymmreg_mz,ymmreg \350\352\361\364\371\1\x63\101 AVX512
zmmreg_mz,zmmreg \350\351\352\361\371\1\x63\101 AVX512
@ -9000,21 +9028,21 @@ zmmreg_mz,zmmreg,bmem32 \350\351\361\371\1\x53\75\120
[VPEXPANDB]
(Ch_All)
mem128_m,xmmreg \350\361\371\1\x62\101 AVX512,T1S
mem256_m,ymmreg \350\361\364\371\1\x62\101 AVX512,T1S
mem512_m,zmmreg \350\351\361\371\1\x62\101 AVX512,T1S
xmmreg_mz,xmmreg \350\361\371\1\x62\101 AVX512
ymmreg_mz,ymmreg \350\361\364\371\1\x62\101 AVX512
zmmreg_mz,zmmreg \350\351\361\371\1\x62\101 AVX512
xmmreg_mz,mem128 \350\361\371\1\x62\110 AVX512,T1S8
ymmreg_mz,mem256 \350\361\364\371\1\x62\110 AVX512,T1S8
zmmreg_mz,mem512 \350\351\361\371\1\x62\110 AVX512,T1S8
xmmreg_mz,xmmreg \350\361\371\1\x62\110 AVX512
ymmreg_mz,ymmreg \350\361\364\371\1\x62\110 AVX512
zmmreg_mz,zmmreg \350\351\361\371\1\x62\110 AVX512
[VPEXPANDW]
(Ch_All)
mem128_m,xmmreg \350\352\361\371\1\x62\101 AVX512,T1S
mem256_m,ymmreg \350\352\361\364\371\1\x62\101 AVX512,T1S
mem512_m,zmmreg \350\351\352\361\371\1\x62\101 AVX512,T1S
xmmreg_mz,xmmreg \350\352\361\371\1\x62\101 AVX512
ymmreg_mz,ymmreg \350\352\361\364\371\1\x62\101 AVX512
zmmreg_mz,zmmreg \350\351\352\361\371\1\x62\101 AVX512
xmmreg_mz,mem128 \350\352\361\371\1\x62\110 AVX512,T1S16
ymmreg_mz,mem256 \350\352\361\364\371\1\x62\110 AVX512,T1S16
zmmreg_mz,mem512 \350\351\352\361\371\1\x62\110 AVX512,T1S16
xmmreg_mz,xmmreg \350\352\361\371\1\x62\110 AVX512
ymmreg_mz,ymmreg \350\352\361\364\371\1\x62\110 AVX512
zmmreg_mz,zmmreg \350\351\352\361\371\1\x62\110 AVX512
[VPOPCNTB]
(Ch_All)

View File

@ -777,8 +777,8 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufMM,
attsufMM,
attsufMMX,
attsufMMX,
attsufNONE,
attsufNONE,
attsufNONE,
@ -789,7 +789,7 @@ attsufINT,
attsufINT,
attsufNONE,
attsufNONE,
attsufMM,
attsufMMX,
attsufNONE,
attsufNONE,
attsufNONE,
@ -1197,6 +1197,29 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufMMX,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufMMX,
attsufNONE,
attsufNONE,
attsufNONE,
attsufMMX,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufMMX,
attsufINT,
attsufINT,
attsufNONE,
attsufNONE,
attsufNONE,
@ -1214,31 +1237,8 @@ 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,
attsufINT,
attsufINT,
attsufNONE,
attsufNONE,
attsufNONE,

View File

@ -1197,7 +1197,7 @@
'vcompresspd',
'vcompressps',
'vcvtpd2qq',
'vcvtpd2udq',
' vcvtpd2udq',
'vcvtpd2uqq',
'vcvtps2qq',
'vcvtps2udq',

View File

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

View File

@ -10734,7 +10734,7 @@
(
opcode : A_VCVTDQ2PD;
ops : 2;
optypes : (ot_zmmreg_mz,ot_ymmreg_er,ot_none,ot_none);
optypes : (ot_zmmreg_mz,ot_ymmreg,ot_none,ot_none);
code : #219#232#233#248#1#230#72;
flags : [if_avx512]
),
@ -10794,6 +10794,13 @@
code : #232#233#248#1#91#72;
flags : [if_avx512]
),
(
opcode : A_VCVTPD2DQ;
ops : 2;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits256,ot_none,ot_none);
code : #220#232#234#242#244#248#1#230#72;
flags : [if_avx,if_sandybridge,if_tfv]
),
(
opcode : A_VCVTPD2DQ;
ops : 2;
@ -10804,9 +10811,9 @@
(
opcode : A_VCVTPD2DQ;
ops : 2;
optypes : (ot_xmmreg_mz,ot_ymmrm,ot_none,ot_none);
optypes : (ot_xmmreg_mz,ot_ymmreg,ot_none,ot_none);
code : #220#232#234#242#244#248#1#230#72;
flags : [if_avx,if_sandybridge,if_tfv]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VCVTPD2DQ;
@ -11133,7 +11140,7 @@
(
opcode : A_VCVTSI2SD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg_er,ot_reg32,ot_none);
optypes : (ot_xmmreg,ot_xmmreg,ot_reg32,ot_none);
code : #220#232#242#248#1#42#61#80;
flags : [if_avx,if_sandybridge,if_sd]
),
@ -11154,14 +11161,14 @@
(
opcode : A_VCVTSI2SD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_memory or ot_bits64,ot_none);
optypes : (ot_xmmreg,ot_xmmreg_er,ot_memory or ot_bits64,ot_none);
code : #220#232#234#242#243#248#1#42#61#80;
flags : [if_avx,if_sandybridge,if_x86_64,if_t1s]
),
(
opcode : A_VCVTSI2SS;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg_er,ot_reg32,ot_none);
optypes : (ot_xmmreg,ot_xmmreg,ot_reg32,ot_none);
code : #219#232#242#248#1#42#61#80;
flags : [if_avx,if_sandybridge,if_sd]
),
@ -11561,7 +11568,7 @@
opcode : A_VEXTRACTPS;
ops : 3;
optypes : (ot_reg64,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#250#1#23#65#22;
code : #232#241#242#250#1#23#65#22;
flags : [if_avx512]
),
(
@ -15382,9 +15389,16 @@
(
opcode : A_VPSLLD;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#248#1#114#60#142#22;
flags : [if_avx,if_sandybridge,if_tfv]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPSLLD;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#241#248#1#114#60#142#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSLLD;
@ -15403,9 +15417,16 @@
(
opcode : A_VPSLLD;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#244#248#1#114#60#142#22;
flags : [if_avx2,if_tfv]
flags : [if_avx2]
),
(
opcode : A_VPSLLD;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#248#1#114#60#142#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSLLD;
@ -15494,10 +15515,17 @@
(
opcode : A_VPSLLQ;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#242#248#1#115#60#142#22;
flags : [if_avx,if_sandybridge,if_tfv]
),
(
opcode : A_VPSLLQ;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#248#1#115#60#142#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSLLQ;
ops : 3;
@ -15515,9 +15543,16 @@
(
opcode : A_VPSLLQ;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#242#244#248#1#115#60#142#22;
flags : [if_avx2,if_tfv]
flags : [if_avx2]
),
(
opcode : A_VPSLLQ;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#244#248#1#115#60#142#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSLLQ;
@ -15557,9 +15592,16 @@
(
opcode : A_VPSLLW;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#248#1#113#60#142#22;
flags : [if_avx,if_sandybridge,if_tfvm]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPSLLW;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#241#248#1#113#60#142#22;
flags : [if_avx512,if_tfvm]
),
(
opcode : A_VPSLLW;
@ -15571,9 +15613,16 @@
(
opcode : A_VPSLLW;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#244#248#1#113#60#142#22;
flags : [if_avx2,if_tfvm]
flags : [if_avx2]
),
(
opcode : A_VPSLLW;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#248#1#113#60#142#22;
flags : [if_avx512,if_tfvm]
),
(
opcode : A_VPSLLW;
@ -15592,9 +15641,16 @@
(
opcode : A_VPSRAD;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#248#1#114#60#140#22;
flags : [if_avx,if_sandybridge,if_tfv]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPSRAD;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#241#248#1#114#60#140#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSRAD;
@ -15613,9 +15669,16 @@
(
opcode : A_VPSRAD;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#244#248#1#114#60#140#22;
flags : [if_avx2,if_tfv]
flags : [if_avx2]
),
(
opcode : A_VPSRAD;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#248#1#114#60#140#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSRAD;
@ -15655,9 +15718,16 @@
(
opcode : A_VPSRAW;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#248#1#113#60#140#22;
flags : [if_avx,if_sandybridge,if_tfvm]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPSRAW;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#241#248#1#113#60#140#22;
flags : [if_avx512,if_tfvm]
),
(
opcode : A_VPSRAW;
@ -15669,9 +15739,16 @@
(
opcode : A_VPSRAW;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#244#248#1#113#60#140#22;
flags : [if_avx2,if_tfvm]
flags : [if_avx2]
),
(
opcode : A_VPSRAW;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#248#1#113#60#140#22;
flags : [if_avx512,if_tfvm]
),
(
opcode : A_VPSRAW;
@ -15697,9 +15774,16 @@
(
opcode : A_VPSRLD;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#248#1#114#60#138#22;
flags : [if_avx,if_sandybridge,if_tfv]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPSRLD;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#241#248#1#114#60#138#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSRLD;
@ -15725,10 +15809,17 @@
(
opcode : A_VPSRLD;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#244#248#1#114#60#138#22;
flags : [if_avx2,if_tfv]
),
(
opcode : A_VPSRLD;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#248#1#114#60#138#22;
flags : [if_avx2,if_tfv]
),
(
opcode : A_VPSRLD;
ops : 3;
@ -15802,9 +15893,16 @@
(
opcode : A_VPSRLQ;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#242#248#1#115#60#138#22;
flags : [if_avx,if_sandybridge,if_tfv]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPSRLQ;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#248#1#115#60#138#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSRLQ;
@ -15816,9 +15914,16 @@
(
opcode : A_VPSRLQ;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#242#244#248#1#115#60#138#22;
flags : [if_avx2,if_tfv]
flags : [if_avx2]
),
(
opcode : A_VPSRLQ;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#244#248#1#115#60#138#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VPSRLQ;
@ -15858,9 +15963,16 @@
(
opcode : A_VPSRLW;
ops : 3;
optypes : (ot_xmmreg_mz,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#248#1#113#60#138#22;
flags : [if_avx,if_sandybridge,if_tfvm]
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPSRLW;
ops : 3;
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_immediate or ot_bits8,ot_none);
code : #232#241#248#1#113#60#138#22;
flags : [if_avx512,if_tfvm]
),
(
opcode : A_VPSRLW;
@ -15872,9 +15984,16 @@
(
opcode : A_VPSRLW;
ops : 3;
optypes : (ot_ymmreg_mz,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#242#244#248#1#113#60#138#22;
flags : [if_avx2,if_tfvm]
flags : [if_avx2]
),
(
opcode : A_VPSRLW;
ops : 3;
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#248#1#113#60#138#22;
flags : [if_avx512,if_tfvm]
),
(
opcode : A_VPSRLW;
@ -20206,7 +20325,7 @@
opcode : A_VFNMADD231SD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
code : #223#241#242#243#249#1#189#61#80;
code : #223#232#234#241#242#243#249#1#189#61#80;
flags : [if_fma,if_t1s]
),
(
@ -22501,7 +22620,7 @@
(
opcode : A_VCVTUDQ2PD;
ops : 2;
optypes : (ot_zmmreg_mz,ot_ymmreg_er,ot_none,ot_none);
optypes : (ot_zmmreg_mz,ot_ymmreg,ot_none,ot_none);
code : #219#232#233#248#1#122#72;
flags : [if_avx512]
),
@ -22669,10 +22788,17 @@
(
opcode : A_VCVTUSI2SD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg_er,ot_rm_gpr or ot_bits64,ot_none);
optypes : (ot_xmmreg,ot_xmmreg_er,ot_memory or ot_bits64,ot_none);
code : #220#232#234#248#1#123#61#80;
flags : [if_avx512,if_t1s]
),
(
opcode : A_VCVTUSI2SD;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg_er,ot_reg64,ot_none);
code : #220#232#234#248#1#123#61#80;
flags : [if_avx512]
),
(
opcode : A_VCVTUSI2SD;
ops : 3;
@ -23135,6 +23261,20 @@
code : #232#241#250#1#85#61#80#23;
flags : [if_avx512]
),
(
opcode : A_VFPCLASSPD;
ops : 3;
optypes : (ot_kreg_m,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#244#250#1#102#72#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VFPCLASSPD;
ops : 3;
optypes : (ot_kreg_m,ot_memory or ot_bits512,ot_immediate or ot_bits8,ot_none);
code : #232#233#234#241#250#1#102#72#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VFPCLASSPD;
ops : 3;
@ -23152,9 +23292,9 @@
(
opcode : A_VFPCLASSPD;
ops : 3;
optypes : (ot_kreg_m,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_kreg_m,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#234#241#244#250#1#102#72#22;
flags : [if_avx512,if_tfv]
flags : [if_avx512]
),
(
opcode : A_VFPCLASSPD;
@ -23166,9 +23306,9 @@
(
opcode : A_VFPCLASSPD;
ops : 3;
optypes : (ot_kreg_m,ot_zmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_kreg_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#233#234#241#250#1#102#72#22;
flags : [if_avx512,if_tfv]
flags : [if_avx512]
),
(
opcode : A_VFPCLASSPD;
@ -23177,6 +23317,20 @@
code : #232#233#234#241#250#1#102#72#22;
flags : [if_avx512,if_bcst8,if_tfv]
),
(
opcode : A_VFPCLASSPS;
ops : 3;
optypes : (ot_kreg_m,ot_memory or ot_bits256,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#250#1#102#72#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VFPCLASSPS;
ops : 3;
optypes : (ot_kreg_m,ot_memory or ot_bits512,ot_immediate or ot_bits8,ot_none);
code : #232#233#241#250#1#102#72#22;
flags : [if_avx512,if_tfv]
),
(
opcode : A_VFPCLASSPS;
ops : 3;
@ -23194,9 +23348,9 @@
(
opcode : A_VFPCLASSPS;
ops : 3;
optypes : (ot_kreg_m,ot_ymmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_kreg_m,ot_ymmreg,ot_immediate or ot_bits8,ot_none);
code : #232#241#244#250#1#102#72#22;
flags : [if_avx512,if_tfv]
flags : [if_avx512]
),
(
opcode : A_VFPCLASSPS;
@ -23208,9 +23362,9 @@
(
opcode : A_VFPCLASSPS;
ops : 3;
optypes : (ot_kreg_m,ot_zmmrm,ot_immediate or ot_bits8,ot_none);
optypes : (ot_kreg_m,ot_zmmreg,ot_immediate or ot_bits8,ot_none);
code : #232#233#241#250#1#102#72#22;
flags : [if_avx512,if_tfv]
flags : [if_avx512]
),
(
opcode : A_VFPCLASSPS;
@ -28642,21 +28796,21 @@
ops : 2;
optypes : (ot_mem128_m,ot_xmmreg,ot_none,ot_none);
code : #232#241#249#1#99#65;
flags : [if_avx512,if_t1s]
flags : [if_avx512,if_t1s8]
),
(
opcode : A_VPCOMPRESSB;
ops : 2;
optypes : (ot_mem256_m,ot_ymmreg,ot_none,ot_none);
code : #232#241#244#249#1#99#65;
flags : [if_avx512,if_t1s]
flags : [if_avx512,if_t1s8]
),
(
opcode : A_VPCOMPRESSB;
ops : 2;
optypes : (ot_mem512_m,ot_zmmreg,ot_none,ot_none);
code : #232#233#241#249#1#99#65;
flags : [if_avx512,if_t1s]
flags : [if_avx512,if_t1s8]
),
(
opcode : A_VPCOMPRESSB;
@ -28684,21 +28838,21 @@
ops : 2;
optypes : (ot_mem128_m,ot_xmmreg,ot_none,ot_none);
code : #232#234#241#249#1#99#65;
flags : [if_avx512,if_t1s]
flags : [if_avx512,if_t1s16]
),
(
opcode : A_VPCOMPRESSW;
ops : 2;
optypes : (ot_mem256_m,ot_ymmreg,ot_none,ot_none);
code : #232#234#241#244#249#1#99#65;
flags : [if_avx512,if_t1s]
flags : [if_avx512,if_t1s16]
),
(
opcode : A_VPCOMPRESSW;
ops : 2;
optypes : (ot_mem512_m,ot_zmmreg,ot_none,ot_none);
code : #232#233#234#241#249#1#99#65;
flags : [if_avx512,if_t1s]
flags : [if_avx512,if_t1s16]
),
(
opcode : A_VPCOMPRESSW;
@ -28892,85 +29046,85 @@
(
opcode : A_VPEXPANDB;
ops : 2;
optypes : (ot_mem128_m,ot_xmmreg,ot_none,ot_none);
code : #232#241#249#1#98#65;
flags : [if_avx512,if_t1s]
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_none,ot_none);
code : #232#241#249#1#98#72;
flags : [if_avx512,if_t1s8]
),
(
opcode : A_VPEXPANDB;
ops : 2;
optypes : (ot_mem256_m,ot_ymmreg,ot_none,ot_none);
code : #232#241#244#249#1#98#65;
flags : [if_avx512,if_t1s]
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_none,ot_none);
code : #232#241#244#249#1#98#72;
flags : [if_avx512,if_t1s8]
),
(
opcode : A_VPEXPANDB;
ops : 2;
optypes : (ot_mem512_m,ot_zmmreg,ot_none,ot_none);
code : #232#233#241#249#1#98#65;
flags : [if_avx512,if_t1s]
optypes : (ot_zmmreg_mz,ot_memory or ot_bits512,ot_none,ot_none);
code : #232#233#241#249#1#98#72;
flags : [if_avx512,if_t1s8]
),
(
opcode : A_VPEXPANDB;
ops : 2;
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_none,ot_none);
code : #232#241#249#1#98#65;
code : #232#241#249#1#98#72;
flags : [if_avx512]
),
(
opcode : A_VPEXPANDB;
ops : 2;
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_none,ot_none);
code : #232#241#244#249#1#98#65;
code : #232#241#244#249#1#98#72;
flags : [if_avx512]
),
(
opcode : A_VPEXPANDB;
ops : 2;
optypes : (ot_zmmreg_mz,ot_zmmreg,ot_none,ot_none);
code : #232#233#241#249#1#98#65;
code : #232#233#241#249#1#98#72;
flags : [if_avx512]
),
(
opcode : A_VPEXPANDW;
ops : 2;
optypes : (ot_mem128_m,ot_xmmreg,ot_none,ot_none);
code : #232#234#241#249#1#98#65;
flags : [if_avx512,if_t1s]
optypes : (ot_xmmreg_mz,ot_memory or ot_bits128,ot_none,ot_none);
code : #232#234#241#249#1#98#72;
flags : [if_avx512,if_t1s16]
),
(
opcode : A_VPEXPANDW;
ops : 2;
optypes : (ot_mem256_m,ot_ymmreg,ot_none,ot_none);
code : #232#234#241#244#249#1#98#65;
flags : [if_avx512,if_t1s]
optypes : (ot_ymmreg_mz,ot_memory or ot_bits256,ot_none,ot_none);
code : #232#234#241#244#249#1#98#72;
flags : [if_avx512,if_t1s16]
),
(
opcode : A_VPEXPANDW;
ops : 2;
optypes : (ot_mem512_m,ot_zmmreg,ot_none,ot_none);
code : #232#233#234#241#249#1#98#65;
flags : [if_avx512,if_t1s]
optypes : (ot_zmmreg_mz,ot_memory or ot_bits512,ot_none,ot_none);
code : #232#233#234#241#249#1#98#72;
flags : [if_avx512,if_t1s16]
),
(
opcode : A_VPEXPANDW;
ops : 2;
optypes : (ot_xmmreg_mz,ot_xmmreg,ot_none,ot_none);
code : #232#234#241#249#1#98#65;
code : #232#234#241#249#1#98#72;
flags : [if_avx512]
),
(
opcode : A_VPEXPANDW;
ops : 2;
optypes : (ot_ymmreg_mz,ot_ymmreg,ot_none,ot_none);
code : #232#234#241#244#249#1#98#65;
code : #232#234#241#244#249#1#98#72;
flags : [if_avx512]
),
(
opcode : A_VPEXPANDW;
ops : 2;
optypes : (ot_zmmreg_mz,ot_zmmreg,ot_none,ot_none);
code : #232#233#234#241#249#1#98#65;
code : #232#233#234#241#249#1#98#72;
flags : [if_avx512]
),
(

View File

@ -210,6 +210,8 @@ type
IF_T4, { disp8 - tuple - 4 }
IF_T8, { disp8 - tuple - 8 }
IF_T1S, { disp8 - tuple - 1 scalar }
IF_T1S8,
IF_T1S16,
IF_T1F32,
IF_T1F64,
IF_TMDDUP,
@ -565,11 +567,6 @@ begin
;
//TG TODO delete
if aInst = 'vpmovw2m' then
begin
sSuffix := sSuffix;
end;
for il_Op := 1 to 4 do
begin
@ -632,6 +629,15 @@ begin
Item.Values.Add('XMM18' + sSuffix);
Item.Values.Add('XMM27' + sSuffix);
Item.Values.Add('XMM31' + sSuffix);
if sSuffix <> '' then
begin
Item.Values.Add('XMM0');
Item.Values.Add('XMM9');
Item.Values.Add('XMM18');
Item.Values.Add('XMM27');
Item.Values.Add('XMM31');
end;
end
else
begin
@ -640,6 +646,15 @@ begin
Item.Values.Add('XMM8' + sSuffix);
Item.Values.Add('XMM12' + sSuffix);
Item.Values.Add('XMM15' + sSuffix);
if sSuffix <> '' then
begin
Item.Values.Add('XMM0');
Item.Values.Add('XMM4');
Item.Values.Add('XMM8');
Item.Values.Add('XMM12');
Item.Values.Add('XMM15');
end;
end;
end;
end
@ -677,17 +692,26 @@ begin
if FAVX512 then
begin
Item.Values.Add('XMM0' + sSuffix);
Item.Values.Add('XMM0');
Item.Values.Add('XMM9' + sSuffix);
Item.Values.Add('XMM9');
Item.Values.Add('XMM18' + sSuffix);
Item.Values.Add('XMM18');
Item.Values.Add('XMM27' + sSuffix);
Item.Values.Add('XMM27');
Item.Values.Add('XMM31' + sSuffix);
Item.Values.Add('XMM31');
end
else
begin
Item.Values.Add('XMM0' + sSuffix);
Item.Values.Add('XMM0');
Item.Values.Add('XMM4' + sSuffix);
Item.Values.Add('XMM4');
Item.Values.Add('XMM8' + sSuffix);
Item.Values.Add('XMM8');
Item.Values.Add('XMM12' + sSuffix);
Item.Values.Add('XMM15');
Item.Values.Add('XMM15' + sSuffix);
end;
@ -733,18 +757,28 @@ begin
if FAVX512 then
begin
Item.Values.Add('XMM0' + sSuffix);
Item.Values.Add('XMM0');
Item.Values.Add('XMM9' + sSuffix);
Item.Values.Add('XMM9');
Item.Values.Add('XMM18' + sSuffix);
Item.Values.Add('XMM18');
Item.Values.Add('XMM27' + sSuffix);
Item.Values.Add('XMM27');
Item.Values.Add('XMM31' + sSuffix);
Item.Values.Add('XMM31');
end
else
begin
Item.Values.Add('XMM0' + sSuffix);
Item.Values.Add('XMM0');
Item.Values.Add('XMM4' + sSuffix);
Item.Values.Add('XMM4');
Item.Values.Add('XMM8' + sSuffix);
Item.Values.Add('XMM8');
Item.Values.Add('XMM12' + sSuffix);
Item.Values.Add('XMM12');
Item.Values.Add('XMM15' + sSuffix);
Item.Values.Add('XMM15');
end;
//Item.Values.Add('[RIP]');
@ -793,18 +827,28 @@ begin
if FAVX512 then
begin
Item.Values.Add('XMM0' + sSuffix);
Item.Values.Add('XMM0');
Item.Values.Add('XMM9' + sSuffix);
Item.Values.Add('XMM9');
Item.Values.Add('XMM18' + sSuffix);
Item.Values.Add('XMM18');
Item.Values.Add('XMM27' + sSuffix);
Item.Values.Add('XMM27');
Item.Values.Add('XMM31' + sSuffix);
Item.Values.Add('XMM31');
end
else
begin
Item.Values.Add('XMM0' + sSuffix);
Item.Values.Add('XMM0');
Item.Values.Add('XMM4' + sSuffix);
Item.Values.Add('XMM4');
Item.Values.Add('XMM8' + sSuffix);
Item.Values.Add('XMM8');
Item.Values.Add('XMM12' + sSuffix);
Item.Values.Add('XMM12');
Item.Values.Add('XMM15' + sSuffix);
Item.Values.Add('XMM15');
end;
//Item.Values.Add('[RIP]');
@ -855,6 +899,15 @@ begin
Item.Values.Add('YMM18' + sSuffix);
Item.Values.Add('YMM27' + sSuffix);
Item.Values.Add('YMM31' + sSuffix);
if sSuffix <> '' then
begin
Item.Values.Add('YMM0');
Item.Values.Add('YMM9');
Item.Values.Add('YMM18');
Item.Values.Add('YMM27');
Item.Values.Add('YMM31');
end;
end
else
begin
@ -863,6 +916,15 @@ begin
Item.Values.Add('YMM8' + sSuffix);
Item.Values.Add('YMM12' + sSuffix);
Item.Values.Add('YMM15' + sSuffix);
if sSuffix <> '' then
begin
Item.Values.Add('YMM0');
Item.Values.Add('YMM4');
Item.Values.Add('YMM8');
Item.Values.Add('YMM12');
Item.Values.Add('YMM15');
end;
end;
end;
end
@ -903,8 +965,17 @@ begin
Item.Values.Add('YMM0' + sSuffix);
Item.Values.Add('YMM9' + sSuffix);
Item.Values.Add('YMM18' + sSuffix);
Item.Values.Add('YMM27' + sSuffix);
Item.Values.Add('YMM27' + sSuffix);
Item.Values.Add('YMM31' + sSuffix);
if sSuffix <> '' then
begin
Item.Values.Add('YMM0');
Item.Values.Add('YMM9');
Item.Values.Add('YMM18');
Item.Values.Add('YMM27');
Item.Values.Add('YMM31');
end;
end
else
begin
@ -913,6 +984,15 @@ begin
Item.Values.Add('YMM8' + sSuffix);
Item.Values.Add('YMM12' + sSuffix);
Item.Values.Add('YMM15' + sSuffix);
if sSuffix <> '' then
begin
Item.Values.Add('YMM0');
Item.Values.Add('YMM4');
Item.Values.Add('YMM8');
Item.Values.Add('YMM12');
Item.Values.Add('YMM15');
end;
end;
MemRegBaseIndexCombi(sl_prefix, '', FReg64Base, FReg64Index, Item.Values);
@ -960,6 +1040,15 @@ begin
Item.Values.Add('ZMM18' + sSuffix);
Item.Values.Add('ZMM27' + sSuffix);
Item.Values.Add('ZMM31' + sSuffix);
if sSuffix <> '' then
begin
Item.Values.Add('ZMM0');
Item.Values.Add('ZMM9');
Item.Values.Add('ZMM18');
Item.Values.Add('ZMM27');
Item.Values.Add('ZMM31');
end;
end
else
begin
@ -1010,6 +1099,15 @@ begin
Item.Values.Add('ZMM18' + sSuffix);
Item.Values.Add('ZMM27' + sSuffix);
Item.Values.Add('ZMM31' + sSuffix);
if sSuffix <> '' then
begin
Item.Values.Add('ZMM0');
Item.Values.Add('ZMM9');
Item.Values.Add('ZMM18');
Item.Values.Add('ZMM27');
Item.Values.Add('ZMM31');
end;
end
else
begin
@ -1280,11 +1378,15 @@ begin
if x64 then
begin
VectorMemRegBaseIndexCombi(sl_prefix, sSuffix, FReg64Base, FReg64XMMIndex, Item.Values);
VectorMemRegBaseIndexCombi(sl_prefix, sSuffix, FReg64Base, FReg64XMMIndex, Item.Values);
if sSuffix <> '' then
VectorMemRegBaseIndexCombi(sl_prefix, '', FReg64Base, FReg64XMMIndex, Item.Values);
end
else
begin
VectorMemRegBaseIndexCombi(sl_prefix, sSuffix, FReg32Base, FReg32XMMIndex, Item.Values);
if sSuffix <> '' then
VectorMemRegBaseIndexCombi(sl_prefix, '', FReg32Base, FReg32XMMIndex, Item.Values);
end;
end
else if AnsiSameText(sl_Operand, 'XMEM64') or
@ -1311,10 +1413,14 @@ begin
if x64 then
begin
VectorMemRegBaseIndexCombi(sl_prefix, sSuffix, FReg64Base, FReg64XMMIndex, Item.Values);
if sSuffix <> '' then
VectorMemRegBaseIndexCombi(sl_prefix, '', FReg64Base, FReg64XMMIndex, Item.Values);
end
else
begin
VectorMemRegBaseIndexCombi(sl_prefix, sSuffix, FReg32Base, FReg32XMMIndex, Item.Values);
if sSuffix <> '' then
VectorMemRegBaseIndexCombi(sl_prefix, '', FReg32Base, FReg32XMMIndex, Item.Values);
end;
end
@ -1342,10 +1448,14 @@ begin
if x64 then
begin
VectorMemRegBaseIndexCombi(sl_prefix, sSuffix, FReg64Base, FReg64YMMIndex, Item.Values);
if sSuffix <> '' then
VectorMemRegBaseIndexCombi(sl_prefix, '', FReg64Base, FReg64YMMIndex, Item.Values);
end
else
begin
VectorMemRegBaseIndexCombi(sl_prefix, sSuffix, FReg32Base, FReg32YMMIndex, Item.Values);
if sSuffix <> '' then
VectorMemRegBaseIndexCombi(sl_prefix, '', FReg32Base, FReg32YMMIndex, Item.Values);
end;
end
@ -1373,10 +1483,14 @@ begin
if x64 then
begin
VectorMemRegBaseIndexCombi(sl_prefix, sSuffix, FReg64Base, FReg64YMMIndex, Item.Values);
if sSuffix <> '' then
VectorMemRegBaseIndexCombi(sl_prefix, '', FReg64Base, FReg64YMMIndex, Item.Values);
end
else
begin
VectorMemRegBaseIndexCombi(sl_prefix, sSuffix, FReg32Base, FReg32YMMIndex, Item.Values);
if sSuffix <> '' then
VectorMemRegBaseIndexCombi(sl_prefix, '', FReg32Base, FReg32YMMIndex, Item.Values);
end;
end
@ -1404,10 +1518,14 @@ begin
if x64 then
begin
VectorMemRegBaseIndexCombi(sl_prefix, sSuffix, FReg64Base, FReg64ZMMIndex, Item.Values);
if sSuffix <> '' then
VectorMemRegBaseIndexCombi(sl_prefix, '', FReg64Base, FReg64ZMMIndex, Item.Values);
end
else
begin
VectorMemRegBaseIndexCombi(sl_prefix, sSuffix, FReg32Base, FReg32ZMMIndex, Item.Values);
if sSuffix <> '' then
VectorMemRegBaseIndexCombi(sl_prefix, '', FReg32Base, FReg32ZMMIndex, Item.Values);
end;
end
@ -1435,10 +1553,14 @@ begin
if x64 then
begin
VectorMemRegBaseIndexCombi(sl_prefix, sSuffix, FReg64Base, FReg64ZMMIndex, Item.Values);
if sSuffix <> '' then
VectorMemRegBaseIndexCombi(sl_prefix, '', FReg64Base, FReg64ZMMIndex, Item.Values);
end
else
begin
VectorMemRegBaseIndexCombi(sl_prefix, sSuffix, FReg32Base, FReg32ZMMIndex, Item.Values);
if sSuffix <> '' then
VectorMemRegBaseIndexCombi(sl_prefix, '', FReg32Base, FReg32ZMMIndex, Item.Values);
end;
end

View File

@ -34,12 +34,21 @@ uses SysUtils, AsmTestGenerator, Dialogs;
{ TAVXTestGenerator }
constructor TAVXTestGenerator.Create;
var
i: integer;
begin
inherited;
FOpCodeList := TStringList.Create;
FOpCodeList.Duplicates := dupIgnore;
FOpCodeList.Sorted := true;
Init;
FOpCodeList.Sorted := false;
for i := 0 to FOpCodeList.Count - 1 do
FOpCodeList[i] := AnsiLowerCase(FOpCodeList[i]);
end;
destructor TAVXTestGenerator.Destroy;
@ -423,7 +432,7 @@ begin
FOpCodeList.Add('vcvtdq2pd,1,1,1,YMMREG_MZ,XMMREG,,');
FOpCodeList.Add('vcvtdq2pd,1,1,1,YMMREG_MZ,4B32,,');
FOpCodeList.Add('vcvtdq2pd,1,1,1,ZMMREG_MZ,MEM256,,');
FOpCodeList.Add('vcvtdq2pd,1,1,1,ZMMREG_MZ,YMMREG_ER,,');
FOpCodeList.Add('vcvtdq2pd,1,1,1,ZMMREG_MZ,YMMREG,,');
FOpCodeList.Add('vcvtdq2pd,1,1,1,ZMMREG_MZ,8B32,,');
FOpCodeList.Add('vcvtdq2ps,1,1,1,XMMREG_MZ,XMMRM,,');
@ -441,7 +450,7 @@ begin
FOpCodeList.Add('vcvtpd2dq,1,1,1,XMMREG_MZ,YMMREG,,');
FOpCodeList.Add('vcvtpd2dq,1,1,1,YMMREG_MZ,MEM512,,');
FOpCodeList.Add('vcvtpd2dq,1,1,1,YMMREG_MZ,8B64,,');
FOpCodeList.Add('vcvtpd2dq,1,1,1,YMMREG_MZ,ZMMREG_ER,,');
FOpCodeList.Add('vcvtpd2dq,1,1,1,YMMREG_MZ,ZMMREG,,');
FOpCodeList.Add('vcvtpd2ps,1,1,1,XMMREG_MZ,MEM128,,');
FOpCodeList.Add('vcvtpd2ps,1,1,1,XMMREG_MZ,MEM256,,');
FOpCodeList.Add('vcvtpd2ps,1,1,1,XMMREG_MZ,XMMREG,,');
@ -487,9 +496,11 @@ begin
FOpCodeList.Add('vcvtsd2si,1,1,1,REG64,XMMREG_ER,,');
FOpCodeList.Add('vcvtsd2ss,1,1,1,XMMREG_MZ,XMMREG,MEM64,');
FOpCodeList.Add('vcvtsd2ss,1,1,1,XMMREG_MZ,XMMREG,XMMREG_ER,');
FOpCodeList.Add('vcvtsi2sd,1,1,1,XMMREG,XMMREG_ER,REG32,');
FOpCodeList.Add('vcvtsi2sd,1,1,1,XMMREG,XMMREG,REG32,');
FOpCodeList.Add('vcvtsi2sd,1,1,1,XMMREG,XMMREG,MEM32,');
FOpCodeList.Add('vcvtsi2sd,0,1,1,XMMREG,XMMREG_ER,REG64,');
FOpCodeList.Add('vcvtsi2ss,1,1,1,XMMREG,XMMREG_ER,REG32,');
FOpCodeList.Add('vcvtsi2sd,0,1,1,XMMREG,XMMREG,MEM64,');
FOpCodeList.Add('vcvtsi2ss,1,1,1,XMMREG,XMMREG,REG32,');
FOpCodeList.Add('vcvtsi2ss,0,1,1,XMMREG,XMMREG_ER,REG64,');
FOpCodeList.Add('vcvtss2sd,1,1,1,XMMREG_MZ,XMMREG,MEM32,');
FOpCodeList.Add('vcvtss2sd,1,1,1,XMMREG_MZ,XMMREG,XMMREG_SAE,');
@ -1389,18 +1400,18 @@ begin
FOpCodeList.Add('vpbroadcastb,1,1,1,XMMREG_MZ,REG8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,XMMREG_MZ,REG32,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,XMMREG_MZ,REG64,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,XMMREG_MZ,REG16,,');
//FOpCodeList.Add('vpbroadcastb,1,1,1,XMMREG_MZ,REG16,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,YMMREG_MZ,MEM8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,YMMREG_MZ,XMMREG,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,YMMREG_MZ,REG8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,YMMREG_MZ,REG32,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,YMMREG_MZ,REG64,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,YMMREG_MZ,REG16,,');
//FOpCodeList.Add('vpbroadcastb,1,1,1,YMMREG_MZ,REG16,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ZMMREG_MZ,MEM8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ZMMREG_MZ,REG8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ZMMREG_MZ,REG32,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ZMMREG_MZ,REG64,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ZMMREG_MZ,REG16,,');
//FOpCodeList.Add('vpbroadcastb,1,1,1,ZMMREG_MZ,REG16,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ZMMREG_MZ,XMMREG,,');
FOpCodeList.Add('vpbroadcastd,1,1,1,XMMREG_MZ,MEM32,,');
FOpCodeList.Add('vpbroadcastd,1,1,1,XMMREG_MZ,XMMREG,,');
@ -1547,8 +1558,8 @@ begin
FOpCodeList.Add('vfmadd213pd,1,1,0,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('vfmadd231pd,1,1,0,XMMREG,XMMREG,XMMRM,');
FOpCodeList.Add('vfmadd231pd,1,1,0,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('vfmaddpd,1,1,0,XMMREG,XMMREG,XMMRM,XMMREG');
FOpCodeList.Add('vfmaddpd,1,1,0,XMMREG,XMMREG,XMMREG,XMMRM');
//FOpCodeList.Add('vfmaddpd,1,1,0,XMMREG,XMMREG,XMMRM,XMMREG');
//FOpCodeList.Add('vfmaddpd,1,1,0,XMMREG,XMMREG,XMMREG,XMMRM');
FOpCodeList.Add('vfmadd132ps,1,1,0,XMMREG,XMMREG,XMMRM,');
FOpCodeList.Add('vfmadd132ps,1,1,0,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('vfmadd213ps,1,1,0,XMMREG,XMMREG,XMMRM,');
@ -1888,7 +1899,7 @@ begin
FOpCodeList.Add('vcvtudq2pd,1,1,1,ymmreg_mz,4b32,,');
FOpCodeList.Add('vcvtudq2pd,1,1,1,zmmreg_mz,mem256,,');
FOpCodeList.Add('vcvtudq2pd,1,1,1,zmmreg_mz,8b32,,');
FOpCodeList.Add('vcvtudq2pd,1,1,1,zmmreg_mz,ymmreg_er,,');
FOpCodeList.Add('vcvtudq2pd,1,1,1,zmmreg_mz,ymmreg,,');
FOpCodeList.Add('vcvtudq2ps,1,1,1,xmmreg_mz,xmmrm,,');
FOpCodeList.Add('vcvtudq2ps,1,1,1,xmmreg_mz,4b32,,');
FOpCodeList.Add('vcvtudq2ps,1,1,1,ymmreg_mz,ymmrm,,');
@ -2439,24 +2450,6 @@ begin
FOpCodeList.Add('vpblendmw,1,1,1,xmmreg_mz,xmmreg,xmmrm,');
FOpCodeList.Add('vpblendmw,1,1,1,ymmreg_mz,ymmreg,ymmrm,');
FOpCodeList.Add('vpblendmw,1,1,1,zmmreg_mz,zmmreg,zmmrm,');
FOpCodeList.Add('vpbroadcastb,1,1,1,xmmreg_mz,mem8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,xmmreg_mz,reg16,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,xmmreg_mz,reg32,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,xmmreg_mz,reg64,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,xmmreg_mz,reg8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,xmmreg_mz,xmmreg,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ymmreg_mz,mem8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ymmreg_mz,reg16,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ymmreg_mz,reg32,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ymmreg_mz,reg64,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ymmreg_mz,reg8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ymmreg_mz,xmmreg,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,zmmreg_mz,mem8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,zmmreg_mz,reg16,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,zmmreg_mz,reg32,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,zmmreg_mz,reg64,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,zmmreg_mz,reg8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,zmmreg_mz,xmmreg,,');
FOpCodeList.Add('vpbroadcastd,1,1,1,xmmreg_mz,mem32,,');
FOpCodeList.Add('vpbroadcastd,1,1,1,xmmreg_mz,reg32,,');
FOpCodeList.Add('vpbroadcastd,1,1,1,xmmreg_mz,xmmreg,,');
@ -2481,21 +2474,6 @@ begin
FOpCodeList.Add('vpbroadcastq,1,1,1,zmmreg_mz,mem64,,');
FOpCodeList.Add('vpbroadcastq,1,1,1,zmmreg_mz,reg64,,');
FOpCodeList.Add('vpbroadcastq,1,1,1,zmmreg_mz,xmmreg,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,xmmreg_mz,mem16,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,xmmreg_mz,reg16,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,xmmreg_mz,reg32,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,xmmreg_mz,reg64,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,xmmreg_mz,xmmreg,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,ymmreg_mz,mem16,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,ymmreg_mz,reg16,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,ymmreg_mz,reg32,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,ymmreg_mz,reg64,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,ymmreg_mz,xmmreg,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,zmmreg_mz,mem16,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,zmmreg_mz,reg16,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,zmmreg_mz,reg32,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,zmmreg_mz,reg64,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,zmmreg_mz,xmmreg,,');
FOpCodeList.Add('vpcmpb,1,1,1,kreg_m,xmmreg,xmmrm,imm8');
FOpCodeList.Add('vpcmpb,1,1,1,kreg_m,ymmreg,ymmrm,imm8');
FOpCodeList.Add('vpcmpb,1,1,1,kreg_m,zmmreg,zmmrm,imm8');
@ -3182,15 +3160,15 @@ begin
FOpCodeList.Add('VPDPWSSDS,1,1,1,ymmreg_mz,ymmreg,8B32,');
FOpCodeList.Add('VPDPWSSDS,1,1,1,zmmreg_mz,zmmreg,zmmrm,');
FOpCodeList.Add('VPDPWSSDS,1,1,1,zmmreg_mz,zmmreg,16B32,');
FOpCodeList.Add('VPEXPANDB,1,1,1,mem128_m,xmmreg,,');
FOpCodeList.Add('VPEXPANDB,1,1,1,mem256_m,ymmreg,,');
FOpCodeList.Add('VPEXPANDB,1,1,1,mem512_m,zmmreg,,');
FOpCodeList.Add('VPEXPANDB,1,1,1,xmmreg_mz,mem128,,');
FOpCodeList.Add('VPEXPANDB,1,1,1,ymmreg_mz,mem256,,');
FOpCodeList.Add('VPEXPANDB,1,1,1,zmmreg_mz,mem512,,');
FOpCodeList.Add('VPEXPANDB,1,1,1,xmmreg_mz,xmmreg,,');
FOpCodeList.Add('VPEXPANDB,1,1,1,ymmreg_mz,ymmreg,,');
FOpCodeList.Add('VPEXPANDB,1,1,1,zmmreg_mz,zmmreg,,');
FOpCodeList.Add('VPEXPANDW,1,1,1,mem128_m,xmmreg,,');
FOpCodeList.Add('VPEXPANDW,1,1,1,mem256_m,ymmreg,,');
FOpCodeList.Add('VPEXPANDW,1,1,1,mem512_m,zmmreg,,');
FOpCodeList.Add('VPEXPANDW,1,1,1,xmmreg_mz,mem128,,');
FOpCodeList.Add('VPEXPANDW,1,1,1,ymmreg_mz,mem256,,');
FOpCodeList.Add('VPEXPANDW,1,1,1,zmmreg_mz,mem512,,');
FOpCodeList.Add('VPEXPANDW,1,1,1,xmmreg_mz,xmmreg,,');
FOpCodeList.Add('VPEXPANDW,1,1,1,ymmreg_mz,ymmreg,,');
FOpCodeList.Add('VPEXPANDW,1,1,1,zmmreg_mz,zmmreg,,');
@ -3276,6 +3254,7 @@ function TAVXTestGenerator.InternalMakeTestFiles(aX64, aAVX512, aSAE: boolean; a
var
i: integer;
sData: string;
sDestFile: string;
sl: TStringList;
slAsm: TStringList;
LastOpCode: String;
@ -3316,20 +3295,6 @@ begin
NewOpCode := ansilowercase(sl[0]);
if NewOpCode <> '' then
begin
if NewOpCode <> LastOpCode then
begin
if LastOpCode <> '' then
begin
SaveFile(slAsm, LastOpCode, aDestPath, aFileExt, aHeaderList, aFooterList);
writeln(format('%s%s%s', [aDestPath, LastOpCode, aFileExt]));
slAsm.Clear;
LastOpCode := NewOpCode;
end
else LastOpCode := NewOpCode;
end;
if (not(aX64) and (sl[1] = '1')) or // i386
(aX64 and (sl[2] = '1')) then // x86_64
begin
@ -3341,16 +3306,17 @@ begin
slAsm.Add(' ' + sl[0]);
end
else TAsmTestGenerator.CalcTestData(aX64, aAVX512 and (sl[3] = '1'), aSAE, sl[0], sl[4], sl[5], sl[6], sl[7], slAsm);
sDestFile := format('%s_%d%s', [NewOpcode, i, trim(copy(sl[4],1,1) + copy(sl[5],1,1) + copy(sl[6],1,1) + copy(sl[7],1,1))]);
SaveFile(slAsm, sDestFile, aDestPath, aFileExt, aHeaderList, aFooterList);
writeln(format('%s%s%s', [aDestPath, sDestFile, aFileExt]));
slAsm.Clear;
end;
end;
end;
if NewOpCode <> '' then
begin
SaveFile(slAsm, NewOpCode, aDestPath, aFileExt, aHeaderList, aFooterList);
writeln(format('%s%s%s', [aDestPath, NewOpCode, aFileExt]));
end;
finally
FreeAndNil(slAsm);
end;