#
5ef768d2 |
| 17-Jun-2024 |
Nikita Popov <npopov@redhat.com> |
[AMDGPULowerBufferFatPointers] Expand const exprs using fat pointers (#95558)
Expand all constant expressions that use fat pointers upfront, so that
the rewriting logic only has to deal with instru
[AMDGPULowerBufferFatPointers] Expand const exprs using fat pointers (#95558)
Expand all constant expressions that use fat pointers upfront, so that
the rewriting logic only has to deal with instructions and not the
constant expression variants as well.
My primary motivation is to remove the creation of illegal constant
expressions (mul and shl) from this pass, but this also cuts down quite
a bit on the amount of duplicate logic.
show more ...
|
Revision tags: llvmorg-18.1.8 |
|
#
0aeaa2d9 |
| 13-Jun-2024 |
agozillon <Andrew.Gozillon@amd.com> |
[OMPIRBuilder][OpenMP][LLVM] Modify and use ReplaceConstant utility in convertTarget (#94541)
This PR seeks to expand/replace the Constant -> Instruction conversion
that needs to occur inside of th
[OMPIRBuilder][OpenMP][LLVM] Modify and use ReplaceConstant utility in convertTarget (#94541)
This PR seeks to expand/replace the Constant -> Instruction conversion
that needs to occur inside of the OpenMP Target kernel generation to
allow kernel argument replacement of uses within the kernel (cannot
replace constant uses within constant expressions with non-constants).
It does so by making use of the new-ish utility
convertUsersOfConstantsToInstructions which is a much more expansive
version of what the smaller "version" of the function I wrote does,
effectively expanding uses of the input argument that are constant
expressions into instructions so that we can replace with the
appropriate kernel argument.
Also alters convertUsersOfConstantsToInstructions to optionally
restrict the replacement to a function and optionally leave
dead constants alone, the latter is necessary when lowering from
MLIR as we cannot be sure we can remove the constants at this
stage, even if rewritten to instructions the ModuleTranslation may
maintain links to the original constants and utilise them in further
lowering steps (as when we're lowering the kernel, the module is
still in the process of being lowered). This can result in unusual
ICEs later. These dead constants can be tidied up later (and
appear to be in subsequent lowering from checking with
emit-llvm).
show more ...
|
Revision tags: llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2 |
|
#
9a96fb44 |
| 19-Mar-2024 |
Stephen Tozer <stephen.tozer@sony.com> |
Reapply "[NFC][RemoveDIs] Switch ConstantExpr::getAsInstruction to not insert (#84737)"
Fixes a build error caused by an unupdated getAsInstruction callsite in clang.
This reverts commit ab851f7fe9
Reapply "[NFC][RemoveDIs] Switch ConstantExpr::getAsInstruction to not insert (#84737)"
Fixes a build error caused by an unupdated getAsInstruction callsite in clang.
This reverts commit ab851f7fe946e7eed700ef9d82082eb721860189.
show more ...
|
#
ab851f7f |
| 19-Mar-2024 |
Stephen Tozer <stephen.tozer@sony.com> |
Revert "[NFC][RemoveDIs] Switch ConstantExpr::getAsInstruction to not insert (#84737)"
Reverted due to buildbot failures: https://lab.llvm.org/buildbot/#/builders/139/builds/61717/
This reverts com
Revert "[NFC][RemoveDIs] Switch ConstantExpr::getAsInstruction to not insert (#84737)"
Reverted due to buildbot failures: https://lab.llvm.org/buildbot/#/builders/139/builds/61717/
This reverts commit 7ef433f62c199c414bffdcac1c8ee3159b29c5f5.
show more ...
|
#
7ef433f6 |
| 19-Mar-2024 |
Jeremy Morse <jeremy.morse@sony.com> |
[NFC][RemoveDIs] Switch ConstantExpr::getAsInstruction to not insert (#84737)
Because the RemoveDIs work is putting a debug-info bit into
BasicBlock::iterator and iterators are needed for insertion
[NFC][RemoveDIs] Switch ConstantExpr::getAsInstruction to not insert (#84737)
Because the RemoveDIs work is putting a debug-info bit into
BasicBlock::iterator and iterators are needed for insertion, the
getAsInstruction method declaration would need to use a fully defined
instruction-iterator, which leads to a complicated
header-inclusion-order problem. Much simpler to instead just not insert,
and make it the callers problem to insert.
This is proportionate because there are only four call-sites to
getAsInstruction -- it would suck if we did this everywhere.
---------
Merged by: Stephen Tozer <stephen.tozer@sony.com>
show more ...
|
Revision tags: llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4 |
|
#
a3238969 |
| 20-Oct-2023 |
Wenju He <wenju.he@intel.com> |
[IR] Fix nested constant to instruction conversion (#69682)
Fix two issues: * If a constant is used in another constant, we need to insert newly created instructions to worklist so that constant u
[IR] Fix nested constant to instruction conversion (#69682)
Fix two issues: * If a constant is used in another constant, we need to insert newly created instructions to worklist so that constant used in them will be converted. * Set debug info of original instruction to newly created instructions.
show more ...
|
Revision tags: llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2 |
|
#
3c76e5f0 |
| 05-Apr-2023 |
Jon Chesterfield <jonathanchesterfield@gmail.com> |
[amdgpu][nfc] Remove dead code associated with LDS lowering
Pass disabled since approximately D104962 for miscompiling openmp
The functions under ReplaceConstant miscompile phis as noted in D112717
[amdgpu][nfc] Remove dead code associated with LDS lowering
Pass disabled since approximately D104962 for miscompiling openmp
The functions under ReplaceConstant miscompile phis as noted in D112717 and have no users in tree other than the disabled pass. It seems likely it has no users out of tree.
Deletes the test cases associated with the disabled pass as well.
Reviewed By: rampitec
Differential Revision: https://reviews.llvm.org/D147586
show more ...
|
Revision tags: llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4 |
|
#
5b86eaeb |
| 03-Mar-2023 |
Nikita Popov <npopov@redhat.com> |
Reapply [LowerTypeTests] Avoid creation of select constant expression
Reapply with a fix for phi handling: For phis, we need to insert into the incoming block, not above the phi. This is especially
Reapply [LowerTypeTests] Avoid creation of select constant expression
Reapply with a fix for phi handling: For phis, we need to insert into the incoming block, not above the phi. This is especially tricky if there are multiple incoming values from the same predecessor, because these must all use the same value.
-----
LowerTypeTests replaces weak declarations with an icmp+select constant expressions. As this is not a relocatable expression, it additionally promotes initializers using it to global ctors.
As part of https://discourse.llvm.org/t/rfc-remove-most-constant-expressions/63179, I would like to remove the select constant expression, of which LTT is now the last user. This is a bit tricky, because we now need to replace a constant with an instruction, which might require converting intermediate constant expression users to instructions as well.
We do this using the convertUsersOfConstantsToInstructions() helper. However, it needs to be slightly extended to also support expansion of ConstantAggregates. These are important in this context, because the promotion of initializers to global ctors will produce stores of such aggregates.
Differential Revision: https://reviews.llvm.org/D145247
show more ...
|
#
528c53ee |
| 13-Mar-2023 |
Zequan Wu <zequanwu@google.com> |
Revert "[LowerTypeTests] Avoid creation of select constant expression"
This reverts commit 0317147a2848547ec97d8e76782f7dc38267a21f.
It causes broken module error when building chromium media_unitt
Revert "[LowerTypeTests] Avoid creation of select constant expression"
This reverts commit 0317147a2848547ec97d8e76782f7dc38267a21f.
It causes broken module error when building chromium media_unittests PHI nodes not grouped at top of basic block! %19 = phi ptr [ %16, %15 ], [ %18, %12 ], !dbg !16 label %17 LLVM ERROR: Broken module found, compilation aborted!
show more ...
|
#
0317147a |
| 03-Mar-2023 |
Nikita Popov <npopov@redhat.com> |
[LowerTypeTests] Avoid creation of select constant expression
LowerTypeTests replaces weak declarations with an icmp+select constant expressions. As this is not a relocatable expression, it addition
[LowerTypeTests] Avoid creation of select constant expression
LowerTypeTests replaces weak declarations with an icmp+select constant expressions. As this is not a relocatable expression, it additionally promotes initializers using it to global ctors.
As part of https://discourse.llvm.org/t/rfc-remove-most-constant-expressions/63179, I would like to remove the select constant expression, of which LTT is now the last user. This is a bit tricky, because we now need to replace a constant with an instruction, which might require converting intermediate constant expression users to instructions as well.
We do this using the convertUsersOfConstantsToInstructions() helper. However, it needs to be slightly extended to also support expansion of ConstantAggregates. These are important in this context, because the promotion of initializers to global ctors will produce stores of such aggregates.
Differential Revision: https://reviews.llvm.org/D145247
show more ...
|
#
576060fb |
| 03-Mar-2023 |
Nikita Popov <npopov@redhat.com> |
[ReplaceConstant] Extract code for expanding users of constant (NFC)
AMDGPU implements some handy code for expanding all constexpr users of LDS globals. Extract the core logic into ReplaceConstant,
[ReplaceConstant] Extract code for expanding users of constant (NFC)
AMDGPU implements some handy code for expanding all constexpr users of LDS globals. Extract the core logic into ReplaceConstant, so that it can be reused elsewhere.
show more ...
|
Revision tags: llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, working, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2 |
|
#
a5bbc6ef |
| 23-Feb-2022 |
Bill Wendling <isanbard@gmail.com> |
[NFC] Remove unnecessary "#include"s from header files
|
Revision tags: llvmorg-14.0.0-rc1, llvmorg-15-init |
|
#
e188aae4 |
| 31-Jan-2022 |
serge-sans-paille <sguelton@redhat.com> |
Cleanup header dependencies in LLVMCore
Based on the output of include-what-you-use.
This is a big chunk of changes. It is very likely to break downstream code unless they took a lot of care in avo
Cleanup header dependencies in LLVMCore
Based on the output of include-what-you-use.
This is a big chunk of changes. It is very likely to break downstream code unless they took a lot of care in avoiding hidden ehader dependencies, something the LLVM codebase doesn't do that well :-/
I've tried to summarize the biggest change below:
- llvm/include/llvm-c/Core.h: no longer includes llvm-c/ErrorHandling.h - llvm/IR/DIBuilder.h no longer includes llvm/IR/DebugInfo.h - llvm/IR/IRBuilder.h no longer includes llvm/IR/IntrinsicInst.h - llvm/IR/LLVMRemarkStreamer.h no longer includes llvm/Support/ToolOutputFile.h - llvm/IR/LegacyPassManager.h no longer include llvm/Pass.h - llvm/IR/Type.h no longer includes llvm/ADT/SmallPtrSet.h - llvm/IR/PassManager.h no longer includes llvm/Pass.h nor llvm/Support/Debug.h
And the usual count of preprocessed lines: $ clang++ -E -Iinclude -I../llvm/include ../llvm/lib/IR/*.cpp -std=c++14 -fno-rtti -fno-exceptions | wc -l before: 6400831 after: 6189948
200k lines less to process is no that bad ;-)
Discourse thread on the topic: https://llvm.discourse.group/t/include-what-you-use-include-cleanup
Differential Revision: https://reviews.llvm.org/D118652
show more ...
|
Revision tags: llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1 |
|
#
e9ea9924 |
| 02-Nov-2021 |
hsmahesha <mahesha.comp@gmail.com> |
[IR] Replace *all* uses of a constant expression by corresponding instruction
When a constant expression CE is being converted into a corresponding instruction I, CE is supposed to be replaced by I.
[IR] Replace *all* uses of a constant expression by corresponding instruction
When a constant expression CE is being converted into a corresponding instruction I, CE is supposed to be replaced by I. However, it is possible that CE is being used multiple times within a parent instruction PI. Make sure that *all* the uses of CE within PI are replaced by I.
Reviewed By: rampitec, arsenm
Differential Revision: https://reviews.llvm.org/D112717
show more ...
|
#
56f03d25 |
| 29-Oct-2021 |
Jay Foad <jay.foad@amd.com> |
[IR] Remove createReplacementInstr. NFC.
It is unused since D112791.
Differential Revision: https://reviews.llvm.org/D112795
|
#
1b758925 |
| 29-Oct-2021 |
Jay Foad <jay.foad@amd.com> |
[IR] Merge createReplacementInstr into ConstantExpr::getAsInstruction
createReplacementInstr was a trivial wrapper around ConstantExpr::getAsInstruction, which also inserted the new instruction into
[IR] Merge createReplacementInstr into ConstantExpr::getAsInstruction
createReplacementInstr was a trivial wrapper around ConstantExpr::getAsInstruction, which also inserted the new instruction into a basic block. Implement this directly in getAsInstruction by adding an InsertBefore parameter and change all callers to use it. NFC.
A follow-up patch will remove createReplacementInstr.
Differential Revision: https://reviews.llvm.org/D112791
show more ...
|
Revision tags: llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2 |
|
#
157473a5 |
| 11-Jun-2021 |
Jay Foad <jay.foad@amd.com> |
[IR] Simplify createReplacementInstr
NFCI, although the test change shows that ConstantExpr::getAsInstruction is better than the old implementation of createReplacementInstr because it propagates th
[IR] Simplify createReplacementInstr
NFCI, although the test change shows that ConstantExpr::getAsInstruction is better than the old implementation of createReplacementInstr because it propagates things like the sdiv "exact" flag.
Differential Revision: https://reviews.llvm.org/D104124
show more ...
|
#
0a07343e |
| 16-Jun-2021 |
Stanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com> |
[AMDGPU] Fixed constexpr expansion to handle multiple uses
Recently added convertConstantExprsToInstructions() does not handle a case when a same ConstantExpr used multiple times in the same instruc
[AMDGPU] Fixed constexpr expansion to handle multiple uses
Recently added convertConstantExprsToInstructions() does not handle a case when a same ConstantExpr used multiple times in the same instruction. A first use is replaced and the rest of the uses in the instruction are replaced as well with the replaceUsesOfWith(). Then function attempts to replace a constant already destroyed.
So far this interface is only used by the AMDGPU BE.
Differential Revision: https://reviews.llvm.org/D104425
show more ...
|
#
3af5f3e6 |
| 07-Jun-2021 |
hsmahesha <mahesha.comp@gmail.com> |
[IR] Add utility to convert constant expression operands (of an instruction) to instructions.
In the situation where we need to replace a constant operand C from a constant expression CE by an instr
[IR] Add utility to convert constant expression operands (of an instruction) to instructions.
In the situation where we need to replace a constant operand C from a constant expression CE by an instruction NI, it not possible without converting CE itself into an instruction. This utility helps to convert the given set of constant expression operands from an instruction I into a corresponding set of instructions.
The current use-case for this utility is from the patches - https://reviews.llvm.org/D103225 and https://reviews.llvm.org/D103655.
Reviewed By: rampitec
Differential Revision: https://reviews.llvm.org/D103661
show more ...
|
Revision tags: llvmorg-12.0.1-rc1, llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2 |
|
#
a3ce7f5c |
| 05-Feb-2021 |
Yaxun (Sam) Liu <yaxun.liu@amd.com> |
[HIP] Fix managed variable linkage
Currently managed variables are emitted as undefined symbols, which causes difficulty for diagnosing undefined symbols for non-managed variables.
This patch trans
[HIP] Fix managed variable linkage
Currently managed variables are emitted as undefined symbols, which causes difficulty for diagnosing undefined symbols for non-managed variables.
This patch transforms managed variables in device compilation so that they can be emitted as normal variables.
Reviewed by: Artem Belevich
Differential Revision: https://reviews.llvm.org/D96195
show more ...
|
Revision tags: llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2, llvmorg-11.0.1-rc1 |
|
#
622eaa4a |
| 15-Oct-2020 |
Yaxun (Sam) Liu <yaxun.liu@amd.com> |
[HIP] Support __managed__ attribute
This patch implements codegen for __managed__ variable attribute for HIP.
Diagnostics will be added later.
Differential Revision: https://reviews.llvm.org/D94814
|