Lauro Ramos Venancio
6b0f14b96a
Emit an error when a library is not found. It is the GNU ld behavior and it is expected by the configure scripts.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47674 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-27 17:20:32 +00:00
Duncan Sands
077f9b20d0
LegalizeTypes support for EXTRACT_VECTOR_ELT. The
...
approach taken is different to that in LegalizeDAG
when it is a question of expanding or promoting the
result type: for example, if extracting an i64 from
a <2 x i64>, when i64 needs expanding, it bitcasts
the vector to <4 x i32>, extracts the appropriate
two i32's, and uses those for the Lo and Hi parts.
Likewise, when extracting an i16 from a <4 x i16>,
and i16 needs promoting, it bitcasts the vector to
<2 x i32>, extracts the appropriate i32, twiddles
the bits if necessary, and uses that as the promoted
value. This puts more pressure on bitcast legalization,
and I've added the appropriate cases. They needed to
be added anyway since users can generate such bitcasts
too if they want to. Also, when considering various
cases (Legal, Promote, Expand, Scalarize, Split) it is
a pain that expand can correspond to Expand, Scalarize
or Split, so I've changed the LegalizeTypes enum so it
lists those different cases - now Expand only means
splitting a scalar in two.
The code produced is the same as by LegalizeDAG for
all relevant testcases, except for
2007-10-31-extractelement-i64.ll, where the code seems
to have improved (see below; can an expert please tell
me if it is better or not).
Before < vs after >.
< subl $92, %esp
< movaps %xmm0, 64(%esp)
< movaps %xmm0, (%esp)
< movl 4(%esp), %eax
< movl %eax, 28(%esp)
< movl (%esp), %eax
< movl %eax, 24(%esp)
< movq 24(%esp), %mm0
< movq %mm0, 56(%esp)
---
> subl $44, %esp
> movaps %xmm0, 16(%esp)
> pshufd $1, %xmm0, %xmm1
> movd %xmm1, 4(%esp)
> movd %xmm0, (%esp)
> movq (%esp), %mm0
> movq %mm0, 8(%esp)
< subl $92, %esp
< movaps %xmm0, 64(%esp)
< movaps %xmm0, (%esp)
< movl 12(%esp), %eax
< movl %eax, 28(%esp)
< movl 8(%esp), %eax
< movl %eax, 24(%esp)
< movq 24(%esp), %mm0
< movq %mm0, 56(%esp)
---
> subl $44, %esp
> movaps %xmm0, 16(%esp)
> pshufd $3, %xmm0, %xmm1
> movd %xmm1, 4(%esp)
> movhlps %xmm0, %xmm0
> movd %xmm0, (%esp)
> movq (%esp), %mm0
> movq %mm0, 8(%esp)
< subl $92, %esp
< movaps %xmm0, 64(%esp)
---
> subl $44, %esp
< movl 16(%esp), %eax
< movl %eax, 48(%esp)
< movl 20(%esp), %eax
< movl %eax, 52(%esp)
< movaps %xmm0, (%esp)
< movl 4(%esp), %eax
< movl %eax, 60(%esp)
< movl (%esp), %eax
< movl %eax, 56(%esp)
---
> pshufd $1, %xmm0, %xmm1
> movd %xmm1, 4(%esp)
> movd %xmm0, (%esp)
> movd %xmm1, 12(%esp)
> movd %xmm0, 8(%esp)
< subl $92, %esp
< movaps %xmm0, 64(%esp)
---
> subl $44, %esp
< movl 24(%esp), %eax
< movl %eax, 48(%esp)
< movl 28(%esp), %eax
< movl %eax, 52(%esp)
< movaps %xmm0, (%esp)
< movl 12(%esp), %eax
< movl %eax, 60(%esp)
< movl 8(%esp), %eax
< movl %eax, 56(%esp)
---
> pshufd $3, %xmm0, %xmm1
> movd %xmm1, 4(%esp)
> movhlps %xmm0, %xmm0
> movd %xmm0, (%esp)
> movd %xmm1, 12(%esp)
> movd %xmm0, 8(%esp)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47672 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-27 13:34:40 +00:00
Duncan Sands
8745b52853
LegalizeTypes support for legalizing the mask
...
operand of a VECTOR_SHUFFLE. The mask is a
vector of constant integers. The code in
LegalizeDAG doesn't bother to legalize the
mask, since it's basically just storage for
a bunch of constants, however LegalizeTypes
is more picky. The problem is that there may
not exist any legal vector-of-integers type
with a legal element type, so it is impossible
to create a legal mask! Unless of course you
cheat by creating a BUILD_VECTOR where the
operands have a different type to the element
type of the vector being built... This is
pretty ugly but works - all relevant tests in
the testsuite pass, and produce the same
assembler with and without LegalizeTypes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47670 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-27 13:03:44 +00:00
Duncan Sands
4f069e6db1
LegalizeTypes support for INSERT_VECTOR_ELT.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47669 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-27 10:18:23 +00:00
Evan Cheng
be680dcea6
Don't track max alignment during stack object allocations since they can be deleted later. Let PEI compute it.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47668 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-27 10:04:56 +00:00
Duncan Sands
e90a615f37
Support for legalizing MEMBARRIER.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47667 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-27 08:53:44 +00:00
Bill Wendling
6ef781f3ce
Final de-tabification.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47663 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-27 06:33:05 +00:00
Chris Lattner
e1b332a304
Add path separator support, patch by Sam Bishop.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47662 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-27 06:17:10 +00:00
Chris Lattner
b09916bdfb
Make X86TargetLowering::LowerSINT_TO_FP return without creating a dead
...
stack slot and store if the SINT_TO_FP is actually legal. This allows
us to compile:
double a(double b) {return (unsigned)b;}
to:
_a:
cvttsd2siq %xmm0, %rax
movl %eax, %eax
cvtsi2sdq %rax, %xmm0
ret
instead of:
_a:
subq $8, %rsp
cvttsd2siq %xmm0, %rax
movl %eax, %eax
cvtsi2sdq %rax, %xmm0
addq $8, %rsp
ret
crazy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47660 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-27 05:57:41 +00:00
Chris Lattner
22eedf4eec
this code is correct but strange looking ;-)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47659 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-27 05:48:44 +00:00
Chris Lattner
d0ba2a9c14
Compile x86-64-and-mask.ll into:
...
_test:
movl %edi, %eax
ret
instead of:
_test:
movl $4294967295, %ecx
movq %rdi, %rax
andq %rcx, %rax
ret
It would be great to write this as a Pat pattern that used subregs
instead of a 'pseudo' instruction, but I don't know how to do that
in td files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47658 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-27 05:47:54 +00:00
Evan Cheng
d36531249a
Spiller now remove unused spill slots.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47657 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-27 03:04:06 +00:00
Dan Gohman
1953ecb0a6
Teach Legalize how to expand an EXTRACT_ELEMENT.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47656 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-27 01:52:30 +00:00
Dan Gohman
b3564aa836
Convert the last remaining users of the non-APInt form of
...
ComputeMaskedBits to use the APInt form, and remove the
non-APInt form.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47654 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-27 01:23:58 +00:00
Devang Patel
e6be34a53e
Add comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47653 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-27 01:20:54 +00:00
Chris Lattner
ba309d43aa
add a note
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47652 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-27 01:17:20 +00:00
Dan Gohman
7b8d4a9eef
Convert SimplifyDemandedMask and ShrinkDemandedConstant to use APInt.
...
Change several cases in SimplifyDemandedMask that don't ever do any
simplifying to reuse the logic in ComputeMaskedBits instead of
duplicating it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47648 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-27 00:25:32 +00:00
Devang Patel
13b823c584
regenerate.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47642 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 23:19:08 +00:00
Devang Patel
43a1bb3984
Add assert.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47641 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 23:17:50 +00:00
Owen Anderson
77db50f68f
Fix an issue where GVN had the sizes of the two memcpy's reverse, resulting
...
in an invalid transformation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47639 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 23:06:17 +00:00
Devang Patel
8e50760dfe
Add assert to check return type.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47637 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 22:55:21 +00:00
Arnold Schwaighofer
258bb1b8e8
Refactor according to Evan's and Anton's suggestions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47635 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 22:21:54 +00:00
Devang Patel
b82b7f2119
regenerate
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47634 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 22:17:48 +00:00
Devang Patel
53284d39cd
Remove unncessary ReturnInst constructors.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47633 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 22:12:58 +00:00
Chris Lattner
fe42462164
Use a smallvector for inactiveCounts and initialize it lazily
...
instead of init'ing it maximally to zeros on entry. getFreePhysReg
is pretty hot and only a few elements are typically used. This speeds
up linscan by 5% on 176.gcc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47631 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 22:08:41 +00:00
Bill Wendling
e6d088acc9
Rename PrintableName to Name.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47629 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 21:47:57 +00:00
Bill Wendling
74ab84c31e
Change "Name" to "AsmName" in the target register info. Gee, a refactoring tool
...
would have been a Godsend here!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47625 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 21:11:01 +00:00
Evan Cheng
4d535cadf1
Enable -coalescer-commute-instrs by default.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47623 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 20:40:22 +00:00
Devang Patel
f4511cd8fb
Use SmallVector while constructing ReturnInst.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47619 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 19:38:17 +00:00
Devang Patel
fea9830468
Avoid const_casts
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47616 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 19:15:26 +00:00
Gabor Greif
53bdbd7565
fix http://llvm.org/bugs/show_bug.cgi?id=2097
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47615 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 19:13:21 +00:00
Devang Patel
f8989657a7
Remove unnecessary getOperand/setOperand overriders.
...
Simplify getReturnValue()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47614 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 19:08:13 +00:00
Dan Gohman
d4cf992230
Avoid aborting on invalid shift counts.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47612 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 18:50:50 +00:00
Devang Patel
814ebd77b0
Unify to ReturnInst::init() member functions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47611 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 18:49:29 +00:00
Eli Friedman
9ec8095485
Fix for pr2093: direct operands aren't necessarily addresses, so don't
...
try to simplify them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47610 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 18:37:49 +00:00
Devang Patel
64d4e61259
Optimize most common case by using single RetVal in ReturnInst.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47607 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 17:56:20 +00:00
Arnold Schwaighofer
16a3e52d08
Correct function comments.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47606 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 17:50:59 +00:00
Chris Lattner
aeecb6c73a
Fix PR2096, a regression introduced with my patch last night. This
...
also fixes cfrac, flops, and 175.vpr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47605 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 17:09:59 +00:00
Duncan Sands
212a11c417
Fix a nasty bug in LegalizeTypes (spotted in
...
CodeGen/PowerPC/illegal-element-type.ll): suppose
a node X is processed, and processing maps it to
a node Y. Then X continues to exist in the DAG,
but with no users. While processing some other
node, a new node may be created that happens to
be equal to X, and thus X will be reused rather
than a truly new node. This can cause X to
"magically reappear", and since it is in the
Processed state in will not be reprocessed, so
at the end of type legalization the illegal node
X can still be present. The solution is to replace
X with Y whenever X gets resurrected like this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47601 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 11:21:42 +00:00
Bill Wendling
85db3a96b4
De-tabify
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47600 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 10:57:23 +00:00
Bill Wendling
587c01d674
De-tabify.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47599 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 10:53:30 +00:00
Bill Wendling
f059deb8dd
De-tabify.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47598 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 10:51:52 +00:00
Arnold Schwaighofer
a2a4b475fc
Add support for intermodule tail calls on x86/32bit with
...
GOT-style position independent code. Before only tail calls to
protected/hidden functions within the same module were optimized.
Now all function calls are tail call optimized.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47594 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 10:21:54 +00:00
Arnold Schwaighofer
865c68188a
Change the lowering of arguments for tail call optimized
...
calls. Before arguments that could overwrite each other were
explicitly lowered to a stack slot, not giving the register allocator
a chance to optimize. Now a sequence of copyto/copyfrom virtual
registers ensures that arguments are loaded in (virtual) registers
before they are lowered to the stack slot (and might overwrite each
other). Also parameter stack slots are marked mutable for
(potentially) tail calling functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47593 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 09:19:59 +00:00
Evan Cheng
c886c460e4
This is possible:
...
vr1 = extract_subreg vr2, 3
...
vr3 = extract_subreg vr1, 2
The end result is vr3 is equal to vr2 with subidx 2.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47592 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 08:03:41 +00:00
Chris Lattner
0254e7033a
Fix isNegatibleForFree to not return true for ConstantFP nodes
...
after legalize. Just because a constant is legal (e.g. 0.0 in SSE)
doesn't mean that its negated value is legal (-0.0). We could make
this stronger by checking to see if the negated constant is actually
legal post negation, but it doesn't seem like a big deal.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47591 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 07:04:54 +00:00
Evan Cheng
9bf12b5583
Fix PR2076. CodeGenPrepare now sinks address computation for inline asm memory
...
operands into inline asm block.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47589 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 02:42:37 +00:00
Evan Cheng
5c80760fdf
Refactor inline asm constraint matching code out of SDIsel into TargetLowering.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47587 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 02:33:44 +00:00
Devang Patel
9a8a88b72d
Remove debugging help.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47585 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 01:42:38 +00:00
Devang Patel
d9d99ff8e8
Update bitcode reader and writer to handle multiple return values.
...
Take 2.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47583 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 01:29:32 +00:00
Devang Patel
aaeb60ae40
Pass const vectors by reference.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47577 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 00:12:13 +00:00
Dan Gohman
545914311a
Revert the assert for MUL_LOHI with an unused high result; Chris
...
pointed out that this isn't correct at -O0.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47575 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25 22:43:48 +00:00
Dale Johannesen
14e2ea9a55
Revise previous patch per review.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47573 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25 22:29:22 +00:00
Dan Gohman
c2d9b5fcdf
Add an assert to verify that we don't see an
...
{S,U}MUL_LOHI with an unused high value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47569 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25 22:15:55 +00:00
Dan Gohman
fcf81db600
Remove the hack that turned an {S,U}MUL_LOHI with an unused high
...
result into a MUL late in the X86 codegen process. ISD::MUL is
once again Legal on X86, so this is no longer needed. And, the
hack was suboptimal; see PR1874 for details.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47567 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25 21:57:04 +00:00
Dan Gohman
f6283fd27b
Make some static variables const.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47566 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25 21:39:34 +00:00
Dan Gohman
2e68b6f52d
Convert MaskedValueIsZero and all its users to use APInt. Also add
...
a SignBitIsZero function to simplify a common use case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47561 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25 21:11:39 +00:00
Evan Cheng
e83a27516c
All remat'ed loads cannot be folded into two-address code. Not just argument loads. This change doesn't really have any impact on codegen.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47557 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25 19:24:01 +00:00
Dale Johannesen
079f2a66ae
Expand removal of MMX memory copies to allow 1 level
...
of TokenFactor underneath chain (seems to be enough)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47554 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25 19:20:14 +00:00
Duncan Sands
1a9c9df1db
In debug builds check that the key property holds: all
...
result and operand types are legal.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47546 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25 16:21:21 +00:00
Evan Cheng
79a0c1e46c
Correctly determine whether a argument load can be folded into its uses.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47545 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25 08:50:41 +00:00
Owen Anderson
c0808a7e1d
Fix an issue where GVN was performing the return slot optimization when it was
...
not safe. This is fixed by more aggressively checking that the return slot is
not used elsewhere in the function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47544 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25 04:08:09 +00:00
Evan Cheng
b9a905781e
Temporarily reverting 46959.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47542 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25 03:57:32 +00:00
Owen Anderson
0f7ea1ab10
Fix an issue where GVN would try to use an instruction before its definition when performing return slot optimization.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47541 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25 00:40:41 +00:00
Duncan Sands
14fd63cae8
Add support to LegalizeTypes for building legal vectors
...
out of illegal elements (BUILD_VECTOR). Uses and beefs
up BUILD_PAIR, though it didn't really have to. Like
most of LegalizeTypes, does not support soft-float.
This cures all "make check" vector building failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47537 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-24 07:36:03 +00:00
Bill Wendling
181eb737b2
Some platforms use the same name for 32-bit and 64-bit registers (like
...
%r3 on PPC) in their ASM files. However, it's hard for humans to read
during debugging. Adding a new field to the register data that lets you
specify a different name to be printed than the one that goes into the
ASM file -- %x3 instead of %r3, for instance.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47534 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-24 00:56:13 +00:00
Evan Cheng
1df439773c
Backing out r47521 for now. This has broken a number of tests.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47533 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-23 19:32:32 +00:00
Scott Michel
a59d469e9b
Merge current work back to tree to minimize diffs and drift. Major highlights
...
for CellSPU modifications:
- SPUInstrInfo.td refactoring: "multiclass" really is _your_ friend.
- Other improvements based on refactoring effort in SPUISelLowering.cpp,
esp. in SPUISelLowering::PerformDAGCombine(), where zero amount shifts and
rotates are now eliminiated, other scalar-to-vector-to-scalar silliness
is also eliminated.
- 64-bit operations are being implemented, _muldi3.c gcc runtime now
compiles and generates the right code. More work still needs to be done.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47532 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-23 18:41:37 +00:00
Evan Cheng
249ded3fa8
Rematerialization logic was overly conservative when it comes to loads from fixed stack slots.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47529 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-23 03:38:34 +00:00
Evan Cheng
298bbe82cb
If remating a machine instr with virtual register operand, make sure the vr is avaliable at all uses regardless of whether it would be folded.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47526 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-23 02:14:42 +00:00
Evan Cheng
c19eca38ef
Turning on remat of pic loads.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47524 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-23 02:07:42 +00:00
Dan Gohman
61e015fe74
Fix a bug that caused opt and other tools to silently ignore
...
invalid command-line options.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47523 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-23 01:55:25 +00:00
Evan Cheng
b2a0abce1e
No need recognize load from a fixed argument slot as re-materializable. LiveIntervalAnalysis already handles it as a special case.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47522 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-23 01:47:44 +00:00
Devang Patel
e9fabd94ab
Properly read and write bitcodes for multiple return values.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47521 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-23 01:44:55 +00:00
Evan Cheng
dd3465eed1
Recognize loads of arguments as re-materializable first. Therefore if isReallyTriviallyReMaterializable() returns true it doesn't confuse it as a "normal" re-materializable instruction.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47520 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-23 01:44:27 +00:00
Devang Patel
2007173203
Regenerate.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47519 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-23 01:17:37 +00:00
Devang Patel
155b8746ba
Use isa check instead of getTypeID() check.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47518 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-23 01:17:17 +00:00
Ted Kremenek
57daefa187
Fixed buffer overflow reported by Argiris Kirtzidis.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47517 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-23 01:11:40 +00:00
Devang Patel
377e04b926
print getresult operand and its type directly.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47514 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-23 01:04:26 +00:00
Devang Patel
d7313c5608
Use dyn_cast instead of isa + cast.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47511 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-23 00:47:00 +00:00
Devang Patel
6bfc63bef9
Regenerate
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47509 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-23 00:38:56 +00:00
Devang Patel
57ef4f46c1
To support multiple return values, now ret instruction supports multiple operands instead of one aggregate operand.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47508 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-23 00:35:18 +00:00
Evan Cheng
313d4b8093
Fix spill weight updating bug.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47507 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-23 00:33:04 +00:00
Dale Johannesen
22c3979fca
Split ParameterAttributes.h, putting the complicated
...
stuff into ParamAttrsList.h. Per feedback from
ParamAttrs changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47504 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 22:17:59 +00:00
Evan Cheng
672e550601
Same isPhysRegAvailable bug as local register allocator.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47500 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 20:31:32 +00:00
Evan Cheng
bcfa1ca976
Really really bad local register allocator bug. On X86, it was never using ESI, EDI, and EBP because of a bug in RALocal::isPhysRegAvailable(). For example, when
...
it checks if ESI is available, it then looks at registers aliases to ESI. SIL is marked -2 (not allocatable) but isPhysRegAvailable() incorrectly assumes it is in use and returns false for ESI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47499 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 20:30:53 +00:00
Evan Cheng
9af7090392
Add debugging printfs.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47496 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 19:57:06 +00:00
Devang Patel
bd41a064ed
Regenerate
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47495 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 19:31:30 +00:00
Devang Patel
1b76c759ac
Use SymbolicValueRef to parse getresult operand
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47494 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 19:31:15 +00:00
Evan Cheng
b2fd65f936
Make sure reload of implicit uses are issued before remat's.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47492 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 19:22:06 +00:00
Dale Johannesen
dc6c0f151b
Generated files for 47484.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47485 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 17:50:51 +00:00
Dale Johannesen
08e78b18b8
Pass alignment on ByVal parameters, from FE, all
...
the way through. It is now used for codegen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47484 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 17:49:45 +00:00
Dale Johannesen
3edd6dcf82
MMX vectors are passed 4-byte aligned.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47483 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 17:47:28 +00:00
Anton Korobeynikov
47ccf1af3a
Provide __main hooks for cygwin & mingw32
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47479 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 10:08:31 +00:00
Zhou Sheng
58d13af6f0
Fixed a typo.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47478 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 10:00:35 +00:00
Evan Cheng
d8850a512e
Allow re-materialization of pic load (controlled by -remat-pic-load for now).
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47476 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 09:25:47 +00:00
Evan Cheng
d70dbb5d62
Enable re-materialization of instructions which have virtual register operands if
...
the definition of the operand also reaches its uses.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47475 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 09:24:50 +00:00
Chris Lattner
d2b1fb27df
copy mmx values from/to memory with GPRs on x86-32
...
instead of with mmx registers. This horribleness is apparently
done by gcc to avoid having to insert emms in places that really
should have it. This is the second half of rdar://5741668.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47474 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 05:18:04 +00:00
Devang Patel
452743e5e4
Print getresult instruction properly.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47473 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 03:10:23 +00:00
Devang Patel
ec25f24dbf
Print ret instruction that returns aggregates.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47472 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 02:50:49 +00:00
Devang Patel
197be3de7f
Read and write getresult.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47471 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 02:49:49 +00:00
Chris Lattner
149a4e56fc
Start using GPR's to copy around mmx value instead of mmx regs.
...
GCC apparently does this, and code depends on not having to do
emms when this happens. This is x86-64 only so far, second half
should handle x86-32.
rdar://5741668
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47470 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 02:09:43 +00:00
Evan Cheng
becda48f88
Fix compiler warning.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47468 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 01:48:00 +00:00
Dan Gohman
9e255b7df5
Fix a regression in 403.gcc and 186.crafty introduced in 47383. To test
...
that a value is >= 32, check that all of the high bits are zero, not
just one or more.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47467 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 01:12:31 +00:00
Devang Patel
95cb2ad919
print getresult instruction.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47461 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21 23:02:20 +00:00
Devang Patel
6c94b70d6e
Use isa<> instead of getTypeID() to check StructType.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47460 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21 22:24:17 +00:00
Eli Friedman
a2e7efa6d3
A few minor updates, removing implemented stuff and adding a couple of
...
new things.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47458 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21 21:16:49 +00:00
Chris Lattner
69e6a8d5a8
Make the clobber analysis a bit more smart: we only are careful about
...
early clobbers if the clobber list contains a *register* not some thing
like {memory}, {dirflag} etc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47457 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21 20:54:31 +00:00
Chris Lattner
0fe71e9bb1
Treat clobber operands like early clobbers: if we have
...
any, we force sdisel to do all regalloc for an asm. This
leads to gross but correct codegen.
This fixes the rest of PR2078.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47454 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21 19:43:13 +00:00
Bill Wendling
1d5e8196c0
Clear PhysRegPartUse for the sub register as well.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47453 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21 19:35:27 +00:00
Bill Wendling
20b76ab3c7
Adjust the MaxAlignment for the special register scavenging spill slot.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47452 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21 19:33:53 +00:00
Evan Cheng
304983b93e
Help testing.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47448 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21 19:20:21 +00:00
Dan Gohman
6a551e73fd
Change a C-style cast to const_cast, to avoid a -Wcast-qual warning.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47437 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21 17:33:24 +00:00
Andrew Lenharth
c1c7bd610a
Better names as per Evan's request
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47435 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21 16:11:38 +00:00
Nick Lewycky
39442afb36
Simplify this code, no functionality change.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47434 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21 09:14:53 +00:00
Nick Lewycky
3b71165b32
GlobalValues are Constants, remove redundant code. Also fix typo in a comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47433 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21 08:34:02 +00:00
Chris Lattner
7c1687c196
Dan implemented one multiply issue. Replace it with another. :)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47431 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21 06:51:29 +00:00
Andrew Lenharth
ab0b949e0e
Atomic op support. If any gcc test uses __sync builtins, it might start failing on archs that haven't implemented them yet
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47430 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21 06:45:13 +00:00
Chris Lattner
f9853bc0d4
Add support for matching mem operands. This fixes PR1133, patch by
...
Eli Friedman. This implements CodeGen/Generic/2008-02-20-MatchingMem.ll.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47428 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21 05:27:19 +00:00
Chris Lattner
7cbeb2431c
Fix a (harmless) but where vregs were added to the used reg lists for
...
inline asms.
Fix PR2078 by marking aliases of registers used when a register is
marked used. This prevents EAX from being allocated when AX is listed
in the clobber set for the asm.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47426 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21 04:55:52 +00:00
Devang Patel
db71d63467
Let invoke return aggregate value.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47425 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21 02:14:01 +00:00
Devang Patel
bb4f8d4045
Let function call return aggregate.
...
Now, we have very first multiple return value testcase!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47424 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21 01:54:02 +00:00
Evan Cheng
063284c001
Clean up some spilling code using MachineRegisterInfo.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47416 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21 00:34:19 +00:00
Devang Patel
7990dc7633
regenerate.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47408 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 22:40:23 +00:00
Devang Patel
5af2f63479
Parse
...
ret i32 1, i8 2
another step towards multiple return value support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47407 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 22:39:45 +00:00
Devang Patel
93f9d57bcd
What if functions can return aggregate values ?
...
One small step towards multiple return value support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47406 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 22:36:03 +00:00
Dale Johannesen
172f3118d8
Regenerated files.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47402 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 21:15:43 +00:00
Dale Johannesen
8d1433c6fc
Support alignment within ParamAttrs in the I/O handling.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47401 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 21:15:19 +00:00
Evan Cheng
3738f2d59f
Poorly named option.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47400 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 20:57:32 +00:00
Bill Wendling
c927cc8731
Remove one of the fixmes that I put in there. From Evan:
...
No need to go up more levels. A def of a register also sets its sub-registers
(so if PhysRegInfo[SuperReg] is NULL, it means SuperReg's super registers are
not previously defined).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47399 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 20:56:45 +00:00
Anton Korobeynikov
e18bc08fbc
Add convenient helper to get suffix of the file
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47397 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 19:41:22 +00:00
Devang Patel
dd4d45337b
getresult does not support nested aggregates.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47396 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 19:39:41 +00:00
Bill Wendling
55574c2cea
Improve some comments explaining the "handle kills" stuff better.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47395 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 19:35:34 +00:00
Devang Patel
9fcde0fa13
Verifier should use Assert1 instead of assert.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47394 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 19:32:20 +00:00
Devang Patel
474869f2b2
getresult type is the type of indexed aggregate element
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47392 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 19:26:55 +00:00
Devang Patel
4c3f844cb8
Regenerate.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47391 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 19:13:10 +00:00
Devang Patel
23755d8755
Specify GetResultInst index as an unsigned.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47390 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 19:10:47 +00:00
Bill Wendling
fe8276cec2
Fix comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47389 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 19:09:14 +00:00
Devang Patel
c40a84a877
assert is more effective reminder then FIXME tag for unimplemented features.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47388 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 18:37:40 +00:00
Devang Patel
85eab709ca
Use isValidOperands() to verify GetResultInst.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47387 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 18:36:46 +00:00
Evan Cheng
5144ed1e35
Temporarily backing out r47337. It breaks a number of CBE tests.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47385 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 18:32:05 +00:00
Duncan Sands
f83b1f63dd
LegalizeTypes support for scalarizing a vector store
...
and splitting extract_subvector. This fixes nine
"make check" testcases, for example
2008-02-04-ExtractSubvector.ll and (partially)
CodeGen/Generic/vector.ll.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47384 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 17:38:09 +00:00
Dan Gohman
91dc17ba49
Convert Legalize to use the APInt form of ComputeMaskedBits.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47383 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 16:57:27 +00:00
Dan Gohman
b5660dc822
Add explicit keywords.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47382 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 16:44:09 +00:00
Dan Gohman
948d8eadec
Convert DAGCombiner to use the APInt form of ComputeMaskedBits.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47381 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 16:33:30 +00:00
Dan Gohman
ca93a43e84
Use APInt::intersects.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47380 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 16:30:17 +00:00
Anton Korobeynikov
d57160d097
Add 'sink' cmdline option. Patch by Mikhail Glushenkov!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47377 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 12:38:07 +00:00
Anton Korobeynikov
c70d7734d3
Regenerate
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47376 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 12:10:37 +00:00
Anton Korobeynikov
4aefd6b7d4
Fix newly-introduced 4.3 warnings
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47375 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 12:07:57 +00:00
Anton Korobeynikov
c6ee8276f3
Get rid of hash_map. Use StringMap instead
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47373 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 11:27:49 +00:00
Anton Korobeynikov
a27694d7aa
And final pack of warnings silencing
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47372 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 11:27:04 +00:00
Anton Korobeynikov
07e6e56f57
Make Transforms to be 4.3 warnings-clean
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47371 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 11:26:25 +00:00
Anton Korobeynikov
d28b57569d
Fix code style
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47370 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 11:24:05 +00:00
Anton Korobeynikov
7c1c261272
Remove bunch of gcc 4.3-related warnings from Target
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47369 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 11:22:39 +00:00
Anton Korobeynikov
4c71dfe356
Update gcc 4.3 warnings fix patch with recent head changes
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47368 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 11:10:28 +00:00
Anton Korobeynikov
ae9f3a3b7c
Unbreak build with gcc 4.3: provide missed includes and silence most annoying warnings.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47367 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 11:08:44 +00:00
Bill Wendling
6d794746b7
Added some comments and reformatted others. No functionality change.
...
Added two "FIXMEs" for code that looks dubious to me (but I could be
wrong).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47366 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 09:15:16 +00:00
Owen Anderson
61d30a821f
When performing return slot optimization, remember to inform memdep when we're removing the memcpy.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47364 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 08:23:02 +00:00
Evan Cheng
8647bcd5de
Added memmove to interpreter external functions list. Patch by Daniel Dunbar.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47363 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 07:55:26 +00:00
Bill Wendling
420cdebbcb
More constification of things. More comments added. No functionality
...
changes. (Sorry for any formatting changes that creeped in.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47362 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 07:36:31 +00:00
Nick Lewycky
178f20a685
Use getConstant for ConstantInts.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47361 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 06:58:55 +00:00
Nick Lewycky
3e63076980
Add 'umax' similar to 'smax' SCEV. Closes PR2003.
...
Parse reversed smax and umax as smin and umin and express them with negative
or binary-not SCEVs (which are really just subtract under the hood).
Parse 'xor %x, -1' as (-1 - %x).
Remove dead code (ConstantInt::get always returns a ConstantInt).
Don't use getIntegerSCEV(-1, Ty). The first value is an int, then it gets
passed into a uint64_t. Instead, create the -1 directly from
ConstantInt::getAllOnesValue().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47360 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 06:48:22 +00:00
Chris Lattner
19fc1d3742
Fix an incredibly subtle bug exposed by Ted's change to APInt profiling.
...
AddNodeIDNode does profiling for a ConstantSDNode, but so does
SelectionDAG::getConstant. This profiling should be moved to a common
static function in ConstantSDNode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47359 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 06:28:01 +00:00
Bill Wendling
90a3868fe5
No functionality change:
...
- Constified some MachineOperand values.
- Added/Modified some comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47358 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 06:10:21 +00:00
Evan Cheng
79964fdbaf
Disable for now. This is pessimizing code.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47354 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 02:29:17 +00:00
Dale Johannesen
6167c3fcda
Add Alignment field to ParameterAttributes and
...
treat more or less rationally in interface
functions, subject to change. No functional change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47352 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 23:51:49 +00:00
Evan Cheng
e9c608d6cc
Add hidden option -x86-fold-and-in-test to test the effect the test / and folding change.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47351 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 23:36:51 +00:00
Devang Patel
5a97097e56
regenerate
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47350 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 22:27:01 +00:00
Devang Patel
d6ffcf9117
Parse
...
%b = getresult {i32, i32} %a, i32 1
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47349 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 22:26:37 +00:00
Devang Patel
40a04216da
Add GetResultInst. First step for multiple return value support.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47348 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 22:15:16 +00:00
Dale Johannesen
222ebf70b7
Generated files for checkin 47342.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47344 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 21:40:51 +00:00
Dale Johannesen
ab0789c616
Forgot a file, goes with 47342.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47343 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 21:40:10 +00:00
Dale Johannesen
0d51e7ec0d
Expand ParameterAttributes to 32 bits (in preparation
...
for adding alignment info, not there yet). Clean up
interfaces to reference ParameterAttributes consistently.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47342 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 21:38:47 +00:00
Ted Kremenek
a795aca96a
Fixed bug in APInt::Profile() where the BitWidth field was not included in the
...
profile of the APSInt object. This caused unexpected Profile collisions where
none should have occurred.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47338 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 20:50:41 +00:00
Andrew Lenharth
86532db5d7
fix some byval problems in the cbe. Closes PR2065
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47337 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 19:47:54 +00:00
Chris Lattner
f27dfcb210
random cleanups.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47334 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 18:49:08 +00:00
Chris Lattner
ce2bcc8839
Don't fold and's into test instructions if they have multiple uses.
...
This compiles test-nofold.ll into:
_test:
movl $15, %ecx
andl 4(%esp), %ecx
testl %ecx, %ecx
movl $42, %eax
cmove %ecx, %eax
ret
instead of:
_test:
movl 4(%esp), %eax
movl %eax, %ecx
andl $15, %ecx
testl $15, %eax
movl $42, %eax
cmove %ecx, %eax
ret
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47330 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 17:37:35 +00:00
Duncan Sands
ec5ec88d15
Fix a compiler warning.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47328 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 09:28:48 +00:00
Chris Lattner
75542bd56b
remove the LowerSelect pass. The last client was the old Sparc backend, which is long dead by now.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47323 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 07:49:17 +00:00
Chris Lattner
15f166c7b6
remove the lower packed pass. It can never work and even the parts that
...
could work don't work fully. This fixes PR1705. Oh yeah, we don't have
packed types anymore either ;-)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47322 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 07:39:17 +00:00
Owen Anderson
967552e7ec
Refactor this method a bit, and correct a test that was completely wrong but happened to work out anyways. :-)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47321 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 07:07:51 +00:00
Chris Lattner
e42ce73c37
isa+cast -> dyncast.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47320 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 06:53:20 +00:00
Chris Lattner
0a76a621a4
simplify this code again, try 2 :)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47319 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 06:52:38 +00:00
Owen Anderson
9cffa9a6ed
Fix a comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47318 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 06:51:23 +00:00
Owen Anderson
851bfff50f
In addition to arguments passed to it, memcpy (and all other calls) can ModRef pointers that alias their arguments as well. This fixes PR2057.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47317 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 06:47:18 +00:00
Owen Anderson
61c24e96b1
Major improvements to yesterday's return slot optimization. Remove some unneccessary constraints,
...
and add some others that should have been in from the first place. Document the whole thing better.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47315 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 06:35:43 +00:00
Chris Lattner
46acf85b97
Fix some minor issues folding undef, PR2052
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47314 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 06:22:12 +00:00
Chris Lattner
50b2ca4c73
fdiv/frem of undef can produce undef, because the undef operand
...
can be a SNaN. We could be more aggressive and turn this into
unreachable, but that is less nice, and not really worth it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47313 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 06:12:18 +00:00
Chris Lattner
389056110f
regenerate
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47312 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 04:36:25 +00:00
Chris Lattner
689e8b294e
Fix PR2060 by rejecting invalid types for integer constants.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47311 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 04:36:07 +00:00
Owen Anderson
fa113f8155
Factor the profitability check for return slot optimization out into a static function.
...
At some point in the future, this check will become smarter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47310 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 03:27:34 +00:00
Owen Anderson
c0755a6f98
An sret parameter is required to be the first parameter, so there's no need to loop
...
over all the parameters of the callee looking for it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47309 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 03:15:29 +00:00
Owen Anderson
7acc0af95a
Cleanup some of my patches from yesterday. Refactor the check for which xform
...
to apply to a memcpy into processInstruction. Also, fix a bug in the check due to
missing braces.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47307 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 03:09:45 +00:00
Owen Anderson
c2580ab9b0
Fix Transforms/GVN/memcpy.ll, which Chris broke in r47275 by reordering the branches. memcpy's are a kind of CallInst.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47305 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 02:53:23 +00:00
Evan Cheng
31886dbe37
PR1909: Tail merging pass ran wild. It makes no sense to merge blocks in order to save a single instruction since a branch will be inserted for each BB.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47301 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 02:09:37 +00:00
Evan Cheng
422cba6ed0
Me not like duplicated comments.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47300 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19 02:05:16 +00:00
Evan Cheng
efec751a1b
- When DAG combiner is folding a bit convert into a BUILD_VECTOR, it should check if it's essentially a SCALAR_TO_VECTOR. Avoid turning (v8i16) <10, u, u, u> to <10, 0, u, u, u, u, u, u>. Instead, simply convert it to a SCALAR_TO_VECTOR of the proper type.
...
- X86 now normalize SCALAR_TO_VECTOR to (BIT_CONVERT (v4i32 SCALAR_TO_VECTOR)). Get rid of X86ISD::S2VEC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47290 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-18 23:04:32 +00:00
Nick Lewycky
e0cfecf47d
Correctly fold divide-by-constant, even when faced with overflow.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47287 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-18 22:48:05 +00:00
Dan Gohman
b00ee21f21
Chris pointed out that it's not necessary to set i64 MUL to Expand
...
on x86-32 since i64 itself is not a Legal type. And, update some
comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47282 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-18 19:34:53 +00:00
Evan Cheng
a9407f5937
- Remove the previous check which broke coalescer-commute3.ll
...
- For now, conservatively ignore copy MI whose source is a physical register. Commuting its def MI can cause a physical register live interval to be live through a loop (since we know it's live coming into the def MI).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47281 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-18 18:56:31 +00:00