Krzysztof Parzyszek
445bd12621
[RDF] Switch RegisterRef to be a pair (Register, LaneMask)
...
Use PackedRegisterRef to store the register information in the graph nodes.
This commit also removes support for virtual registers. It has never been
tested or used. It will be possible to add it back if there is a need.
llvm-svn: 284255
2016-10-14 17:57:55 +00:00
Krzysztof Parzyszek
459a1c9f2b
[RDF] Replace some expensive copies with references in range-based loops
...
llvm-svn: 283446
2016-10-06 13:05:46 +00:00
Krzysztof Parzyszek
61d9032bf3
[RDF] Replace potentially unclear autos with real types
...
llvm-svn: 283445
2016-10-06 13:05:13 +00:00
Krzysztof Parzyszek
3b6cbd55f7
[RDF] Fix live def propagation through basic block
...
llvm-svn: 283371
2016-10-05 20:08:09 +00:00
Krzysztof Parzyszek
c8b6ecabd8
[RDF] Fix liveness propagation through shadows
...
Each shadow only represents data flow that is restricted to its reaching
def. Propagating more than that could lead to spurious register liveness,
resulting in extra (incorrectly) block live-ins.
llvm-svn: 283143
2016-10-03 20:17:20 +00:00
Krzysztof Parzyszek
a77fe4eef3
[RDF] Replace RegisterAliasInfo with target-independent code using lane masks
...
llvm-svn: 283122
2016-10-03 17:14:48 +00:00
Krzysztof Parzyszek
586fc12e32
[RDF] Add "dead" flag to node attributes
...
llvm-svn: 282520
2016-09-27 18:24:33 +00:00
Krzysztof Parzyszek
29e93f3880
[RDF] Add initial support for lane masks in the DFG
...
Use lane masks for calculating covering and aliasing of register
references.
llvm-svn: 282194
2016-09-22 21:01:24 +00:00
Krzysztof Parzyszek
a1218728d3
[RDF] Further improve handling of multiple phis reached from shadows
...
llvm-svn: 280987
2016-09-08 20:48:42 +00:00
Krzysztof Parzyszek
2db0c8b75f
[RDF] Fix liveness analysis for phi nodes with shadow uses
...
Shadow uses need to be analyzed together, since each individual shadow
will only have a partial reaching def. All shadows together may cover
a given register ref, while each individual shadow may not.
llvm-svn: 280855
2016-09-07 20:37:05 +00:00
Krzysztof Parzyszek
1ff99525f7
[RDF] Introduce "undef" flag for ref nodes
...
llvm-svn: 280851
2016-09-07 20:10:56 +00:00
David Majnemer
0a16c22846
Use range algorithms instead of unpacking begin/end
...
No functionality change is intended.
llvm-svn: 278417
2016-08-11 21:15:00 +00:00
Krzysztof Parzyszek
f69ff7120b
[RDF] Ignore implicit defs when resetting <kill> flags
...
llvm-svn: 271519
2016-06-02 14:30:09 +00:00
Benjamin Kramer
922efd7a67
[hexagon] Move BlockRanges and RDF stuff into the llvm namespace.
...
No functional change intended.
llvm-svn: 270980
2016-05-27 10:06:40 +00:00
Krzysztof Parzyszek
f5cbac93eb
[Hexagon] Optimize addressing modes for load/store
...
Patch by Jyotsna Verma.
llvm-svn: 268051
2016-04-29 15:49:13 +00:00
Krzysztof Parzyszek
16331f0aa0
[RDF] Consider register as live if any alias is live
...
This only affects the recomputation of kill flags.
llvm-svn: 266875
2016-04-20 14:33:23 +00:00
Krzysztof Parzyszek
acdff46a9c
RDF: Implement register liveness analysis
...
Compute block live-ins and operand kill flags from the DFG.
llvm-svn: 257480
2016-01-12 15:56:33 +00:00