1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 19:12:56 +02:00
llvm-mirror/test
David Green 0987ead525 [CGP] Convert phi types
If a collection of interconnected phi nodes is only ever loaded, stored
or bitcast then we can convert the whole set to the bitcast type,
potentially helping to reduce the number of register moves needed as the
phi's are passed across basic block boundaries. This has to be done in
CodegenPrepare as it naturally straddles basic blocks.

The alorithm just looks from phi nodes, looking at uses and operands for
a collection of nodes that all together are bitcast between float and
integer types. We record visited phi nodes to not have to process them
more than once. The whole subgraph is then replaced with a new type.
Loads and Stores are bitcast to the correct type, which should then be
folded into the load/store, changing it's type.

This comes up in the biquad testcase due to the way MVE needs to keep
values in integer registers. I have also seen it come up from aarch64
partner example code, where a complicated set of sroa/inlining produced
integer phis, where float would have been a better choice.

I also added undef and extract element handling which increased the
potency in some cases.

This adds it with an option that defaults to off, and disabled for 32bit
X86 due to potential issues around canonicalizing NaNs.

Differential Revision: https://reviews.llvm.org/D81827
2020-06-21 15:54:17 +01:00
..
Analysis Revert "[BasicAA] Use known lower bounds for index values for size based check." 2020-06-20 10:06:05 +01:00
Assembler
Bindings Mark some LLVM tests which require a default_triple (NFC) 2020-06-19 06:36:20 +00:00
Bitcode [strictfp] Replace dangling strictfp attrs with nobuiltin 2020-06-15 10:05:35 -04:00
BugPoint
CodeGen [CGP] Convert phi types 2020-06-21 15:54:17 +01:00
DebugInfo [CodeView] Revert 8374bf43634725dc02a262a77b5f940fca25938c and 403f9537924b8910ed4f741ed96c61f5e657915b 2020-06-18 16:18:46 -04:00
Demangle
Examples Mark some LLVM tests which require a default_triple (NFC) 2020-06-19 06:36:20 +00:00
ExecutionEngine [JITLink] Allow zero-length symbols at the end of blocks. 2020-06-19 10:05:02 -07:00
Feature
FileCheck
Instrumentation [MSAN] Pass Origin by parameter to __msan_warning functions 2020-06-15 17:49:18 -07:00
Integer
JitListener
Linker [IR] Add missing GlobalAlias copying of ThreadLocalMode attribute 2020-06-16 20:15:27 -07:00
LTO
MachineVerifier [NFC] Remove unnecessary require global-isel from tests 2020-06-15 16:35:18 +02:00
MC [PowerPC][Power10] Implement Vector Clear Left/Rightmost Bytes Builtins in LLVM/Clang 2020-06-20 18:29:16 -05:00
Object [llvm-readobj] set --elf-cg-profile as alias of --cg-profile 2020-06-17 11:24:45 -07:00
ObjectYAML [DWARFYAML][debug_abbrev] Make the abbreviation code optional. 2020-06-18 13:02:54 +08:00
Other [CallPrinter] Adding heat coloring to CallPrinter 2020-06-16 21:15:29 +00:00
Reduce
SafepointIRVerifier
Support
SymbolRewriter
TableGen
ThinLTO/X86
tools Revert "Add --hot-func-list to llvm-profdata show for sample profiles" 2020-06-21 14:33:08 +01:00
Transforms [ValueTracking] improve analysis for fdiv with same operands 2020-06-21 09:07:59 -04:00
Unit
Verifier [Matrix] Update load/store intrinsics. 2020-06-18 09:44:52 +01:00
YAMLParser
.clang-format
CMakeLists.txt
lit.cfg.py
lit.site.cfg.py.in
TestRunner.sh