Revision tags: llvmorg-3.5.2, llvmorg-3.5.2-rc1 |
|
#
5f141b03 |
| 11-Mar-2015 |
Eric Christopher <echristo@gmail.com> |
Remove useMachineScheduler and replace it with subtarget options that control, individually, all of the disparate things it was controlling.
At the same time move a FIXME in the Hexagon port to a ne
Remove useMachineScheduler and replace it with subtarget options that control, individually, all of the disparate things it was controlling.
At the same time move a FIXME in the Hexagon port to a new subtarget function that will enable a user of the machine scheduler to avoid using the source scheduler for pre-RA-scheduling. The FIXME would have this removed, but involves either testcase changes or adding -pre-RA-sched=source to a few testcases.
llvm-svn: 231980
show more ...
|
Revision tags: llvmorg-3.6.0, llvmorg-3.6.0-rc4, llvmorg-3.6.0-rc3, llvmorg-3.6.0-rc2 |
|
#
3d4276f0 |
| 27-Jan-2015 |
Eric Christopher <echristo@gmail.com> |
The subtarget is cached on the MachineFunction. Access it directly.
llvm-svn: 227173
|
#
54c61ede |
| 19-Jan-2015 |
Michael Kuperstein <michael.m.kuperstein@intel.com> |
[MIScheduler] Slightly better handling of constrainLocalCopy when both source and dest are local This fixes PR21792.
Differential Revision: http://reviews.llvm.org/D6823
llvm-svn: 226433
|
Revision tags: llvmorg-3.6.0-rc1, llvmorg-3.5.1, llvmorg-3.5.1-rc2 |
|
#
7ba78302 |
| 13-Dec-2014 |
Akira Hatanaka <ahatanaka@apple.com> |
Rename argument strings of codegen passes to avoid collisions with command line options.
This commit changes the command line arguments (PassInfo::PassArgument) of two passes, MachineFunctionPrinter
Rename argument strings of codegen passes to avoid collisions with command line options.
This commit changes the command line arguments (PassInfo::PassArgument) of two passes, MachineFunctionPrinter and MachineScheduler, to avoid collisions with command line options that have the same argument strings.
This bug manifests when the PassList construct (defined in opt.cpp) is used in a tool that links with codegen passes. To reproduce the bug, paste the following lines into llc.cpp and run llc.
#include "llvm/IR/LegacyPassNameParser.h" static llvm::cl::list<const llvm::PassInfo*, bool, llvm::PassNameParser> PassList(llvm::cl::desc("Optimizations available:"));
rdar://problem/19212448
llvm-svn: 224186
show more ...
|
#
d65fd9fa |
| 12-Dec-2014 |
Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net> |
Reapply "[MachineScheduler] Fix for PR21807: minor code difference building with/without -g."
This reapplies r224118 with a fix for test 'misched-code-difference-with-debug.ll'. That test was failin
Reapply "[MachineScheduler] Fix for PR21807: minor code difference building with/without -g."
This reapplies r224118 with a fix for test 'misched-code-difference-with-debug.ll'. That test was failing on some buildbots because it was x86 specific but it was missing a target triple. Added an explicit triple to test misched-code-difference-with-debug.ll.
llvm-svn: 224126
show more ...
|
#
5634a54e |
| 12-Dec-2014 |
Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net> |
Revert: [MachineScheduler] Fix for PR21807: minor code difference building with/without -g.
Test 'misched-code-difference-with-debug.ll' was failing on some buildbots.
llvm-svn: 224121
|
#
01236e3e |
| 12-Dec-2014 |
Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net> |
[MachineScheduler] Fix for PR21807: minor code difference building with/without -g.
This patch fixes the issue reported as PR21807. There was a minor difference in the generated code depending on th
[MachineScheduler] Fix for PR21807: minor code difference building with/without -g.
This patch fixes the issue reported as PR21807. There was a minor difference in the generated code depending on the -g flag.
The cause was that with -g the machine scheduler used a different scheduling strategy. This decision was based on the number of instructions in a schedule region and included debug instructions in that count.
This patch fixes the issue in MISched and provides a test.
Patch by Russell Gallop!
llvm-svn: 224118
show more ...
|
Revision tags: llvmorg-3.5.1-rc1 |
|
#
99556d77 |
| 14-Oct-2014 |
Eric Christopher <echristo@gmail.com> |
Access the subtarget off of the MachineFunction via the DAG scheduler or via the SelectionDAG if available. Otherwise grab the subtarget off of the MachineFunction by going up the parent chain.
llvm
Access the subtarget off of the MachineFunction via the DAG scheduler or via the SelectionDAG if available. Otherwise grab the subtarget off of the MachineFunction by going up the parent chain.
llvm-svn: 219666
show more ...
|
#
7a87f8a6 |
| 10-Oct-2014 |
Hal Finkel <hfinkel@anl.gov> |
[MiSched] Fix a logic error in tryPressure()
Fixes a logic error in the MachineScheduler found by Steve Montgomery (and confirmed by Andy). This has gone unfixed for months because the fix has been
[MiSched] Fix a logic error in tryPressure()
Fixes a logic error in the MachineScheduler found by Steve Montgomery (and confirmed by Andy). This has gone unfixed for months because the fix has been found to introduce some small performance regressions. However, Andy has recommended that, at this point, we fix this to avoid further dependence on the incorrect behavior (and then follow-up separately on any regressions), and I agree.
Fixes PR18883.
llvm-svn: 219512
show more ...
|
Revision tags: llvmorg-3.5.0, llvmorg-3.5.0-rc4, llvmorg-3.5.0-rc3 |
|
#
b5220dc7 |
| 07-Aug-2014 |
Gerolf Hoflehner <ghoflehner@apple.com> |
Debugging Utility - optional ability for dumping critical path length
llvm-svn: 215153
|
Revision tags: llvmorg-3.5.0-rc2 |
|
#
fc6de428 |
| 05-Aug-2014 |
Eric Christopher <echristo@gmail.com> |
Have MachineFunction cache a pointer to the subtarget to make lookups shorter/easier and have the DAG use that to do the same lookup. This can be used in the future for TargetMachine based caching lo
Have MachineFunction cache a pointer to the subtarget to make lookups shorter/easier and have the DAG use that to do the same lookup. This can be used in the future for TargetMachine based caching lookups from the MachineFunction easily.
Update the MIPS subtarget switching machinery to update this pointer at the same time it runs.
llvm-svn: 214838
show more ...
|
#
d913448b |
| 04-Aug-2014 |
Eric Christopher <echristo@gmail.com> |
Remove the TargetMachine forwards for TargetSubtargetInfo based information and update all callers. No functional change.
llvm-svn: 214781
|
Revision tags: llvmorg-3.5.0-rc1 |
|
#
aba845e8 |
| 02-Jul-2014 |
Chad Rosier <mcrosier@codeaurora.org> |
Revert "Revert "MachineScheduler: better book-keeping for asserts.""
This reverts commit r212109, which reverted r212088.
However, disable the assert as it's not necessary for correctness. There a
Revert "Revert "MachineScheduler: better book-keeping for asserts.""
This reverts commit r212109, which reverted r212088.
However, disable the assert as it's not necessary for correctness. There are several corner cases that the assert needed to handle better for in-order scheduling, but none of them are incorrect scheduler behavior. The assert is mainly there to collect good unit tests like this and ensure that the target-independent scheduler is working as expected with the various machine models.
llvm-svn: 212187
show more ...
|
#
d8d510af |
| 01-Jul-2014 |
Alp Toker <alp@nuanti.com> |
Move remaining LLVM_ENABLE_DUMP conditionals out of the headers
This macro is sometimes defined manually but isn't (and doesn't need to be) in llvm-config.h so shouldn't appear in the headers, likew
Move remaining LLVM_ENABLE_DUMP conditionals out of the headers
This macro is sometimes defined manually but isn't (and doesn't need to be) in llvm-config.h so shouldn't appear in the headers, likewise NDEBUG.
Instead switch them over to LLVM_DUMP_METHOD on the definitions.
llvm-svn: 212130
show more ...
|
#
f575a737 |
| 01-Jul-2014 |
Chad Rosier <mcrosier@codeaurora.org> |
Revert "MachineScheduler: better book-keeping for asserts."
This reverts commit r212088, which is causing a number of spec failures. Will provide reduced test cases shortly. PR20057
llvm-svn: 2121
Revert "MachineScheduler: better book-keeping for asserts."
This reverts commit r212088, which is causing a number of spec failures. Will provide reduced test cases shortly. PR20057
llvm-svn: 212109
show more ...
|
#
f1b307bc |
| 01-Jul-2014 |
Andrew Trick <atrick@apple.com> |
MachineScheduler: better book-keeping for asserts.
Fixes another test case under PR20057.
llvm-svn: 212088
|
#
040c0da5 |
| 27-Jun-2014 |
Andrew Trick <atrick@apple.com> |
Left out the NDEBUG in the previous checkin.
llvm-svn: 211867
|
#
5632722c |
| 27-Jun-2014 |
Andrew Trick <atrick@apple.com> |
MachineScheduler: add some book-keeping to fix an assert.
Fixe for Bug 20057 - Assertion failied in llvm::SUnit* llvm::SchedBoundary::pickOnlyChoice(): Assertion `i <= (HazardRec->getMaxLookAhead()
MachineScheduler: add some book-keeping to fix an assert.
Fixe for Bug 20057 - Assertion failied in llvm::SUnit* llvm::SchedBoundary::pickOnlyChoice(): Assertion `i <= (HazardRec->getMaxLookAhead() + MaxObservedStall) && "permanent hazard"'
Thanks to Chad for the test case.
llvm-svn: 211865
show more ...
|
#
e69170a1 |
| 26-Jun-2014 |
Alp Toker <alp@nuanti.com> |
Revert "Introduce a string_ostream string builder facilty"
Temporarily back out commits r211749, r211752 and r211754.
llvm-svn: 211814
|
#
61471738 |
| 26-Jun-2014 |
Alp Toker <alp@nuanti.com> |
Introduce a string_ostream string builder facilty
string_ostream is a safe and efficient string builder that combines opaque stack storage with a built-in ostream interface.
small_string_ostream<by
Introduce a string_ostream string builder facilty
string_ostream is a safe and efficient string builder that combines opaque stack storage with a built-in ostream interface.
small_string_ostream<bytes> additionally permits an explicit stack storage size other than the default 128 bytes to be provided. Beyond that, storage is transferred to the heap.
This convenient class can be used in most places an std::string+raw_string_ostream pair or SmallString<>+raw_svector_ostream pair would previously have been used, in order to guarantee consistent access without byte truncation.
The patch also converts much of LLVM to use the new facility. These changes include several probable bug fixes for truncated output, a programming error that's no longer possible with the new interface.
llvm-svn: 211749
show more ...
|
#
491e34a1 |
| 12-Jun-2014 |
Andrew Trick <atrick@apple.com> |
Fix the scheduler's MaxObservedStall computation.
WenHan Gu pointed out this bug that results in an assert not being effective in some cases.
llvm-svn: 210846
|
#
7f1ebbeb |
| 07-Jun-2014 |
Andrew Trick <atrick@apple.com> |
Fix the MachineScheduler's logic for updating ready times for in-order.
Now the scheduler updates a node's ready time as soon as it is scheduled, before releasing dependent nodes. There was a reason
Fix the MachineScheduler's logic for updating ready times for in-order.
Now the scheduler updates a node's ready time as soon as it is scheduled, before releasing dependent nodes. There was a reason I didn't do this initially but it no longer applies.
A53 is in-order and was running into an issue where nodes where added to the readyQ too early. That's now fixed.
This also makes it easier for custom scheduling strategies to build heuristics based on the actual cycles that the node was scheduled at.
The only impact on OOO (sandybridge/cyclone) is that ready times will be slightly more accurate. I didn't measure any significant regressions.
llvm-svn: 210390
show more ...
|
#
8d2ee37f |
| 04-Jun-2014 |
Andrew Trick <atrick@apple.com> |
Add a subtarget hook: enablePostMachineScheduler.
As requested by AArch64 subtargets.
Note that this will have no effect until the AArch64 target actually enables the pass like this: substitutePass
Add a subtarget hook: enablePostMachineScheduler.
As requested by AArch64 subtargets.
Note that this will have no effect until the AArch64 target actually enables the pass like this: substitutePass(&PostRASchedulerID, &PostMachineSchedulerID);
As soon as armv7 switches over, PostMachineScheduler will become the default postRA scheduler, so this won't be necessary any more. Targets using the old postRA schedule would then do: substitutePass(&PostMachineSchedulerID, &PostRASchedulerID);
llvm-svn: 210167
show more ...
|
#
3ccf71d4 |
| 04-Jun-2014 |
Andrew Trick <atrick@apple.com> |
Move GenericScheduler and PostGenericScheduler into a header.
These were not exposed previously because I didn't want out-of-tree targets to be too dependent on their internals. They can be reused f
Move GenericScheduler and PostGenericScheduler into a header.
These were not exposed previously because I didn't want out-of-tree targets to be too dependent on their internals. They can be reused for a very wide variety of processors with casual scheduling needs without exposing the classes by instead using hooks defined in MachineSchedPolicy (we can add more if needed). When targets are more aggressively tuned or want to provide custom heuristics, they can define their own MachineSchedStrategy. I tend to think this is better once you start customizing heuristics because you can copy over only what you need. I don't think that layering heuristics generally works well.
However, Arch64 targets now want to reuse the Generic scheduling logic but also provide extensions. I don't see much harm in exposing the Generic scheduling classes with a major caveat: these scheduling strategies may change in the future without validating performance on less mainstream processors. If you want to be immune from changes, just define your own MachineSchedStrategy.
llvm-svn: 210166
show more ...
|
Revision tags: llvmorg-3.4.2, llvmorg-3.4.2-rc1 |
|
#
9d74a5a5 |
| 29-Apr-2014 |
Craig Topper <craig.topper@gmail.com> |
[C++11] Add 'override' keywords and remove 'virtual'. Additionally add 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides th
[C++11] Add 'override' keywords and remove 'virtual'. Additionally add 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides themselves.
llvm-svn: 207511
show more ...
|