|
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, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0 |
|
| #
5e1ba27b |
| 31-Aug-2022 |
Simon Pilgrim <[email protected]> |
[DAG] extractShiftForRotate - replace assertion for shift opcode with an early-out
We feed the result from the first extractShiftForRotate call into the second, and that result might no longer be a
[DAG] extractShiftForRotate - replace assertion for shift opcode with an early-out
We feed the result from the first extractShiftForRotate call into the second, and that result might no longer be a shift op (usually due to constant folding).
NOTE: We REALLY need to stop creating nodes on the fly inside extractShiftForRotate!
Fixes Issue #57474
(cherry picked from commit eaede4b5b7cfc13ca0e484b4cb25b2f751d86fd9)
show more ...
|
|
Revision tags: llvmorg-15.0.0-rc3 |
|
| #
fe3ff380 |
| 24-Aug-2022 |
Simon Pilgrim <[email protected]> |
[DAG] MatchRotate - bail if we fail to match a shl/srl pair
extractShiftForRotate may fail to return canonicalized shifts due to constant folding or other simplification that can occur in getNode()
[DAG] MatchRotate - bail if we fail to match a shl/srl pair
extractShiftForRotate may fail to return canonicalized shifts due to constant folding or other simplification that can occur in getNode()
Fixes Issue #57283
(cherry picked from commit e624f8a3bb88075493dec521408993ea0ef7bde0)
show more ...
|
| #
02b82b84 |
| 15-Aug-2022 |
David Green <[email protected]> |
[DAG] Ensure more Legal BUILD_VECTOR elements types in shuffle->And combine
This is a followup to D131350, which caused another problem for i64 types being split into i32 on i32 targets. This patch
[DAG] Ensure more Legal BUILD_VECTOR elements types in shuffle->And combine
This is a followup to D131350, which caused another problem for i64 types being split into i32 on i32 targets. This patch tries to make sure that either Illegal types are OK, or that the element types of a buildvector are legal and bigger than or equal to the size of the original elements.
Differential Revision: https://reviews.llvm.org/D131883
(cherry picked from commit dfc95bab078297b1564c1ac757b1ac093d125b2d)
show more ...
|
| #
ddb04d79 |
| 09-Aug-2022 |
Peter Waller <[email protected]> |
[DAGCombine] Check zext legality in zext-extract-extend combine
Discussed in D131503.
Fix to D130782.
(cherry picked from commit 898699831b5490d88b993593e5cb415fb2d1983a)
|
|
Revision tags: llvmorg-15.0.0-rc2 |
|
| #
bcd9043c |
| 08-Aug-2022 |
David Green <[email protected]> |
[DAG] Ensure Legal BUILD_VECTOR elements types in shuffle->And combine
D129150 added a combine from shuffles to And that creates a BUILD_VECTOR of constant elements. We need to ensure that the eleme
[DAG] Ensure Legal BUILD_VECTOR elements types in shuffle->And combine
D129150 added a combine from shuffles to And that creates a BUILD_VECTOR of constant elements. We need to ensure that the elements are of a legal type, to prevent asserts during lowering.
Fixes #56970.
Differential Revision: https://reviews.llvm.org/D131350
(cherry picked from commit 061e0189a3dab6b1831a80d489ff1b15ad93aafb)
show more ...
|
|
Revision tags: llvmorg-15.0.0-rc1 |
|
| #
65d2e9b4 |
| 29-Jul-2022 |
David Sherwood <[email protected]> |
[DAGCombiner] Extend visitAND to include EXTRACT_SUBVECTOR
Eliminate an AND by redefining an anyext|sext|zext.
(and (extract_subvector (anyext|sext|zext v) _) iN_mask) => (extract_subvector
[DAGCombiner] Extend visitAND to include EXTRACT_SUBVECTOR
Eliminate an AND by redefining an anyext|sext|zext.
(and (extract_subvector (anyext|sext|zext v) _) iN_mask) => (extract_subvector (zeroext_iN v))
Differential Revision: https://reviews.llvm.org/D130782
(cherry picked from commit 41119a0f520d07a438f7434f17ce63cc3a942d1b)
show more ...
|
| #
79b1ca8e |
| 02-Aug-2022 |
Simon Pilgrim <[email protected]> |
[DAG] matchRotateSub - ensure the (pre-extended) shift amount is wide enough for the amount mask (PR56859)
matchRotateSub is given shift amounts that will already have stripped any/zero-extend nodes
[DAG] matchRotateSub - ensure the (pre-extended) shift amount is wide enough for the amount mask (PR56859)
matchRotateSub is given shift amounts that will already have stripped any/zero-extend nodes from - so make sure those values are wide enough to take a mask.
(cherry picked from commit b651fdff79027064071db7c1d0250553e3e6a232)
show more ...
|
|
Revision tags: llvmorg-16-init |
|
| #
1ea7b9c6 |
| 26-Jul-2022 |
Simon Pilgrim <[email protected]> |
[DAG] matchRotateSub - set demanded bits to the shift amount type size, not the shift result size.
This should fix a report on D130251 of an assert due to a bitwidth mismatch in APInt::isSubSetOf
|
| #
1a7078d1 |
| 26-Jul-2022 |
wangpc <[email protected]> |
[DAGCombine] Mask doesn't have to be (EltSize - 1) exactly when combining rotation
I think what we need is the least Log2(EltSize) significant bits are known to be ones.
Reviewed By: RKSimon
Diffe
[DAGCombine] Mask doesn't have to be (EltSize - 1) exactly when combining rotation
I think what we need is the least Log2(EltSize) significant bits are known to be ones.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D130251
show more ...
|
| #
c8d91b07 |
| 26-Jul-2022 |
Sven van Haastregt <[email protected]> |
Reassoc FMF should not optimize FMA(a, 0, b) to (b)
Optimizing (a * 0 + b) to (b) requires assuming that a is finite and not NaN. DAGCombiner will do this optimization when the reassoc fast math fla
Reassoc FMF should not optimize FMA(a, 0, b) to (b)
Optimizing (a * 0 + b) to (b) requires assuming that a is finite and not NaN. DAGCombiner will do this optimization when the reassoc fast math flag is set, which is not correct. Change DAGCombiner to only consider UnsafeMath for this optimization.
Differential Revision: https://reviews.llvm.org/D130232
Co-authored-by: Andrea Faulds <[email protected]>
show more ...
|
| #
cb370cf4 |
| 14-Jul-2022 |
jacquesguan <[email protected]> |
[DAGCombiner] Teach scalarizeExtractedBinop to support scalable splat.
This patch supports the scalable splat part for scalarizeExtractedBinop.
Differential Revision: https://reviews.llvm.org/D1297
[DAGCombiner] Teach scalarizeExtractedBinop to support scalable splat.
This patch supports the scalable splat part for scalarizeExtractedBinop.
Differential Revision: https://reviews.llvm.org/D129725
show more ...
|
| #
562ee7cc |
| 24-Jul-2022 |
Simon Pilgrim <[email protected]> |
[DAG] visitSMUL_LOHI/visitUMUL_LOHI - ensure we canonicalize constants to the RHS
|
| #
5f89d2ba |
| 23-Jul-2022 |
Simon Pilgrim <[email protected]> |
[DAG] Move OR(AND(X,C1),AND(OR(X,Y),C2)) -> OR(AND(X,OR(C1,C2)),AND(Y,C2)) fold to SimplifyDemandedBits
This will fix the SystemZ v3i31 memcpy regression in D77804 (with the help of D129765 as well.
[DAG] Move OR(AND(X,C1),AND(OR(X,Y),C2)) -> OR(AND(X,OR(C1,C2)),AND(Y,C2)) fold to SimplifyDemandedBits
This will fix the SystemZ v3i31 memcpy regression in D77804 (with the help of D129765 as well....).
It should also allow us to /bend/ the oneuse limitation for cases where we can use demanded bits to safely peek though multiple uses of the AND ops.
show more ...
|
| #
be208b40 |
| 22-Jul-2022 |
Craig Topper <[email protected]> |
[DAGCombiner] Simplify code around call to reduceLoadWidth in visitAND. NFC
We were looking for loads or any_extend+load. reduceLoadWidth hasn't known how to look through such an any_extend to find
[DAGCombiner] Simplify code around call to reduceLoadWidth in visitAND. NFC
We were looking for loads or any_extend+load. reduceLoadWidth hasn't known how to look through such an any_extend to find the load since D40667 almost 5 years ago.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D130333
show more ...
|
| #
bf268a05 |
| 22-Jul-2022 |
Cullen Rhodes <[email protected]> |
[AArch64] Emit vector FP cmp when LE is used with fast-math
Reviewed By: paulwalker-arm
Differential Revision: https://reviews.llvm.org/D130093
|
| #
e60eb705 |
| 07-Jul-2022 |
jacquesguan <[email protected]> |
recommit "[DAGCombiner] Teach scalarizeBinOpOfSplats handle scalable splat."
With fix for AArch64 and Hexgon test cases.
|
| #
4c82f56d |
| 19-Jul-2022 |
David Truby <[email protected]> |
[llvm][SVE] Remove redundant and when comparing against extending load
When determining if an `and` should be merged into an extending load the constant argument to the `and` is currently not checke
[llvm][SVE] Remove redundant and when comparing against extending load
When determining if an `and` should be merged into an extending load the constant argument to the `and` is currently not checked if the argument requires truncation. This prevents the combine happening when the vector width is half the normal available vector width for SVE VLA vectors.
Reviewed By: c-rhodes
Differential Revision: https://reviews.llvm.org/D129281
show more ...
|
| #
71c502cb |
| 19-Jul-2022 |
Simon Pilgrim <[email protected]> |
[DAG] Call SimplifyDemandedBits from ISD::MUL nodes
Noticed while triaging D129765.
|
| #
69b284aa |
| 19-Jul-2022 |
Max Kazantsev <[email protected]> |
Revert "[DAGCombiner] Teach scalarizeBinOpOfSplats handle scalable splat."
This reverts commit 58dfaaaace4ea75ab3588a6e738f2cf58ebf77c2.
Massive AARCH test failures in buildbot.
|
| #
58dfaaaa |
| 07-Jul-2022 |
jacquesguan <[email protected]> |
[DAGCombiner] Teach scalarizeBinOpOfSplats handle scalable splat.
This revision supports to scalarize a binary operation of two scalable splat vectors.
Reviewed By: RKSimon
Differential Revision:
[DAGCombiner] Teach scalarizeBinOpOfSplats handle scalable splat.
This revision supports to scalarize a binary operation of two scalable splat vectors.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D122791
show more ...
|
| #
2570f226 |
| 13-Jul-2022 |
Itay Bookstein <[email protected]> |
[SDAG] Remove single-result restriction on commutative CSE
The DAG Combiner unnecessarily restricts commutative CSE to nodes with a single result value. This commit removes that restriction.
Signed
[SDAG] Remove single-result restriction on commutative CSE
The DAG Combiner unnecessarily restricts commutative CSE to nodes with a single result value. This commit removes that restriction.
Signed-off-by: Itay Bookstein <[email protected]>
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D129666
show more ...
|
| #
53b90dd3 |
| 17-Jul-2022 |
Simon Pilgrim <[email protected]> |
[DAG] Fold (or (and X, C1), (and (or X, Y), C2)) -> (or (and X, C1|C2), (and Y, C2))
Pulled out of D77804
Alive2: https://alive2.llvm.org/ce/z/g61VRe
|
| #
9e6d1f4b |
| 17-Jul-2022 |
Kazu Hirata <[email protected]> |
[CodeGen] Qualify auto variables in for loops (NFC)
|
| #
7ca3e23f |
| 16-Jul-2022 |
Sanjay Patel <[email protected]> |
[SDAG] narrow truncated sign_extend_inreg
trunc (sign_ext_inreg X, iM) to iN --> sign_ext_inreg (trunc X to iN), iM
There are improvements on existing tests from this, and there are a pair of large
[SDAG] narrow truncated sign_extend_inreg
trunc (sign_ext_inreg X, iM) to iN --> sign_ext_inreg (trunc X to iN), iM
There are improvements on existing tests from this, and there are a pair of large regressions in D127115 for Thumb2 caused by not folding this pattern.
Differential Revision: https://reviews.llvm.org/D129890
show more ...
|
| #
a44bdf9b |
| 16-Jul-2022 |
Simon Pilgrim <[email protected]> |
[DAG] visitINSERT_VECTOR_ELT - refactor BUILD_VECTOR creation from INSERT_VECTOR_ELT chain.
D127595 added the ability to recurse up a (one-use) INSERT_VECTOR_ELT chain to create a BUILD_VECTOR befor
[DAG] visitINSERT_VECTOR_ELT - refactor BUILD_VECTOR creation from INSERT_VECTOR_ELT chain.
D127595 added the ability to recurse up a (one-use) INSERT_VECTOR_ELT chain to create a BUILD_VECTOR before other combines manage to break the chain, something that is particularly bad in D127115.
The patch generalises this so it doesn't have to build the chain starting from the last element insertion, instead it can now start from any insertion and will recurse up the chain until it finds all elements or finds a UNDEF/BUILD_VECTOR/SCALAR_TO_VECTOR which represents that start of the chain.
Fixes several regressions in D127115
show more ...
|