From 7c6baca6d0b2333f5e53b96ccdb9f0295465de98 Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Tue, 25 Sep 2012 22:45:35 -0700 Subject: [PATCH] BR 3392227: Remove SB flag from SHIFT rm,imm Remove the SB flag from the rm,imm forms of the shift/rotate instructions; presumably the intent was to mark the immediate as a byte immediate, but it instead caused the memory operand to be accepted without a size, but generate the incorrect code as a result. Note: it would be good to modify the UNITY filter so that the explicit form: shl eax,byte 1 ... forces the imm form rather than the ,1 form. Signed-off-by: H. Peter Anvin --- insns.dat | 64 +++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/insns.dat b/insns.dat index dfa50395..c58c9d6b 100644 --- a/insns.dat +++ b/insns.dat @@ -1051,28 +1051,28 @@ PUSHFW void [ o16 9c] 8086 PXOR mmxreg,mmxrm [rm: np o64nw 0f ef /r] PENT,MMX,SQ RCL rm8,unity [m-: d0 /2] 8086 RCL rm8,reg_cl [m-: d2 /2] 8086 -RCL rm8,imm [mi: c0 /2 ib,u] 186,SB +RCL rm8,imm [mi: c0 /2 ib,u] 186 RCL rm16,unity [m-: o16 d1 /2] 8086 RCL rm16,reg_cl [m-: o16 d3 /2] 8086 -RCL rm16,imm [mi: o16 c1 /2 ib,u] 186,SB +RCL rm16,imm [mi: o16 c1 /2 ib,u] 186 RCL rm32,unity [m-: o32 d1 /2] 386 RCL rm32,reg_cl [m-: o32 d3 /2] 386 -RCL rm32,imm [mi: o32 c1 /2 ib,u] 386,SB +RCL rm32,imm [mi: o32 c1 /2 ib,u] 386 RCL rm64,unity [m-: o64 d1 /2] X64 RCL rm64,reg_cl [m-: o64 d3 /2] X64 -RCL rm64,imm [mi: o64 c1 /2 ib,u] X64,SB +RCL rm64,imm [mi: o64 c1 /2 ib,u] X64 RCR rm8,unity [m-: d0 /3] 8086 RCR rm8,reg_cl [m-: d2 /3] 8086 -RCR rm8,imm [mi: c0 /3 ib,u] 186,SB +RCR rm8,imm [mi: c0 /3 ib,u] 186 RCR rm16,unity [m-: o16 d1 /3] 8086 RCR rm16,reg_cl [m-: o16 d3 /3] 8086 -RCR rm16,imm [mi: o16 c1 /3 ib,u] 186,SB +RCR rm16,imm [mi: o16 c1 /3 ib,u] 186 RCR rm32,unity [m-: o32 d1 /3] 386 RCR rm32,reg_cl [m-: o32 d3 /3] 386 -RCR rm32,imm [mi: o32 c1 /3 ib,u] 386,SB +RCR rm32,imm [mi: o32 c1 /3 ib,u] 386 RCR rm64,unity [m-: o64 d1 /3] X64 RCR rm64,reg_cl [m-: o64 d3 /3] X64 -RCR rm64,imm [mi: o64 c1 /3 ib,u] X64,SB +RCR rm64,imm [mi: o64 c1 /3 ib,u] X64 RDSHR rm32 [m: o32 0f 36 /0] P6,CYRIX,SMM RDMSR void [ 0f 32] PENT,PRIV RDPMC void [ 0f 33] P6 @@ -1086,28 +1086,28 @@ RETN void [ c3] 8086 RETN imm [i: c2 iw] 8086,SW ROL rm8,unity [m-: d0 /0] 8086 ROL rm8,reg_cl [m-: d2 /0] 8086 -ROL rm8,imm [mi: c0 /0 ib,u] 186,SB +ROL rm8,imm [mi: c0 /0 ib,u] 186 ROL rm16,unity [m-: o16 d1 /0] 8086 ROL rm16,reg_cl [m-: o16 d3 /0] 8086 -ROL rm16,imm [mi: o16 c1 /0 ib,u] 186,SB +ROL rm16,imm [mi: o16 c1 /0 ib,u] 186 ROL rm32,unity [m-: o32 d1 /0] 386 ROL rm32,reg_cl [m-: o32 d3 /0] 386 -ROL rm32,imm [mi: o32 c1 /0 ib,u] 386,SB +ROL rm32,imm [mi: o32 c1 /0 ib,u] 386 ROL rm64,unity [m-: o64 d1 /0] X64 ROL rm64,reg_cl [m-: o64 d3 /0] X64 -ROL rm64,imm [mi: o64 c1 /0 ib,u] X64,SB +ROL rm64,imm [mi: o64 c1 /0 ib,u] X64 ROR rm8,unity [m-: d0 /1] 8086 ROR rm8,reg_cl [m-: d2 /1] 8086 -ROR rm8,imm [mi: c0 /1 ib,u] 186,SB +ROR rm8,imm [mi: c0 /1 ib,u] 186 ROR rm16,unity [m-: o16 d1 /1] 8086 ROR rm16,reg_cl [m-: o16 d3 /1] 8086 -ROR rm16,imm [mi: o16 c1 /1 ib,u] 186,SB +ROR rm16,imm [mi: o16 c1 /1 ib,u] 186 ROR rm32,unity [m-: o32 d1 /1] 386 ROR rm32,reg_cl [m-: o32 d3 /1] 386 -ROR rm32,imm [mi: o32 c1 /1 ib,u] 386,SB +ROR rm32,imm [mi: o32 c1 /1 ib,u] 386 ROR rm64,unity [m-: o64 d1 /1] X64 ROR rm64,reg_cl [m-: o64 d3 /1] X64 -ROR rm64,imm [mi: o64 c1 /1 ib,u] X64,SB +ROR rm64,imm [mi: o64 c1 /1 ib,u] X64 RDM void [ 0f 3a] P6,CYRIX,ND RSDC reg_sreg,mem80 [rm: 0f 79 /r] 486,CYRIX,SMM RSLDT mem80 [m: 0f 7b /0] 486,CYRIX,SMM @@ -1116,29 +1116,29 @@ RSTS mem80 [m: 0f 7d /0] 486,CYRIX,SMM SAHF void [ 9e] 8086 SAL rm8,unity [m-: d0 /4] 8086,ND SAL rm8,reg_cl [m-: d2 /4] 8086,ND -SAL rm8,imm [mi: c0 /4 ib,u] 186,ND,SB +SAL rm8,imm [mi: c0 /4 ib,u] 186,ND SAL rm16,unity [m-: o16 d1 /4] 8086,ND SAL rm16,reg_cl [m-: o16 d3 /4] 8086,ND -SAL rm16,imm [mi: o16 c1 /4 ib,u] 186,ND,SB +SAL rm16,imm [mi: o16 c1 /4 ib,u] 186,ND SAL rm32,unity [m-: o32 d1 /4] 386,ND SAL rm32,reg_cl [m-: o32 d3 /4] 386,ND -SAL rm32,imm [mi: o32 c1 /4 ib,u] 386,ND,SB +SAL rm32,imm [mi: o32 c1 /4 ib,u] 386,ND SAL rm64,unity [m-: o64 d1 /4] X64,ND SAL rm64,reg_cl [m-: o64 d3 /4] X64,ND -SAL rm64,imm [mi: o64 c1 /4 ib,u] X64,ND,SB +SAL rm64,imm [mi: o64 c1 /4 ib,u] X64,ND SALC void [ d6] 8086,UNDOC SAR rm8,unity [m-: d0 /7] 8086 SAR rm8,reg_cl [m-: d2 /7] 8086 -SAR rm8,imm [mi: c0 /7 ib,u] 186,SB +SAR rm8,imm [mi: c0 /7 ib,u] 186 SAR rm16,unity [m-: o16 d1 /7] 8086 SAR rm16,reg_cl [m-: o16 d3 /7] 8086 -SAR rm16,imm [mi: o16 c1 /7 ib,u] 186,SB +SAR rm16,imm [mi: o16 c1 /7 ib,u] 186 SAR rm32,unity [m-: o32 d1 /7] 386 SAR rm32,reg_cl [m-: o32 d3 /7] 386 -SAR rm32,imm [mi: o32 c1 /7 ib,u] 386,SB +SAR rm32,imm [mi: o32 c1 /7 ib,u] 386 SAR rm64,unity [m-: o64 d1 /7] X64 SAR rm64,reg_cl [m-: o64 d3 /7] X64 -SAR rm64,imm [mi: o64 c1 /7 ib,u] X64,SB +SAR rm64,imm [mi: o64 c1 /7 ib,u] X64 SBB mem,reg8 [mr: hle 18 /r] 8086,SM,LOCK SBB reg8,reg8 [mr: 18 /r] 8086 SBB mem,reg16 [mr: hle o16 19 /r] 8086,SM,LOCK @@ -1181,16 +1181,16 @@ SFENCE void [ 0f ae f8] X64,AMD SGDT mem [m: 0f 01 /0] 286 SHL rm8,unity [m-: d0 /4] 8086 SHL rm8,reg_cl [m-: d2 /4] 8086 -SHL rm8,imm [mi: c0 /4 ib,u] 186,SB +SHL rm8,imm [mi: c0 /4 ib,u] 186 SHL rm16,unity [m-: o16 d1 /4] 8086 SHL rm16,reg_cl [m-: o16 d3 /4] 8086 -SHL rm16,imm [mi: o16 c1 /4 ib,u] 186,SB +SHL rm16,imm [mi: o16 c1 /4 ib,u] 186 SHL rm32,unity [m-: o32 d1 /4] 386 SHL rm32,reg_cl [m-: o32 d3 /4] 386 -SHL rm32,imm [mi: o32 c1 /4 ib,u] 386,SB +SHL rm32,imm [mi: o32 c1 /4 ib,u] 386 SHL rm64,unity [m-: o64 d1 /4] X64 SHL rm64,reg_cl [m-: o64 d3 /4] X64 -SHL rm64,imm [mi: o64 c1 /4 ib,u] X64,SB +SHL rm64,imm [mi: o64 c1 /4 ib,u] X64 SHLD mem,reg16,imm [mri: o16 0f a4 /r ib,u] 386,SM2,SB,AR2 SHLD reg16,reg16,imm [mri: o16 0f a4 /r ib,u] 386,SM2,SB,AR2 SHLD mem,reg32,imm [mri: o32 0f a4 /r ib,u] 386,SM2,SB,AR2 @@ -1205,16 +1205,16 @@ SHLD mem,reg64,reg_cl [mr-: o64 0f a5 /r] X64,SM SHLD reg64,reg64,reg_cl [mr-: o64 0f a5 /r] X64 SHR rm8,unity [m-: d0 /5] 8086 SHR rm8,reg_cl [m-: d2 /5] 8086 -SHR rm8,imm [mi: c0 /5 ib,u] 186,SB +SHR rm8,imm [mi: c0 /5 ib,u] 186 SHR rm16,unity [m-: o16 d1 /5] 8086 SHR rm16,reg_cl [m-: o16 d3 /5] 8086 -SHR rm16,imm [mi: o16 c1 /5 ib,u] 186,SB +SHR rm16,imm [mi: o16 c1 /5 ib,u] 186 SHR rm32,unity [m-: o32 d1 /5] 386 SHR rm32,reg_cl [m-: o32 d3 /5] 386 -SHR rm32,imm [mi: o32 c1 /5 ib,u] 386,SB +SHR rm32,imm [mi: o32 c1 /5 ib,u] 386 SHR rm64,unity [m-: o64 d1 /5] X64 SHR rm64,reg_cl [m-: o64 d3 /5] X64 -SHR rm64,imm [mi: o64 c1 /5 ib,u] X64,SB +SHR rm64,imm [mi: o64 c1 /5 ib,u] X64 SHRD mem,reg16,imm [mri: o16 0f ac /r ib,u] 386,SM2,SB,AR2 SHRD reg16,reg16,imm [mri: o16 0f ac /r ib,u] 386,SM2,SB,AR2 SHRD mem,reg32,imm [mri: o32 0f ac /r ib,u] 386,SM2,SB,AR2 -- 2.11.4.GIT