oota-llvm.git
14 years agoA partial re-def instruction may be a copy.
Evan Cheng [Sat, 15 May 2010 01:35:44 +0000 (01:35 +0000)]
A partial re-def instruction may be a copy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103850 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoTeach two-address pass to do some coalescing while eliminating REG_SEQUENCE
Evan Cheng [Fri, 14 May 2010 23:21:14 +0000 (23:21 +0000)]
Teach two-address pass to do some coalescing while eliminating REG_SEQUENCE
instructions.

e.g.
%reg1026<def> = VLDMQ %reg1025<kill>, 260, pred:14, pred:%reg0
%reg1027<def> = EXTRACT_SUBREG %reg1026, 6
%reg1028<def> = EXTRACT_SUBREG %reg1026<kill>, 5
...
%reg1029<def> = REG_SEQUENCE %reg1028<kill>, 5, %reg1027<kill>, 6, %reg1028, 7, %reg1027, 8, %reg1028, 9, %reg1027, 10, %reg1030<kill>, 11, %reg1032<kill>, 12

After REG_SEQUENCE is eliminated, we are left with:

%reg1026<def> = VLDMQ %reg1025<kill>, 260, pred:14, pred:%reg0
%reg1029:6<def> = EXTRACT_SUBREG %reg1026, 6
%reg1029:5<def> = EXTRACT_SUBREG %reg1026<kill>, 5

