Ok, I figured it out. This should now be fixed. By the way, your program 
is probably the prettiest test case I've run on m5 to date :-).

Gabe

Gabe Black wrote:
> Darn it. I need to double check -then- email. I had int16_t in the 
> original patch so I suspect the sign extension in predecoder.cc isn't 
> working properly, but don't worry about this any more if you don't want 
> to. I'll set up your regression and figure this out directly. Sorry for 
> the run around.
>
> Gabe
>
> Gabe Black wrote:
>   
>> int8_t was definitely wrong. What I meant was int16_t, but as Nate says 
>> an explicit cast might not be necessary at all. If you could please give 
>> the castless version a try and it works, I'll check that in.
>>
>> Gabe
>>
>> nathan binkert wrote:
>>   
>>     
>>> 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 <[email protected]> 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
>>>> [email protected]
>>>> http://m5sim.org/mailman/listinfo/m5-dev
>>>>
>>>>
>>>>     
>>>>       
>>>>         
>>> _______________________________________________
>>> m5-dev mailing list
>>> [email protected]
>>> http://m5sim.org/mailman/listinfo/m5-dev
>>>   
>>>     
>>>       
>> _______________________________________________
>> m5-dev mailing list
>> [email protected]
>> http://m5sim.org/mailman/listinfo/m5-dev
>>   
>>     
>
> _______________________________________________
> m5-dev mailing list
> [email protected]
> http://m5sim.org/mailman/listinfo/m5-dev
>   

_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to