[llvm-commits] [llvm] r78354 - in/llvm/trunk/lib/CodeGen:PBQP.cpp PBQP.h PBQP/PBQP/AnnotatedGraph.hPBQP/ExhaustiveSolver.hPBQP/GraphBase.hPBQP/GraphGenerator.h PBQP/HeuristicSolver.hPBQP/Heuristics/PBQP/Heuristics/Briggs.h PBQP/PBQPMath.h

Lang Hames lhames at gmail.com
Mon Aug 10 12:02:12 PDT 2009


> That explains why the resulted code has changed for us; because now that
> you have brought colorability into the equations, since PIC16 only has
> one register, all nodes are same color and effectively the new algorithm
> will not behave as efficiently. For PIC16, the order of code generation
> for each path from DAG and how data is flown from one path to the other
> is the most important factor. Using solver to find the best solution is
> the attractive part of PBQP for us. Do you think there is anything that
> we can still use from PBQP? or we have to start thinking of writing our
> own register allocator?

Hi Ali,

Colourability was always a component of the Briggs heuristic in the
PBQP allocator. Unless you modified the C solver it would have been
applied before.

If you are getting significantly different results with the new
allocator it may indicate an error in my spill cost calculations. I
will look into this over the next few days.

If PBQP was generating good results for you before I believe it should
do so again, once the kinks in the new solver are ironed out.

Cheers,
Lang.



More information about the llvm-commits mailing list