arch-x86: break 32/64-bit LEA's input dependency on prior dest value (#1683)

Fix #1682. Treat LEA as a BigLdStOp. BigLdStOps (as well as other Big*
x86 uops) do not have input dependencies on 32-/64-bit destinations. LEA
will still have input dependencies on 16-bit destinations. (LEA cannot
have an 8-bit destination.)

Change-Id: I5d0678e6bd79bfd6064941a89c6fe290750543c9
This commit is contained in:
Nicholas Mosier
2024-10-22 09:34:30 -07:00
committed by GitHub
parent 0f75c39d30
commit faf764e668

View File

@@ -720,8 +720,15 @@ let {{
"memDataSize": "dataSize" })
header_output += MicroLeaDeclare.subst(iop)
exec_output += MicroLeaExecute.subst(iop)
iop = InstObjParams("lea", "LeaBig", 'X86ISA::LdStOp',
{ "code": "Data = EA & mask(dataSize * 8);",
"ea_code": "EA = " + segmentEAExpr,
"memDataSize": "dataSize" })
header_output += MicroLeaDeclare.subst(iop)
exec_output += MicroLeaExecute.subst(iop)
class LeaOp(LdStOp):
class LeaOp(BigLdStOp):
def __init__(self, data, segment, addr, disp = 0,
dataSize="env.dataSize", addressSize="env.addressSize"):
super().__init__(data, segment, addr, disp,