|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, 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, 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, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, 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 |
|
| #
455e1d76 |
| 23-Oct-2022 |
Mike Hommey <[email protected]> |
[InstCombine] Bail out of casting calls when a conversion from/to byval is involved.
Fixes #58307
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D135738
(cherry picked from co
[InstCombine] Bail out of casting calls when a conversion from/to byval is involved.
Fixes #58307
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D135738
(cherry picked from commit 86e57e66da9380eaa90a9d0830d7f2c5fe87af99)
show more ...
|
|
Revision tags: llvmorg-15.0.3, 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 |
|
| #
78c09f0f |
| 21-Jul-2022 |
Sanjay Patel <[email protected]> |
[PatternMatch][InstCombine] match a vector with constant expression element(s) as a constant expression
The InstCombine test is reduced from issue #56601. Without the more liberal match for Constant
[PatternMatch][InstCombine] match a vector with constant expression element(s) as a constant expression
The InstCombine test is reduced from issue #56601. Without the more liberal match for ConstantExpr, we try to rearrange constants in Negator forever.
Alternatively, we could adjust the definition of m_ImmConstant to be more conservative, but that's probably a larger patch, and I don't see any downside to changing m_ConstantExpr. We never capture and modify a ConstantExpr; transforms just want to avoid it.
Differential Revision: https://reviews.llvm.org/D130286
show more ...
|
| #
c81dff3c |
| 21-Jul-2022 |
Nikita Popov <[email protected]> |
[MemoryBuiltins] Add getFreedOperand() function (NFCI)
We currently assume in a number of places that free-like functions free their first argument. This is true for all hardcoded free-like function
[MemoryBuiltins] Add getFreedOperand() function (NFCI)
We currently assume in a number of places that free-like functions free their first argument. This is true for all hardcoded free-like functions, but with the new attribute-based design, the freed argument is supposed to be indicated by the allocptr attribute.
To make sure we handle this correctly once allockind(free) is respected, add a getFreedOperand() helper which returns the freed argument, rather than just indicating whether the call frees *some* argument.
This migrates most but not all users of isFreeCall() to the new API. The remaining users are a bit more tricky.
show more ...
|
| #
8d58c8e5 |
| 21-Jul-2022 |
Nikita Popov <[email protected]> |
Reapply [InstCombine] Don't check for alloc fn before fetching alloc size
Reapply the patch with getObjectSize() replaced by getAllocSize(). The former will also look through calls that return their
Reapply [InstCombine] Don't check for alloc fn before fetching alloc size
Reapply the patch with getObjectSize() replaced by getAllocSize(). The former will also look through calls that return their argument, and we'll end up placing dereferenceable attributes on intrinsics like llvm.launder.invariant.group. While this isn't wrong, it also doesn't seem to be particularly useful. For now, use getAllocSize() instead, which sticks closer to the original behavior of this code.
-----
This code is just interested in the allocsize, not any other allocator properties.
show more ...
|
| #
70056d04 |
| 21-Jul-2022 |
Nikita Popov <[email protected]> |
Revert "[InstCombine] Don't check for alloc fn before fetching object size"
This reverts commit c72c22c04df992c95c5912d0075e5263c88f9fec.
This affected an Analysis test that I missed. Reverting for
Revert "[InstCombine] Don't check for alloc fn before fetching object size"
This reverts commit c72c22c04df992c95c5912d0075e5263c88f9fec.
This affected an Analysis test that I missed. Reverting for now.
show more ...
|
| #
c72c22c0 |
| 21-Jul-2022 |
Nikita Popov <[email protected]> |
[InstCombine] Don't check for alloc fn before fetching object size
This code is just interested in the allocsize, not any other allocator properties.
|
| #
f45ab433 |
| 21-Jul-2022 |
Nikita Popov <[email protected]> |
[MemoryBuiltins] Avoid isAllocationFn() call before checking removable alloc
Alloc directly checking whether a given call is a removable allocation, instead of first checking whether it is an alloca
[MemoryBuiltins] Avoid isAllocationFn() call before checking removable alloc
Alloc directly checking whether a given call is a removable allocation, instead of first checking whether it is an allocation first.
show more ...
|
| #
4fba35f9 |
| 18-Jul-2022 |
Nikita Popov <[email protected]> |
[InstCombine] Clarify invoke/callbr handling in constexpr call fold (NFCI)
We only need to check the block for the normal/default destination, not for other destinations. Using the value in those wo
[InstCombine] Clarify invoke/callbr handling in constexpr call fold (NFCI)
We only need to check the block for the normal/default destination, not for other destinations. Using the value in those would be illegal anyway.
The callbr case cannot actually happen here, because callbr is currently limited to inline asm. Retaining it to match the spirit of the original code.
show more ...
|
| #
611ffcf4 |
| 14-Jul-2022 |
Kazu Hirata <[email protected]> |
[llvm] Use value instead of getValue (NFC)
|
| #
935570b2 |
| 29-Jun-2022 |
Nikita Popov <[email protected]> |
[ConstExpr] Don't create div/rem expressions
This removes creation of udiv/sdiv/urem/srem constant expressions, in preparation for their removal. I've added a ConstantExpr::isDesirableBinOp() predic
[ConstExpr] Don't create div/rem expressions
This removes creation of udiv/sdiv/urem/srem constant expressions, in preparation for their removal. I've added a ConstantExpr::isDesirableBinOp() predicate to determine whether an expression should be created for a certain operator.
With this patch, div/rem expressions can still be created through explicit IR/bitcode, forbidding them entirely will be the next step.
Differential Revision: https://reviews.llvm.org/D128820
show more ...
|
| #
53dc0f10 |
| 03-Jul-2022 |
Nuno Lopes <[email protected]> |
[NFC] Switch a few uses of undef to poison as placeholders for unreachble code
|
|
Revision tags: llvmorg-14.0.6 |
|
| #
a83aa33d |
| 16-Jun-2022 |
Bradley Smith <[email protected]> |
[IR] Move vector.insert/vector.extract out of experimental namespace
These intrinsics are now fundemental for SVE code generation and have been present for a year and a half, hence move them out of
[IR] Move vector.insert/vector.extract out of experimental namespace
These intrinsics are now fundemental for SVE code generation and have been present for a year and a half, hence move them out of the experimental namespace.
Differential Revision: https://reviews.llvm.org/D127976
show more ...
|
| #
a7938c74 |
| 26-Jun-2022 |
Kazu Hirata <[email protected]> |
[llvm] Don't use Optional::hasValue (NFC)
This patch replaces Optional::hasValue with the implicit cast to bool in conditionals only.
|
| #
3b7c3a65 |
| 25-Jun-2022 |
Kazu Hirata <[email protected]> |
Revert "Don't use Optional::hasValue (NFC)"
This reverts commit aa8feeefd3ac6c78ee8f67bf033976fc7d68bc6d.
|
| #
aa8feeef |
| 25-Jun-2022 |
Kazu Hirata <[email protected]> |
Don't use Optional::hasValue (NFC)
|
| #
e0e687a6 |
| 20-Jun-2022 |
Kazu Hirata <[email protected]> |
[llvm] Don't use Optional::hasValue (NFC)
|
| #
dc9c2eac |
| 10-Jun-2022 |
Guillaume Chatelet <[email protected]> |
[NFC][Alignment] Simplify code
|
|
Revision tags: llvmorg-14.0.5 |
|
| #
b8c2781f |
| 09-Jun-2022 |
Simon Moll <[email protected]> |
[NFC] format InstructionSimplify & lowerCaseFunctionNames
Clang-format InstructionSimplify and convert all "FunctionName"s to "functionName". This patch does touch a lot of files but gets done with
[NFC] format InstructionSimplify & lowerCaseFunctionNames
Clang-format InstructionSimplify and convert all "FunctionName"s to "functionName". This patch does touch a lot of files but gets done with the cleanup of InstructionSimplify in one commit.
This is the alternative to the less invasive clang-format only patch: D126783
Reviewed By: spatel, rengolin
Differential Revision: https://reviews.llvm.org/D126889
show more ...
|
|
Revision tags: llvmorg-14.0.4 |
|
| #
ebbc3739 |
| 18-May-2022 |
Sanjay Patel <[email protected]> |
[InstCombine] allow variable shift amount in bswap + shift fold
When shifting by a byte-multiple: bswap (shl X, Y) --> lshr (bswap X), Y bswap (lshr X, Y) --> shl (bswap X), Y
This was limited to c
[InstCombine] allow variable shift amount in bswap + shift fold
When shifting by a byte-multiple: bswap (shl X, Y) --> lshr (bswap X), Y bswap (lshr X, Y) --> shl (bswap X), Y
This was limited to constants as a first step in D122010 / 60820e53ec9d3be02 , but issue #55327 shows a source example (and there's a test based on that here) where a variable shift amount is used in this pattern.
show more ...
|
| #
d9ad6a2c |
| 13-May-2022 |
Nikita Popov <[email protected]> |
[InstCombine] Fix unused variable warning (NFC)
|
| #
eb28da89 |
| 05-May-2022 |
Serge Pavlov <[email protected]> |
[InstCombine] Remove side effect of replaced constrained intrinsics
If a constrained intrinsic call was replaced by some value, it was not removed in some cases. The dangling instruction resulted in
[InstCombine] Remove side effect of replaced constrained intrinsics
If a constrained intrinsic call was replaced by some value, it was not removed in some cases. The dangling instruction resulted in useless instructions executed in runtime. It happened because constrained intrinsics usually have side effect, it is used to model the interaction with floating-point environment. In some cases side effect is actually absent or can be ignored.
This change adds specific treatment of constrained intrinsics so that their side effect can be removed if it actually absents.
Differential Revision: https://reviews.llvm.org/D118426
show more ...
|
| #
e1554ac6 |
| 05-May-2022 |
Serge Pavlov <[email protected]> |
Revert "[InstCombine] Remove side effect of replaced constrained intrinsics"
This reverts commit 83914ee96fc2d828e1cfb8913f5d156d39150e2c. The change caused discussion: https://lists.llvm.org/piperm
Revert "[InstCombine] Remove side effect of replaced constrained intrinsics"
This reverts commit 83914ee96fc2d828e1cfb8913f5d156d39150e2c. The change caused discussion: https://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20220502/1034841.html
show more ...
|
| #
83914ee9 |
| 05-May-2022 |
Serge Pavlov <[email protected]> |
[InstCombine] Remove side effect of replaced constrained intrinsics
If a constrained intrinsic call was replaced by some value, it was not removed in some cases. The dangling instruction resulted in
[InstCombine] Remove side effect of replaced constrained intrinsics
If a constrained intrinsic call was replaced by some value, it was not removed in some cases. The dangling instruction resulted in useless instructions executed in runtime. It happened because constrained intrinsics usually have side effect, it is used to model the interaction with floating-point environment. In some cases it is correct behavior but often the side effect is actually absent or can be ignored.
This change adds specific treatment of constrained intrinsics so that their side effect can be removed if it actually absents.
Differential Revision: https://reviews.llvm.org/D118426
show more ...
|
| #
14f25762 |
| 04-May-2022 |
Sanjay Patel <[email protected]> |
[InstCombine] add type constraint to intrinsic+shuffle fold
This check is in the related fold for binops, but it was missed when the code was adapted for intrinsics in 432c199e8473. The new test wou
[InstCombine] add type constraint to intrinsic+shuffle fold
This check is in the related fold for binops, but it was missed when the code was adapted for intrinsics in 432c199e8473. The new test would crash when trying to create a new intrinsic with mismatched types.
show more ...
|
| #
7e6d318c |
| 04-May-2022 |
Sanjay Patel <[email protected]> |
[InstCombine] move shuffle after funnel shift with same-shuffled operands
This extends 432c199e8473 and 9c4770eaab9d9 with an intrinsic cited directly in issue #46238
Eventually, we will want to us
[InstCombine] move shuffle after funnel shift with same-shuffled operands
This extends 432c199e8473 and 9c4770eaab9d9 with an intrinsic cited directly in issue #46238
Eventually, we will want to use llvm::isTriviallyVectorizable() or create some new API for this list, but for now, I am intentionally making a minimum change to reduce risk and only affect an intrinsic with regression tests in place.
show more ...
|