Re: [m5-dev] [PATCH] fix x86 loop instruction

2009-09-17 Thread Gabe Black
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

Re: [m5-dev] [PATCH] fix x86 loop instruction

2009-09-17 Thread Vince Weaver
On Wed, 16 Sep 2009, Gabe Black wrote: Ok, I figured it out. This should now be fixed. I can confirm that the various changes checked in overnight have fixed the various issues I was seeing. Thanks! By the way, your program is probably the prettiest test case I've run on m5 to date :-).

Re: [m5-dev] [PATCH] fix x86 loop instruction

2009-09-16 Thread Vince Weaver
On Tue, 15 Sep 2009, Gabriel Michael Black wrote: As promised here's a patch. It turns out I was already attempting to sign extend the second operand (that's what sop2 is supposed to be doing), I just dropped the ball for the immediate variant. Unfortunately this patch doesn't seem to fix

Re: [m5-dev] [PATCH] fix x86 loop instruction

2009-09-16 Thread Vince Weaver
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

Re: [m5-dev] [PATCH] fix x86 loop instruction

2009-09-16 Thread nathan binkert
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 =

Re: [m5-dev] [PATCH] fix x86 loop instruction

2009-09-16 Thread Gabe Black
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

Re: [m5-dev] [PATCH] fix x86 loop instruction

2009-09-16 Thread Gabe Black
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

Re: [m5-dev] [PATCH] fix x86 loop instruction

2009-09-15 Thread Gabriel Michael Black
Never mind. I realized what was going on as I was getting ready for work this morning. imm is the same size for all microops, but when it's stored internal to the microop it gets truncated into a 16 bit immediate value. A better solution might be to make the wripi instruction sign extend

Re: [m5-dev] [PATCH] fix x86 loop instruction

2009-09-15 Thread Vince Weaver
On Tue, 15 Sep 2009, Gabriel Michael Black wrote: Never mind. I realized what was going on as I was getting ready for work this morning. imm is the same size for all microops, but when it's stored internal to the microop it gets truncated into a 16 bit immediate value. A better solution

Re: [m5-dev] [PATCH] fix x86 loop instruction

2009-09-15 Thread Gabe Black
Gabriel Michael Black wrote: Quoting Vince Weaver vi...@csl.cornell.edu: On Tue, 15 Sep 2009, Gabriel Michael Black wrote: Never mind. I realized what was going on as I was getting ready for work this morning. imm is the same size for all microops, but when it's stored internal to

[m5-dev] [PATCH] fix x86 loop instruction

2009-09-14 Thread Vince Weaver
Hello the loop instructions on x86 are broken, they seem to be using a 16-bit immediate for the offset instead of the proper signed 8-bit one. This very obviously breaks instructions trying to loop backward. The patch below fixes things on my regression test, though I might have something

Re: [m5-dev] [PATCH] fix x86 loop instruction

2009-09-14 Thread Gabriel Michael Black
Thank you for your patches. I'm a little buried right now, but they are important, I -will- get to them eventually, and they'll more than likely end up in the tree. Thanks! Gabe Quoting Vince Weaver vi...@csl.cornell.edu: Hello the loop instructions on x86 are broken, they seem to be

Re: [m5-dev] [PATCH] fix x86 loop instruction

2009-09-14 Thread nathan binkert
Gabe, If you didn't know, you can just take his patches and stick them in your queue and use the -u option to qref to add his name to the patch so he gets credit when you push. Also, when people use hg email, you can just take the patch as is and stick it in your queue since it contains all of