117,118c117,126
< allocator = '''new %(class_name)s(machInst, macrocodeBlock,
< %(flags)s, %(dest)s, %(imm)s, %(dataSize)s)''' % {
---
> allocString = '''
> (%(dataSize)s >= 4) ?
> (StaticInstPtr)(new %(class_name)sBig(machInst,
> macrocodeBlock, %(flags)s, %(dest)s, %(imm)s,
> %(dataSize)s)) :
> (StaticInstPtr)(new %(class_name)s(machInst,
> macrocodeBlock, %(flags)s, %(dest)s, %(imm)s,
> %(dataSize)s))
> '''
> allocator = allocString % {
155,160c163,171
< iop = InstObjParams("limm", "Limm", 'X86MicroopBase',
< {"code" : "DestReg = merge(DestReg, imm, dataSize);"})
< header_output += MicroLimmOpDeclare.subst(iop)
< decoder_output += MicroLimmOpConstructor.subst(iop)
< decoder_output += MicroLimmOpDisassembly.subst(iop)
< exec_output += MicroLimmOpExecute.subst(iop)
---
> iops = [InstObjParams("limm", "Limm", 'X86MicroopBase',
> {"code" : "DestReg = merge(DestReg, imm, dataSize);"}),
> InstObjParams("limm", "LimmBig", 'X86MicroopBase',
> {"code" : "DestReg = imm & mask(dataSize * 8);"})]
> for iop in iops:
> header_output += MicroLimmOpDeclare.subst(iop)
> decoder_output += MicroLimmOpConstructor.subst(iop)
> decoder_output += MicroLimmOpDisassembly.subst(iop)
> exec_output += MicroLimmOpExecute.subst(iop)