+ patch by Marģers to support the x86 assembler instructions blsi, blsr, blsmsk, adcx, adox, movbe, pclmulqdq, resolves #34815 and #34799

+ avxopcodes tests also movbe and pclmulqdq

git-svn-id: trunk@40951 -
This commit is contained in:
florian 2019-01-20 18:50:12 +00:00
parent 8c66e9a2eb
commit 4f0da5fcc3
24 changed files with 380 additions and 5 deletions

View File

@ -684,6 +684,8 @@
'aesimc',
'aeskeygenassist',
'rdtscp',
'movbe',
'pclmulqdq',
'vaddpd',
'vaddps',
'vaddsd',
@ -1009,6 +1011,9 @@
'vzeroupper',
'andn',
'bextr',
'blsi',
'blsmsk',
'blsr',
'tzcnt',
'bzhi',
'mulx',
@ -1018,6 +1023,8 @@
'sarx',
'shlx',
'shrx',
'adcx',
'adox',
'vbroadcasti128',
'vextracti128',
'vinserti128',

View File

@ -684,6 +684,8 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufINT,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
@ -1021,6 +1023,11 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufINT,
attsufINT,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,

View File

@ -684,6 +684,8 @@
'aesimc',
'aeskeygenassist',
'rdtscp',
'movbe',
'pclmulqdq',
'vaddpd',
'vaddps',
'vaddsd',
@ -1009,6 +1011,9 @@
'vzeroupper',
'andn',
'bextr',
'blsi',
'blsmsk',
'blsr',
'tzcnt',
'bzhi',
'mulx',
@ -1018,6 +1023,8 @@
'sarx',
'shlx',
'shrx',
'adcx',
'adox',
'vbroadcasti128',
'vextracti128',
'vinserti128',

View File

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

View File

@ -684,6 +684,8 @@ A_AESDECLAST,
A_AESIMC,
A_AESKEYGENASSIST,
A_RDTSCP,
A_MOVBE,
A_PCLMULQDQ,
A_VADDPD,
A_VADDPS,
A_VADDSD,
@ -1009,6 +1011,9 @@ A_VZEROALL,
A_VZEROUPPER,
A_ANDN,
A_BEXTR,
A_BLSI,
A_BLSMSK,
A_BLSR,
A_TZCNT,
A_BZHI,
A_MULX,
@ -1018,6 +1023,8 @@ A_RORX,
A_SARX,
A_SHLX,
A_SHRX,
A_ADCX,
A_ADOX,
A_VBROADCASTI128,
A_VEXTRACTI128,
A_VINSERTI128,

View File

@ -684,6 +684,8 @@
(Ch: [Ch_All]),
(Ch: [Ch_All]),
(Ch: [Ch_WEAX, Ch_WEDX]),
(Ch: [Ch_Rop1, Ch_Wop2]),
(Ch: [Ch_All]),
(Ch: [Ch_Wop3, Ch_Rop2, Ch_Rop1]),
(Ch: [Ch_Wop3, Ch_Rop2, Ch_Rop1]),
(Ch: [Ch_Wop3, Ch_Rop2, Ch_Rop1]),
@ -1009,6 +1011,9 @@
(Ch: [Ch_All]),
(Ch: [Ch_Rop1, Ch_Rop2, Ch_Wop3]),
(Ch: [Ch_Rop1, Ch_Rop2, Ch_Wop3]),
(Ch: [Ch_Rop1, Ch_Wop2, Ch_W0OverflowFlag, Ch_WCarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WUParityFlag, Ch_WUAuxiliaryFlag]),
(Ch: [Ch_Rop1, Ch_Wop2, Ch_W0OverflowFlag, Ch_WCarryFlag, Ch_WSignFlag, Ch_W0ZeroFlag, Ch_WUParityFlag, Ch_WUAuxiliaryFlag]),
(Ch: [Ch_Rop1, Ch_Wop2, Ch_W0OverflowFlag, Ch_WCarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WUParityFlag, Ch_WUAuxiliaryFlag]),
(Ch: [Ch_Wop2, Ch_WFlags, Ch_Rop1]),
(Ch: [Ch_Rop1, Ch_Rop2, Ch_Wop3]),
(Ch: [Ch_REDX, Ch_Rop1, Ch_Wop2, Ch_Wop3]),
@ -1018,6 +1023,8 @@
(Ch: [Ch_Rop1, Ch_Rop2, Ch_Wop3]),
(Ch: [Ch_Rop1, Ch_Rop2, Ch_Wop3]),
(Ch: [Ch_Rop1, Ch_Rop2, Ch_Wop3]),
(Ch: [Ch_Rop1, Ch_Mop2, Ch_RWCarryFlag]),
(Ch: [Ch_Rop1, Ch_Mop2, Ch_RWOverflowFlag]),
(Ch: [Ch_All]),
(Ch: [Ch_All]),
(Ch: [Ch_All]),

