summaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/GlobalISel/GIMatchTableExecutor.cpp
AgeCommit message (Collapse)Author
2024-11-16[AArch64][GlobalISel] Protect against folding loads across basic blocks.David Green
isObviouslySafeToFold can look between a load and an instruction it can be folded into, to check that no other memory operations prevents the fold. It doesn't handle multiple basic blocks which we needs to guard against.
2024-08-27[GlobalISel] Look between instructions to be matched (#101675)chuongg3
When a pattern is matched in TableGen, a check is run called isObviouslySafeToFold(). One of the condition that it checks for is whether the instructions that are being matched are consecutive, so the instruction's insertion point does not change. This patch allows the movement of the insertion point of a load instruction if none of the intervening instructions are stores or have side-effects.
2023-08-11[RFC][GlobalISel] Overhauled MIR Patterns Support for Combinerspvanhout
See https://discourse.llvm.org/t/rfc-overhauled-mir-patterns-for-globalisel-combiners/72264 This is a complete overrhaul of the recently-added GlobalISel Match Table backend which adds support for MIR patterns for both match and apply patterns. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D156315
2023-07-11[GlobalISel] Generalize `InstructionSelector` Match Tablespvanhout
Makes `InstructionSelector.h`/`InstructionSelectorImpl.h` generic so the match tables can also be used for the combiner. Some notes: - Coverage was made an optional parameter of `executeMatchTable`, combines won't use it for now. - `GIPFP_` -> `GICXXPred_` so it's more generic. Those are just C++ predicates and aren't PatFrag-specific. - Pass the MatcherState directly to testMIPredicate_MI, the combiner will need it. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D153755