1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 19:12:56 +02:00
llvm-mirror/include/llvm
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
..
ADT [clang-tidy] remove duplicate fixes of alias checkers 2020-06-19 20:40:59 +01:00
Analysis [Remarks] Add callsite locations to inline remarks 2020-06-20 23:32:10 -07:00
AsmParser Fix -Wdocumentation warning. NFC. 2020-05-16 15:00:56 +01:00
BinaryFormat [AMDGPU] Add gfx1030 target 2020-06-15 16:18:05 -07:00
Bitcode [StackSafety] Add info into function summary 2020-06-10 02:43:28 -07:00
Bitstream
CodeGen [CGP] Convert phi types 2020-06-21 15:54:17 +01:00
Config
DebugInfo [CodeView] Add TypeCollection::replaceType to replace type records post-merging 2020-06-18 09:17:14 -04:00
Demangle Give microsoftDemangle() an outparam for how many input bytes were consumed. 2020-05-20 16:17:31 -04:00
DWARFLinker [dsymutil] Add option to print statistics about the .debug_info size. 2020-05-06 19:48:45 -07:00
ExecutionEngine [JITLink] Allow zero-length symbols at the end of blocks. 2020-06-19 10:05:02 -07:00
Frontend/OpenMP [OpenMP][AMDGCN] Support OpenMP offloading for AMDGCN architecture - Part 2 2020-06-10 18:09:59 +00:00
FuzzMutate FuzzerCLI.h - reduce StringRef.h include to forward declaration. NFC. 2020-05-12 13:03:50 +01:00
IR [PowerPC][Power10] Implement Vector Clear Left/Rightmost Bytes Builtins in LLVM/Clang 2020-06-20 18:29:16 -05:00
IRReader Infer alignment of unmarked loads in IR/bitcode parsing. 2020-05-14 13:03:50 -07:00
LineEditor
Linker
LTO [LLD][ThinLTO] Add --thinlto-single-module to allow compiling partial modules. 2020-06-10 15:32:30 -07:00
MC [MC] Pass the symbol rather than its name to onSymbolStart() 2020-06-19 09:30:12 +05:30
MCA [MCA] Fixed a bug where loads and stores were sometimes incorrectly marked as depedent. Fixes PR45793. 2020-05-05 10:25:36 +01:00
Object [llvm-readobj] - Do not crash when GnuHashTable->symndx is greater than the dynamic symbols count. 2020-06-17 14:26:36 +03:00
ObjectYAML [DWARFYAML][debug_abbrev] Make the abbreviation code optional. 2020-06-18 13:02:54 +08:00
Option [lld-macho] Specify the complete set of command-line options for ld64 2020-06-15 12:50:20 -07:00
Passes NFC: Simplify O1 pass pipeline construction. 2020-05-29 20:08:22 -07:00
ProfileData Revert "Add --hot-func-list to llvm-profdata show for sample profiles" 2020-06-21 14:33:08 +01:00
Remarks RemarkStringTable.h - reduce StringRef/Remark includes to forward declarations. NFC 2020-05-08 12:30:49 +01:00
Support [Support/Utils] As part of using inclusive language within the 2020-06-20 00:15:50 -07:00
TableGen [TableGen] Delete unused Record::resolveReferencesTo() after D44478. NFC 2020-04-26 01:21:41 -07:00
Target [xray] Option to omit the function index 2020-06-17 13:49:01 -04:00
Testing/Support
TextAPI [llvm][llvm-nm] add TextAPI/MachO support 2020-06-11 18:54:16 -07:00
ToolDrivers
Transforms [Analysis/Transforms/Sanitizers] As part of using inclusive language 2020-06-20 00:42:26 -07:00
WindowsManifest
WindowsResource
XRay [XRay] Change Sled.Function to PC-relative for sled version 2 and make llvm-xray support sled version 2 addresses 2020-04-24 14:41:56 -07:00
CMakeLists.txt
InitializePasses.h [StackSafety] Pass summary into codegen 2020-06-10 21:02:54 -07:00
LinkAllIR.h
LinkAllPasses.h Revert "Added a new IRCanonicalizer pass." 2020-05-23 13:51:43 +02:00
module.extern.modulemap
module.install.modulemap
module.modulemap Add DIAError.h to list of headers excluded from the LLVM_DebugInfo_PDB module 2020-06-01 21:01:05 +01:00
module.modulemap.build
Pass.h
PassAnalysisSupport.h [Pass] Ensure we don't include PassSupport.h or PassAnalysisSupport.h directly 2020-04-26 12:58:20 +01:00
PassInfo.h
PassRegistry.h
PassSupport.h [Pass] Ensure we don't include PassSupport.h or PassAnalysisSupport.h directly 2020-04-26 12:58:20 +01:00