1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 19:52:54 +01:00
llvm-mirror/lib/CodeGen/GlobalISel
Volkan Keles 1ccd86b862 [GlobalISel] Legalizer: Retry combining illegal artifacts as long as there new artifacts
Summary:
Currently, Legalizer aborts if it’s unable to legalize artifacts. However, it’s
possible to combine them after processing the rest of the instruction because
the legalization is likely to generate more artifacts that allow ArtifactCombiner
to combine away them.

Instead, move illegal artifacts to another list called RetryList and wait until all of the
instruction in InstList are legalized. After that, check if there is any new artifacts and
try to combine them again if that’s the case. If not, abort. The idea is similar to D59339,
but the approach is a bit different.

This patch fixes the issue described above, but the legalizer still may be unable to handle
some cases depending on when to legalize artifacts. So, in the long run, we probably need
a different legalization strategy that handles this dependency in a better way.

Reviewers: dsanders, aditya_nandakumar, qcolombet, arsenm, aemerson, paquette

Reviewed By: dsanders

Subscribers: jvesely, wdng, nhaehnle, rovka, javed.absar, hiraditya, Petar.Avramovic, llvm-commits

Tags: #llvm

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

llvm-svn: 369805
2019-08-23 20:30:35 +00:00
..
CallLowering.cpp GlobalISel: pack various parameters for lowerCall into a struct. 2019-08-09 08:26:38 +00:00
CMakeLists.txt [GISel]: Add GISelKnownBits analysis 2019-08-06 17:18:29 +00:00
Combiner.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
CombinerHelper.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
CSEInfo.cpp [GlobalISel] CSEMIRBuilder: Add support for G_GEP 2019-08-15 23:45:45 +00:00
CSEMIRBuilder.cpp [globalisel] Add G_SEXT_INREG 2019-08-09 21:11:20 +00:00
GISelChangeObserver.cpp
GISelKnownBits.cpp [GlobalISel]: Add KnownBits for G_XOR 2019-08-13 04:32:33 +00:00
GlobalISel.cpp
InstructionSelect.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
InstructionSelector.cpp
IRTranslator.cpp [GlobalISel] Handle multiple registers in dbg.value intrinsic 2019-08-20 16:28:37 +00:00
LegalityPredicates.cpp
LegalizeMutations.cpp
Legalizer.cpp [GlobalISel] Legalizer: Retry combining illegal artifacts as long as there new artifacts 2019-08-23 20:30:35 +00:00
LegalizerHelper.cpp GlobalISel: Don't create G_UADDE with constant false carry in 2019-08-22 17:29:17 +00:00
LegalizerInfo.cpp [globalisel] Add G_SEXT_INREG 2019-08-09 21:11:20 +00:00
LLVMBuild.txt Make GlobalISel depend on SelectionDAG after D63169 2019-06-22 01:30:17 +00:00
Localizer.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
MachineIRBuilder.cpp [GlobalISel] CSEMIRBuilder: Add support for G_GEP 2019-08-15 23:45:45 +00:00
RegBankSelect.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
RegisterBank.cpp
RegisterBankInfo.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
Utils.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00