View File

@ -8708,6 +8708,27 @@
code : #3#15#1#249;
flags : [if_sse4,if_sm]
),
(
opcode : A_MOVBE;
ops : 2;
optypes : (ot_reg16 or ot_bits32 or ot_bits64,ot_memory or ot_bits16 or ot_bits32 or ot_bits64,ot_none,ot_none);
code : #208#3#15#56#240#72;
flags : [if_movbe,if_sm]
),
(
opcode : A_MOVBE;
ops : 2;
optypes : (ot_memory or ot_bits16 or ot_bits32 or ot_bits64,ot_reg16 or ot_bits32 or ot_bits64,ot_none,ot_none);
code : #209#3#15#56#241#65;
flags : [if_movbe,if_sm]
),
(
opcode : A_PCLMULQDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
code : #241#3#15#58#68#72#22;
flags : [if_clmul,if_sandybridge]
),
(
opcode : A_VADDPD;
ops : 3;
@ -13608,6 +13629,27 @@
code : #242#249#1#247#62#72;
flags : [if_bmi1,if_prot]
),
(
opcode : A_BLSI;
ops : 2;
optypes : (ot_reg32,ot_rm_gpr or ot_bits32,ot_none,ot_none);
code : #242#249#1#243#60#139;
flags : [if_bmi1,if_prot]
),
(
opcode : A_BLSMSK;
ops : 2;
optypes : (ot_reg32,ot_rm_gpr or ot_bits32,ot_none,ot_none);
code : #242#249#1#243#60#138;
flags : [if_bmi1,if_prot]
),
(
opcode : A_BLSR;
ops : 2;
optypes : (ot_reg32,ot_rm_gpr or ot_bits32,ot_none,ot_none);
code : #242#249#1#243#60#137;
flags : [if_bmi1,if_prot]
),
(
opcode : A_TZCNT;
ops : 2;
@ -13671,6 +13713,20 @@
code : #220#242#249#1#247#62#72;
flags : [if_bmi2,if_prot]
),
(
opcode : A_ADCX;
ops : 2;
optypes : (ot_reg32,ot_rm_gpr or ot_bits32,ot_none,ot_none);
code : #241#3#15#56#246#72;
flags : [if_adx]
),
(
opcode : A_ADOX;
ops : 2;
optypes : (ot_reg32,ot_rm_gpr or ot_bits32,ot_none,ot_none);
code : #219#3#15#56#246#72;
flags : [if_adx]
),
(
opcode : A_VBROADCASTI128;
ops : 2;

View File

@ -684,6 +684,8 @@
'aesimc',
'aeskeygenassist',
'rdtscp',
'movbe',
'pclmulqdq',
'vaddpd',
'vaddps',
'vaddsd',
@ -1009,6 +1011,9 @@
'vzeroupper',
'andn',
'bextr',
'blsi',
'blsmsk',
'blsr',
'tzcnt',
'bzhi',
'mulx',
@ -1018,6 +1023,8 @@
'sarx',
'shlx',
'shrx',
'adcx',
'adox',
'vbroadcasti128',
'vextracti128',
'vinserti128',

View File

@ -684,6 +684,8 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufINT,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
@ -1021,6 +1023,11 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufINT,
attsufINT,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,

View File

@ -684,6 +684,8 @@
'aesimc',
'aeskeygenassist',
'rdtscp',
'movbe',
'pclmulqdq',
'vaddpd',
'vaddps',
'vaddsd',
@ -1009,6 +1011,9 @@
'vzeroupper',
'andn',
'bextr',
'blsi',
'blsmsk',
'blsr',
'tzcnt',
'bzhi',
'mulx',
@ -1018,6 +1023,8 @@
'sarx',
'shlx',
'shrx',
'adcx',
'adox',
'vbroadcasti128',
'vextracti128',
'vinserti128',

View File

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

View File

@ -684,6 +684,8 @@ A_AESDECLAST,
A_AESIMC,
A_AESKEYGENASSIST,
A_RDTSCP,
A_MOVBE,
A_PCLMULQDQ,
A_VADDPD,
A_VADDPS,
A_VADDSD,
@ -1009,6 +1011,9 @@ A_VZEROALL,
A_VZEROUPPER,
A_ANDN,
A_BEXTR,
A_BLSI,
A_BLSMSK,
A_BLSR,
A_TZCNT,
A_BZHI,
A_MULX,
@ -1018,6 +1023,8 @@ A_RORX,
A_SARX,
A_SHLX,
A_SHRX,
A_ADCX,
A_ADOX,
A_VBROADCASTI128,
A_VEXTRACTI128,
A_VINSERTI128,

View File

@ -684,6 +684,8 @@
(Ch: [Ch_All]),
(Ch: [Ch_All]),
(Ch: [Ch_WEAX, Ch_WEDX]),
(Ch: [Ch_Rop1, Ch_Wop2]),
(Ch: [Ch_All]),
(Ch: [Ch_Wop3, Ch_Rop2, Ch_Rop1]),
(Ch: [Ch_Wop3, Ch_Rop2, Ch_Rop1]),
(Ch: [Ch_Wop3, Ch_Rop2, Ch_Rop1]),
@ -1009,6 +1011,9 @@
(Ch: [Ch_All]),
(Ch: [Ch_Rop1, Ch_Rop2, Ch_Wop3]),
(Ch: [Ch_Rop1, Ch_Rop2, Ch_Wop3]),
(Ch: [Ch_Rop1, Ch_Wop2, Ch_W0OverflowFlag, Ch_WCarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WUParityFlag, Ch_WUAuxiliaryFlag]),
(Ch: [Ch_Rop1, Ch_Wop2, Ch_W0OverflowFlag, Ch_WCarryFlag, Ch_WSignFlag, Ch_W0ZeroFlag, Ch_WUParityFlag, Ch_WUAuxiliaryFlag]),
(Ch: [Ch_Rop1, Ch_Wop2, Ch_W0OverflowFlag, Ch_WCarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WUParityFlag, Ch_WUAuxiliaryFlag]),
(Ch: [Ch_Wop2, Ch_WFlags, Ch_Rop1]),
(Ch: [Ch_Rop1, Ch_Rop2, Ch_Wop3]),
(Ch: [Ch_REDX, Ch_Rop1, Ch_Wop2, Ch_Wop3]),
@ -1018,6 +1023,8 @@
(Ch: [Ch_Rop1, Ch_Rop2, Ch_Wop3]),
(Ch: [Ch_Rop1, Ch_Rop2, Ch_Wop3]),
(Ch: [Ch_Rop1, Ch_Rop2, Ch_Wop3]),
(Ch: [Ch_Rop1, Ch_Mop2, Ch_RWCarryFlag]),
(Ch: [Ch_Rop1, Ch_Mop2, Ch_RWOverflowFlag]),
(Ch: [Ch_All]),
(Ch: [Ch_All]),
(Ch: [Ch_All]),

View File

@ -8736,6 +8736,27 @@
code : #3#15#1#249;
flags : [if_sse4,if_sm]
),
(
opcode : A_MOVBE;
ops : 2;
optypes : (ot_reg16 or ot_bits32 or ot_bits64,ot_memory or ot_bits16 or ot_bits32 or ot_bits64,ot_none,ot_none);
code : #208#3#15#56#240#72;
flags : [if_movbe,if_sm]
),
(
opcode : A_MOVBE;
ops : 2;
optypes : (ot_memory or ot_bits16 or ot_bits32 or ot_bits64,ot_reg16 or ot_bits32 or ot_bits64,ot_none,ot_none);
code : #209#3#15#56#241#65;
flags : [if_movbe,if_sm]
),
(
opcode : A_PCLMULQDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
code : #241#3#15#58#68#72#22;
flags : [if_clmul,if_sandybridge]
),
(
opcode : A_VADDPD;
ops : 3;
@ -13636,6 +13657,27 @@
code : #242#249#1#247#62#72;
flags : [if_bmi1,if_prot]
),
(
opcode : A_BLSI;
ops : 2;
optypes : (ot_reg32,ot_rm_gpr or ot_bits32,ot_none,ot_none);
code : #242#249#1#243#60#139;
flags : [if_bmi1,if_prot]
),
(
opcode : A_BLSMSK;
ops : 2;
optypes : (ot_reg32,ot_rm_gpr or ot_bits32,ot_none,ot_none);
code : #242#249#1#243#60#138;
flags : [if_bmi1,if_prot]
),
(
opcode : A_BLSR;
ops : 2;
optypes : (ot_reg32,ot_rm_gpr or ot_bits32,ot_none,ot_none);
code : #242#249#1#243#60#137;
flags : [if_bmi1,if_prot]
),
(
opcode : A_TZCNT;
ops : 2;
@ -13699,6 +13741,20 @@
code : #220#242#249#1#247#62#72;
flags : [if_bmi2,if_prot]
),
(
opcode : A_ADCX;
ops : 2;
optypes : (ot_reg32,ot_rm_gpr or ot_bits32,ot_none,ot_none);
code : #241#3#15#56#246#72;
flags : [if_adx]
),
(
opcode : A_ADOX;
ops : 2;
optypes : (ot_reg32,ot_rm_gpr or ot_bits32,ot_none,ot_none);
code : #219#3#15#56#246#72;
flags : [if_adx]
),
(
opcode : A_VBROADCASTI128;
ops : 2;

View File

@ -331,10 +331,14 @@ interface
IF_SSSE3,
IF_SSE41,
IF_SSE42,
IF_MOVBE,
IF_CLMUL,
IF_AVX,
IF_AVX2,
IF_BMI1,
IF_BMI2,
{ Intel ADX (Multi-Precision Add-Carry Instruction Extensions) }
IF_ADX,
IF_16BITONLY,
IF_FMA,
IF_FMA4,

View File

@ -3582,6 +3582,21 @@ void \326\1\xAD X86_64
(Ch_RWRSI, Ch_RMemEDI, Ch_RWRDI, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag)
void \326\1\xA7 X86_64
[MOVBE,movbeX]
(Ch_Rop1, Ch_Wop2)
reg16|32|64,mem16|32|64 \320\3\xf\x38\xf0\110 MOVBE,SM
mem16|32|64,reg16|32|64 \321\3\xf\x38\xf1\101 MOVBE,SM
;*******************************************************************************
;********* CLMUL ***************************************************************
;*******************************************************************************
[PCLMULQDQ]
(Ch_All)
xmmreg,xmmrm,imm8 \361\3\xf\x3A\x44\110\26 CLMUL,SANDYBRIDGE
;*******************************************************************************
;****** AVX I ******************************************************************
;*******************************************************************************
@ -5285,6 +5300,21 @@ reg64,reg64,rm64 \362\363\371\1\xf2\75\120 BMI1,P
reg32,rm32,reg32 \362\371\1\xf7\76\110 BMI1,PROT
reg64,rm64,reg64 \362\363\371\1\xf7\76\110 BMI1,PROT,X86_64
[BLSI]
(Ch_Rop1, Ch_Wop2, Ch_W0OverflowFlag, Ch_WCarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WUParityFlag, Ch_WUAuxiliaryFlag)
reg32,rm32 \362\371\1\xf3\74\213 BMI1,PROT
reg64,rm64 \362\363\371\1\xf3\74\213 BMI1,PROT,X86_64
[BLSMSK]
(Ch_Rop1, Ch_Wop2, Ch_W0OverflowFlag, Ch_WCarryFlag, Ch_WSignFlag, Ch_W0ZeroFlag, Ch_WUParityFlag, Ch_WUAuxiliaryFlag)
reg32,rm32 \362\371\1\xf3\74\212 BMI1,PROT
reg64,rm64 \362\363\371\1\xf3\74\212 BMI1,PROT,X86_64
[BLSR]
(Ch_Rop1, Ch_Wop2, Ch_W0OverflowFlag, Ch_WCarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WUParityFlag, Ch_WUAuxiliaryFlag)
reg32,rm32 \362\371\1\xf3\74\211 BMI1,PROT
reg64,rm64 \362\363\371\1\xf3\74\211 BMI1,PROT,X86_64
[TZCNT]
(Ch_Wop2, Ch_WFlags, Ch_Rop1)
reg16|32|64,regmem \320\333\2\x0F\xBC\110 BMI1,SM
@ -5333,6 +5363,19 @@ reg64,rm64,reg64 \361\362\363\371\1\xf7\76\110 BMI2,P
reg32,rm32,reg32 \334\362\371\1\xf7\76\110 BMI2,PROT
reg64,rm64,reg64 \334\362\363\371\1\xf7\76\110 BMI2,PROT,X86_64
;*******************************************************************************
;********** ADX ****************************************************************
;*******************************************************************************
[ADCX,adcxX]
(Ch_Rop1, Ch_Mop2, Ch_RWCarryFlag)
reg32,rm32 \361\3\xf\x38\xf6\110 ADX
reg64,rm64 \361\326\3\xf\x38\xf6\110 ADX,X86_64
[ADOX,adoxX]
(Ch_Rop1, Ch_Mop2, Ch_RWOverflowFlag)
reg32,rm32 \333\3\xf\x38\xf6\110 ADX
reg64,rm64 \333\326\3\xf\x38\xf6\110 ADX,X86_64
;*******************************************************************************
;********** AVX2 ***************************************************************

View File

@ -680,6 +680,8 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufINT,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
@ -1017,6 +1019,11 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufINT,
attsufINT,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,

View File

@ -680,6 +680,8 @@
'stosq',
'lodsq',
'cmpsq',
'movbe',
'pclmulqdq',
'vaddpd',
'vaddps',
'vaddsd',
@ -1005,6 +1007,9 @@
'vzeroupper',
'andn',
'bextr',
'blsi',
'blsmsk',
'blsr',
'tzcnt',
'bzhi',
'mulx',
@ -1014,6 +1019,8 @@
'sarx',
'shlx',
'shrx',
'adcx',
'adox',
'vbroadcasti128',
'vextracti128',
'vinserti128',

View File

@ -680,6 +680,8 @@
'stosq',
'lodsq',
'cmpsq',
'movbe',
'pclmulqdq',
'vaddpd',
'vaddps',
'vaddsd',
@ -1005,6 +1007,9 @@
'vzeroupper',
'andn',
'bextr',
'blsi',
'blsmsk',
'blsr',
'tzcnt',
'bzhi',
'mulx',
@ -1014,6 +1019,8 @@
'sarx',
'shlx',
'shrx',
'adcx',
'adox',
'vbroadcasti128',
'vextracti128',
'vinserti128',

View File

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

View File

@ -680,6 +680,8 @@ A_RDTSCP,
A_STOSQ,
A_LODSQ,
A_CMPSQ,
A_MOVBE,
A_PCLMULQDQ,
A_VADDPD,
A_VADDPS,
A_VADDSD,
@ -1005,6 +1007,9 @@ A_VZEROALL,
A_VZEROUPPER,
A_ANDN,
A_BEXTR,
A_BLSI,
A_BLSMSK,
A_BLSR,
A_TZCNT,
A_BZHI,
A_MULX,
@ -1014,6 +1019,8 @@ A_RORX,
A_SARX,
A_SHLX,
A_SHRX,
A_ADCX,
A_ADOX,
A_VBROADCASTI128,
A_VEXTRACTI128,
A_VINSERTI128,

View File

@ -680,6 +680,8 @@
(Ch: [Ch_RRAX, Ch_WMemEDI, Ch_RWRDI, Ch_RDirFlag]),
(Ch: [Ch_WRAX, Ch_RWRSI, Ch_RDirFlag]),
(Ch: [Ch_RWRSI, Ch_RMemEDI, Ch_RWRDI, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
(Ch: [Ch_Rop1, Ch_Wop2]),
(Ch: [Ch_All]),
(Ch: [Ch_Wop3, Ch_Rop2, Ch_Rop1]),
(Ch: [Ch_Wop3, Ch_Rop2, Ch_Rop1]),
(Ch: [Ch_Wop3, Ch_Rop2, Ch_Rop1]),
@ -1005,6 +1007,9 @@
(Ch: [Ch_All]),
(Ch: [Ch_Rop1, Ch_Rop2, Ch_Wop3]),
(Ch: [Ch_Rop1, Ch_Rop2, Ch_Wop3]),
(Ch: [Ch_Rop1, Ch_Wop2, Ch_W0OverflowFlag, Ch_WCarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WUParityFlag, Ch_WUAuxiliaryFlag]),
(Ch: [Ch_Rop1, Ch_Wop2, Ch_W0OverflowFlag, Ch_WCarryFlag, Ch_WSignFlag, Ch_W0ZeroFlag, Ch_WUParityFlag, Ch_WUAuxiliaryFlag]),
(Ch: [Ch_Rop1, Ch_Wop2, Ch_W0OverflowFlag, Ch_WCarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WUParityFlag, Ch_WUAuxiliaryFlag]),
(Ch: [Ch_Wop2, Ch_WFlags, Ch_Rop1]),
(Ch: [Ch_Rop1, Ch_Rop2, Ch_Wop3]),
(Ch: [Ch_REDX, Ch_Rop1, Ch_Wop2, Ch_Wop3]),
@ -1014,6 +1019,8 @@
(Ch: [Ch_Rop1, Ch_Rop2, Ch_Wop3]),
(Ch: [Ch_Rop1, Ch_Rop2, Ch_Wop3]),
(Ch: [Ch_Rop1, Ch_Rop2, Ch_Wop3]),
(Ch: [Ch_Rop1, Ch_Mop2, Ch_RWCarryFlag]),
(Ch: [Ch_Rop1, Ch_Mop2, Ch_RWOverflowFlag]),
(Ch: [Ch_All]),
(Ch: [Ch_All]),
(Ch: [Ch_All]),

View File

@ -9009,6 +9009,27 @@
code : #214#1#167;
flags : [if_x86_64]
),
(
opcode : A_MOVBE;
ops : 2;
optypes : (ot_reg16 or ot_bits32 or ot_bits64,ot_memory or ot_bits16 or ot_bits32 or ot_bits64,ot_none,ot_none);
code : #208#3#15#56#240#72;
flags : [if_movbe,if_sm]
),
(
opcode : A_MOVBE;
ops : 2;
optypes : (ot_memory or ot_bits16 or ot_bits32 or ot_bits64,ot_reg16 or ot_bits32 or ot_bits64,ot_none,ot_none);
code : #209#3#15#56#241#65;
flags : [if_movbe,if_sm]
),
(
opcode : A_PCLMULQDQ;
ops : 3;
optypes : (ot_xmmreg,ot_xmmrm,ot_immediate or ot_bits8,ot_none);
code : #241#3#15#58#68#72#22;
flags : [if_clmul,if_sandybridge]
),
(
opcode : A_VADDPD;
ops : 3;
@ -13951,6 +13972,48 @@
code : #242#243#249#1#247#62#72;
flags : [if_bmi1,if_prot,if_x86_64]
),
(
opcode : A_BLSI;
ops : 2;
optypes : (ot_reg32,ot_rm_gpr or ot_bits32,ot_none,ot_none);
code : #242#249#1#243#60#139;
flags : [if_bmi1,if_prot]
),
(
opcode : A_BLSI;
ops : 2;
optypes : (ot_reg64,ot_rm_gpr or ot_bits64,ot_none,ot_none);
code : #242#243#249#1#243#60#139;
flags : [if_bmi1,if_prot,if_x86_64]
),
(
opcode : A_BLSMSK;
ops : 2;
optypes : (ot_reg32,ot_rm_gpr or ot_bits32,ot_none,ot_none);
code : #242#249#1#243#60#138;
flags : [if_bmi1,if_prot]
),
(
opcode : A_BLSMSK;
ops : 2;
optypes : (ot_reg64,ot_rm_gpr or ot_bits64,ot_none,ot_none);
code : #242#243#249#1#243#60#138;
flags : [if_bmi1,if_prot,if_x86_64]
),
(
opcode : A_BLSR;
ops : 2;
optypes : (ot_reg32,ot_rm_gpr or ot_bits32,ot_none,ot_none);
code : #242#249#1#243#60#137;
flags : [if_bmi1,if_prot]
),
(
opcode : A_BLSR;
ops : 2;
optypes : (ot_reg64,ot_rm_gpr or ot_bits64,ot_none,ot_none);
code : #242#243#249#1#243#60#137;
flags : [if_bmi1,if_prot,if_x86_64]
),
(
opcode : A_TZCNT;
ops : 2;
@ -14070,6 +14133,34 @@
code : #220#242#243#249#1#247#62#72;
flags : [if_bmi2,if_prot,if_x86_64]
),
(
opcode : A_ADCX;
ops : 2;
optypes : (ot_reg32,ot_rm_gpr or ot_bits32,ot_none,ot_none);
code : #241#3#15#56#246#72;
flags : [if_adx]
),
(
opcode : A_ADCX;
ops : 2;
optypes : (ot_reg64,ot_rm_gpr or ot_bits64,ot_none,ot_none);
code : #241#214#3#15#56#246#72;
flags : [if_adx,if_x86_64]
),
(
opcode : A_ADOX;
ops : 2;
optypes : (ot_reg32,ot_rm_gpr or ot_bits32,ot_none,ot_none);
code : #219#3#15#56#246#72;
flags : [if_adx]
),
(
opcode : A_ADOX;
ops : 2;
optypes : (ot_reg64,ot_rm_gpr or ot_bits64,ot_none,ot_none);
code : #219#214#3#15#56#246#72;
flags : [if_adx,if_x86_64]
),
(
opcode : A_VBROADCASTI128;
ops : 2;

View File

@ -51,6 +51,17 @@ end;
procedure TAVXTestGenerator.Init;
begin
FOpCodeList.Add('ADCX,1,1,REG32,RM32,,,');
FOpCodeList.Add('ADCX,1,1,REG64,RM64,,,');
FOpCodeList.Add('ADOX,1,1,REG32,RM32,,,');
FOpCodeList.Add('ADOX,1,1,REG64,RM64,,,');
FOpCodeList.Add('BLSI,1,1,REG32,RM32,,,');
FOpCodeList.Add('BLSI,1,1,REG64,RM64,,,');
FOpCodeList.Add('BLSR,1,1,REG32,RM32,,,');
FOpCodeList.Add('BLSR,1,1,REG64,RM64,,,');
FOpCodeList.Add('BLSMSK,1,1,REG32,RM32,,,');
FOpCodeList.Add('BLSMSK,1,1,REG64,RM64,,,');
FOpCodeList.Add('BZHI,1,1,REG32,RM32,REG32,,');
FOpCodeList.Add('BZHI,1,1,REG64,RM64,REG64,,');
FOpCodeList.Add('MULX,1,1,REG32,REG32,RM32,,');
@ -58,8 +69,18 @@ begin
FOpCodeList.Add('PDEP,1,1,REG32,REG32,RM32,,');
FOpCodeList.Add('PDEP,1,1,REG64,REG64,RM64,,');
FOpCodeList.Add('PEXT,1,1,REG32,REG32,RM32,,');
FOpCodeList.Add('PEXT,1,1,REG64,REG64,RM64,,');
FOpCodeList.Add('PEXT,1,1,REG64,REG64,RM64,,');
FOpCodeList.Add('MOVBE,1,1,REG16,MEM16,,,');
FOpCodeList.Add('MOVBE,1,1,MEM16,REG16,,,');
FOpCodeList.Add('MOVBE,1,1,REG32,MEM32,,,');
FOpCodeList.Add('MOVBE,1,1,MEM32,REG32,,,');
FOpCodeList.Add('MOVBE,1,1,REG64,MEM64,,,');
FOpCodeList.Add('MOVBE,1,1,MEM64,REG64,,,');
FOpCodeList.Add('PCLMULQDQ,1,1,XMMREG,XMMRM,IMM8,');
FOpCodeList.Add('VPCLMULQDQ,1,1,XMMREG,XMMREG,XMMRM,IMM8');
FOpCodeList.Add('VADDPD,1,1,XMMREG,XMMREG,XMMRM,');
FOpCodeList.Add('VADDPD,1,1,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('VADDPS,1,1,XMMREG,XMMREG,XMMRM,');
@ -811,7 +832,6 @@ begin
FOpCodeList.Add('VPGATHERQQ,1,1,XMMREG,XMEM64,XMMREG,');
FOpCodeList.Add('VPGATHERQQ,1,1,YMMREG,YMEM64,YMMREG,');
end;
function TAVXTestGenerator.InternalMakeTestFiles(aX64: boolean; aDestPath, aFileExt: String;