diff --git a/compiler/i386/i386att.inc b/compiler/i386/i386att.inc index c28c9f1fe6..b5b4b86c8a 100644 --- a/compiler/i386/i386att.inc +++ b/compiler/i386/i386att.inc @@ -333,6 +333,7 @@ 'sbb', 'scasb', 'scasl', +'scasq', 'scasw', 'cs', 'ds', diff --git a/compiler/i386/i386atts.inc b/compiler/i386/i386atts.inc index a4c6890789..f22a07fbbd 100644 --- a/compiler/i386/i386atts.inc +++ b/compiler/i386/i386atts.inc @@ -341,6 +341,7 @@ attsufNONE, attsufNONE, attsufNONE, attsufNONE, +attsufNONE, attsufINT, attsufINT, attsufINT, diff --git a/compiler/i386/i386int.inc b/compiler/i386/i386int.inc index a661e19278..9d055c6522 100644 --- a/compiler/i386/i386int.inc +++ b/compiler/i386/i386int.inc @@ -333,6 +333,7 @@ 'sbb', 'scasb', 'scasd', +'scasq', 'scasw', 'segcs', 'segds', @@ -676,7 +677,7 @@ 'aesdec', 'aesdeclast', 'aesimc', -'aeskeygen', +'aeskeygenassist', 'stosq', 'lodsq', 'cmpsq' diff --git a/compiler/i386/i386op.inc b/compiler/i386/i386op.inc index 7386f7fcd5..fa8633e55a 100644 --- a/compiler/i386/i386op.inc +++ b/compiler/i386/i386op.inc @@ -333,6 +333,7 @@ A_SAR, A_SBB, A_SCASB, A_SCASD, +A_SCASQ, A_SCASW, A_SEGCS, A_SEGDS, @@ -676,7 +677,7 @@ A_AESENCLAST, A_AESDEC, A_AESDECLAST, A_AESIMC, -A_AESKEYGEN, +A_AESKEYGENASSIST, A_STOSQ, A_LODSQ, A_CMPSQ diff --git a/compiler/i386/i386prop.inc b/compiler/i386/i386prop.inc index 87dd25a2ac..9eb533e9a4 100644 --- a/compiler/i386/i386prop.inc +++ b/compiler/i386/i386prop.inc @@ -334,6 +334,7 @@ (Ch: (Ch_All, Ch_None, Ch_None)), (Ch: (Ch_All, Ch_None, Ch_None)), (Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), (Ch: (Ch_None, Ch_None, Ch_None)), (Ch: (Ch_None, Ch_None, Ch_None)), (Ch: (Ch_None, Ch_None, Ch_None)), diff --git a/compiler/i386/i386tab.inc b/compiler/i386/i386tab.inc index a2693158ea..d3e596ec6e 100644 --- a/compiler/i386/i386tab.inc +++ b/compiler/i386/i386tab.inc @@ -12,42 +12,42 @@ ops : 0; optypes : (ot_none,ot_none,ot_none); code : #1#55; - flags : if_8086 + flags : if_8086 or if_nox86_64 ), ( opcode : A_AAD; ops : 0; optypes : (ot_none,ot_none,ot_none); code : #2#213#10; - flags : if_8086 + flags : if_8086 or if_nox86_64 ), ( opcode : A_AAD; ops : 1; optypes : (ot_immediate,ot_none,ot_none); code : #1#213#20; - flags : if_8086 or if_sb + flags : if_8086 or if_sb or if_nox86_64 ), ( opcode : A_AAM; ops : 0; optypes : (ot_none,ot_none,ot_none); code : #2#212#10; - flags : if_8086 + flags : if_8086 or if_nox86_64 ), ( opcode : A_AAM; ops : 1; optypes : (ot_immediate,ot_none,ot_none); code : #1#212#20; - flags : if_8086 or if_sb + flags : if_8086 or if_sb or if_nox86_64 ), ( opcode : A_AAS; ops : 0; optypes : (ot_none,ot_none,ot_none); code : #1#63; - flags : if_8086 + flags : if_8086 or if_nox86_64 ), ( opcode : A_ADC; @@ -285,21 +285,21 @@ ops : 2; optypes : (ot_reg16,ot_reg16,ot_none); code : #192#1#99#65; - flags : if_286 or if_prot + flags : if_286 or if_prot or if_nox86_64 ), ( opcode : A_ARPL; ops : 2; optypes : (ot_memory,ot_reg16,ot_none); code : #192#1#99#65; - flags : if_286 or if_prot or if_sm + flags : if_286 or if_prot or if_sm or if_nox86_64 ), ( opcode : A_BOUND; ops : 2; - optypes : (ot_reg16 or ot_bits32 or ot_bits64,ot_memory,ot_none); + optypes : (ot_reg16 or ot_bits32,ot_memory,ot_none); code : #193#208#1#98#72; - flags : if_186 + flags : if_186 or if_nox86_64 ), ( opcode : A_BSF; @@ -404,7 +404,7 @@ ops : 1; optypes : (ot_immediate or ot_far,ot_none,ot_none); code : #208#1#154#28#31; - flags : if_8086 + flags : if_8086 or if_nox86_64 ), ( opcode : A_CALL; @@ -425,35 +425,35 @@ ops : 2; optypes : (ot_immediate,ot_immediate,ot_none); code : #215#1#154#29#24; - flags : if_8086 + flags : if_8086 or if_nox86_64 ), ( opcode : A_CALL; ops : 2; optypes : (ot_immediate or ot_bits16,ot_immediate,ot_none); code : #212#1#154#25#24; - flags : if_8086 + flags : if_8086 or if_nox86_64 ), ( opcode : A_CALL; ops : 2; optypes : (ot_immediate,ot_immediate or ot_bits16,ot_none); code : #212#1#154#25#24; - flags : if_8086 + flags : if_8086 or if_nox86_64 ), ( opcode : A_CALL; ops : 2; optypes : (ot_immediate or ot_bits32,ot_immediate,ot_none); code : #213#1#154#33#24; - flags : if_386 + flags : if_386 or if_nox86_64 ), ( opcode : A_CALL; ops : 2; optypes : (ot_immediate,ot_immediate or ot_bits32,ot_none); code : #213#1#154#33#24; - flags : if_386 + flags : if_386 or if_nox86_64 ), ( opcode : A_CBW; @@ -698,19 +698,19 @@ ops : 0; optypes : (ot_none,ot_none,ot_none); code : #1#39; - flags : if_8086 + flags : if_8086 or if_nox86_64 ), ( opcode : A_DAS; ops : 0; optypes : (ot_none,ot_none,ot_none); code : #1#47; - flags : if_8086 + flags : if_8086 or if_nox86_64 ), ( opcode : A_DEC; ops : 1; - optypes : (ot_reg16 or ot_bits32 or ot_bits64,ot_none,ot_none); + optypes : (ot_reg16 or ot_bits32,ot_none,ot_none); code : #208#8#72; flags : if_8086 or if_nox86_64 ), @@ -2397,7 +2397,7 @@ ( opcode : A_INC; ops : 1; - optypes : (ot_reg16 or ot_bits32 or ot_bits64,ot_none,ot_none); + optypes : (ot_reg16 or ot_bits32,ot_none,ot_none); code : #208#8#64; flags : if_8086 or if_nox86_64 ), @@ -2476,7 +2476,7 @@ ops : 0; optypes : (ot_none,ot_none,ot_none); code : #1#206; - flags : if_8086 + flags : if_8086 or if_nox86_64 ), ( opcode : A_INVD; @@ -2567,7 +2567,7 @@ ops : 1; optypes : (ot_immediate or ot_far,ot_none,ot_none); code : #208#1#234#28#31; - flags : if_8086 or if_pass2 + flags : if_8086 or if_pass2 or if_nox86_64 ), ( opcode : A_JMP; @@ -2588,21 +2588,21 @@ ops : 2; optypes : (ot_immediate,ot_immediate,ot_none); code : #215#1#234#29#24; - flags : if_8086 + flags : if_8086 or if_nox86_64 ), ( opcode : A_JMP; ops : 2; optypes : (ot_immediate,ot_immediate or ot_bits16,ot_none); code : #212#1#234#25#24; - flags : if_8086 + flags : if_8086 or if_nox86_64 ), ( opcode : A_JMP; ops : 2; optypes : (ot_immediate,ot_immediate or ot_bits32,ot_none); code : #213#1#234#33#24; - flags : if_386 + flags : if_386 or if_nox86_64 ), ( opcode : A_LAHF; @@ -2644,7 +2644,7 @@ ops : 2; optypes : (ot_reg16 or ot_bits32,ot_memory,ot_none); code : #193#208#1#197#72; - flags : if_8086 + flags : if_8086 or if_nox86_64 ), ( opcode : A_LEA; @@ -2672,7 +2672,7 @@ ops : 2; optypes : (ot_reg16 or ot_bits32,ot_memory,ot_none); code : #193#208#1#196#72; - flags : if_8086 + flags : if_8086 or if_nox86_64 ), ( opcode : A_LFS; @@ -4513,7 +4513,7 @@ ops : 1; optypes : (ot_reg_dess,ot_none,ot_none); code : #4; - flags : if_8086 + flags : if_8086 or if_nox86_64 ), ( opcode : A_POP; @@ -5745,7 +5745,7 @@ ops : 0; optypes : (ot_none,ot_none,ot_none); code : #1#158; - flags : if_8086 or if_nox86_64 + flags : if_8086 ), ( opcode : A_SAL; @@ -5794,7 +5794,7 @@ ops : 0; optypes : (ot_none,ot_none,ot_none); code : #1#214; - flags : if_8086 or if_undoc + flags : if_8086 or if_undoc or if_nox86_64 ), ( opcode : A_SAR; @@ -10907,14 +10907,14 @@ flags : if_sse4 ), ( - opcode : A_AESKEYGEN; + opcode : A_AESKEYGENASSIST; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate); code : #1#102#217#3#15#58#223#72#22; flags : if_sse4 ), ( - opcode : A_AESKEYGEN; + opcode : A_AESKEYGENASSIST; ops : 3; optypes : (ot_xmmreg,ot_memory,ot_immediate); code : #1#102#193#217#3#15#58#223#72#22; diff --git a/compiler/x86/x86ins.dat b/compiler/x86/x86ins.dat index 98ea575a69..51e92c4697 100644 --- a/compiler/x86/x86ins.dat +++ b/compiler/x86/x86ins.dat @@ -16,21 +16,21 @@ void void none [AAA] (Ch_MEAX, Ch_WFlags, Ch_None) -void \1\x37 8086 +void \1\x37 8086,NOX86_64 [AAD,aadX] (Ch_MEAX, Ch_WFlags, Ch_None) -void \2\xD5\x0A 8086 -imm \1\xD5\24 8086,SB +void \2\xD5\x0A 8086,NOX86_64 +imm \1\xD5\24 8086,SB,NOX86_64 [AAM,aamX] (Ch_MEAX, Ch_WFlags, Ch_None) -void \2\xD4\x0A 8086 -imm \1\xD4\24 8086,SB +void \2\xD4\x0A 8086,NOX86_64 +imm \1\xD4\24 8086,SB,NOX86_64 [AAS] (Ch_MEAX, Ch_WFlags, Ch_None) -void \1\x3F 8086 +void \1\x3F 8086,NOX86_64 [ADC,adcX] (Ch_Mop2, Ch_Rop1, Ch_RWFlags) @@ -76,12 +76,12 @@ rm8,imm \300\323\1\x80\204\21 8086,SB [ARPL,arplX] (Ch_WFlags, Ch_None, Ch_None) -reg16,reg16 \300\1\x63\101 286,PROT -mem,reg16 \300\1\x63\101 286,PROT,SM +reg16,reg16 \300\1\x63\101 286,PROT,NOX86_64 +mem,reg16 \300\1\x63\101 286,PROT,SM,NOX86_64 [BOUND,boundX] (Ch_Rop1, Ch_None, Ch_None) -reg16|32|64,mem \301\320\1\x62\110 186 +reg16|32,mem \301\320\1\x62\110 186,NOX86_64 [BSF,bsfX] (Ch_Wop2, Ch_WFlags, Ch_Rop1) @@ -121,14 +121,14 @@ rm16|32|64,imm \300\320\2\x0F\xBA\205\25 386,SB imm \320\1\xE8\64 8086 rm16|32|64 \300\320\1\xFF\202 8086 imm|near \320\1\xE8\64 8086 -imm|far \320\1\x9A\34\37 8086,ND +imm|far \320\1\x9A\34\37 8086,ND,NOX86_64 mem|near \300\320\1\xFF\202 8086 mem|far \300\320\1\xFF\203 8086 -imm:imm \327\1\x9A\35\30 8086 -imm16:imm \324\1\x9A\31\30 8086 -imm:imm16 \324\1\x9A\31\30 8086 -imm32:imm \325\1\x9A\41\30 386 -imm:imm32 \325\1\x9A\41\30 386 +imm:imm \327\1\x9A\35\30 8086,NOX86_64 +imm16:imm \324\1\x9A\31\30 8086,NOX86_64 +imm:imm16 \324\1\x9A\31\30 8086,NOX86_64 +imm32:imm \325\1\x9A\41\30 386,NOX86_64 +imm:imm32 \325\1\x9A\41\30 386,NOX86_64 [CBW,cbtw] (Ch_MEAX, Ch_None, Ch_None) @@ -217,15 +217,15 @@ void \325\1\x98 386 [DAA] (Ch_MEAX, Ch_None, Ch_None) -void \1\x27 8086 +void \1\x27 8086,NOX86_64 [DAS] (Ch_MEAX, Ch_None, Ch_None) -void \1\x2F 8086 +void \1\x2F 8086,NOX86_64 [DEC,decX] (Ch_Mop1, Ch_WFlags, Ch_None) -reg16|32|64 \320\10\x48 8086,NOX86_64 +reg16|32 \320\10\x48 8086,NOX86_64 rm16|32|64 \300\320\1\xFF\201 8086 rm8 \300\323\1\xFE\201 8086 @@ -793,7 +793,7 @@ reg_ax|32|64,reg_dx \320\1\xED 8086 [INC,incX] (Ch_Mop1, Ch_WFlags, Ch_None) -reg16|32|64 \320\10\x40 8086,NOX86_64 +reg16|32 \320\10\x40 8086,NOX86_64 rm16|32|64 \300\320\1\xFF\200 8086 rm8 \300\323\1\xFE\200 8086 @@ -831,7 +831,7 @@ void \1\xCC 8086 [INTO] (Ch_All, Ch_None, Ch_None) -void \1\xCE 8086 +void \1\xCE 8086,NOX86_64 [INVD] (Ch_All, Ch_None, Ch_None) @@ -873,13 +873,14 @@ imm16|32|64 \320\1\xE9\64 8086,PASS2 rm16|32|64 \300\320\1\xFF\204 8086 imm|short \1\xEB\50 8086,PASS2 imm|near \320\1\xE9\64 8086,ND,PASS2 -imm|far \320\1\xEA\34\37 8086,ND,PASS2 +imm|far \320\1\xEA\34\37 8086,ND,PASS2,NOX86_64 mem|near \300\320\1\xFF\204 8086 mem|far \300\320\1\xFF\205 8086 -imm:imm \327\1\xEA\35\30 8086 -imm:imm16 \324\1\xEA\31\30 8086 -imm:imm32 \325\1\xEA\41\30 386 +imm:imm \327\1\xEA\35\30 8086,NOX86_64 +imm:imm16 \324\1\xEA\31\30 8086,NOX86_64 +imm:imm32 \325\1\xEA\41\30 386,NOX86_64 +; SAHF/LAHF are valid in x86_64 only if CPUID.80000001h:ECX.0=1 [LAHF] (Ch_WEAX, Ch_RFlags, Ch_None) void \1\x9F 8086 @@ -897,7 +898,7 @@ mem|far \300\320\1\xFF\203 8086 [LDS,ldsX] (Ch_Wop2, Ch_Rop1, Ch_None) -reg16|32,mem \301\320\1\xC5\110 8086 +reg16|32,mem \301\320\1\xC5\110 8086,NOX86_64 [LEA,leaX] (Ch_Wop2, Ch_Rop1, Ch_None) @@ -910,7 +911,7 @@ void \1\xC9 186 [LES,lesX] (Ch_Wop2, Ch_Rop1, Ch_None) -reg16|32,mem \301\320\1\xC4\110 8086 +reg16|32,mem \301\320\1\xC4\110 8086,NOX86_64 [LFS,lfsX] (Ch_Wop2, Ch_Rop1, Ch_None) @@ -1463,7 +1464,7 @@ mmxreg,mem \301\2\x0F\x58\110 PENT,MMX,SM,CYRIX reg16|32|64 \320\10\x58\335 8086 rm16|32|64 \300\320\1\x8F\200\335 8086 reg_cs \1\x0F 8086,UNDOC,ND -reg_dess \4 8086 +reg_dess \4 8086,NOX86_64 reg_fsgs \1\x0F\5\335 386 [POPA,popaX] @@ -1827,9 +1828,10 @@ mem80 \300\2\x0F\x7B\200 486,CYRIX,SMM (Ch_All, Ch_None, Ch_None) void \2\x0F\xAA PENT,SMM +; SAHF/LAHF are valid in x86_64 only if CPUID.80000001h:ECX.0=1 [SAHF] (Ch_WFlags, Ch_REAX, Ch_None) -void \1\x9E 8086,NOX86_64 +void \1\x9E 8086 [SAL,salX] (Ch_Mop2, Ch_Rop1, Ch_RWFlags) @@ -1842,7 +1844,7 @@ rm8,imm \300\323\1\xC0\204\25 186,ND,SB [SALC] (Ch_WEAX, Ch_RFLAGS, Ch_None) -void \1\xD6 8086,UNDOC +void \1\xD6 8086,UNDOC,NOX86_64 [SAR,sarX] (Ch_Mop2, Ch_Rop1, Ch_WFlags) @@ -1875,6 +1877,10 @@ void \332\1\xAE 8086 (Ch_All, Ch_None, Ch_None) void \332\325\1\xAF 386 +[SCASQ] +(Ch_All, Ch_None, Ch_None) +void \332\326\1\xAF X86_64 + [SCASW] (Ch_All, Ch_None, Ch_None) void \332\324\1\xAF 8086 @@ -3700,7 +3706,7 @@ xmmreg,mem \1\x66\301\331\3\x0F\x38\xDF\110 SSE4 xmmreg,xmmreg \1\x66\331\3\x0F\x38\xDB\110 SSE4 xmmreg,mem \1\x66\301\331\3\x0F\x38\xDB\110 SSE4 -[AESKEYGEN,aeskeygenassist] ;AESKEYGENASIST +[AESKEYGENASSIST] (Ch_All, Ch_None, Ch_None) xmmreg,xmmreg,imm \1\x66\331\3\x0F\x3A\xDF\110\26 SSE4 xmmreg,mem,imm \1\x66\301\331\3\x0F\x3A\xDF\110\26 SSE4 diff --git a/compiler/x86_64/x8664ats.inc b/compiler/x86_64/x8664ats.inc index a4c6890789..f22a07fbbd 100644 --- a/compiler/x86_64/x8664ats.inc +++ b/compiler/x86_64/x8664ats.inc @@ -341,6 +341,7 @@ attsufNONE, attsufNONE, attsufNONE, attsufNONE, +attsufNONE, attsufINT, attsufINT, attsufINT, diff --git a/compiler/x86_64/x8664att.inc b/compiler/x86_64/x8664att.inc index c28c9f1fe6..b5b4b86c8a 100644 --- a/compiler/x86_64/x8664att.inc +++ b/compiler/x86_64/x8664att.inc @@ -333,6 +333,7 @@ 'sbb', 'scasb', 'scasl', +'scasq', 'scasw', 'cs', 'ds', diff --git a/compiler/x86_64/x8664int.inc b/compiler/x86_64/x8664int.inc index a661e19278..9d055c6522 100644 --- a/compiler/x86_64/x8664int.inc +++ b/compiler/x86_64/x8664int.inc @@ -333,6 +333,7 @@ 'sbb', 'scasb', 'scasd', +'scasq', 'scasw', 'segcs', 'segds', @@ -676,7 +677,7 @@ 'aesdec', 'aesdeclast', 'aesimc', -'aeskeygen', +'aeskeygenassist', 'stosq', 'lodsq', 'cmpsq' diff --git a/compiler/x86_64/x8664nop.inc b/compiler/x86_64/x8664nop.inc index b1481b46ce..ff9531dc7d 100644 --- a/compiler/x86_64/x8664nop.inc +++ b/compiler/x86_64/x8664nop.inc @@ -1,2 +1,2 @@ { don't edit, this file is generated from x86ins.dat } -1555; +1531; diff --git a/compiler/x86_64/x8664op.inc b/compiler/x86_64/x8664op.inc index 7386f7fcd5..fa8633e55a 100644 --- a/compiler/x86_64/x8664op.inc +++ b/compiler/x86_64/x8664op.inc @@ -333,6 +333,7 @@ A_SAR, A_SBB, A_SCASB, A_SCASD, +A_SCASQ, A_SCASW, A_SEGCS, A_SEGDS, @@ -676,7 +677,7 @@ A_AESENCLAST, A_AESDEC, A_AESDECLAST, A_AESIMC, -A_AESKEYGEN, +A_AESKEYGENASSIST, A_STOSQ, A_LODSQ, A_CMPSQ diff --git a/compiler/x86_64/x8664pro.inc b/compiler/x86_64/x8664pro.inc index 87dd25a2ac..9eb533e9a4 100644 --- a/compiler/x86_64/x8664pro.inc +++ b/compiler/x86_64/x8664pro.inc @@ -334,6 +334,7 @@ (Ch: (Ch_All, Ch_None, Ch_None)), (Ch: (Ch_All, Ch_None, Ch_None)), (Ch: (Ch_All, Ch_None, Ch_None)), +(Ch: (Ch_All, Ch_None, Ch_None)), (Ch: (Ch_None, Ch_None, Ch_None)), (Ch: (Ch_None, Ch_None, Ch_None)), (Ch: (Ch_None, Ch_None, Ch_None)), diff --git a/compiler/x86_64/x8664tab.inc b/compiler/x86_64/x8664tab.inc index 9ddeaa1ecc..6967d96f88 100644 --- a/compiler/x86_64/x8664tab.inc +++ b/compiler/x86_64/x8664tab.inc @@ -7,48 +7,6 @@ code : #0; flags : if_none ), - ( - opcode : A_AAA; - ops : 0; - optypes : (ot_none,ot_none,ot_none); - code : #1#55; - flags : if_8086 - ), - ( - opcode : A_AAD; - ops : 0; - optypes : (ot_none,ot_none,ot_none); - code : #2#213#10; - flags : if_8086 - ), - ( - opcode : A_AAD; - ops : 1; - optypes : (ot_immediate,ot_none,ot_none); - code : #1#213#20; - flags : if_8086 or if_sb - ), - ( - opcode : A_AAM; - ops : 0; - optypes : (ot_none,ot_none,ot_none); - code : #2#212#10; - flags : if_8086 - ), - ( - opcode : A_AAM; - ops : 1; - optypes : (ot_immediate,ot_none,ot_none); - code : #1#212#20; - flags : if_8086 or if_sb - ), - ( - opcode : A_AAS; - ops : 0; - optypes : (ot_none,ot_none,ot_none); - code : #1#63; - flags : if_8086 - ), ( opcode : A_ADC; ops : 2; @@ -280,27 +238,6 @@ code : #192#211#1#128#132#17; flags : if_8086 or if_sb ), - ( - opcode : A_ARPL; - ops : 2; - optypes : (ot_reg16,ot_reg16,ot_none); - code : #192#1#99#65; - flags : if_286 or if_prot - ), - ( - opcode : A_ARPL; - ops : 2; - optypes : (ot_memory,ot_reg16,ot_none); - code : #192#1#99#65; - flags : if_286 or if_prot or if_sm - ), - ( - opcode : A_BOUND; - ops : 2; - optypes : (ot_reg16 or ot_bits32 or ot_bits64,ot_memory,ot_none); - code : #193#208#1#98#72; - flags : if_186 - ), ( opcode : A_BSF; ops : 2; @@ -399,13 +336,6 @@ code : #208#1#232#52; flags : if_8086 ), - ( - opcode : A_CALL; - ops : 1; - optypes : (ot_immediate or ot_far,ot_none,ot_none); - code : #208#1#154#28#31; - flags : if_8086 - ), ( opcode : A_CALL; ops : 1; @@ -420,41 +350,6 @@ code : #192#208#1#255#131; flags : if_8086 ), - ( - opcode : A_CALL; - ops : 2; - optypes : (ot_immediate,ot_immediate,ot_none); - code : #215#1#154#29#24; - flags : if_8086 - ), - ( - opcode : A_CALL; - ops : 2; - optypes : (ot_immediate or ot_bits16,ot_immediate,ot_none); - code : #212#1#154#25#24; - flags : if_8086 - ), - ( - opcode : A_CALL; - ops : 2; - optypes : (ot_immediate,ot_immediate or ot_bits16,ot_none); - code : #212#1#154#25#24; - flags : if_8086 - ), - ( - opcode : A_CALL; - ops : 2; - optypes : (ot_immediate or ot_bits32,ot_immediate,ot_none); - code : #213#1#154#33#24; - flags : if_386 - ), - ( - opcode : A_CALL; - ops : 2; - optypes : (ot_immediate,ot_immediate or ot_bits32,ot_none); - code : #213#1#154#33#24; - flags : if_386 - ), ( opcode : A_CBW; ops : 0; @@ -693,20 +588,6 @@ code : #213#1#152; flags : if_386 ), - ( - opcode : A_DAA; - ops : 0; - optypes : (ot_none,ot_none,ot_none); - code : #1#39; - flags : if_8086 - ), - ( - opcode : A_DAS; - ops : 0; - optypes : (ot_none,ot_none,ot_none); - code : #1#47; - flags : if_8086 - ), ( opcode : A_DEC; ops : 1; @@ -2457,13 +2338,6 @@ code : #1#204; flags : if_8086 ), - ( - opcode : A_INTO; - ops : 0; - optypes : (ot_none,ot_none,ot_none); - code : #1#206; - flags : if_8086 - ), ( opcode : A_INVD; ops : 0; @@ -2548,13 +2422,6 @@ code : #208#1#233#52; flags : if_8086 or if_pass2 ), - ( - opcode : A_JMP; - ops : 1; - optypes : (ot_immediate or ot_far,ot_none,ot_none); - code : #208#1#234#28#31; - flags : if_8086 or if_pass2 - ), ( opcode : A_JMP; ops : 1; @@ -2569,27 +2436,6 @@ code : #192#208#1#255#133; flags : if_8086 ), - ( - opcode : A_JMP; - ops : 2; - optypes : (ot_immediate,ot_immediate,ot_none); - code : #215#1#234#29#24; - flags : if_8086 - ), - ( - opcode : A_JMP; - ops : 2; - optypes : (ot_immediate,ot_immediate or ot_bits16,ot_none); - code : #212#1#234#25#24; - flags : if_8086 - ), - ( - opcode : A_JMP; - ops : 2; - optypes : (ot_immediate,ot_immediate or ot_bits32,ot_none); - code : #213#1#234#33#24; - flags : if_386 - ), ( opcode : A_LAHF; ops : 0; @@ -2625,13 +2471,6 @@ code : #192#208#1#255#131; flags : if_8086 ), - ( - opcode : A_LDS; - ops : 2; - optypes : (ot_reg16 or ot_bits32,ot_memory,ot_none); - code : #193#208#1#197#72; - flags : if_8086 - ), ( opcode : A_LEA; ops : 2; @@ -2653,13 +2492,6 @@ code : #1#201; flags : if_186 ), - ( - opcode : A_LES; - ops : 2; - optypes : (ot_reg16 or ot_bits32,ot_memory,ot_none); - code : #193#208#1#196#72; - flags : if_8086 - ), ( opcode : A_LFS; ops : 2; @@ -4466,13 +4298,6 @@ code : #1#15; flags : if_8086 or if_undoc ), - ( - opcode : A_POP; - ops : 1; - optypes : (ot_reg_dess,ot_none,ot_none); - code : #4; - flags : if_8086 - ), ( opcode : A_POP; ops : 1; @@ -5642,6 +5467,13 @@ code : #2#15#170; flags : if_pent or if_smm ), + ( + opcode : A_SAHF; + ops : 0; + optypes : (ot_none,ot_none,ot_none); + code : #1#158; + flags : if_8086 + ), ( opcode : A_SAL; ops : 2; @@ -5684,13 +5516,6 @@ code : #192#211#1#192#132#21; flags : if_186 or if_sb ), - ( - opcode : A_SALC; - ops : 0; - optypes : (ot_none,ot_none,ot_none); - code : #1#214; - flags : if_8086 or if_undoc - ), ( opcode : A_SAR; ops : 2; @@ -5824,6 +5649,13 @@ code : #218#213#1#175; flags : if_386 ), + ( + opcode : A_SCASQ; + ops : 0; + optypes : (ot_none,ot_none,ot_none); + code : #218#214#1#175; + flags : if_x86_64 + ), ( opcode : A_SCASW; ops : 0; @@ -10851,14 +10683,14 @@ flags : if_sse4 ), ( - opcode : A_AESKEYGEN; + opcode : A_AESKEYGENASSIST; ops : 3; optypes : (ot_xmmreg,ot_xmmreg,ot_immediate); code : #1#102#217#3#15#58#223#72#22; flags : if_sse4 ), ( - opcode : A_AESKEYGEN; + opcode : A_AESKEYGENASSIST; ops : 3; optypes : (ot_xmmreg,ot_memory,ot_immediate); code : #1#102#193#217#3#15#58#223#72#22; diff --git a/tests/test/taes1.pp b/tests/test/taes1.pp index 6f8a346a48..5d4578ae34 100644 --- a/tests/test/taes1.pp +++ b/tests/test/taes1.pp @@ -38,7 +38,7 @@ Procedure OpenKey_AES(Key: PAESKey256; OpenedKey: PAESOpenedKey); Assembler; NoS PSHUFD XMM1, XMM1, 011100101b; MOVD EBX, XMM1; XOR EAX, EBX; MOV [RCX], EAX; ADD RCX, 4 PSHUFD XMM1, XMM1, 011100110b; MOVD EBX, XMM1; XOR EAX, EBX; MOV [RCX], EAX; ADD RCX, 4 PSHUFD XMM1, XMM1, 011100111b; MOVD EBX, XMM1; XOR EAX, EBX; MOV [RCX], EAX; ADD RCX, 4 - MOVDQU XMM4, [RDX]; AESKEYGEN XMM4, XMM4, 0 + MOVDQU XMM4, [RDX]; AESKEYGENASSIST XMM4, XMM4, 0 PSHUFD XMM4, XMM4, 011100110b; MOVD EAX, XMM4; MOVD EBX, XMM3; XOR EAX, EBX; MOV [RCX], EAX; ADD RCX, 4 PSHUFD XMM3, XMM3, 011100101b; MOVD EBX, XMM3; XOR EAX, EBX; MOV [RCX], EAX; ADD RCX, 4 PSHUFD XMM3, XMM3, 011100110b; MOVD EBX, XMM3; XOR EAX, EBX; MOV [RCX], EAX; ADD RCX, 4 @@ -56,13 +56,13 @@ Asm MOVDQU XMM1, [RCX]; MOVDQU XMM3, [RCX+16] MOVDQU [RDX], XMM1; MOVDQU [RDX + $10], XMM3 LEA RCX, [RDX+$20] - AESKEYGEN XMM2, XMM3, $1; CALL key_expansion - AESKEYGEN XMM2, XMM3, $2; CALL key_expansion - AESKEYGEN XMM2, XMM3, $4; CALL key_expansion - AESKEYGEN XMM2, XMM3, $8; CALL key_expansion - AESKEYGEN XMM2, XMM3, $10; CALL key_expansion - AESKEYGEN XMM2, XMM3, $20; CALL key_expansion - AESKEYGEN XMM2, XMM3, $40; CALL key_expansion + AESKEYGENASSIST XMM2, XMM3, $1; CALL key_expansion + AESKEYGENASSIST XMM2, XMM3, $2; CALL key_expansion + AESKEYGENASSIST XMM2, XMM3, $4; CALL key_expansion + AESKEYGENASSIST XMM2, XMM3, $8; CALL key_expansion + AESKEYGENASSIST XMM2, XMM3, $10; CALL key_expansion + AESKEYGENASSIST XMM2, XMM3, $20; CALL key_expansion + AESKEYGENASSIST XMM2, XMM3, $40; CALL key_expansion MOVDQU XMM0, [R8+$00]; MOVDQU XMM1, [R8+$10]; MOVDQU XMM2, [R8+$20]; MOVDQU XMM3, [R8+$30] MOVDQU XMM4, [R8+$40]; MOVDQU XMM5, [R8+$50]; MOVDQU XMM6, [R8+$60]; MOVDQU XMM7, [R8+$70] MOVDQU XMM8, [R8+$80]; MOVDQU XMM9, [R8+$90]; MOVDQU XMM10, [R8+$A0]; MOVDQU XMM11, [R8+$B0]