imcc/t/reg/spill_2 just spills 4 registers instead of 36.
Dan, could you please try that with one of your big subroutines and
report compile times and functionality.
Thanks,
leo
Sure. I'll sync up and give it a shot.
--
Dan
--------------------------------------it's like this-------------------
Dan Sugalski even samurai
d...@sidhe.org have teddy bears and even
teddy bears get drunk
Okay, after doing a CVS syncup (I don't have subversion set up yet) I
find there's no difference to speak of -- still takes about 390
minutes on the big form. (If the CVS repository's not up to date I
can see about getting subversion installed and working)
jens
Swell -- I thought when we were switching over to subversion we were
going to make sure that the CVS repository was kept up to date.
I guess I'll see about digging up a subversion client and see where I
go from there.
> Swell
You need just this part:
> Date: Wed Apr 13 03:04:41 2005
> New Revision: 7824
> Modified:
> trunk/imcc/reg_alloc.c
> Log:
> allow NUM_REGISTERS = 64
> Modified: trunk/imcc/reg_alloc.c
>==============================================================================
> --- trunk/imcc/reg_alloc.c (original)
> +++ trunk/imcc/reg_alloc.c Wed Apr 13 03:04:41 2005
> @@ -927,8 +927,8 @@
> if (avail[c] && assignable[t][c - 1])
> return c;
> }
> - /* 2) try upper non-volatiles, 16...31 */
> - for (c = 17; c <= 32; c++)
> + /* 2) try upper non-volatiles, 16...NUM_REGISTERS-1 */
> + for (c = 17; c <= NUM_REGISTERS; c++)
> if (avail[c])
> return c;
> return 0;
leo
Ah, OK. With that part in, the time's cut from 390 minutes to 295
minutes. A 25% cutback, not bad.
I had posted a program a while ago that generates large
fake programs for testing such things. Did that not help?
I think I still have it in my working directory if you'd
like to have a peek at it...
Regards,
-- Gregor
> I had posted a program a while ago that generates large
> fake programs for testing such things. Did that not help?
I've that program or a successor of it still around somewhere. But
unfortunately it doesn't help. The register usage pattern of the
simulation is totally different: it creates too much long ranged globals
and too much interferences between registers compared to RL programs
like Dan's Big Subs.
Such a simulation should create much more lines (selectable) almost only
temporary register access inside basic blocks and some access to
long-ranged globals within reasonable (tweakable) limits i.e. from
around 16 to e.g. 64.
leo