llvm-project/llvm/test
Zi Xuan Wu 9f41deccc0 [LoopVectorize][PowerPC] Estimate int and float register pressure separately in loop-vectorize
In loop-vectorize, interleave count and vector factor depend on target register number. Currently, it does not
estimate different register pressure for different register class separately(especially for scalar type,
float type should not be on the same position with int type), so it's not accurate. Specifically,
it causes too many times interleaving/unrolling, result in too many register spills in loop body and hurting performance.

So we need classify the register classes in IR level, and importantly these are abstract register classes,
and are not the target register class of backend provided in td file. It's used to establish the mapping between
the types of IR values and the number of simultaneous live ranges to which we'd like to limit for some set of those types.

For example, POWER target, register num is special when VSX is enabled. When VSX is enabled, the number of int scalar register is 32(GPR),
float is 64(VSR), but for int and float vector register both are 64(VSR). So there should be 2 kinds of register class when vsx is enabled,
and 3 kinds of register class when VSX is NOT enabled.

It runs on POWER target, it makes big(+~30%) performance improvement in one specific bmk(503.bwaves_r) of spec2017 and no other obvious degressions.

Differential revision: https://reviews.llvm.org/D67148

llvm-svn: 374017
2019-10-08 03:28:33 +00:00
..
Analysis [MemorySSA] Don't hoist stores if interfering uses (as calls) exist. 2019-10-03 22:20:04 +00:00
Assembler
Bindings [LLVM-C] Add bindings to create macro debug info 2019-10-07 13:57:13 +00:00
Bitcode [IR] allow fast-math-flags on phi of FP values (2nd try) 2019-09-25 14:35:02 +00:00
BugPoint
CodeGen [WebAssembly] Add REQUIRES: asserts to cfg-stackify-eh.ll 2019-10-08 02:50:27 +00:00
DebugInfo [DebugInfo] LiveDebugValues: move DBG_VALUE creation into VarLoc class 2019-10-04 10:53:47 +00:00
Demangle llvm-undname: Add support for demangling typeinfo names 2019-09-23 13:13:37 +00:00
Examples
ExecutionEngine [JITLink] Switch from an atom-based model to a "blocks and symbols" model. 2019-10-04 03:55:26 +00:00
Feature [FPEnv] Add constrained intrinsics for lrint and lround 2019-10-07 13:20:00 +00:00
FileCheck
Instrumentation Handle llvm.launder.invariant.group in msan. 2019-10-02 19:53:19 +00:00
Integer
JitListener
LTO [IRMover] Don't map globals if their types are the same 2019-09-11 18:35:49 +00:00
Linker Remove some unnecessary REQUIRES: shell lines 2019-09-10 00:06:52 +00:00
MC [Mips] Fix evaluating J-format branch targets 2019-10-07 14:01:22 +00:00
MachineVerifier Add an operand to memory intrinsics to denote the "tail" marker. 2019-09-28 05:33:21 +00:00
Object [mips] Use llvm-readobj `-A` flag in test cases. NFC 2019-10-03 12:08:04 +00:00
ObjectYAML [yaml2obj/ObjectYAML] - Cleanup the error reporting API, add custom errors handlers. 2019-09-13 16:00:16 +00:00
Other [Float2Int] avoid crashing on unreachable code (PR38502) 2019-09-19 16:31:17 +00:00
Reduce [Testing] Python 3 requires `print` to use parens 2019-09-20 13:52:47 +00:00
SafepointIRVerifier
Support
SymbolRewriter
TableGen [TableGen] Emit OperandType enums for RegisterOperands/RegisterClasses 2019-09-23 18:51:00 +00:00
ThinLTO/X86 [ThinLTO/WPD] Ensure devirtualized targets use promoted symbol when necessary 2019-10-02 16:36:59 +00:00
Transforms [LoopVectorize][PowerPC] Estimate int and float register pressure separately in loop-vectorize 2019-10-08 03:28:33 +00:00
Unit
Verifier [FPEnv] Strict FP tests should use the requisite function attributes. 2019-10-04 17:03:46 +00:00
YAMLParser
tools [SampleFDO] Add compression support for any section in ExtBinary profile format 2019-10-07 16:12:37 +00: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 Follow-up to r372209: Use single quotes for host_ldflags in the lit config 2019-09-18 14:12:59 +00:00