1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-30 23:42:52 +01:00
llvm-mirror/lib
Lang Hames e3c935f4ab Rewrite the PBQP graph data structure.
The new graph structure replaces the node and edge linked lists with vectors.
Free lists (well, free vectors) are used for fast insertion/deletion.

The ultimate aim is to make PBQP graphs cheap to clone. The motivation is that
the PBQP solver destructively consumes input graphs while computing a solution,
forcing the graph to be fully reconstructed for each round of PBQP. This
imposes a high cost on large functions, which often require several rounds of
solving/spilling to find a final register allocation. If we can cheaply clone
the PBQP graph and incrementally update it between rounds then hopefully we can
reduce this cost. Further, once we begin pooling matrix/vector values (future
work), we can cache some PBQP solver metadata and share it between cloned
graphs, allowing the PBQP solver to re-use some of the computation done in
earlier rounds.

For now this is just a data structure update. The allocator and solver still
use the graph the same way as before, fully reconstructing it between each
round. I expect no material change from this update, although it may change
the iteration order of the nodes, causing ties in the solver to break in
different directions, and this could perturb the generated allocations
(hopefully in a completely benign way).

Thanks very much to Arnaud Allard de Grandmaison for encouraging me to get back
to work on this, and for a lot of discussion and many useful PBQP test cases.

llvm-svn: 194300
2013-11-09 00:14:07 +00:00
..
Analysis Rewrite SCEV's backedge taken count computation. 2013-11-06 02:08:26 +00:00
AsmParser [Stackmap] Add AnyReg calling convention support for patchpoint intrinsic. 2013-11-08 23:28:16 +00:00
Bitcode Use error_code in GVMaterializer. 2013-11-05 19:36:34 +00:00
CodeGen Rewrite the PBQP graph data structure. 2013-11-09 00:14:07 +00:00
DebugInfo DebugInfo: Make pubnames header printing similar to unit header printing 2013-11-01 17:53:30 +00:00
ExecutionEngine The FIXME was indeed fixed in the linker, comment removed. 2013-10-25 12:01:53 +00:00
IR Remove ^M from the file. 2013-11-08 08:13:15 +00:00
IRReader [llvm-c] Expose IRReader interface 2013-11-06 09:21:15 +00:00
Linker Move copying of global initializers below the cloning of functions. 2013-11-07 20:14:51 +00:00
LTO Remove linkonce_odr_auto_hide. 2013-11-01 17:09:14 +00:00
MC Add a method to get the object-file appropriate stack map section. 2013-11-08 22:14:49 +00:00
Object Support for microMIPS branch instructions. 2013-11-04 14:53:22 +00:00
Option Use startswith_lower() where possible. 2013-11-04 19:22:50 +00:00
Support Add newline at EOF in DynamicLibrary.cpp 2013-11-06 11:12:46 +00:00
TableGen Fix most memory leaks in tablegen. 2013-10-31 04:07:41 +00:00
Target [Stackmap] Add AnyReg calling convention support for patchpoint intrinsic. 2013-11-08 23:28:16 +00:00
Transforms Remove dead code from LoopUnswitch 2013-11-08 19:58:21 +00:00
CMakeLists.txt Move LTO support library to a component, allowing it to be tested 2013-09-24 23:52:22 +00:00
LLVMBuild.txt Move LTO support library to a component, allowing it to be tested 2013-09-24 23:52:22 +00:00
Makefile Reformat Makefile. No other changes. 2013-10-30 04:03:03 +00:00