Dan Gohman
d35121ad00
Fix a tblgen problem handling variable_ops in tblgen instruction
...
definitions. This adds a new construct, "discard", for indicating
that a named node in the input matching pattern is to be discarded,
instead of corresponding to a node in the output pattern. This
allows tblgen to know where the arguments for the varaible_ops are
supposed to begin.
This fixes "rdar://5791600", whatever that is ;-).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51699 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-29 19:57:41 +00:00
Dan Gohman
b99e2e20b2
const-ify getOpcode.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51698 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-29 19:53:46 +00:00
Dan Gohman
21323f3a82
Expand small memmovs using inline code. Set the X86 threshold for expanding
...
memmove to a more plausible value, now that it's actually being used.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51696 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-29 19:42:22 +00:00
Owen Anderson
fcc6350ac9
Revert part of my last patch that I didn't intend to commit yet.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51694 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-29 18:35:21 +00:00
Owen Anderson
4b5b209679
Renumbering needs to account for instruction slot offsets when performing lookups in the index maps.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51691 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-29 18:15:49 +00:00
Owen Anderson
5771d6c16d
Force postdom to be linked into opt and bugpoint, even though it is no longer used by any passes.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51686 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-29 17:00:13 +00:00
Duncan Sands
a806a87e29
Add a newline at the end of this file.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51680 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-29 14:38:23 +00:00
Owen Anderson
038a8746c9
Replace the old ADCE implementation with a new one that more simply solves
...
the one case that ADCE catches that normal DCE doesn't: non-induction variable
loop computations.
This implementation handles this problem without using postdominators.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51668 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-29 08:45:13 +00:00
Evan Cheng
f26ffe987c
Implement vector shift up / down and insert zero with ps{rl}lq / ps{rl}ldq.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51667 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-29 08:22:04 +00:00
Owen Anderson
cd5e6dda7e
Remove debugging code.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51666 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-29 08:15:48 +00:00
Bill Wendling
75cf88f1fe
XOR?RI instructions aren't as cheap as moves.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51664 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-29 03:46:36 +00:00
Gabor Greif
5e46321d66
convert more operand loops to iterator formulation
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51663 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-29 01:59:18 +00:00
Bill Wendling
bd0879d7d9
Implement "AsCheapAsAMove" for some obviously cheap instructions: xor and the
...
like.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51662 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-29 01:02:09 +00:00
Gabor Greif
3e93e630aa
convert another operand loop to iterator formulation
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51661 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-29 00:51:08 +00:00
Bill Wendling
8370d38ade
Add a flag to indicate that an instruction is as cheap (or cheaper) than a move
...
instruction to execute. This can be used for transformations (like two-address
conversion) to remat an instruction instead of generating a "move"
instruction. The idea is to decrease the live ranges and register pressure and
all that jazz.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51660 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-28 22:54:52 +00:00
Bill Wendling
a8db14796b
Check the "isSafeToMove" predicate, which has a series of tests to make sure
...
that it's safe to remat an instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51659 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-28 22:52:47 +00:00
Owen Anderson
745825f431
Remap VNInfo data as well when doing renumbering.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51658 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-28 22:40:08 +00:00
Owen Anderson
80b3ce65e2
Factor the numbering computation into a separate method, and add the slightest attempt at some renumbering logic, which is currently unused.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51652 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-28 20:54:50 +00:00
Evan Cheng
d77d4f98fb
Fix PR2289: vr defined by multiple implicit_def as result of coalescing.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51648 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-28 17:40:10 +00:00
Evan Cheng
33d3d4ad40
Teach local register allocator to deal with landing pad MBB's.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51647 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-28 17:22:32 +00:00
Nate Begeman
73e4d594e7
Update some comments noticed in a recent checkin
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51644 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-28 16:31:36 +00:00
Chris Lattner
a935db8ea2
Implement PR2370: memmove(x,x,size) -> noop.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51636 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-28 05:30:41 +00:00
Chris Lattner
e5ab3355ba
Add chain inputs for loads.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51635 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-28 04:25:57 +00:00
Chris Lattner
3f1891ca6d
Fix CodeGen/Generic/2005-10-21-longlonggtu.ll on ia64.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51634 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-28 04:14:30 +00:00
Chris Lattner
b0349bfe72
loads should get chains. THis helps but does not solve CodeGen/Generic/2003-05-27-phifcmpd.ll
...
on ia64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51633 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-28 04:06:52 +00:00
Chris Lattner
9b07d3d378
Fix 2006-04-28-Sign-extend-bool.ll for ia64.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51632 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-28 04:00:06 +00:00
Chris Lattner
aec8d823fb
reindent.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51631 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-28 03:59:32 +00:00
Dan Gohman
c2ecdc5a26
Fix the encoding for two more "rm" instructions that were using MRMSrcReg.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51630 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-28 01:50:19 +00:00
Mon P Wang
bfbbd4d221
Fixed X86 encoding error CVTPS2PD and CVTPD2PS when the source operand
...
is a memory location
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51626 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-28 00:42:27 +00:00
Nate Begeman
f7333bf4a2
Don't attempt to create VZEXT_LOAD out of an extload. This an issue where the
...
code generator would do something like this:
f64 = load f32 <anyext>, f32mem
v2f64 = insertelt undef, %0, 0
v2f64 = insertelt %1, 0.0, 1
into
v2f64 = vzext_load f32mem
which on x86 is movsd, when you really wanted a cvtss2sd/movsd pair.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51624 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-28 00:24:25 +00:00
Dan Gohman
ef61af01df
Use Function::getEntryBlock instead of Function::begin, for clarity.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51613 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-27 20:55:29 +00:00
Dan Gohman
b22d6ac348
Print debug output when any edge becomes executable, including
...
the first visited edge.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51612 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-27 20:47:30 +00:00
Bill Wendling
b0f65e1348
Incorporated feedback: Check that the implicitly defined operands aren't used
...
before deleting the instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51609 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-27 20:40:52 +00:00
Dan Gohman
7edd009efe
Tidy up whitespace in ConstantRange::print output.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51606 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-27 20:29:07 +00:00
Gabor Greif
0a4fd1ab7e
back out last commit: The .cpp file for a module should include its corresponding header first, even if redundant.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51598 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-27 17:26:02 +00:00
Duncan Sands
43e2a03530
Fix some constructs that gcc-4.4 warns about.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51591 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-27 11:50:51 +00:00
Gabor Greif
3d8710e80a
prune unneeded #includes
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51590 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-27 11:06:03 +00:00
Gabor Greif
b9d9eba916
remove unneeded reinterpret_casts
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51589 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-27 11:03:29 +00:00
Gabor Greif
9a6246c734
We have the correct headers included to know that BB isa Value. No reinterpret_cast necessary.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51588 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-27 10:48:39 +00:00
Nick Lewycky
6918a9141e
InequalityGraph::node() can create new nodes, invalidating iterators across
...
the set of nodes. Fix makeEqual to handle this by creating the new node first
then iterating across them second.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51573 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-27 00:59:05 +00:00
Nick Lewycky
70ef629d46
Grammaro.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51572 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-26 22:49:36 +00:00
Gabor Greif
6c80c38160
eliminate calls to deprecated Use::init() interface
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51570 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-26 21:33:52 +00:00
Duncan Sands
28c3cff825
Factor code to copy global value attributes like
...
the section or the visibility from one global
value to another: copyAttributesFrom. This is
particularly useful for duplicating functions:
previously this was done by explicitly copying
each attribute in turn at each place where a
new function was created out of an old one, with
the result that obscure attributes were regularly
forgotten (like the collector or the section).
Hopefully now everything is uniform and nothing
is forgotten.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51567 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-26 19:58:59 +00:00
Owen Anderson
78ecf0d7b1
Use a DenseMap instead of an std::map, speeding up the testcase in PR2368 by about a third.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51565 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-26 10:07:43 +00:00
Bill Wendling
a16157a410
The enabling of remat in 2-address conversion breaks this test:
...
Running /Users/void/llvm/llvm.src/test/CodeGen/X86/dg.exp ...
FAIL: /Users/void/llvm/llvm.src/test/CodeGen/X86/2007-11-30-LoadFolding-Bug.ll
Failed with exit(1) at line 1
while running: llvm-as < /Users/void/llvm/llvm.src/test/CodeGen/X86/2007-11-30-LoadFolding-Bug.ll | llc -march=x86 -mattr=+sse2 -stats |& grep {1 .*folded into instructions}
child process exited abnormally
Make this conditional for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51563 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-26 05:49:49 +00:00
Bill Wendling
48f7f237ea
A problem that's exposed when machine LICM is enabled. Consider this code:
...
LBB1_3: # bb
...
xorl %ebp, %ebp
subl (%ebx), %ebp
...
incl %ecx
cmpl %edi, %ecx
jl LBB1_3 # bb
Whe using machine LICM, LLVM converts it into:
xorl %esi, %esi
LBB1_3: # bb
...
movl %esi, %ebp
subl (%ebx), %ebp
...
incl %ecx
cmpl %edi, %ecx
jl LBB1_3 # bb
Two address conversion inserts the copy instruction. However, it's cheaper to
rematerialize it, and remat helps reduce register pressure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51562 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-26 05:18:34 +00:00
Nick Lewycky
04b35e8532
Don't treat values as signed when looking at loop steppings in HowForToNonZero.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51560 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-25 23:43:32 +00:00
Nick Lewycky
3dfd7bf511
"ret (constexpr)" can't be folded into a Constant. Add a method to
...
Analysis/ConstantFolding to fold ConstantExpr's, then make instcombine use it
to try to use targetdata to fold constant expressions on void instructions.
Also extend the icmp(inttoptr, inttoptr) folding to handle the case where
int size != ptr size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51559 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-25 20:56:15 +00:00
Owen Anderson
a5464f3659
Create archives with the same permissions are ar.
...
Patch by Mikael Lepistö.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51540 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-24 05:42:29 +00:00
Chris Lattner
e7a83dfac6
Add FreeBSD/PPC support, patch by Marcel Moolenaar!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51538 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-24 04:58:48 +00:00