summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/ARM/lsr-on-unrolled-loops.ll
Commit message (Collapse)AuthorAgeFilesLines
* Remove -enable-lsr-nested in time for 3.1.Andrew Trick2012-03-221-640/+0
| | | | | | Tests cases have been removed but attached to open PR12330. llvm-svn: 153286
* ARM VLDR/VSTR instructions don't need a size suffix.Jim Grosbach2011-11-141-3/+3
| | | | | | | Canonicallize on the non-suffixed form, but continue to accept assembly that has any correctly sized type suffix. llvm-svn: 144583
* LSR: rewrite inner loops only.Andrew Trick2011-09-291-1/+4
| | | | | | | | Rewriting the entire loop nest now requires -enable-lsr-nested. See PR11035 for some performance data. A few unit tests specifically test nested LSR, and are now under a flag. llvm-svn: 140762
* whitespaceAndrew Trick2011-09-291-245/+245
| | | | llvm-svn: 140761
* remove a bunch of CHECK lines that aren't checking whatChris Lattner2011-04-091-5/+0
| | | | | | | they thought they were, because alternation was expanding wrong in {{}}'s. llvm-svn: 129194
* Add some missing isel predicates on def : pat patterns to avoid generating ↵Evan Cheng2010-11-121-9/+9
| | | | | | VFP vmla / vmls (they cause stalls). Disabling them in isel is properly not a right solution, I'll look into a proper solution next. llvm-svn: 118922
* Two sets of changes. Sorry they are intermingled.Evan Cheng2010-11-031-8/+8
| | | | | | | | | | | | | 1. Fix pre-ra scheduler so it doesn't try to push instructions above calls to "optimize for latency". Call instructions don't have the right latency and this is more likely to use introduce spills. 2. Fix if-converter cost function. For ARM, it should use instruction latencies, not # of micro-ops since multi-latency instructions is completely executed even when the predicate is false. Also, some instruction will be "slower" when they are predicated due to the register def becoming implicit input. rdar://8598427 llvm-svn: 118135
* Try again to disable critical edge splitting in CodeGenPrepare.Jakob Stoklund Olesen2010-09-301-2/+2
| | | | | | The bug that broke i386 linux has been fixed in r115191. llvm-svn: 115204
* Part one of switching to using a more sane heuristic for determining ↵Owen Anderson2010-09-281-2/+1
| | | | | | | | | | | if-conversion profitability. Rather than having arbitrary cutoffs, actually try to cost model the conversion. For now, the constants are tuned to more or less match our existing behavior, but these will be changed to reflect realistic values as this work proceeds. llvm-svn: 114973
* Revert "Disable codegen prepare critical edge splitting. Machine instruction ↵Jakob Stoklund Olesen2010-09-271-3/+3
| | | | | | | | | | | | | | | passes now" This reverts revision 114633. It was breaking llvm-gcc-i386-linux-selfhost. It seems there is a downstream bug that is exposed by -cgp-critical-edge-splitting=0. When that bug is fixed, this patch can go back in. Note that the changes to tailcallfp2.ll are not reverted. They were good are required. llvm-svn: 114859
* Disable codegen prepare critical edge splitting. Machine instruction passes nowEvan Cheng2010-09-231-3/+3
| | | | | | break critical edges on demand. llvm-svn: 114633
* Now that register allocation properly considers reserved regs, simplify theJim Grosbach2010-09-021-1/+1
| | | | | | ARM register class allocation order functions to take advantage of that. llvm-svn: 112841
* The optimize comparisons pass removes the "cmp" instruction this is checking ↵Bill Wendling2010-08-101-1/+0
| | | | | | for. llvm-svn: 110739
* - Allow target to specify when is register pressure "too high". In most cases,Evan Cheng2010-07-231-8/+8
| | | | | | | | | | | | | it's too late to start backing off aggressive latency scheduling when most of the registers are in use so the threshold should be a bit tighter. - Correctly handle live out's and extract_subreg etc. - Enable register pressure aware scheduling by default for hybrid scheduler. For ARM, this is almost always a win on # of instructions. It's runtime neutral for most of the tests. But for some kernels with high register pressure it can be a huge win. e.g. 464.h264ref reduced number of spills by 54 and sped up by 20%. llvm-svn: 109279
* More register pressure aware scheduling work.Evan Cheng2010-07-211-8/+8
| | | | llvm-svn: 109064
* We are missing opportunites to use ldm. Take code like this:Bill Wendling2010-06-231-3/+5
| | | | | | | | | | | | | | void t(int *cp0, int *cp1, int *dp, int fmd) { int c0, c1, d0, d1, d2, d3; c0 = (*cp0++ & 0xffff) | ((*cp1++ << 16) & 0xffff0000); c1 = (*cp0++ & 0xffff) | ((*cp1++ << 16) & 0xffff0000); /* ... */ } It code gens into something pretty bad. But with this change (analogous to the X86 back-end), it will use ldm and generate few instructions. llvm-svn: 106693
* Remove arm_apcscc from the test files. It is the default and doing thisRafael Espindola2010-06-171-2/+2
| | | | | | matches what llvm-gcc and clang now produce. llvm-svn: 106221
* Fix some latency computation bugs: if the use is not a machine opcode do not ↵Evan Cheng2010-05-281-10/+10
| | | | | | just return zero. llvm-svn: 105061
* When canonicalizing icmp operand order to put the loop invariantDan Gohman2010-05-201-0/+256
| | | | | | | | | | | | operand on the left, the interesting operand is on the right. This fixes a bug where LSR was failing to recognize ICmpZero uses, which led it to be unable to reverse the induction variable in the attached testcase. Delete test/CodeGen/X86/stack-color-with-reg-2.ll, because its test is extremely fragile and hard to meaningfully update. llvm-svn: 104262
* Teach LSR how to cope better with unrolled loops on targets whereDan Gohman2010-05-191-0/+386
the addressing modes don't make this trivially easy. This allows it to avoid falling into the less precise heuristics in more cases. llvm-svn: 104186
OpenPOWER on IntegriCloud