The regular coalescer will not be able to coalesce reg1026 and reg1029 because it doesn't
know how to combine sub-register indices 5 and 6. Now 2-address pass will consult the
target whether sub-registers 5 and 6 of reg1026 can be combined to into a larger
sub-register (or combined to be reg1026 itself as is the case here). If it is possible,
it will be able to replace references of reg1026 with reg1029 + the larger sub-register
index.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103835 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd some comments about undef.
Dan Gohman [Fri, 14 May 2010 23:01:02 +0000 (23:01 +0000)]
Add some comments about undef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103834 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoModel VST*_UPD and VST*oddUPD pair with REG_SEQUENCE.
Evan Cheng [Fri, 14 May 2010 22:54:52 +0000 (22:54 +0000)]
Model VST*_UPD and VST*oddUPD pair with REG_SEQUENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103833 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFast ISel trivially coalesces away no-op casts, so check for this when
Dan Gohman [Fri, 14 May 2010 22:53:18 +0000 (22:53 +0000)]
Fast ISel trivially coalesces away no-op casts, so check for this when
setting kill flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103832 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDon't bother spilling before a return
Jakob Stoklund Olesen [Fri, 14 May 2010 22:40:43 +0000 (22:40 +0000)]
Don't bother spilling before a return

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103831 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRegAllocLocal can count copies too
Jakob Stoklund Olesen [Fri, 14 May 2010 22:40:40 +0000 (22:40 +0000)]
RegAllocLocal can count copies too

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103830 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoSystemZ really does mean "has calls" and not just "adjusts stack." Go ahead and
Bill Wendling [Fri, 14 May 2010 22:17:42 +0000 (22:17 +0000)]
SystemZ really does mean "has calls" and not just "adjusts stack." Go ahead and
replace the check with the appropriate predicate. Modify the testcase to reflect
the correct code. (It should be saving callee-saved registers on the stack
allocated by the calling fuction.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103829 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoTrack allocatable instead of reserved regs, and never take an unallocatable hint.
Jakob Stoklund Olesen [Fri, 14 May 2010 22:02:56 +0000 (22:02 +0000)]
Track allocatable instead of reserved regs, and never take an unallocatable hint.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103828 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDon't set kill flags for instructions which the scheduler has cloned.
Dan Gohman [Fri, 14 May 2010 22:01:14 +0000 (22:01 +0000)]
Don't set kill flags for instructions which the scheduler has cloned.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103827 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoBR is a barrier.
Dan Gohman [Fri, 14 May 2010 22:00:27 +0000 (22:00 +0000)]
BR is a barrier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103826 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoSeveral tail call tests apparently rely upon this being "adjusts stack" instead
Bill Wendling [Fri, 14 May 2010 21:58:35 +0000 (21:58 +0000)]
Several tail call tests apparently rely upon this being "adjusts stack" instead
of "has calls". That's probably wrong, but it needs further
investigation. Revert to the original behavior until this is settled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103824 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAvoid scanning the long tail of physreg operands on calls
Jakob Stoklund Olesen [Fri, 14 May 2010 21:55:52 +0000 (21:55 +0000)]
Avoid scanning the long tail of physreg operands on calls

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103823 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDo not forget to mark prcessed arguments.
Devang Patel [Fri, 14 May 2010 21:55:50 +0000 (21:55 +0000)]
Do not forget to mark prcessed arguments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103822 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoCount coalesced copies
Jakob Stoklund Olesen [Fri, 14 May 2010 21:55:50 +0000 (21:55 +0000)]
Count coalesced copies

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103821 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAllow virtreg redefines when verifying for RegAllocFast
Jakob Stoklund Olesen [Fri, 14 May 2010 21:55:44 +0000 (21:55 +0000)]
Allow virtreg redefines when verifying for RegAllocFast

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103820 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoThis should happen if there are no calls, not if it just doesn't adjust the
Bill Wendling [Fri, 14 May 2010 21:38:44 +0000 (21:38 +0000)]
This should happen if there are no calls, not if it just doesn't adjust the
stack.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103813 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRevert r103804. The comment is correct.
Bill Wendling [Fri, 14 May 2010 21:28:24 +0000 (21:28 +0000)]
Revert r103804. The comment is correct.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103808 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRemove trailing whitespace
Jim Grosbach [Fri, 14 May 2010 21:20:46 +0000 (21:20 +0000)]
Remove trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103807 91177308-0d34-0410-b5e6-96231b3b80d8

14 years ago80 column and trailing whitespace cleanup
Jim Grosbach [Fri, 14 May 2010 21:19:48 +0000 (21:19 +0000)]
80 column and trailing whitespace cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103806 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoadd cmd line option to leave dbgvalues in during post-RA sceduling. Useful
Jim Grosbach [Fri, 14 May 2010 21:18:04 +0000 (21:18 +0000)]
add cmd line option to leave dbgvalues in during post-RA sceduling. Useful
while debugging what's mishandled about them in the post-RA pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103805 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix comment.
Bill Wendling [Fri, 14 May 2010 21:17:29 +0000 (21:17 +0000)]
Fix comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103804 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRename "HasCalls" in MachineFrameInfo to "AdjustsStack" to better describe what
Bill Wendling [Fri, 14 May 2010 21:14:32 +0000 (21:14 +0000)]
Rename "HasCalls" in MachineFrameInfo to "AdjustsStack" to better describe what
the variable actually tracks.

N.B., several back-ends are using "HasCalls" as being synonymous for something
that adjusts the stack. This isn't 100% correct and should be looked into.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103802 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoTest case for r103800.
Devang Patel [Fri, 14 May 2010 21:04:45 +0000 (21:04 +0000)]
Test case for r103800.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103801 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoLowering of atomic instructions can result in operands being
Dan Gohman [Fri, 14 May 2010 21:01:44 +0000 (21:01 +0000)]
Lowering of atomic instructions can result in operands being
used more than once. If ISel had put a kill flag on one of them,
it's not valid to transfer the kill flag to each new instance.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103799 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd support to preserve type info for the variables that are removed by the optimizer.
Devang Patel [Fri, 14 May 2010 21:01:35 +0000 (21:01 +0000)]
Add support to preserve type info for the variables that are removed by the optimizer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103798 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoWhen verifying two-address instructions, check the following:
Jakob Stoklund Olesen [Fri, 14 May 2010 20:28:32 +0000 (20:28 +0000)]
When verifying two-address instructions, check the following:

- Kill is implicit when use and def registers are identical.
- Only virtual registers can differ.

Add a -verify-fast-regalloc to run the verifier before the fast allocator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103797 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix so "int3" is correctly accepted, added "into" and fixed "int" with an
Kevin Enderby [Fri, 14 May 2010 19:16:02 +0000 (19:16 +0000)]
Fix so "int3" is correctly accepted, added "into" and fixed "int" with an
argument, like "int $4", to not get an Assertion error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103791 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoModel VLD*_UPD and VLD*odd_UPD pair with REG_SEQUENCE.
Evan Cheng [Fri, 14 May 2010 18:54:59 +0000 (18:54 +0000)]
Model VLD*_UPD and VLD*odd_UPD pair with REG_SEQUENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103790 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC/Mach-O/x86_64: Darwin's special "signed_N" relocation types should only be
Daniel Dunbar [Fri, 14 May 2010 18:53:40 +0000 (18:53 +0000)]
MC/Mach-O/x86_64: Darwin's special "signed_N" relocation types should only be
used to replace a normal relocation, not a reference to a GOT entry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103789 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoSimplify the handling of physreg defs and uses in RegAllocFast.
Jakob Stoklund Olesen [Fri, 14 May 2010 18:03:25 +0000 (18:03 +0000)]
Simplify the handling of physreg defs and uses in RegAllocFast.

This adds extra security against using clobbered physregs, and it adds kill
markers to physreg uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103784 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoSet isTerminator on TRAP instructions.
Dan Gohman [Fri, 14 May 2010 16:46:02 +0000 (16:46 +0000)]
Set isTerminator on TRAP instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103778 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDon't use isBarrier for the PowerPC sync instruction. isBarrier is for
Dan Gohman [Fri, 14 May 2010 16:42:16 +0000 (16:42 +0000)]
Don't use isBarrier for the PowerPC sync instruction. isBarrier is for
control barriers, not memory ordering barriers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103777 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd mayLoad and mayStore flags to instructions which missed them.
Dan Gohman [Fri, 14 May 2010 16:34:55 +0000 (16:34 +0000)]
Add mayLoad and mayStore flags to instructions which missed them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103776 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoUse regular PassManager instead of FunctionPassManager in opt, since it
Dan Gohman [Fri, 14 May 2010 15:36:54 +0000 (15:36 +0000)]
Use regular PassManager instead of FunctionPassManager in opt, since it
isn't doing lazy streaming. This also fixes a missing doFinalization call.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103774 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoUse PassManagerBase, to give clients the option of using either
Dan Gohman [Fri, 14 May 2010 15:35:10 +0000 (15:35 +0000)]
Use PassManagerBase, to give clients the option of using either
FunctionPassManager or regular PassManager.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103773 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd an isNodeHidden to the graph traits, to support definition of
Dan Gohman [Fri, 14 May 2010 15:29:31 +0000 (15:29 +0000)]
Add an isNodeHidden to the graph traits, to support definition of
subgraph views.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103772 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoXFAIL the test I added with vg_leak, apparently it is the first and only llc
Daniel Dunbar [Fri, 14 May 2010 07:47:51 +0000 (07:47 +0000)]
XFAIL the test I added with vg_leak, apparently it is the first and only llc
-filetype=obj test, and -filetype=obj leaks a few objects. Added a FIXME, we
need to sort out the ownership model for the various MC objects.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103769 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoGet rid of the bit twiddling to read / set OpActions and ValueTypeActions. The small...
Evan Cheng [Fri, 14 May 2010 07:37:40 +0000 (07:37 +0000)]
Get rid of the bit twiddling to read / set OpActions and ValueTypeActions. The small saving in memory isn't worth the increase in runtime and code complexity in my opinion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103768 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoInline Asm: Ensure buffer is newline terminated to match how the text is printed.
Daniel Dunbar [Fri, 14 May 2010 04:31:50 +0000 (04:31 +0000)]
Inline Asm: Ensure buffer is newline terminated to match how the text is printed.
 - This is a hack, but I can't decide the best place to handle this. Chris?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103765 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoEnable opportunistic coalescing
Jakob Stoklund Olesen [Fri, 14 May 2010 04:30:51 +0000 (04:30 +0000)]
Enable opportunistic coalescing

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103764 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdded a QQQQ register file to model 4-consecutive Q registers.
Evan Cheng [Fri, 14 May 2010 02:13:41 +0000 (02:13 +0000)]
Added a QQQQ register file to model 4-consecutive Q registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103760 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd AsmParser support for darwin tbss directive.
Eric Christopher [Fri, 14 May 2010 01:50:28 +0000 (01:50 +0000)]
Add AsmParser support for darwin tbss directive.

Nothing uses this yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103757 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix a couple of typos.
Eric Christopher [Fri, 14 May 2010 01:38:54 +0000 (01:38 +0000)]
Fix a couple of typos.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103756 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix typo.
Nick Lewycky [Fri, 14 May 2010 01:02:48 +0000 (01:02 +0000)]
Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103755 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Switch to completely lazy layout.
Daniel Dunbar [Fri, 14 May 2010 00:51:14 +0000 (00:51 +0000)]
MC: Switch to completely lazy layout.
 - The eliminates the last major algorithmic problem with MC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103754 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Extend MCAsmLayout to explicitly track which fragments have been layed out, and...
Daniel Dunbar [Fri, 14 May 2010 00:37:21 +0000 (00:37 +0000)]
MC: Extend MCAsmLayout to explicitly track which fragments have been layed out, and enforce several invariants to LayoutFragment to ensure we only do layout in a sensible order.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103753 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Implicitly assign section addresses when the previous fragment is layed out.
Daniel Dunbar [Fri, 14 May 2010 00:37:17 +0000 (00:37 +0000)]
MC: Implicitly assign section addresses when the previous fragment is layed out.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103752 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Switch MCFragment to storing the layout order index, not its index in the file.
Daniel Dunbar [Fri, 14 May 2010 00:37:14 +0000 (00:37 +0000)]
MC: Switch MCFragment to storing the layout order index, not its index in the file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103751 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Change LayoutSection() to only do the section initializiation.
Daniel Dunbar [Fri, 14 May 2010 00:37:11 +0000 (00:37 +0000)]
MC: Change LayoutSection() to only do the section initializiation.

Also, elimminate MCAsmLayout::set*, which are no longer needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103750 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix comments.
Evan Cheng [Fri, 14 May 2010 00:21:45 +0000 (00:21 +0000)]
Fix comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103749 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoTrust kill flags from isel and later passes.
Jakob Stoklund Olesen [Fri, 14 May 2010 00:02:23 +0000 (00:02 +0000)]
Trust kill flags from isel and later passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103748 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix an embarrassing runtime regression for RegAllocFast.
Jakob Stoklund Olesen [Fri, 14 May 2010 00:02:20 +0000 (00:02 +0000)]
Fix an embarrassing runtime regression for RegAllocFast.

This loop is quadratic in the capacity for a DenseMap:

  while(!map.empty())
    map.erase(map.begin());

Instead we now do a normal begin() - end() iteration followed by map.clear().
That also has the nice sideeffect of shrinking the map capacity on demand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103747 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdding a v8i64 512-bit vector type. This will be used to model ARM NEON intrinsics...
Evan Cheng [Thu, 13 May 2010 23:55:47 +0000 (23:55 +0000)]
Adding a v8i64 512-bit vector type. This will be used to model ARM NEON intrinsics which translate into a pair of vld / vst instructions that can load / store 8 consecutive 64-bit (D) registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103746 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoImplement a correct ui64->f32 conversion. The old
Dale Johannesen [Thu, 13 May 2010 23:50:42 +0000 (23:50 +0000)]
Implement a correct ui64->f32 conversion.  The old
one was subject to double rounding in extreme cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103744 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoEliminate use of magic numbers to access OpActions. It also has the effect of allowin...
Evan Cheng [Thu, 13 May 2010 23:25:21 +0000 (23:25 +0000)]
Eliminate use of magic numbers to access OpActions. It also has the effect of allowing more than 31 scalar value types. MAX_ALLOWED_VALUETYPE had already been updated to 64 a while back.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103743 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix up LoadExtActions, TruncStoreActions, and IndexedModeActions representation and...
Evan Cheng [Thu, 13 May 2010 23:01:26 +0000 (23:01 +0000)]
Fix up LoadExtActions, TruncStoreActions, and IndexedModeActions representation and setter and getter's so they will continue to work if the number of scalar ValueType's exceeds 31.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103742 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoClean up RegAllocFast debug output
Jakob Stoklund Olesen [Thu, 13 May 2010 20:43:17 +0000 (20:43 +0000)]
Clean up RegAllocFast debug output

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103739 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Move Layout{Fragment,Section} into MCAsmLayout, and add LayoutFile().
Daniel Dunbar [Thu, 13 May 2010 20:40:12 +0000 (20:40 +0000)]
MC: Move Layout{Fragment,Section} into MCAsmLayout, and add LayoutFile().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103738 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoTeach MachineLICM and MachineSink how to clear kill flags conservatively
Dan Gohman [Thu, 13 May 2010 20:34:42 +0000 (20:34 +0000)]
Teach MachineLICM and MachineSink how to clear kill flags conservatively
when they move instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103737 91177308-0d34-0410-b5e6-96231b3b80d8

14 years ago80 col violation.
Evan Cheng [Thu, 13 May 2010 20:14:58 +0000 (20:14 +0000)]
80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103733 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd comment about the pseudo registers QQ, each of which is a pair of Q registers.
Evan Cheng [Thu, 13 May 2010 20:02:08 +0000 (20:02 +0000)]
Add comment about the pseudo registers QQ, each of which is a pair of Q registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103731 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix pr7110: For non-Darwin targets UnspilledCS1GPRs may include high registers.
Bob Wilson [Thu, 13 May 2010 19:58:24 +0000 (19:58 +0000)]
Fix pr7110: For non-Darwin targets UnspilledCS1GPRs may include high registers.
Do not use those for Thumb1 functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103730 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoCMake: fixes 64 bit Visual Studio IDE build. Fixes bug 4936.
Oscar Fuentes [Thu, 13 May 2010 19:34:06 +0000 (19:34 +0000)]
CMake: fixes 64 bit Visual Studio IDE build. Fixes bug 4936.

Patch by Dimitry Andric!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103727 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd a utility function for conservatively clearing kill flags, and make
Dan Gohman [Thu, 13 May 2010 19:24:00 +0000 (19:24 +0000)]
Add a utility function for conservatively clearing kill flags, and make
use of it in MachineCSE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103726 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAn Instruction has a trivial kill only if its use is in the same
Dan Gohman [Thu, 13 May 2010 19:19:32 +0000 (19:19 +0000)]
An Instruction has a trivial kill only if its use is in the same
basic block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103725 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Factor out MCAssembler::ComputeFragmentSize.
Daniel Dunbar [Thu, 13 May 2010 18:35:06 +0000 (18:35 +0000)]
MC: Factor out MCAssembler::ComputeFragmentSize.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103724 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix const ilist_node::get{Prev,Next}Node() to actually compile. Picky, picky.
Daniel Dunbar [Thu, 13 May 2010 18:35:02 +0000 (18:35 +0000)]
Fix const ilist_node::get{Prev,Next}Node() to actually compile. Picky, picky.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103723 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix complete badness in bugpoint's IsARMArchitecture() function.
Jakob Stoklund Olesen [Thu, 13 May 2010 17:58:15 +0000 (17:58 +0000)]
Fix complete badness in bugpoint's IsARMArchitecture() function.

The revision history for this function is interesting, with multiple layers of
wrongness being introduced one at a time.

This fixes a weird issue where bugpoint -run-llc would suddenly exit 13 half way
through isolating a miscompilation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103721 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoActually run the test. Thanks Daniel Dunbar!
Nick Lewycky [Thu, 13 May 2010 17:41:06 +0000 (17:41 +0000)]
Actually run the test. Thanks Daniel Dunbar!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103720 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Add section layout order indices to MCSectionData.
Daniel Dunbar [Thu, 13 May 2010 15:17:26 +0000 (15:17 +0000)]
MC: Add section layout order indices to MCSectionData.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103715 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd an also-emit-llvm option to the gold plugin.
Rafael Espindola [Thu, 13 May 2010 13:39:31 +0000 (13:39 +0000)]
Add an also-emit-llvm option to the gold plugin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103714 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Move ordinal calculation, to make sure fragments synthesized for layout get assig...
Daniel Dunbar [Thu, 13 May 2010 08:43:37 +0000 (08:43 +0000)]
MC: Move ordinal calculation, to make sure fragments synthesized for layout get assigned ordinals properly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103711 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Create dummy fragments to avoid ever having empty sections, which simplifies...
Daniel Dunbar [Thu, 13 May 2010 08:43:34 +0000 (08:43 +0000)]
MC: Create dummy fragments to avoid ever having empty sections, which simplifies layout.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103710 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Add MCAsmLayout::FragmentReplaced() helper function.
Daniel Dunbar [Thu, 13 May 2010 08:43:31 +0000 (08:43 +0000)]
MC: Add MCAsmLayout::FragmentReplaced() helper function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103709 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoUpdate tablegen to generate shorts instead of chars for subgroup arrays.
Chandler Carruth [Thu, 13 May 2010 07:43:47 +0000 (07:43 +0000)]
Update tablegen to generate shorts instead of chars for subgroup arrays.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103704 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoProperly set thread-local flag on globals during cpp emission
Anton Korobeynikov [Thu, 13 May 2010 07:41:57 +0000 (07:41 +0000)]
Properly set thread-local flag on globals during cpp emission

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103702 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRemove heinous tabs.
Nick Lewycky [Thu, 13 May 2010 06:45:13 +0000 (06:45 +0000)]
Remove heinous tabs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103700 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd testcase for r103653.
Nick Lewycky [Thu, 13 May 2010 06:00:14 +0000 (06:00 +0000)]
Add testcase for r103653.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103699 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoReplace the core comparison login in merge functions. We can now merge
Nick Lewycky [Thu, 13 May 2010 05:48:45 +0000 (05:48 +0000)]
Replace the core comparison login in merge functions. We can now merge
vector<>::push_back() in:

  int foo(vector<int> &a, vector<unsigned> &b) {
    a.push_back(10);
    b.push_back(11);
  }

to two calls to the same push_back function, or fold away the two copies of
push_back() in:

  struct T { int; };
  struct S { char; };
  vector<T*> t;
  vector<S*> s;
  void f(T *x) { t.push_back(x); }
  void g(S *x) { s.push_back(x); }

but leave f() and g() separate, since they refer to two different global
variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103698 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix -Asserts warning.
Daniel Dunbar [Thu, 13 May 2010 03:50:50 +0000 (03:50 +0000)]
Fix -Asserts warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103697 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Eliminate MCSectionData::{,Address,File}Size, which can now be computed by
Daniel Dunbar [Thu, 13 May 2010 03:19:50 +0000 (03:19 +0000)]
MC: Eliminate MCSectionData::{,Address,File}Size, which can now be computed by
utility functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103695 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix -Asserts warning.
Daniel Dunbar [Thu, 13 May 2010 03:19:36 +0000 (03:19 +0000)]
Fix -Asserts warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103694 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Switch to using explicit MCAlignFragments with OnlyAlignAddress bit instead
Daniel Dunbar [Thu, 13 May 2010 02:34:14 +0000 (02:34 +0000)]
MC: Switch to using explicit MCAlignFragments with OnlyAlignAddress bit instead
of manually doing padding/editing layout in LayoutSection().
    - This probably seems like six-of-one and half-dozen of another, but there
      is a method to my madness.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103693 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoBring back VLD1q and VST1q and use them for reloading / spilling Q registers. This...
Evan Cheng [Thu, 13 May 2010 01:12:06 +0000 (01:12 +0000)]
Bring back VLD1q and VST1q and use them for reloading / spilling Q registers. This allows folding loads and stores into VMOVQ.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103692 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC/Mach-O: Add another zerofill test to improve coverage.
Daniel Dunbar [Thu, 13 May 2010 01:10:28 +0000 (01:10 +0000)]
MC/Mach-O: Add another zerofill test to improve coverage.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103691 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Add MCAlignFragment::OnlyAlignAddress bit. This is a bit of magic that says the...
Daniel Dunbar [Thu, 13 May 2010 01:10:26 +0000 (01:10 +0000)]
MC: Add MCAlignFragment::OnlyAlignAddress bit. This is a bit of magic that says the align fragment shouldn't contribute to the logical section size, it is will be used for cleaning up the code to handle section alignment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103690 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Add MCSectionData::AddressSize, which is the size of the address space consumed...
Daniel Dunbar [Thu, 13 May 2010 01:10:22 +0000 (01:10 +0000)]
MC: Add MCSectionData::AddressSize, which is the size of the address space consumed by the section. This can differ from both the section logical size, and the section size on disk (although the current code handles this without making an explicit distinction).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103689 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoTake allocation hints from copy instructions to/from physregs.
Jakob Stoklund Olesen [Thu, 13 May 2010 00:19:43 +0000 (00:19 +0000)]
Take allocation hints from copy instructions to/from physregs.
This causes way more identity copies to be generated, ripe for coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103686 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMore asserts around physreg uses
Jakob Stoklund Olesen [Thu, 13 May 2010 00:19:39 +0000 (00:19 +0000)]
More asserts around physreg uses

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103685 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoExpand VMOVQQ into a pair of VMOVQ.
Evan Cheng [Thu, 13 May 2010 00:17:02 +0000 (00:17 +0000)]
Expand VMOVQQ into a pair of VMOVQ.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103684 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMark some pattern-less instructions as neverHasSideEffects.
Evan Cheng [Thu, 13 May 2010 00:16:46 +0000 (00:16 +0000)]
Mark some pattern-less instructions as neverHasSideEffects.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103683 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agofix rdar://7965971 and a fixme: use ParseIdentifier in
Chris Lattner [Thu, 13 May 2010 00:10:34 +0000 (00:10 +0000)]
fix rdar://7965971 and a fixme: use ParseIdentifier in
ParseDirectiveDarwinZerofill instead of hard coding the
check for identifier. This allows quoted symbol names to
be used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103682 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoreapply r103668 with a fix. Never make "minor syntax changes"
Chris Lattner [Thu, 13 May 2010 00:02:47 +0000 (00:02 +0000)]
reapply r103668 with a fix.  Never make "minor syntax changes"
after testing before committing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103681 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoIf REG_SEQUENCE source is livein, copy it first. Also, update livevariables informati...
Evan Cheng [Thu, 13 May 2010 00:00:35 +0000 (00:00 +0000)]
If REG_SEQUENCE source is livein, copy it first. Also, update livevariables information when a copy is introduced.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103680 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDo not attempt copy coalescing if the source and dest sub-register indices do not...
Evan Cheng [Wed, 12 May 2010 23:59:42 +0000 (23:59 +0000)]
Do not attempt copy coalescing if the source and dest sub-register indices do not match.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103679 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agorevert r103668 for now, it is apparently breaking things.
Chris Lattner [Wed, 12 May 2010 23:40:59 +0000 (23:40 +0000)]
revert r103668 for now, it is apparently breaking things.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103677 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agomoffset forms of moves are x86-32 only, make the parser
Chris Lattner [Wed, 12 May 2010 23:13:36 +0000 (23:13 +0000)]
moffset forms of moves are x86-32 only, make the parser
lower them to the correct x86-64 instructions since we
don't have a clean way to handle this in td files yet.
rdar://7947184

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103668 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix some potential issues in the pseudo instruction expansion phase: copy implicit...
Evan Cheng [Wed, 12 May 2010 23:13:12 +0000 (23:13 +0000)]
Fix some potential issues in the pseudo instruction expansion phase: copy implicit operands and memoperands. Also, expand instructions even if their defs are "dead" since they may have implicit kill operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103667 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Move MCAlignFragment::EmitNops value out of the constructor.
Daniel Dunbar [Wed, 12 May 2010 22:56:23 +0000 (22:56 +0000)]
MC: Move MCAlignFragment::EmitNops value out of the constructor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103665 91177308-0d34-0410-b5e6-96231b3b80d8