Eric Christopher
cee313d288
Revert "Temporarily Revert "Add basic loop fusion pass.""
...
The reversion apparently deleted the test/Transforms directory.
Will be re-reverting again.
llvm-svn: 358552
2019-04-17 04:52:47 +00:00
Eric Christopher
a863435128
Temporarily Revert "Add basic loop fusion pass."
...
As it's causing some bot failures (and per request from kbarton).
This reverts commit r358543/ab70da07286e618016e78247e4a24fcb84077fda.
llvm-svn: 358546
2019-04-17 02:12:23 +00:00
Sanjay Patel
94c91b78e7
[InstCombine] add folds for xor-of-icmp signbit tests (PR36682)
...
This is a retry of r328119 which was reverted at r328145 because
it could crash by trying to combine icmps with different operand
types. This version has a check for that and additional tests.
Original commit message:
This is part of solving:
https://bugs.llvm.org/show_bug.cgi?id=36682
There's also a leftover improvement from the long-ago-closed:
https://bugs.llvm.org/show_bug.cgi?id=5438
https://rise4fun.com/Alive/dC1
llvm-svn: 328197
2018-03-22 14:08:16 +00:00
Reid Kleckner
762331be07
Revert r328119 "[InstCombine] add folds for xor-of-icmp signbit tests (PR36682)"
...
This asserts when compiling safe_numerics_unittest.cpp in Chromium with
MSan.
llvm-svn: 328145
2018-03-21 20:35:36 +00:00
Sanjay Patel
778032f39d
[InstCombine] add folds for xor-of-icmp signbit tests (PR36682)
...
This is part of solving:
https://bugs.llvm.org/show_bug.cgi?id=36682
There's also a leftover improvement from the long-ago-closed:
https://bugs.llvm.org/show_bug.cgi?id=5438
https://rise4fun.com/Alive/dC1
llvm-svn: 328119
2018-03-21 17:17:13 +00:00
Craig Topper
4431bfe88c
[InstCombine] Support vector splats in transformZExtICmp
...
This patch adds splat support to transformZExtICmp. The test cases are vector versions of tests that failed when commenting out parts of the existing scalar code.
One test didn't vectorize optimize properly due to another bug so a TODO has been added.
Differential Revision: https://reviews.llvm.org/D37253
llvm-svn: 312023
2017-08-29 18:58:13 +00:00
Craig Topper
06556daa02
[InstCombine] Uncomment two test cases that were commented out with a TODO about them not optimizing.
...
If we can't see the current code how will we ever know if they get fixed or even what the problem is?
llvm-svn: 311985
2017-08-29 07:08:39 +00:00
Sanjay Patel
40e8ca46ad
[InstCombine] use m_APInt to allow icmp (trunc X, Y), C folds for splat constant vectors
...
This is a sibling of:
https://reviews.llvm.org/rL278859
https://reviews.llvm.org/rL278935
https://reviews.llvm.org/rL278945
https://reviews.llvm.org/rL279066
https://reviews.llvm.org/rL279077
https://reviews.llvm.org/rL279101
llvm-svn: 279133
2016-08-18 20:28:54 +00:00
Sanjay Patel
63e14a07e8
[InstCombine] use m_APInt to allow icmp (or X, Y), C folds for splat constant vectors
...
This is a sibling of:
https://reviews.llvm.org/rL278859
https://reviews.llvm.org/rL278935
llvm-svn: 278945
2016-08-17 16:38:57 +00:00
Sanjay Patel
a7b9bb3785
[InstCombine] add tests for missing vector icmp folds
...
llvm-svn: 278683
2016-08-15 17:10:35 +00:00
Sanjay Patel
e466865f67
add tests for missing vector icmp folds
...
llvm-svn: 278129
2016-08-09 16:05:57 +00:00
Sanjay Patel
362dcf9615
auto-generate checks
...
llvm-svn: 268061
2016-04-29 16:39:37 +00:00
Sanjoy Das
e5f4889ba9
[InstCombine] Optimize icmp slt signum(x), 1 --> icmp slt x, 1
...
Summary:
`signum(x)` is sometimes implemented as `(x >> 63) | (-x >>> 63)` (for
an `i64` `x`). This change adds a matcher for that pattern, and an
instcombine rule to optimize `signum(x) s< 1`.
Later, we can also consider optimizing:
icmp slt signum(x), 0 --> icmp slt x, 0
icmp sle signum(x), 1 --> true
etc.
Reviewers: majnemer
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D12703
llvm-svn: 247846
2015-09-16 20:41:29 +00:00
Benjamin Kramer
03f3e248eb
InstCombine: fold (A >> C) == (B >> C) --> (A^B) < (1 << C) for constant Cs.
...
This is common in bitfield code.
llvm-svn: 194925
2013-11-16 16:00:48 +00:00
Stephen Lin
c1c7a1309c
Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change.
...
This update was done with the following bash script:
find test/Transforms -name "*.ll" | \
while read NAME; do
echo "$NAME"
if ! grep -q "^; *RUN: *llc" $NAME; then
TEMP=`mktemp -t temp`
cp $NAME $TEMP
sed -n "s/^define [^@]*@\([A-Za-z0-9_]*\)(.*$/\1/p" < $NAME | \
while read FUNC; do
sed -i '' "s/;\(.*\)\([A-Za-z0-9_]*\):\( *\)@$FUNC\([( ]*\)\$/;\1\2-LABEL:\3@$FUNC(/g" $TEMP
done
mv $TEMP $NAME
fi
done
llvm-svn: 186268
2013-07-14 01:42:54 +00:00
Dmitri Gribenko
d7beca87f5
Tests: rewrite 'opt ... %s' to 'opt ... < %s' so that opt does not emit a ModuleID
...
This is done to avoid odd test failures, like the one fixed in r171243.
My previous regex was not good enough to find these.
llvm-svn: 171343
2013-01-01 13:57:25 +00:00
Benjamin Kramer
401e6093c9
Fix some CHECK lines which were ignored by accident.
...
llvm-svn: 91214
2009-12-12 09:25:50 +00:00
Nick Lewycky
a0e9d700dc
Generalize this optimization to work on equality comparisons between any two
...
integers that are constant except for a single bit (the same n-th bit in each).
llvm-svn: 90646
2009-12-05 05:00:00 +00:00
Nick Lewycky
922d4ab574
Reapply r88830 with a bugfix: this transform only applies to icmp eq/ne. This
...
fixes part of PR5438.
llvm-svn: 89639
2009-11-23 03:17:33 +00:00
Nick Lewycky
95148689c9
Revert r88830 and r88831 which appear to have caused a selfhost buildbot some
...
grief. I suspect this patch merely exposed a bug else.
llvm-svn: 88841
2009-11-15 07:47:32 +00:00
Nick Lewycky
6a6ac7e105
Correct typo.
...
llvm-svn: 88831
2009-11-15 06:16:57 +00:00
Nick Lewycky
e29fa4c7a1
Teach instcombine to look for booleans in wider integers when it encounters a
...
zext(icmp). It may be able to optimize that away. This fixes one of the cases
in PR5438.
llvm-svn: 88830
2009-11-15 05:55:17 +00:00