Commit Graph

36 Commits

Author SHA1 Message Date
Eugene Zelenko e08253200c [Hexagon] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309746 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-01 21:20:10 +00:00
Chandler Carruth e3e43d9d57 Sort the remaining #include lines in include/... and lib/....
I did this a long time ago with a janky python script, but now
clang-format has built-in support for this. I fed clang-format every
line with a #include and let it re-sort things according to the precise
LLVM rules for include ordering baked into clang-format these days.

I've reverted a number of files where the results of sorting includes
isn't healthy. Either places where we have legacy code relying on
particular include ordering (where possible, I'll fix these separately)
or where we have particular formatting around #include lines that
I didn't want to disturb in this patch.

This patch is *entirely* mechanical. If you get merge conflicts or
anything, just ignore the changes in this patch and run clang-format
over your #include lines in the files.

Sorry for any noise here, but it is important to keep these things
stable. I was seeing an increasing number of patches with irrelevant
re-ordering of #include lines because clang-format was used. This patch
at least isolates that churn, makes it easy to skip when resolving
conflicts, and gets us to a clean baseline (again).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304787 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-06 11:49:48 +00:00
Krzysztof Parzyszek 6d59bf7ade [RDF] Remove covered parts of reached uses for phi and use in same block
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302305 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-05 22:10:32 +00:00
Krzysztof Parzyszek 737d3b6aab [RDF] Correctly calculate lane masks for defs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301700 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 21:57:53 +00:00
Krzysztof Parzyszek 0e9e7d51d9 [RDF] Switch RegisterAggr to a bit vector of register units
This avoids many complications related to the complex register
aliasing schemes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@300345 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-14 17:25:13 +00:00
Krzysztof Parzyszek 58bea371b9 [RDF] Refine propagation of reached uses in liveness computation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@300337 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-14 16:33:54 +00:00
Krzysztof Parzyszek 590c4ddc3f [RDF] Implement Liveness::getNearestAliasedRef(Reg, Inst)
This function will find the closest ref node aliased to Reg that is
in an instruction preceding Inst. This could be used to identify the
hypothetical reaching def of Reg, if Reg was a member of Inst.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297524 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-10 22:42:17 +00:00
Krzysztof Parzyszek b907366aa3 [RDF] Replace {} with explicit constructor, since not all compilers like it
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@296666 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-01 19:59:28 +00:00
Krzysztof Parzyszek 858e806724 [RDF] Add recursion limit to getAllReachingDefsRec
For large programs this function can take significant amounts of time.
Let it abort gracefully when the program is too complex.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@296662 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-01 19:30:42 +00:00
Krzysztof Parzyszek e2af082e44 [RDF] Skip undef uses when calculating kill flags
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@295856 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-22 18:29:16 +00:00
Krzysztof Parzyszek ff2120a9ec [RDF] Aggregate shadow phi uses into one cluster when propagating live info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@295366 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-16 19:28:06 +00:00
Krzysztof Parzyszek 62209f2721 [RDF] Move normalize(RegisterRef) to PhysicalRegisterInfo
Remove the duplicate from DFG and make some members of PRI private.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@295351 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-16 18:45:23 +00:00
Krzysztof Parzyszek 91c16f100d [RDF] Extract the physical register information into a separate class
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293510 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-30 17:46:56 +00:00
Krzysztof Parzyszek 10d8ceab1f [RDF] Add phis for entry block live-ins (in addition to function live-ins)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293491 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-30 16:20:30 +00:00
Krzysztof Parzyszek 8614146660 [RDF] Add registers to live set even if they are live already
When calculating kills, a register may be considered live because a part
of it is live, but if there is a use of that (whole) register, the whole
register (and its subregisters) need to be added to the live set.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292845 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-23 23:03:49 +00:00
Krzysztof Parzyszek 308c60d0cb Implement LaneBitmask::any(), use it to replace !none(), NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@289974 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-16 19:11:56 +00:00
Krzysztof Parzyszek d6ca3f019d Extract LaneBitmask into a separate type
Specifically avoid implicit conversions from/to integral types to
avoid potential errors when changing the underlying type. For example,
a typical initialization of a "full" mask was "LaneMask = ~0u", which
would result in a value of 0x00000000FFFFFFFF if the type was extended
to uint64_t.

Differential Revision: https://reviews.llvm.org/D27454


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@289820 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-15 14:36:06 +00:00
Reid Kleckner 3a3c5c8815 Use __func__ directly now that all supported compilers support it
Remove the portability macro now that it is unused.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284681 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-20 00:22:23 +00:00
Krzysztof Parzyszek cac70281f9 [RDF] Switch RefMap in liveness calculation to use lane masks
This required reengineering of some of the part of liveness calculation,
including fixing some issues caused by the limitations of the previous
approach. The current code is not necessarily the fastest, but it should
be functionally correct (at least more so than before). The compile-time
performance will be addressed in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284609 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-19 16:30:56 +00:00
Krzysztof Parzyszek 4869102e4f [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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284255 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 17:57:55 +00:00
Krzysztof Parzyszek 630fd0186c [RDF] Replace some expensive copies with references in range-based loops
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283446 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-06 13:05:46 +00:00
Krzysztof Parzyszek 78f1992816 [RDF] Replace potentially unclear autos with real types
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283445 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-06 13:05:13 +00:00
Krzysztof Parzyszek f4de15f80e [RDF] Fix live def propagation through basic block
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283371 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-05 20:08:09 +00:00
Krzysztof Parzyszek 6f4042b831 [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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283143 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-03 20:17:20 +00:00
Krzysztof Parzyszek d1ed87a667 [RDF] Replace RegisterAliasInfo with target-independent code using lane masks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283122 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-03 17:14:48 +00:00
Krzysztof Parzyszek 8263469827 [RDF] Add "dead" flag to node attributes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282520 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-27 18:24:33 +00:00
Krzysztof Parzyszek 319d69e0f2 [RDF] Add initial support for lane masks in the DFG
Use lane masks for calculating covering and aliasing of register
references.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282194 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-22 21:01:24 +00:00
Krzysztof Parzyszek 01b876d45e [RDF] Further improve handling of multiple phis reached from shadows
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@280987 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-08 20:48:42 +00:00
Krzysztof Parzyszek 4ecf8b9ba3 [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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@280855 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-07 20:37:05 +00:00
Krzysztof Parzyszek 80708afe43 [RDF] Introduce "undef" flag for ref nodes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@280851 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-07 20:10:56 +00:00
David Majnemer dc9c737666 Use range algorithms instead of unpacking begin/end
No functionality change is intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278417 91177308-0d34-0410-b5e6-96231b3b80d8
2016-08-11 21:15:00 +00:00
Krzysztof Parzyszek 9e424c51df [RDF] Ignore implicit defs when resetting <kill> flags
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271519 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-02 14:30:09 +00:00
Benjamin Kramer e1a12fcbf1 [hexagon] Move BlockRanges and RDF stuff into the llvm namespace.
No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270980 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-27 10:06:40 +00:00
Krzysztof Parzyszek 744cc49078 [Hexagon] Optimize addressing modes for load/store
Patch by Jyotsna Verma.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268051 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-29 15:49:13 +00:00
Krzysztof Parzyszek dc458b494e [RDF] Consider register as live if any alias is live
This only affects the recomputation of kill flags.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266875 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-20 14:33:23 +00:00
Krzysztof Parzyszek 1f5e82ef66 RDF: Implement register liveness analysis
Compute block live-ins and operand kill flags from the DFG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257480 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-12 15:56:33 +00:00