Revision tags: llvmorg-13.0.0-rc2 |
|
#
735a5904 |
| 14-Aug-2021 |
Nikita Popov <nikita.ppv@gmail.com> |
[MemorySSA] Remove -enable-mssa-loop-dependency option
This option has been enabled by default for quite a while now. The practical impact of removing the option is that MSSA use cannot be disabled
[MemorySSA] Remove -enable-mssa-loop-dependency option
This option has been enabled by default for quite a while now. The practical impact of removing the option is that MSSA use cannot be disabled in default pipelines (both LPM and NPM) and in manual LPM invocations. NPM can still choose to enable/disable MSSA using loop vs loop-mssa.
The next step will be to require MSSA for LICM and drop the AST-based implementation entirely.
Differential Revision: https://reviews.llvm.org/D108075
show more ...
|
Revision tags: llvmorg-13.0.0-rc1, llvmorg-14-init |
|
#
5366de73 |
| 08-Jul-2021 |
Arthur Eubanks <aeubanks@google.com> |
[SimpleLoopUnswitch] Don't non-trivially unswitch loops with catchswitch exits
SplitBlock() can't handle catchswitch.
Fixes PR50973.
Reviewed By: aheejin
Differential Revision: https://reviews.ll
[SimpleLoopUnswitch] Don't non-trivially unswitch loops with catchswitch exits
SplitBlock() can't handle catchswitch.
Fixes PR50973.
Reviewed By: aheejin
Differential Revision: https://reviews.llvm.org/D105672
show more ...
|
#
0024ec59 |
| 13-Jul-2021 |
Arthur Eubanks <aeubanks@google.com> |
[NewPM][SimpleLoopUnswitch] Add option to not trivially unswitch
To help with debugging non-trivial unswitching issues.
Don't care about the legacy pass, nobody is using it.
If a pass's string par
[NewPM][SimpleLoopUnswitch] Add option to not trivially unswitch
To help with debugging non-trivial unswitching issues.
Don't care about the legacy pass, nobody is using it.
If a pass's string params are empty (e.g. "simple-loop-unswitch"), don't default to the empty constructor for the pass params. We should still let the parser take care of it in case the parser has its own defaults.
Reviewed By: asbirlea
Differential Revision: https://reviews.llvm.org/D105933
show more ...
|
#
472462c4 |
| 08-Jul-2021 |
Bjorn Pettersson <bjorn.a.pettersson@ericsson.com> |
[NewPM] Consistently use 'simplifycfg' rather than 'simplify-cfg'
There was an alias between 'simplifycfg' and 'simplify-cfg' in the PassRegistry. That was the original reason for this patch, which
[NewPM] Consistently use 'simplifycfg' rather than 'simplify-cfg'
There was an alias between 'simplifycfg' and 'simplify-cfg' in the PassRegistry. That was the original reason for this patch, which effectively removes the alias.
This patch also replaces all occurrances of 'simplify-cfg' by 'simplifycfg'. Reason for choosing that form for the name is that it matches the DEBUG_TYPE for the pass, and the legacy PM name and also how it is spelled out in other passes such as 'loop-simplifycfg', and in other options such as 'simplifycfg-merge-cond-stores'.
I for some reason the name should be changed to 'simplify-cfg' in the future, then I think such a renaming should be more widely done and not only impacting the PassRegistry.
Reviewed By: aeubanks
Differential Revision: https://reviews.llvm.org/D105627
show more ...
|
Revision tags: llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2 |
|
#
873ff5a7 |
| 07-Jun-2021 |
Jingu Kang <jingu.kang@arm.com> |
[SimpleLoopUnswich] Fixa a bug on ComputeUnswitchedCost with partial unswitch
There was a bug from cost calculation for partially invariant unswitch.
The costs of non-duplicated blocks are substrac
[SimpleLoopUnswich] Fixa a bug on ComputeUnswitchedCost with partial unswitch
There was a bug from cost calculation for partially invariant unswitch.
The costs of non-duplicated blocks are substracted from the total LoopCost, so anything that is duplicated should not be counted.
Differential Revision: https://reviews.llvm.org/D103816
show more ...
|
#
84eeb828 |
| 17-Jun-2021 |
Roman Lebedev <lebedev.ri@gmail.com> |
[NFC][SimpleLoopUnswitch] unswitchTrivialBranch(): add debug output explaining unswitching failure
It's not prohibitively verbose, and allows easier understanding why certain unswitching ultimately
[NFC][SimpleLoopUnswitch] unswitchTrivialBranch(): add debug output explaining unswitching failure
It's not prohibitively verbose, and allows easier understanding why certain unswitching ultimately wasn't performed.
show more ...
|
Revision tags: llvmorg-12.0.1-rc1 |
|
#
f3a27511 |
| 21-May-2021 |
Jingu Kang <jingu.kang@arm.com> |
[SimpleLoopUnswitch] Port partially invariant unswitch from LoopUnswitch to SimpleLoopUnswitch
This re-enables commit 107d19eb017ff6734986af077eb2e9f6600114a9 with bug fixes.
Differential Revision:
[SimpleLoopUnswitch] Port partially invariant unswitch from LoopUnswitch to SimpleLoopUnswitch
This re-enables commit 107d19eb017ff6734986af077eb2e9f6600114a9 with bug fixes.
Differential Revision: https://reviews.llvm.org/D99354
show more ...
|
#
107d19eb |
| 13-May-2021 |
Jingu Kang <jingu.kang@arm.com> |
Revert "[SimpleLoopUnswitch] Port partially invariant unswitch from LoopUnswitch to SimpleLoopUnswitch"
This reverts commit 88b259c01463c08ac2575b4432c07ea7751946b5.
It needs to fix below bugs.
ht
Revert "[SimpleLoopUnswitch] Port partially invariant unswitch from LoopUnswitch to SimpleLoopUnswitch"
This reverts commit 88b259c01463c08ac2575b4432c07ea7751946b5.
It needs to fix below bugs.
https://bugs.llvm.org/show_bug.cgi?id=50279 https://bugs.llvm.org/show_bug.cgi?id=50302
show more ...
|
Revision tags: llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4 |
|
#
88b259c0 |
| 23-Mar-2021 |
Jingu Kang <jingu.kang@arm.com> |
[SimpleLoopUnswitch] Port partially invariant unswitch from LoopUnswitch to SimpleLoopUnswitch
Differential Revision: https://reviews.llvm.org/D99354
|
#
a6d2a8d6 |
| 06-Apr-2021 |
Philip Reames <listmail@philipreames.com> |
Add a subclass of IntrinsicInst for llvm.assume [nfc]
Add the subclass, update a few places which check for the intrinsic to use idiomatic dyn_cast, and update the public interface of AssumptionCach
Add a subclass of IntrinsicInst for llvm.assume [nfc]
Add the subclass, update a few places which check for the intrinsic to use idiomatic dyn_cast, and update the public interface of AssumptionCache to use the new class. A follow up change will do the same for the newer assumption query/bundle mechanisms.
show more ...
|
#
3e5ee194 |
| 31-Mar-2021 |
Fangrui Song <i@maskray.me> |
[SimpleLoopUnswitch] Fix -Wunused-variable in -DLLVM_ENABLE_ASSERTIONS=off builds after 431a40e1e28f181e87dd247b91a5e6872dd64ab4
|
#
431a40e1 |
| 31-Mar-2021 |
Juneyoung Lee <aqjune@gmail.com> |
[LoopUnswitch] Assert that branch condition is either and/or but not both
as suggested at https://reviews.llvm.org/rG5bb38e84d3d0#986321
|
#
6b4b1dc6 |
| 30-Mar-2021 |
Juneyoung Lee <aqjune@gmail.com> |
[LoopUnswitch] Simplify branch condition if it is select with constant operands
This fixes the miscompilation reported in https://reviews.llvm.org/rG5bb38e84d3d0#986154 .
`select _, true, false` ma
[LoopUnswitch] Simplify branch condition if it is select with constant operands
This fixes the miscompilation reported in https://reviews.llvm.org/rG5bb38e84d3d0#986154 .
`select _, true, false` matches both m_LogicalAnd and m_LogicalOr, making later transformations confused. Simplify the branch condition to not have the form.
show more ...
|
#
b92c8c22 |
| 25-Mar-2021 |
Sameer Sahasrabuddhe <sameer.sahasrabuddhe@amd.com> |
[NewPM] Disable non-trivial loop-unswitch on targets with divergence
Unswitching a loop on a non-trivial divergent branch is expensive since it serializes the execution of both version of the loop.
[NewPM] Disable non-trivial loop-unswitch on targets with divergence
Unswitching a loop on a non-trivial divergent branch is expensive since it serializes the execution of both version of the loop. But identifying a divergent branch needs divergence analysis, which is a function level analysis.
The legacy pass manager handles this dependency by isolating such a loop transform and rerunning the required function analyses. This functionality is currently missing in the new pass manager, and there is no safe way for the SimpleLoopUnswitch pass to depend on DivergenceAnalysis. So we conservatively assume that all non-trivial branches are divergent if the target has divergence.
Reviewed By: tra
Differential Revision: https://reviews.llvm.org/D98958
show more ...
|
#
70af2924 |
| 17-Mar-2021 |
Arthur Eubanks <aeubanks@google.com> |
[Unswitch] Guard dbgs logging with LLVM_DEBUG
|
Revision tags: llvmorg-12.0.0-rc3 |
|
#
5bb38e84 |
| 07-Mar-2021 |
Juneyoung Lee <aqjune@gmail.com> |
[LoopUnswitch] unswitch if cond is in select form of and/or as well
Hello all, I'm trying to fix unsafe propagation of poison values in and/or conditions by using equivalent select forms (`select i1
[LoopUnswitch] unswitch if cond is in select form of and/or as well
Hello all, I'm trying to fix unsafe propagation of poison values in and/or conditions by using equivalent select forms (`select i1 A, i1 B, i1 false` and `select i1 A, i1 true, i1 false`) instead. D93065 has links to patches for this.
This patch allows unswitch to happen if the condition is in this form as well. `collectHomogenousInstGraphLoopInvariants` is updated to keep traversal if Root and the visiting I matches both m_LogicalOr()/m_LogicalAnd(). Other than this, the remaining changes are almost straightforward and simply replaces Instruction::And/Or check with match(m_LogicalOr()/m_LogicalAnd()).
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D97756
show more ...
|
#
5fc9e309 |
| 26-Feb-2021 |
Kazu Hirata <kazu@google.com> |
[Scalar] Use range-based for loops (NFC)
|
Revision tags: llvmorg-12.0.0-rc2 |
|
#
0eda4547 |
| 08-Feb-2021 |
Arthur Eubanks <aeubanks@google.com> |
[SimpleLoopUnswitch] Don't non-trivially unswitch loops that are unsafe to clone
Non-trivial unswitching can clone loops.
The legacy -loop-unswitch pass also checks for this.
Fixes PR49085.
Revie
[SimpleLoopUnswitch] Don't non-trivially unswitch loops that are unsafe to clone
Non-trivial unswitching can clone loops.
The legacy -loop-unswitch pass also checks for this.
Fixes PR49085.
Reviewed By: asbirlea
Differential Revision: https://reviews.llvm.org/D96288
show more ...
|
Revision tags: llvmorg-11.1.0, llvmorg-11.1.0-rc3 |
|
#
00da3227 |
| 02-Feb-2021 |
Sander de Smalen <sander.desmalen@arm.com> |
NFC: Migrate SimpleLoopUnswitch to work on InstructionCost
This patch migrates cost values and arithmetic to work on InstructionCost. When the interfaces to TargetTransformInfo are changed, any Inst
NFC: Migrate SimpleLoopUnswitch to work on InstructionCost
This patch migrates cost values and arithmetic to work on InstructionCost. When the interfaces to TargetTransformInfo are changed, any InstructionCost state will propagate naturally.
See this patch for the introduction of the type: https://reviews.llvm.org/D91174 See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2020-November/146408.html
Reviewed By: david-arm
Differential Revision: https://reviews.llvm.org/D95352
show more ...
|
Revision tags: llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2 |
|
#
b023cdea |
| 20-Jan-2021 |
Kazu Hirata <kazu@google.com> |
[llvm] Use llvm::all_of (NFC)
|
#
39e6d242 |
| 12-Jan-2021 |
Arthur Eubanks <aeubanks@google.com> |
[NewPM] Only non-trivially loop unswitch at -O3 and for non-optsize functions
This matches the legacy pipeline/pass.
Reviewed By: asbirlea, SjoerdMeijer
Differential Revision: https://reviews.llvm
[NewPM] Only non-trivially loop unswitch at -O3 and for non-optsize functions
This matches the legacy pipeline/pass.
Reviewed By: asbirlea, SjoerdMeijer
Differential Revision: https://reviews.llvm.org/D94559
show more ...
|
Revision tags: llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2 |
|
#
63aeaf75 |
| 14-Dec-2020 |
Alina Sbirlea <asbirlea@google.com> |
[DominatorTree] Add support for mixed pre/post CFG views.
Add support for mixed pre/post CFG views.
Update usages of the MemorySSAUpdater to use the new DT API by requesting the DT updates to be do
[DominatorTree] Add support for mixed pre/post CFG views.
Add support for mixed pre/post CFG views.
Update usages of the MemorySSAUpdater to use the new DT API by requesting the DT updates to be done by the MSSAUpdater.
Differential Revision: https://reviews.llvm.org/D93371
show more ...
|
#
9ed8e0ca |
| 09-Dec-2020 |
dfukalov <daniil.fukalov@amd.com> |
[NFC] Reduce include files dependency and AA header cleanup (part 2).
Continuing work started in https://reviews.llvm.org/D92489:
Removed a bunch of includes from "AliasAnalysis.h" and "LoopPassMan
[NFC] Reduce include files dependency and AA header cleanup (part 2).
Continuing work started in https://reviews.llvm.org/D92489:
Removed a bunch of includes from "AliasAnalysis.h" and "LoopPassManager.h".
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D92852
show more ...
|
Revision tags: llvmorg-11.0.1-rc1, llvmorg-11.0.0, llvmorg-11.0.0-rc6, llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4 |
|
#
89c1e35f |
| 22-Sep-2020 |
Stefanos Baziotis <sdi1600105@di.uoa.gr> |
[LoopInfo] empty() -> isInnermost(), add isOutermost()
Differential Revision: https://reviews.llvm.org/D82895
|
Revision tags: llvmorg-11.0.0-rc3 |
|
#
5502cfa0 |
| 21-Sep-2020 |
Serguei Katkov <serguei.katkov@azul.com> |
[LoopUnswitch] Trivial simplification: remove trivial dead condition after unswitch
Non trivial loop unswitch can keep the dead condition instruction. CL adds trivial dead code elimination for unuse
[LoopUnswitch] Trivial simplification: remove trivial dead condition after unswitch
Non trivial loop unswitch can keep the dead condition instruction. CL adds trivial dead code elimination for unused condition.
Reviewers: asbirlea, aqjune, fhahn, DaniilSuchkov, reames Reviewed By: asbirlea Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D88014
show more ...
|