llvm-project/llvm/test
David Green 7d9af03ff7 [Scheduling][ARM] Consistently enable PostRA Machine scheduling
In the ARM backend, for historical reasons we have only some targets
using Machine Scheduling. The rest use the old list scheduler as they
are using itinaries and the list scheduler seems to produce better code
(and not crash running out of register on v6m codes). So whether to use
the MIScheduler or not is checked at runtime from the subtarget
features.

This is fine, except for post-ra scheduling. Whether to use the old
post-ra list scheduler or the post-ra machine schedule is decided as the
pass manager is set up, in arms case from a newly constructed subtarget.
Under some situations, like LTO, this won't include the correct cpu so
can pick the wrong option. This can have a surprising effect on
performance.

To fix that, this patch overrides targetSchedulesPostRAScheduling and
addPreSched2 in the ARM backend, adding _both_ post-ra schedulers and
picking at runtime which to execute. To pick between the two I've had to
add a enablePostRAMachineScheduler() method that normally returns
enableMachineScheduler() && enablePostRAScheduler(), which can be
overridden to enable just one of PostRAMachineScheduler vs
PostRAScheduler.

Thanks to David Penry for the identifying this problem.

Differential Revision: https://reviews.llvm.org/D69775
2019-11-05 10:44:55 +00:00
..
Analysis [X86] Lower the cost of avx512 horizontal bool and/or reductions to 2*log2(bitwidth)+1 for legal types. 2019-11-04 22:58:04 -08:00
Assembler Fix non-portable GNU diff option 2019-10-23 11:19:01 -04:00
Bindings [IR] Add Freeze instruction 2019-11-05 15:54:56 +09:00
Bitcode [IR] Add Freeze instruction 2019-11-05 15:54:56 +09:00
BugPoint [bugpoint] Reduce metadata that does not contribute to crash. 2019-10-30 15:11:56 +00:00
CodeGen [Scheduling][ARM] Consistently enable PostRA Machine scheduling 2019-11-05 10:44:55 +00:00
DebugInfo [CGDebugInfo] Emit subprograms for decls when AT_tail_call is understood 2019-11-04 15:14:24 -08:00
Demangle [Demangle] Add a few more options to the microsoft demangler 2019-10-15 08:29:56 +00:00
Examples
ExecutionEngine [JITLink] Switch to slab allocation for InProcessMemoryManager, re-enable test. 2019-10-15 21:06:57 +00:00
Feature [FPEnv] Add constrained intrinsics for lrint and lround 2019-10-07 13:20:00 +00:00
FileCheck [FileCheck] Implement --ignore-case option. 2019-10-11 11:59:14 +00:00
Instrumentation [hwasan] Remove lazy thread-initialisation 2019-11-04 10:58:46 +00:00
Integer
JitListener
LTO Reland: Dead Virtual Function Elimination 2019-10-17 09:58:57 +00:00
Linker
MC [SystemZ] Improve handling of huge PC relative immediate offsets. 2019-11-04 10:38:18 +01:00
MachineVerifier Fix buildbots troubled by b7b170c. 2019-11-04 16:54:33 +01:00
Object [llvm-readobj] Change errors to warnings for symbol section name dumping 2019-11-04 12:04:04 +00:00
ObjectYAML [ObjectYAML] - Redefine LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::yaml::Hex*) as LLVM_YAML_IS_FLOW_SEQUENCE_VECTOR. 2019-10-30 18:12:48 +03:00
Other [NewPM] Add an SROA pass after loop unroll 2019-11-01 14:59:08 -07:00
Reduce
SafepointIRVerifier
Support
SymbolRewriter
TableGen [GlobalISel] Match table opt: fix a bug in matching num of operands 2019-11-01 01:57:48 -07:00
ThinLTO/X86 Recommit "[ThinLTO] Handle GUID collision in import global processing"" 2019-11-01 13:57:01 -07:00
Transforms [LoopUnroll] peel-loop-conditions.ll: add some 'is even/odd' peeling tests 2019-11-05 13:02:57 +03:00
Unit
Verifier [DebugInfo] Add a DW_OP_LLVM_entry_value operation 2019-10-15 11:31:21 +00:00
YAMLParser
tools DWARFDebugLoclists: Make it possible to read relocated addresses 2019-11-05 10:21:39 +01:00
.clang-format
CMakeLists.txt
TestRunner.sh
lit.cfg.py Reland "[utils] Implement the llvm-locstats tool" 2019-10-02 07:00:01 +00:00
lit.site.cfg.py.in