Eli Friedman
28f3ff0d3d
Minor simplification: use ShuffleVectorInst::getMaskValue instead of a more expensive helper.
...
llvm-svn: 142672
2011-10-21 19:11:34 +00:00
Eli Friedman
fb0b9216e1
Extend instcombine's shufflevector simplification to handle more cases where the input and output vectors have different sizes. Patch by Xiaoyi Guo.
...
llvm-svn: 142671
2011-10-21 19:06:29 +00:00
Chris Lattner
e1fe7061ce
land David Blaikie's patch to de-constify Type, with a few tweaks.
...
llvm-svn: 135375
2011-07-18 04:54:35 +00:00
Nadav Rotem
897b838d5f
Instcombile optimization: extractelement(cast) -> cast(extractelement)
...
llvm-svn: 128683
2011-03-31 22:57:29 +00:00
Eli Friedman
35ed1e5d6c
PR9218: SimplifyDemandedVectorElts can return a non-null value that is not
...
the instruction passed in. Make sure to account for this correctly, instead
of looping infinitely.
llvm-svn: 126058
2011-02-19 22:42:40 +00:00
Jay Foad
789e8ac4f7
PR5207: Rename overloaded APInt methods set(), clear(), flip() to
...
setAllBits(), setBit(unsigned), etc.
llvm-svn: 120564
2010-12-01 08:53:58 +00:00
Bob Wilson
d84c4629c1
Clean up indentation and other whitespace.
...
llvm-svn: 117728
2010-10-29 22:20:45 +00:00
Bob Wilson
9297637759
Remove trailing whitespace.
...
llvm-svn: 117727
2010-10-29 22:20:43 +00:00
Bob Wilson
59dedc2629
Fix 80-column violation.
...
llvm-svn: 117722
2010-10-29 22:03:07 +00:00
Bob Wilson
d7f24e831f
Change instcombine's getShuffleMask to represent undef with negative values.
...
This code had previously used 2*N, where N is the mask length, to represent
undef. That is not safe because the shufflevector operands may have more
than N elements -- they don't have to match the result type.
llvm-svn: 117721
2010-10-29 22:03:05 +00:00
Bob Wilson
996353fb5d
Make instcombine a little more aggressive in combining vector shuffles.
...
Allow splats even if they don't match either of the original shuffles,
possibly due to undef entries in the shuffles masks. Radar 8597790.
Also fix some 80-column violations.
llvm-svn: 117719
2010-10-29 22:02:50 +00:00
Eric Christopher
08e9f0250a
Temporarily revert r110987 as it's causing some miscompares in
...
vector heavy code. I'll re-enable when we've tracked down the problem.
llvm-svn: 111318
2010-08-17 22:55:27 +00:00
Nate Begeman
e57074fc48
Reapply this transformation now that it is passing the external test which it previously failed.
...
llvm-svn: 110987
2010-08-13 00:17:53 +00:00
Eric Christopher
34acdf57df
Temporarily revert 110737 and 110734, they were causing failures
...
in an external testsuite.
llvm-svn: 110905
2010-08-12 07:01:22 +00:00
Nate Begeman
713062e756
Add the minimal amount of smarts necessary to instcombine of shufflevectors to recognize
...
patterns generated by clang for transpose of a matrix in generic vectors. This is made
of two parts:
1) Propagating vector extracts of hi/lo half into their users
2) Recognizing an insertion of even elements followed by the odd elements as an unpack.
Testcase to come, but this shrinks the # of shuffle instructions generated on x86 from ~40 to the minimal 8.
llvm-svn: 110734
2010-08-10 21:38:12 +00:00
Duncan Sands
1b33dd3c83
There are two ways of checking for a given type, for example isa<PointerType>(T)
...
and T->isPointerTy(). Convert most instances of the first form to the second form.
Requested by Chris.
llvm-svn: 96344
2010-02-16 11:11:14 +00:00
Chris Lattner
9635fe03ca
fix some problems handling large vectors reported in PR6230
...
llvm-svn: 95616
2010-02-08 23:56:03 +00:00
Chris Lattner
916d97c2d5
reduce indentation
...
llvm-svn: 92684
2010-01-05 05:42:08 +00:00
Chris Lattner
e22030e730
split vector stuff out to InstCombineVectorOps.cpp
...
llvm-svn: 92683
2010-01-05 05:36:20 +00:00