Bill Wendling
af80fae2a7
De-tabify.
...
llvm-svn: 47598
2008-02-26 10:51:52 +00:00
Bill Wendling
ebb707d162
Detabify
...
llvm-svn: 47597
2008-02-26 10:49:39 +00:00
Bill Wendling
9f23194fe2
Detabify.
...
llvm-svn: 47596
2008-02-26 10:46:10 +00:00
Bill Wendling
a2fedd7d9c
De-tabify.
...
llvm-svn: 47595
2008-02-26 10:45:29 +00:00
Arnold Schwaighofer
ddebd886dc
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.
llvm-svn: 47594
2008-02-26 10:21:54 +00:00
Arnold Schwaighofer
6383666085
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.
llvm-svn: 47593
2008-02-26 09:19:59 +00:00
Evan Cheng
8e99554e84
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.
llvm-svn: 47592
2008-02-26 08:03:41 +00:00
Chris Lattner
5b4101cf68
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.
llvm-svn: 47591
2008-02-26 07:04:54 +00:00
Evan Cheng
6366bbf577
Fix PR2076. CodeGenPrepare now sinks address computation for inline asm memory
...
operands into inline asm block.
llvm-svn: 47589
2008-02-26 02:42:37 +00:00
Evan Cheng
40c26c71c0
Refactor inline asm constraint matching code out of SDIsel into TargetLowering.
...
llvm-svn: 47587
2008-02-26 02:33:44 +00:00
Devang Patel
e5a51515ff
Remove debugging help.
...
llvm-svn: 47585
2008-02-26 01:42:38 +00:00
Nick Kledzik
64f0b582b8
test svn commit capability
...
llvm-svn: 47584
2008-02-26 01:36:52 +00:00
Devang Patel
446581de1d
Update bitcode reader and writer to handle multiple return values.
...
Take 2.
llvm-svn: 47583
2008-02-26 01:29:32 +00:00
Devang Patel
5b3d61f5ed
Pass const vectors by reference.
...
llvm-svn: 47577
2008-02-26 00:12:13 +00:00
Eli Friedman
c1fb49b19f
Add missing include (for ptrdiff_t).
...
llvm-svn: 47576
2008-02-25 23:35:32 +00:00
Dan Gohman
b8e7fea22f
Revert the assert for MUL_LOHI with an unused high result; Chris
...
pointed out that this isn't correct at -O0.
llvm-svn: 47575
2008-02-25 22:43:48 +00:00
Andrew Lenharth
4666486a41
when making bytecode modules, link as library
...
llvm-svn: 47574
2008-02-25 22:41:55 +00:00
Dale Johannesen
c67fa85683
Revise previous patch per review.
...
llvm-svn: 47573
2008-02-25 22:29:22 +00:00
Dan Gohman
4089604796
Factor the assert for indexed loads/stores out of LoadSDNode
...
and StoreSDNode into LSBaseSDNode.
llvm-svn: 47570
2008-02-25 22:16:29 +00:00
Dan Gohman
2585bc7c46
Add an assert to verify that we don't see an
...
{S,U}MUL_LOHI with an unused high value.
llvm-svn: 47569
2008-02-25 22:15:55 +00:00
Dan Gohman
1914fa6932
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.
llvm-svn: 47567
2008-02-25 21:57:04 +00:00
Dan Gohman
afd0e4bad3
Make some static variables const.
...
llvm-svn: 47566
2008-02-25 21:39:34 +00:00
Chris Lattner
6292d580de
add an assertion to catch a null PATypeHolder, patch by Erick Tryzelaar
...
llvm-svn: 47563
2008-02-25 21:28:46 +00:00
Dan Gohman
012abf0109
Convert MaskedValueIsZero and all its users to use APInt. Also add
...
a SignBitIsZero function to simplify a common use case.
llvm-svn: 47561
2008-02-25 21:11:39 +00:00
Chris Lattner
a2c10fa860
add LSBaseSDNode::getOffset at Dan's request.
...
llvm-svn: 47558
2008-02-25 19:31:21 +00:00
Evan Cheng
17c9a98b59
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.
...
llvm-svn: 47557
2008-02-25 19:24:01 +00:00
Chris Lattner
9fb1d740a6
prune #includes, fit in 80 cols.
...
llvm-svn: 47556
2008-02-25 19:21:38 +00:00
Chris Lattner
93caf1f29d
make this self contained.
...
llvm-svn: 47555
2008-02-25 19:20:57 +00:00
Dale Johannesen
574bb5e1e2
Expand removal of MMX memory copies to allow 1 level
...
of TokenFactor underneath chain (seems to be enough)
llvm-svn: 47554
2008-02-25 19:20:14 +00:00
Dan Gohman
4f288e3298
Add a new method to SDNode/SDOperand named getValueSizeInBits
...
that combines getValueType and MVT::getSizeInBits, since this
occurrs frequently.
llvm-svn: 47552
2008-02-25 19:08:02 +00:00
Duncan Sands
440b8ac3a0
In debug builds check that the key property holds: all
...
result and operand types are legal.
llvm-svn: 47546
2008-02-25 16:21:21 +00:00
Evan Cheng
fc540545f1
Correctly determine whether a argument load can be folded into its uses.
...
llvm-svn: 47545
2008-02-25 08:50:41 +00:00
Owen Anderson
6eafd532ab
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.
llvm-svn: 47544
2008-02-25 04:08:09 +00:00
Evan Cheng
e283043860
Temporarily reverting 46959.
...
llvm-svn: 47542
2008-02-25 03:57:32 +00:00
Owen Anderson
432abc0479
Fix an issue where GVN would try to use an instruction before its definition when performing return slot optimization.
...
llvm-svn: 47541
2008-02-25 00:40:41 +00:00
Duncan Sands
2cdf47bdf7
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.
llvm-svn: 47537
2008-02-24 07:36:03 +00:00
Bill Wendling
a369a6add8
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.
llvm-svn: 47534
2008-02-24 00:56:13 +00:00
Evan Cheng
654983ba21
Backing out r47521 for now. This has broken a number of tests.
...
llvm-svn: 47533
2008-02-23 19:32:32 +00:00
Scott Michel
36bbc39272
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.
llvm-svn: 47532
2008-02-23 18:41:37 +00:00
Zhou Sheng
5f4e29db89
Testcase for Revision 47478.
...
llvm-svn: 47531
2008-02-23 10:59:51 +00:00
Evan Cheng
d299f09bc5
Rematerialization logic was overly conservative when it comes to loads from fixed stack slots.
...
llvm-svn: 47529
2008-02-23 03:38:34 +00:00
Evan Cheng
6782480bd1
Update test.
...
llvm-svn: 47527
2008-02-23 02:57:25 +00:00
Evan Cheng
2de70b3ff8
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.
...
llvm-svn: 47526
2008-02-23 02:14:42 +00:00
Evan Cheng
4e9d5f1ead
Remat of pic loads are now on by default.
...
llvm-svn: 47525
2008-02-23 02:08:30 +00:00
Evan Cheng
d3e9e78aa0
Turning on remat of pic loads.
...
llvm-svn: 47524
2008-02-23 02:07:42 +00:00
Dan Gohman
8d536a33ff
Fix a bug that caused opt and other tools to silently ignore
...
invalid command-line options.
llvm-svn: 47523
2008-02-23 01:55:25 +00:00
Evan Cheng
97ca29e99a
No need recognize load from a fixed argument slot as re-materializable. LiveIntervalAnalysis already handles it as a special case.
...
llvm-svn: 47522
2008-02-23 01:47:44 +00:00
Devang Patel
4995a89a8d
Properly read and write bitcodes for multiple return values.
...
llvm-svn: 47521
2008-02-23 01:44:55 +00:00
Evan Cheng
95d3cb841d
Recognize loads of arguments as re-materializable first. Therefore if isReallyTriviallyReMaterializable() returns true it doesn't confuse it as a "normal" re-materializable instruction.
...
llvm-svn: 47520
2008-02-23 01:44:27 +00:00
Devang Patel
ac2ec94778
Regenerate.
...
llvm-svn: 47519
2008-02-23 01:17:37 +00:00