1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-26 04:32:44 +01:00
llvm-mirror/include/llvm
Diana Picus 7313013525 [GlobalISel] Accept multiple vregs in lowerFormalArgs
Change the interface of CallLowering::lowerFormalArguments to accept
several virtual registers for each formal argument, instead of just one.
This is a follow-up to D46018.

CallLowering::lowerReturn was similarly refactored in D49660. lowerCall
will be refactored in the same way in follow-up patches.

With this change, we forward the virtual registers generated for
aggregates to CallLowering. Therefore, the target can decide itself
whether it wants to handle them as separate pieces or use one big
register. We also copy the pack/unpackRegs helpers to CallLowering to
facilitate this.

ARM and AArch64 have been updated to use the passed in virtual registers
directly, which means we no longer need to generate so many
merge/extract instructions.

AArch64 seems to have had a bug when lowering e.g. [1 x i8*], which was
put into a s64 instead of a p0. Added a test-case which illustrates the
problem more clearly (it crashes without this patch) and fixed the
existing test-case to expect p0.

AMDGPU has been updated to unpack into the virtual registers for
kernels. I think the other code paths fall back for aggregates, so this
should be NFC.

Mips doesn't support aggregates yet, so it's also NFC.

x86 seems to have code for dealing with aggregates, but I couldn't find
the tests for it, so I just added a fallback to DAGISel if we get more
than one virtual register for an argument.

Differential Revision: https://reviews.llvm.org/D63549

llvm-svn: 364510
2019-06-27 08:54:17 +00:00
..
ADT Use std::iterator_traits to infer result type of llvm::enumerate iterator wrapper 2019-06-21 05:43:08 +00:00
Analysis [HardwareLoops] NFC - move loop with irreducible control flow checking logic to HarewareLoopInfo. 2019-06-26 12:02:43 +00:00
AsmParser
BinaryFormat [Metadata] Add GNU extensions for call site DWARF symbols 2019-06-26 07:31:09 +00:00
Bitcode Fix GCC 4 build after r364464 2019-06-27 07:32:10 +00:00
CodeGen [GlobalISel] Accept multiple vregs in lowerFormalArgs 2019-06-27 08:54:17 +00:00
Config Moved everything SMT-related to LLVM and updated the cmake scripts. 2019-03-25 17:47:45 +00:00
DebugInfo Fix Wdocumentation warnings. NFCI. 2019-06-26 18:53:24 +00:00
Demangle [demangle] Special case clang's creative mangling of __uuidof expressions. 2019-06-18 23:34:09 +00:00
ExecutionEngine [JITLink] Move JITLinkMemoryManager into its own header. 2019-06-14 19:41:21 +00:00
FuzzMutate
IR [IR/DIVar] Add the flag for params that have unmodified value 2019-06-26 11:19:26 +00:00
IRReader
LineEditor
Linker
LTO [Remarks] Extend -fsave-optimization-record to specify the format 2019-06-17 16:06:00 +00:00
MC AMDGPU/MC: Add .amdgpu_lds directive 2019-06-25 11:51:35 +00:00
MCA [MCA] Slightly refactor the bottleneck analysis view. NFCI 2019-06-18 12:59:46 +00:00
Object [llvm-objdump] Switch between ARM/Thumb based on mapping symbols. 2019-06-20 00:29:40 +00:00
ObjectYAML [yaml2obj/obj2yaml] - Make RawContentSection::Info Optional<> 2019-06-19 08:57:38 +00:00
Option Make AddLastArg() variadic and use it more. No behavior change. 2019-06-26 17:51:47 +00:00
Passes [NewPassManager] Add tuning option: ForgetAllSCEVInLoopUnroll [NFC]. 2019-05-23 21:52:59 +00:00
ProfileData [Coverage] Load code coverage data from archives 2019-06-13 20:48:57 +00:00
Remarks [Remarks] Fix usage of enum class 2019-05-30 22:01:56 +00:00
Support BitStream reader: propagate errors 2019-06-26 19:50:12 +00:00
TableGen [TableGen] Introduce !listsplat 'binary' operator 2019-04-10 18:26:36 +00:00
Target Allow matching extend-from-memory with strict FP nodes 2019-06-26 17:19:12 +00:00
Testing/Support [Testing] Move clangd::Annotations to llvm testing support 2019-04-25 10:08:31 +00:00
TextAPI [TextAPI] Fix off-by-one error in the bit index extraction loop 2019-04-05 12:58:15 +00:00
ToolDrivers Share /machine: handling code with llvm-cvtres too 2019-06-12 11:32:43 +00:00
Transforms Revert "r364412 [ExpandMemCmp][MergeICmps] Move passes out of CodeGen into opt pipeline." 2019-06-26 12:13:13 +00:00
WindowsManifest
WindowsResource
XRay
CMakeLists.txt
InitializePasses.h Rename ExpandISelPseudo->FinalizeISel, delay register reservation 2019-06-19 00:25:39 +00:00
LinkAllIR.h
LinkAllPasses.h [CodeGen] Generic Hardware Loop Support 2019-06-07 07:35:30 +00:00
module.extern.modulemap
module.install.modulemap
module.modulemap Update modulemaps for Analysis/VecFuncs.def. 2019-04-09 17:05:36 +00:00
module.modulemap.build
Pass.h
PassAnalysisSupport.h
PassInfo.h
PassRegistry.h
PassSupport.h