I don't think you actually need the explicit (int16_t) cast here. Not a big deal though of course.
Nate On Wed, Sep 16, 2009 at 9:22 AM, Vince Weaver <vi...@csl.cornell.edu> wrote: > > OK, I think I've fixed this. > > The key is the line: > code = "int16_t simm8 = (int16_t)((int8_t)imm8);" + code > I had to change your patch to have the extra "int8_t" cast, or else > it wasn't sign extending the result. > > Below is the updated patch, which works for my test. > > Note, scons doesn't seem to see changes to regop.isa, at least on my > machine. I had to manually remove m5.opt to get it to rebuild. > > Vince > > diff -r cb4c4b793106 src/arch/x86/isa/microops/regop.isa > --- a/src/arch/x86/isa/microops/regop.isa Tue Sep 15 17:04:59 2009 -0400 > +++ b/src/arch/x86/isa/microops/regop.isa Wed Sep 16 12:19:36 2009 -0400 > @@ -324,11 +324,12 @@ > matcher.sub(src2_name, flag_code), > matcher.sub(src2_name, cond_check), > matcher.sub(src2_name, else_code)) > + imm_name = "%simm8" % match.group("prefix") > self.buildCppClasses(name + "i", Name, suffix + "Imm", > - matcher.sub("imm8", code), > - matcher.sub("imm8", flag_code), > - matcher.sub("imm8", cond_check), > - matcher.sub("imm8", else_code)) > + matcher.sub(imm_name, code), > + matcher.sub(imm_name, flag_code), > + matcher.sub(imm_name, cond_check), > + matcher.sub(imm_name, else_code)) > return > > # If there's something optional to do with flags, generate > @@ -353,13 +354,16 @@ > matcher = re.compile("(?<!\w)spsrc2(?!\w)") > if matcher.search(allCode): > code = "int64_t spsrc2 = signedPick(SrcReg2, 1, dataSize);" + > code > + matcher = re.compile("(?<!\w)simm8(?!\w)") > + if matcher.search(allCode): > + code = "int16_t simm8 = (int16_t)((int8_t)imm8);" + code > > base = "X86ISA::RegOp" > > # If imm8 shows up in the code, use the immediate templates, if > # not, hopefully the register ones will be correct. > templates = regTemplates > - matcher = re.compile("(?<!\w)imm8(?!\w)") > + matcher = re.compile("(?<!\w)s?imm8(?!\w)") > if matcher.search(allCode): > base += "Imm" > templates = immTemplates > _______________________________________________ > m5-dev mailing list > m5-dev@m5sim.org > http://m5sim.org/mailman/listinfo/m5-dev > > _______________________________________________ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev