llvm-project/llvm/lib/Transforms/IPO
Andrew Litteken bd4b1b5f6d [IRSim] Adding support for recognizing branch similarity
The current IRSimilarityIdentifier does not try to find similarity across blocks, this patch provides a mechanism to compare two branches against one another, to find similarity across basic blocks, rather than just within them.

This adds a step in the similarity identification process that labels all of the basic blocks so that we can identify the relative branching locations. Within an IRSimilarityCandidate we use these relative locations to determine whether if the branching to other relative locations in the same region is the same between branches. If they are, we consider them similar.

We do not consider the relative location of the branch if the target branch is outside of the region. In this case, both branches must exit to a location outside the region, but the exact relative location does not matter.

Reviewers: paquette, yroux

Differential Revision: https://reviews.llvm.org/D106989
2021-09-06 11:55:38 -07:00
..
AlwaysInliner.cpp [coroutine] should disable inline before calling coro split 2020-12-08 08:53:08 -08:00
Annotation2Metadata.cpp Add pass to add !annotate metadata from @llvm.global.annotations. 2020-11-16 14:57:11 +00:00
ArgumentPromotion.cpp [NFC] Rename AttributeList::getParam/Ret/FnAttributes() -> get*Attributes() 2021-08-13 11:16:52 -07:00
Attributor.cpp [NFC] Use newly introduced *AtIndex methods 2021-09-01 11:18:41 -07:00
AttributorAttributes.cpp [Attributor][NFC] Silence unused variable warning 2021-08-27 16:38:13 -05:00
BarrierNoopPass.cpp
BlockExtractor.cpp Internalize some cl::opt global variables or move them under namespace llvm 2021-05-07 11:15:43 -07:00
CMakeLists.txt [OpenMP][OpenMPIRBuilder] Implement loop unrolling. 2021-09-04 19:18:58 -05:00
CalledValuePropagation.cpp
ConstantMerge.cpp [ConstantMerge] Don't merge thread_local constants with non-thread_local constants 2021-04-28 23:44:20 +01:00
CrossDSOCFI.cpp
DeadArgumentElimination.cpp [NFC] Rename AttributeList::getParam/Ret/FnAttributes() -> get*Attributes() 2021-08-13 11:16:52 -07:00
ElimAvailExtern.cpp
ExtractGV.cpp [Transforms] Use range-based for loops (NFC) 2021-02-08 22:33:53 -08:00
ForceFunctionAttrs.cpp [ForceFunctionAttrs] Add const (NFC) 2021-09-03 22:29:58 -07:00
FunctionAttrs.cpp [NFC] Migrate some callers away from Function/AttributeLists methods that take an index 2021-08-17 21:05:40 -07:00
FunctionImport.cpp [FunctionImport] Fix build with old mingw (NFC) 2021-08-15 15:47:59 +02:00
FunctionSpecialization.cpp [FuncSpec] Don't specialize function which are easy to inline 2021-08-23 19:20:21 +08:00
GlobalDCE.cpp [GlobalDCE] Handle relative pointers in VFE (for Swift vtables) 2021-08-31 07:07:22 -07:00
GlobalOpt.cpp [NFC] Use newly introduced *AtIndex methods 2021-09-01 11:18:41 -07:00
GlobalSplit.cpp
HotColdSplitting.cpp Calculate getTerminator only when necessary 2021-06-13 20:16:07 -07:00
IPO.cpp Function Specialization Pass 2021-06-11 09:11:29 +01:00
IROutliner.cpp [IRSim] Adding support for recognizing branch similarity 2021-09-06 11:55:38 -07:00
InferFunctionAttrs.cpp [inferattrs] Don't infer lib func attributes for nobuiltin functions 2021-04-16 15:36:15 -07:00
InlineSimple.cpp
Inliner.cpp [llvm][Inline] Refactor out InlineOrder 2021-08-12 22:19:53 +08:00
Internalize.cpp [IR] Rename `comdat noduplicates` to `comdat nodeduplicate` 2021-07-20 12:47:10 -07:00
LoopExtractor.cpp
LowerTypeTests.cpp [LTT] Handle merged llvm.assume when dropping type tests 2021-05-25 17:02:13 -07:00
MergeFunctions.cpp [OpaquePtr] Use GlobalValue::getValueType() more 2021-07-13 09:34:34 -07:00
OpenMPOpt.cpp [OpenMP] Add an option to always inline OpenMP device functions. 2021-08-31 18:48:30 -04:00
PartialInlining.cpp NFC: Migrate PartialInlining to work on InstructionCost 2021-03-30 11:59:45 +01:00
PassManagerBuilder.cpp Add jump-threading optimization for deterministic finite automata 2021-07-27 14:34:04 -04:00
PruneEH.cpp [Local] Do not introduce a new `llvm.trap` before `unreachable` 2021-07-26 23:33:36 -05:00
SCCP.cpp Function Specialization Pass 2021-06-11 09:11:29 +01:00
SampleContextTracker.cpp [CSSPGO] Honor preinliner decision for ThinLTO importing 2021-09-02 17:29:26 -07:00
SampleProfile.cpp [CSSPGO] Honor preinliner decision for ThinLTO importing 2021-09-02 17:29:26 -07:00
SampleProfileProbe.cpp [CSSPGO] Undoing the concept of dangling pseudo probe 2021-06-18 15:14:11 -07:00
StripDeadPrototypes.cpp
StripSymbols.cpp [Transforms] Use range-based for loops (NFC) 2021-02-08 22:33:53 -08:00
SyntheticCountsPropagation.cpp Internalize some cl::opt global variables or move them under namespace llvm 2021-05-07 11:15:43 -07:00
ThinLTOBitcodeWriter.cpp [NFC] Rename AttributeList::getParam/Ret/FnAttributes() -> get*Attributes() 2021-08-13 11:16:52 -07:00
WholeProgramDevirt.cpp [NFC] Replace Function handling of attributes with less confusing calls 2021-08-17 21:05:40 -07:00