Evan Cheng
80b09fe8bc
Teach branch folding pass about implicit_def instructions. Unfortunately we can't just eliminate them since register scavenger expects every register use to be defined. However, we can delete them when there are no intra-block uses. Carefully removing some implicit def's which enable more blocks to be optimized away.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49461 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-10 02:32:10 +00:00
Evan Cheng
7e073baedb
- More aggressively coalescing away copies whose source is defined by an implicit_def.
...
- Added insert_subreg coalescing support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49448 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-09 20:57:25 +00:00
Chris Lattner
cc7f168c6c
Generalize getUnaryFloatFunction to handle any FP unary function, automatically
...
figuring out the suffix to use. implement pow(2,x) -> exp2(x).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49437 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-09 17:48:11 +00:00
Chris Lattner
090a816623
remove capital letter from test name.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49436 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-09 17:46:36 +00:00
Owen Anderson
a723d1e48f
Factor a bunch of functionality related to memcpy and memset transforms out of
...
GVN and into its own pass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49419 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-09 08:23:16 +00:00
Evan Cheng
f20d943bc6
Missed a hasInterval check.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49415 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-09 01:30:15 +00:00
Chris Lattner
77d00b0cea
many cleanups to the pow optimizer. Allow it to handle powf,
...
add support for pow(x, 2.0) -> x*x.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49411 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-09 00:07:45 +00:00
Duncan Sands
7497b92c2f
Check that bodies and calls but not declarations
...
are marked nounwind when compiling without
-fexceptions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49393 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-08 19:31:52 +00:00
Dale Johannesen
c8abfdec84
Rename -disable-required-unwind-tables to -unwind-tables-optional.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49391 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-08 18:10:08 +00:00
Gabor Greif
d9c7dbfe44
merge r48768 from branches/ggreif/parallelized-test
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49382 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-08 15:22:41 +00:00
Dale Johannesen
a25e5787bc
Missed one.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49365 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-08 00:14:59 +00:00
Dale Johannesen
235f7fb474
Add -disable-required-unwind-tables to tests
...
that need it (usually, grepping for some string
found in unwind info)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49364 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-08 00:14:17 +00:00
Duncan Sands
f02a8070eb
Testcase for pr2169.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49344 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-07 17:03:16 +00:00
Evan Cheng
565ada0b35
Fix test.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49343 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-07 17:02:18 +00:00
Chris Lattner
eeb939accb
fix this testcase to pass and remove a duplicate instance of itself.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49281 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-06 21:39:17 +00:00
Torok Edwin
4fea2e982d
Prefer to expand mask for xor to -1, so we have a chance to turn it into a not.
...
If it cannot be expanded, it will keep the old behaviour and try to shrink the constant.
Part of enhancement for PR2191.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49280 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-06 21:23:02 +00:00
Evan Cheng
1dc7869025
1. IMPLICIT_DEF can *re-define* any register.
...
2. Coalescer can now create an interesting situation where a register def can
reaches itself without being killed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49246 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-05 01:27:09 +00:00
Evan Cheng
0c0f83ff5d
Favors pshufd over shufps when shuffling elements from one vector. pshufd is faster than shufps.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49244 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-05 00:30:36 +00:00
Evan Cheng
b589d9f42d
New test case.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49190 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-03 21:25:03 +00:00
Dale Johannesen
4672d5d4db
Testcase for EH with functions whose names are stripped.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49111 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-02 20:16:41 +00:00
Dan Gohman
68d599df37
Speculatively micro-optimize memory-zeroing calls on Darwin 10.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49048 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-01 20:38:36 +00:00
Evan Cheng
9845eb5b03
More soft fp fixes.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49016 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-01 02:18:22 +00:00
Evan Cheng
110cf48752
Unbreak ARM / Thumb soft FP support.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49012 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-01 01:50:16 +00:00
Dale Johannesen
1d3863fdbc
Mark functions in some tests as 'nounwind'. Generating
...
EH info for these functions causes the tests to fail for
random reasons (e.g. looking for 'or' or counting lines
with asm-printer; labels count as lines.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49003 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-31 23:20:09 +00:00
Evan Cheng
427f4c106a
It's not safe to fold a load from GV stub or constantpool into a two-address use.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49002 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-31 23:19:51 +00:00
Dan Gohman
b061c4bc44
Fix a DAGCombiner optimization to respect volatile qualification.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48994 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-31 20:32:52 +00:00
Chris Lattner
f83e13ae0a
add a testcase for forming memset from noncontiguous stores.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48938 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-29 04:51:35 +00:00
Dan Gohman
d4a2ad35e3
Fix a tokenfactor node to use the load chain rather than the
...
load value. This fixes PR2177.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48932 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-28 23:45:16 +00:00
Devang Patel
156b2df00d
add another testcase
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48881 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-27 17:13:55 +00:00
Devang Patel
53b87db8d3
New test case.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48858 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-27 01:51:31 +00:00
Evan Cheng
7a963fa8ee
Fix a memory bug: increment an iterator of a deleted machine instr.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48853 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-27 01:27:25 +00:00
Erick Tryzelaar
7c1483bc6f
Expose ExecutionEngine::getTargetData() to c and ocaml bindings.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48851 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-27 00:27:14 +00:00
Evan Cheng
0c28432852
One more coalescer fix wrt deadness propagation.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48837 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-26 20:15:49 +00:00
Evan Cheng
ed70cbb3f3
Avoid commuting a def MI in order to coalesce a copy instruction away if any use of the same val# is a copy instruction that has already been coalesced.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48833 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-26 19:03:01 +00:00
Dale Johannesen
27c31054ec
Use ## for comment delimiter on darwin x86-32, so
...
llvm's output .s files will go through gcc -std=c99
without triggering preprocesser errors. Approach
suggested by Daveed Vandevoorde.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48808 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-25 23:29:30 +00:00
Evan Cheng
26471c48b3
Handle a special case xor undef, undef -> 0. Technically this should be transformed to undef. But this is such a common idiom (misuse) we are going to handle it.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48792 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-25 20:08:07 +00:00
Evan Cheng
d34af7875b
Handle a special case xor undef, undef -> 0. Technically this should be transformed to undef. But this is such a common idiom (misuse) we are going to handle it.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48791 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-25 20:07:13 +00:00
Dan Gohman
27845362d9
Add CMP32mr and friends to the load-unfolding table. Among
...
other things, this allows the scheduler to unfold a load operand
in the 2008-01-08-SchedulerCrash.ll testcase, so it now successfully
clones the comparison to avoid a pushf+popf.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48777 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-25 16:53:19 +00:00
Gordon Henriksen
1d21395f4c
Tests for the instruction iterator bindings.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48775 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-25 16:35:08 +00:00
Tanya Lattner
6f729d601c
Byebye llvm-upgrade!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48762 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-25 04:26:08 +00:00
Evan Cheng
a2fb634def
lastRegisterUse() should ignore identity copies. Those will be erased.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48759 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-25 02:02:19 +00:00
Devang Patel
d804f8ff70
check struct layout
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48758 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-25 00:47:49 +00:00
Bill Wendling
3e98c30cf5
Use the bit size of the operand instead of the hard-coded 32 to generate the
...
mask.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48750 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-24 23:16:37 +00:00
Evan Cheng
62a3f1538c
- SSE4.1 extractfps extracts a f32 into a gr32 register. Very useful! Not. Fix the instruction specification and teaches lowering code to use it only when the only use is a store instruction.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48746 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-24 21:52:23 +00:00
Devang Patel
60a12907c3
Add incoming value from header only if phi node has any use inside the loop.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48738 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-24 20:16:14 +00:00
Devang Patel
fb0f58302a
Fix test name.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48733 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-24 18:08:07 +00:00
Chris Lattner
0b26a31ae6
apparently tclsh doesn't lex like bash. Weird.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48732 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-24 17:41:57 +00:00
Chris Lattner
263250b131
pass the option so this test tests the right thing.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48731 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-24 17:36:38 +00:00
Devang Patel
eee4f8490b
Add new test.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48730 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-24 17:16:39 +00:00
Devang Patel
648deab93b
Remove incorrect comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48728 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-24 16:58:20 +00:00