oota-llvm.git
14 years agoAdd MC instruction printer support for ARM and Thumb1 jump tables.
Jim Grosbach [Wed, 22 Sep 2010 17:39:48 +0000 (17:39 +0000)]
Add MC instruction printer support for ARM and Thumb1 jump tables.

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

14 years agoAttempt to fix llvm-gcc build. It was crashing when building gcov.o for an
Bob Wilson [Wed, 22 Sep 2010 17:35:14 +0000 (17:35 +0000)]
Attempt to fix llvm-gcc build.  It was crashing when building gcov.o for an
ARM cross-compiler on x86, because the MMO size did not match the type size.
This fixes the MMO size and also the size of the stack object to match the
type size.

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

14 years agoAdd MC instruction printer support for TB[BH] style thumb2 jump tables.
Jim Grosbach [Wed, 22 Sep 2010 17:15:35 +0000 (17:15 +0000)]
Add MC instruction printer support for TB[BH] style thumb2 jump tables.

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

14 years agoClean up comment.
Jim Grosbach [Wed, 22 Sep 2010 16:45:13 +0000 (16:45 +0000)]
Clean up comment.

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

14 years agollvmc: Support '-emit-llvm -S' with -opt.
Mikhail Glushenkov [Wed, 22 Sep 2010 09:00:41 +0000 (09:00 +0000)]
llvmc: Support '-emit-llvm -S' with -opt.

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

14 years agoA more informative output suffix for the opt tool.
Mikhail Glushenkov [Wed, 22 Sep 2010 09:00:35 +0000 (09:00 +0000)]
A more informative output suffix for the opt tool.

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

14 years agofix rdar://8456371 - Handle commutable instructions written backward.
Chris Lattner [Wed, 22 Sep 2010 06:26:39 +0000 (06:26 +0000)]
fix rdar://8456371 - Handle commutable instructions written backward.

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

14 years agoFix an inconsistency in the x86 backend that led it to reject "calll foo" on
Chris Lattner [Wed, 22 Sep 2010 05:49:14 +0000 (05:49 +0000)]
Fix an inconsistency in the x86 backend that led it to reject "calll foo" on
x86-32: 32-bit calls were named "call" not "calll".  64-bit calls were correctly
named "callq", so this only impacted x86-32.

This fixes rdar://8456370 - llvm-mc rejects 'calll'

This also exposes that mingw/64 is generating a 32-bit call instead of a 64-bit call,
I will file a bugzilla.

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

14 years agofix rdar://8456412 - llvm-mc crash in encoder on "mov %rdx, %cr8"
Chris Lattner [Wed, 22 Sep 2010 05:29:50 +0000 (05:29 +0000)]
fix rdar://8456412 - llvm-mc crash in encoder on "mov %rdx, %cr8"
Teaching the code generator about CR8-15, how to rex them up, etc.

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

14 years agofix rdar://8456417 - llvm-mc can't do basic math
Chris Lattner [Wed, 22 Sep 2010 05:05:16 +0000 (05:05 +0000)]
fix rdar://8456417 - llvm-mc can't do basic math

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

14 years agoadd the missing aliases for fp stack cmovs, rdar://8456391
Chris Lattner [Wed, 22 Sep 2010 04:56:20 +0000 (04:56 +0000)]
add the missing aliases for fp stack cmovs, rdar://8456391

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

14 years agoreimplement elf TLS support in terms of addressing modes, eliminating SegmentBaseAddress.
Chris Lattner [Wed, 22 Sep 2010 04:39:11 +0000 (04:39 +0000)]
reimplement elf TLS support in terms of addressing modes, eliminating SegmentBaseAddress.

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

14 years agoFix rdar://8456364 - llvm-mc rejects '%CS'
Chris Lattner [Wed, 22 Sep 2010 04:11:10 +0000 (04:11 +0000)]
Fix rdar://8456364 - llvm-mc rejects '%CS'

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

14 years agofix rdar://8456389 - llvm-mc mismatch with 'as' on 'fstp'
Chris Lattner [Wed, 22 Sep 2010 04:04:03 +0000 (04:04 +0000)]
fix rdar://8456389 - llvm-mc mismatch with 'as' on 'fstp'

-This line, and those below, will be ignored--

M    test/MC/AsmParser/X86/x86_instructions.s
M    lib/Target/X86/AsmParser/X86AsmParser.cpp

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

14 years agofix rdar://8456361 - llvm-mc rejects 'rep movsd'
Chris Lattner [Wed, 22 Sep 2010 03:50:32 +0000 (03:50 +0000)]
fix rdar://8456361 - llvm-mc rejects 'rep movsd'

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

14 years agoconvert the last 4 X86ISD nodes that should have memoperands to have them.
Chris Lattner [Wed, 22 Sep 2010 01:28:21 +0000 (01:28 +0000)]
convert the last 4 X86ISD nodes that should have memoperands to have them.

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

14 years agogive X86ISD::FNSTCW16m a memoperand, since it touches memory. It only
Chris Lattner [Wed, 22 Sep 2010 01:11:26 +0000 (01:11 +0000)]
give X86ISD::FNSTCW16m a memoperand, since it touches memory.  It only
can access the stack due to how it is generated though.

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

14 years agogive FP_TO_INT16_IN_MEM and friends a memoperand. They are only
Chris Lattner [Wed, 22 Sep 2010 01:05:16 +0000 (01:05 +0000)]
give FP_TO_INT16_IN_MEM and friends a memoperand.  They are only
used with stack slots, but hey, lets be safe.

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

14 years agolinux has a different stack alignment than the mac, relax this a bit.
Chris Lattner [Wed, 22 Sep 2010 00:46:26 +0000 (00:46 +0000)]
linux has a different stack alignment than the mac, relax this a bit.

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

14 years agogive VZEXT_LOAD a memory operand, it now works with segment registers.
Chris Lattner [Wed, 22 Sep 2010 00:34:38 +0000 (00:34 +0000)]
give VZEXT_LOAD a memory operand, it now works with segment registers.

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

14 years agorevert r114386 now that address modes work correctly, we get a nice
Chris Lattner [Wed, 22 Sep 2010 00:11:31 +0000 (00:11 +0000)]
revert r114386 now that address modes work correctly, we get a nice
call through gs-relative memory now.

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

14 years agogive LCMPXCHG_DAG[8] a memory operand, allowing it to work with addrspace 256/257
Chris Lattner [Tue, 21 Sep 2010 23:59:42 +0000 (23:59 +0000)]
give LCMPXCHG_DAG[8] a memory operand, allowing it to work with addrspace 256/257

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

14 years agofilecheckize
Chris Lattner [Tue, 21 Sep 2010 23:57:27 +0000 (23:57 +0000)]
filecheckize

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

14 years agoOptimizeCompareInstr should avoid iterating pass the beginning of the MBB when the...
Evan Cheng [Tue, 21 Sep 2010 23:49:07 +0000 (23:49 +0000)]
OptimizeCompareInstr should avoid iterating pass the beginning of the MBB when the 'and' instruction is after the comparison.

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

14 years agoAdd start of support for MC instruction printer of ARM jump tables. Filling in
Jim Grosbach [Tue, 21 Sep 2010 23:28:16 +0000 (23:28 +0000)]
Add start of support for MC instruction printer of ARM jump tables. Filling in
the rest of it is next up.

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

14 years agoEnable target-specific mul-lowering on ARM, even at -Os. Remove a test that this...
Owen Anderson [Tue, 21 Sep 2010 22:51:46 +0000 (22:51 +0000)]
Enable target-specific mul-lowering on ARM, even at -Os.  Remove a test that this makes
irrelevant, but add a new test for the new, improved functionality.

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

14 years agoBuild the complement interval dupli after the split intervals instead of
Jakob Stoklund Olesen [Tue, 21 Sep 2010 22:32:21 +0000 (22:32 +0000)]
Build the complement interval dupli after the split intervals instead of
creating it before and subtracting split ranges.

This way, the SSA update code in LiveIntervalMap can properly create and use new
phi values in dupli. Now it is possible to create split regions where a value
escapes along two different CFG edges, creating phi values outside the split
region.

This is a work in progress and probably quite broken.

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

14 years agoreimplement support for GS and FS relative address space matching
Chris Lattner [Tue, 21 Sep 2010 22:07:31 +0000 (22:07 +0000)]
reimplement support for GS and FS relative address space matching
by having X86DAGToDAGISel::SelectAddr get passed in the parent node
of the operand match (the load/store/atomic op) and having it get
the address space from that, instead of having special FS/GS addr
mode operations that require duplicating the entire instruction set
to support.

This makes FS and GS relative accesses *far* more predictable and
work much better.  It also simplifies the X86 backend a bit, more
to come.

There is still a pending issue with nodes like ISD::PREFETCH and
X86ISD::FLD, which really should be MemSDNode's but aren't.

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

14 years agoFixed pr20314-2.c failure, added E, F, p constraint letters.
John Thompson [Tue, 21 Sep 2010 22:04:54 +0000 (22:04 +0000)]
Fixed pr20314-2.c failure, added E, F, p constraint letters.

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

14 years agoRework passing parent pointers into complexpatterns, I forgot
Chris Lattner [Tue, 21 Sep 2010 22:00:25 +0000 (22:00 +0000)]
Rework passing parent pointers into complexpatterns, I forgot
that complex patterns are matched after the entire pattern has
a structural match, therefore the NodeStack isn't in a useful
state when the actual call to the matcher happens.

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

14 years agoMove a sign-extend or a zero-extend of a load to the same basic block as the
Bob Wilson [Tue, 21 Sep 2010 21:54:27 +0000 (21:54 +0000)]
Move a sign-extend or a zero-extend of a load to the same basic block as the
load when the type of the load is not legal, even if truncates are not free.
The load is going to be legalized to an extending load anyway.

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

14 years agoClarify a comment.
Bob Wilson [Tue, 21 Sep 2010 21:44:14 +0000 (21:44 +0000)]
Clarify a comment.

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

14 years agoAdd some utility routines.
Dan Gohman [Tue, 21 Sep 2010 21:20:13 +0000 (21:20 +0000)]
Add some utility routines.

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

14 years agoAdd insertAfter. This should have accompanied previous check-in.
Devang Patel [Tue, 21 Sep 2010 21:10:42 +0000 (21:10 +0000)]
Add insertAfter. This should have accompanied previous check-in.

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

14 years agoIf only user of a vreg is an copy instruction to export copy of vreg out of current...
Devang Patel [Tue, 21 Sep 2010 20:56:33 +0000 (20:56 +0000)]
If only user of a vreg is an copy instruction to export copy of vreg out of current basic block then insert DBG_VALUE so that debug value of the variable is also transfered to new vreg.
Testcase is in r114476.
This fixes radar 8412415.

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

14 years agoUse FileCheck
Devang Patel [Tue, 21 Sep 2010 20:50:32 +0000 (20:50 +0000)]
Use FileCheck

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

14 years agocorrect this logic.
Chris Lattner [Tue, 21 Sep 2010 20:46:40 +0000 (20:46 +0000)]
correct this logic.

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

14 years agoReimplement r114460 in target-independent DAGCombine rather than target-dependent...
Owen Anderson [Tue, 21 Sep 2010 20:42:50 +0000 (20:42 +0000)]
Reimplement r114460 in target-independent DAGCombine rather than target-dependent, by using
the predicate to discover the number of sign bits.  Enhance X86's target lowering to provide
a useful response to this query.

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

14 years agojust like they can opt into getting the root of the pattern being
Chris Lattner [Tue, 21 Sep 2010 20:37:12 +0000 (20:37 +0000)]
just like they can opt into getting the root of the pattern being
matched, allow ComplexPatterns to opt into getting the parent node
of the operand being matched.

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

14 years agofix a long standing wart: all the ComplexPattern's were being
Chris Lattner [Tue, 21 Sep 2010 20:31:19 +0000 (20:31 +0000)]
fix a long standing wart: all the ComplexPattern's were being
passed the root of the match, even though only a few patterns
actually needed this (one in X86, several in ARM [which should
be refactored anyway], and some in CellSPU that I don't feel
like detangling).   Instead of requiring all ComplexPatterns to
take the dead root, have targets opt into getting the root by
putting SDNPWantRoot on the ComplexPattern.

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

14 years agoRefix MSVC9 and upper_bound. It actually needs a fully symmetric comparator.
Jakob Stoklund Olesen [Tue, 21 Sep 2010 20:16:12 +0000 (20:16 +0000)]
Refix MSVC9 and upper_bound. It actually needs a fully symmetric comparator.

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

14 years agoeven though I'm about to rip it out, simplify the address mode stuff
Chris Lattner [Tue, 21 Sep 2010 19:41:58 +0000 (19:41 +0000)]
even though I'm about to rip it out, simplify the address mode stuff

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

14 years agofinish pushing MachinePointerInfo through selectiondags. At this point,
Chris Lattner [Tue, 21 Sep 2010 18:58:22 +0000 (18:58 +0000)]
finish pushing MachinePointerInfo through selectiondags.  At this point,
I think I've audited all uses, so it should be dependable for address spaces,
and the pointer+offset info should also be accurate when there.

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

14 years agoconvert a couple more places to use the new getStore()
Chris Lattner [Tue, 21 Sep 2010 18:51:21 +0000 (18:51 +0000)]
convert a couple more places to use the new getStore()

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

14 years agoupdate a bunch of code to use the MachinePointerInfo version of getStore.
Chris Lattner [Tue, 21 Sep 2010 18:41:36 +0000 (18:41 +0000)]
update a bunch of code to use the MachinePointerInfo version of getStore.

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

14 years agoWhen adding the carry bit to another value on X86, exploit the fact that the carry...
Owen Anderson [Tue, 21 Sep 2010 18:41:19 +0000 (18:41 +0000)]
When adding the carry bit to another value on X86, exploit the fact that the carry-materialization
(sbbl x, x) sets the registers to 0 or ~0.  Combined with two's complement arithmetic, we can fold
the intermediate AND and the ADD into a single SUB.

This fixes <rdar://problem/8449754>.

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

14 years agoDon't pollute the global namespace.
Jakob Stoklund Olesen [Tue, 21 Sep 2010 18:34:17 +0000 (18:34 +0000)]
Don't pollute the global namespace.

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

14 years agoMSVC9 does not support upper_bound with an asymmetric comparator.
Jakob Stoklund Olesen [Tue, 21 Sep 2010 18:24:30 +0000 (18:24 +0000)]
MSVC9 does not support upper_bound with an asymmetric comparator.

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

14 years agoDefine the TargetLowering::getTgtMemIntrinsic hook for ARM so that NEON load
Bob Wilson [Tue, 21 Sep 2010 17:56:22 +0000 (17:56 +0000)]
Define the TargetLowering::getTgtMemIntrinsic hook for ARM so that NEON load
and store intrinsics are represented with MemIntrinsicSDNodes.

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

14 years agoeliminate some uses of the getStore overload.
Chris Lattner [Tue, 21 Sep 2010 17:50:43 +0000 (17:50 +0000)]
eliminate some uses of the getStore overload.

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

14 years agoeliminate an old SelectionDAG::getTruncStore method, propagating
Chris Lattner [Tue, 21 Sep 2010 17:42:31 +0000 (17:42 +0000)]
eliminate an old SelectionDAG::getTruncStore method, propagating
MachinePointerInfo around more.

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

14 years agoeliminate last SelectionDAG::getLoad old entrypoint, on to stores.
Chris Lattner [Tue, 21 Sep 2010 17:28:52 +0000 (17:28 +0000)]
eliminate last SelectionDAG::getLoad old entrypoint, on to stores.

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

14 years agofix the code that infers SV info to be correct when dealing
Chris Lattner [Tue, 21 Sep 2010 17:24:05 +0000 (17:24 +0000)]
fix the code that infers SV info to be correct when dealing
with an indexed load/store that has an offset in the index.

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

14 years agoAdd LiveInterval::find and use it for most LiveRange searching operations
Jakob Stoklund Olesen [Tue, 21 Sep 2010 17:12:18 +0000 (17:12 +0000)]
Add LiveInterval::find and use it for most LiveRange searching operations
instead of calling lower_bound or upper_bound directly.

This cleans up the search logic a bit because {lower,upper}_bound compare
LR->start by default, and it is usually simpler to search LR->end.

Funnelling all searches through one function also makes it possible to replace
the search algorithm with something faster than binary search.

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

14 years agoRemove dead method.
Jakob Stoklund Olesen [Tue, 21 Sep 2010 17:12:15 +0000 (17:12 +0000)]
Remove dead method.

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

14 years agopropagate MachinePointerInfo through various uses of the old
Chris Lattner [Tue, 21 Sep 2010 17:04:51 +0000 (17:04 +0000)]
propagate MachinePointerInfo through various uses of the old
SelectionDAG::getExtLoad overload, and eliminate it.

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

14 years agoFix errant printing of [v]ldm instructions that aren't a pop
Jim Grosbach [Tue, 21 Sep 2010 16:45:31 +0000 (16:45 +0000)]
Fix errant printing of [v]ldm instructions that aren't a pop

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

14 years agoSimplify code.
Benjamin Kramer [Tue, 21 Sep 2010 16:41:29 +0000 (16:41 +0000)]
Simplify code.

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

14 years agocontinue MachinePointerInfo'izing, eliminating use of one of the old
Chris Lattner [Tue, 21 Sep 2010 16:36:31 +0000 (16:36 +0000)]
continue MachinePointerInfo'izing, eliminating use of one of the old
getLoad overloads.

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

14 years agoconvert dagcombine off the old form of getLoad. This fixes several bugs
Chris Lattner [Tue, 21 Sep 2010 16:08:50 +0000 (16:08 +0000)]
convert dagcombine off the old form of getLoad.  This fixes several bugs
with SVOffset computation.

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

14 years agoMake CreateComplexVariable independent of SmallVector.
Benjamin Kramer [Tue, 21 Sep 2010 16:00:03 +0000 (16:00 +0000)]
Make CreateComplexVariable independent of SmallVector.

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

14 years agosimplify DAGCombiner::SimplifySelectOps step #2/2.
Chris Lattner [Tue, 21 Sep 2010 15:58:55 +0000 (15:58 +0000)]
simplify DAGCombiner::SimplifySelectOps step #2/2.

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

14 years agosubstantially reduce indentation and simplify DAGCombiner::SimplifySelectOps.
Chris Lattner [Tue, 21 Sep 2010 15:46:59 +0000 (15:46 +0000)]
substantially reduce indentation and simplify DAGCombiner::SimplifySelectOps.
no functionality change (step #1)

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

14 years agoTrailing whitespace, 80-col violations.
Mikhail Glushenkov [Tue, 21 Sep 2010 14:59:50 +0000 (14:59 +0000)]
Trailing whitespace, 80-col violations.

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

14 years agollvmc: split llvm_gcc_based into llvm_gcc_{pch,comp}_based.
Mikhail Glushenkov [Tue, 21 Sep 2010 14:59:47 +0000 (14:59 +0000)]
llvmc: split llvm_gcc_based into llvm_gcc_{pch,comp}_based.

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

14 years agollvmc: Allow multiple output languages.
Mikhail Glushenkov [Tue, 21 Sep 2010 14:59:42 +0000 (14:59 +0000)]
llvmc: Allow multiple output languages.

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

14 years agoTrailing whitespace.
Mikhail Glushenkov [Tue, 21 Sep 2010 14:59:34 +0000 (14:59 +0000)]
Trailing whitespace.

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

14 years agoFixed ambiguous call.
Lang Hames [Tue, 21 Sep 2010 13:47:10 +0000 (13:47 +0000)]
Fixed ambiguous call.

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

14 years agoFix buglet when the TST instruction directly uses the AND result.
Gabor Greif [Tue, 21 Sep 2010 13:30:57 +0000 (13:30 +0000)]
Fix buglet when the TST instruction directly uses the AND result.
I am unable to write a test for this case, help is solicited, though...
What I did is to tickle the code in the debugger and verify that we do the right thing.

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

14 years agoAdded an additional PBQP problem builder which adds coalescing costs (both between...
Lang Hames [Tue, 21 Sep 2010 13:19:36 +0000 (13:19 +0000)]
Added an additional PBQP problem builder which adds coalescing costs (both between pairs of virtuals, and between virtuals and physicals).

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

14 years agoMove the search for the appropriate AND instruction
Gabor Greif [Tue, 21 Sep 2010 12:01:15 +0000 (12:01 +0000)]
Move the search for the appropriate AND instruction
into OptimizeCompareInstr.
This necessitates the passing of CmpValue around,
so widen the virtual functions to accomodate.

No functionality changes.

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

14 years agollvmc: put linker options in a separate OptList.
Mikhail Glushenkov [Tue, 21 Sep 2010 11:57:04 +0000 (11:57 +0000)]
llvmc: put linker options in a separate OptList.

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

14 years agoa few more trivial updates. This fixes PerformInsertVectorEltInMemory to not
Chris Lattner [Tue, 21 Sep 2010 07:32:19 +0000 (07:32 +0000)]
a few more trivial updates.  This fixes PerformInsertVectorEltInMemory to not
pass a completely incorrect SrcValue, which would result in a miscompile with
combiner-aa.

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

14 years agoconvert the targets off the non-MachinePointerInfo of getLoad.
Chris Lattner [Tue, 21 Sep 2010 06:44:06 +0000 (06:44 +0000)]
convert the targets off the non-MachinePointerInfo of getLoad.

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

14 years agoadd some accessors
Chris Lattner [Tue, 21 Sep 2010 06:43:24 +0000 (06:43 +0000)]
add some accessors

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

14 years agoit's more elegant to put the "getConstantPool" and
Chris Lattner [Tue, 21 Sep 2010 06:22:23 +0000 (06:22 +0000)]
it's more elegant to put the "getConstantPool" and
"getFixedStack" on the MachinePointerInfo class.  While
this isn't the problem I'm setting out to solve, it is the
right way to eliminate PseudoSourceValue, so lets go with it.

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

14 years agough, missed a file.
Chris Lattner [Tue, 21 Sep 2010 06:16:40 +0000 (06:16 +0000)]
ugh, missed a file.

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

14 years agoupdate the X86 backend to use the MachinePointerInfo version of one
Chris Lattner [Tue, 21 Sep 2010 06:02:19 +0000 (06:02 +0000)]
update the X86 backend to use the MachinePointerInfo version of one
of the getLoad methods.  This fixes at least one bug where an incorrect
svoffset is passed in (a potential combiner-aa miscompile).

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

14 years agoFix a bug where the x86 backend would lower memcpy/memset of segment relative operations
Chris Lattner [Tue, 21 Sep 2010 05:43:34 +0000 (05:43 +0000)]
Fix a bug where the x86 backend would lower memcpy/memset of segment relative operations
into non-segment-relative copies.

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

14 years agoreimplement memcpy/memmove/memset lowering to use MachinePointerInfo
Chris Lattner [Tue, 21 Sep 2010 05:40:29 +0000 (05:40 +0000)]
reimplement memcpy/memmove/memset lowering to use MachinePointerInfo
instead of srcvalue/offset pairs.  This corrects SV info for mem
operations whose size is > 32-bits.

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

14 years agoadd some helpful accessors.
Chris Lattner [Tue, 21 Sep 2010 05:39:30 +0000 (05:39 +0000)]
add some helpful accessors.

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

14 years agoadd overloads for SelectionDAG::getLoad, getStore, getTruncStore that take a
Chris Lattner [Tue, 21 Sep 2010 05:10:45 +0000 (05:10 +0000)]
add overloads for SelectionDAG::getLoad, getStore, getTruncStore that take a
MachinePointerInfo.  Among other virtues, this doesn't silently  truncate the
svoffset to 32-bits.

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

14 years agosimplify interface to SelectionDAG::getMemIntrinsicNode, making it take a MachinePoin...
Chris Lattner [Tue, 21 Sep 2010 04:57:15 +0000 (04:57 +0000)]
simplify interface to SelectionDAG::getMemIntrinsicNode, making it take a MachinePointerInfo

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

14 years agochagne interface to SelectionDAG::getAtomic to take a MachinePointerInfo,
Chris Lattner [Tue, 21 Sep 2010 04:53:42 +0000 (04:53 +0000)]
chagne interface to SelectionDAG::getAtomic to take a MachinePointerInfo,
eliminating some weird "infer a frame address" logic which was dead.

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

14 years agodon't implicitly drop the offset of a machinememoperand when legalizing atomics.
Chris Lattner [Tue, 21 Sep 2010 04:51:11 +0000 (04:51 +0000)]
don't implicitly drop the offset of a machinememoperand when legalizing atomics.

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

14 years agoforce clients of MachineFunction::getMachineMemOperand to provide a
Chris Lattner [Tue, 21 Sep 2010 04:46:39 +0000 (04:46 +0000)]
force clients of MachineFunction::getMachineMemOperand to provide a
MachinePointerInfo, propagating the type out a level of API.  Remove
the old MachineFunction::getMachineMemOperand impl.

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

14 years agoconvert targets to the new MF.getMachineMemOperand interface.
Chris Lattner [Tue, 21 Sep 2010 04:39:43 +0000 (04:39 +0000)]
convert targets to the new MF.getMachineMemOperand interface.

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

14 years agostart pushing MachinePointerInfo out through the MachineMemOperand interface
Chris Lattner [Tue, 21 Sep 2010 04:32:08 +0000 (04:32 +0000)]
start pushing MachinePointerInfo out through the MachineMemOperand interface
to the MachineFunction construction methods.

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

14 years agorefactor the Value*/offset pair from MachineMemOperand out to a new
Chris Lattner [Tue, 21 Sep 2010 04:23:39 +0000 (04:23 +0000)]
refactor the Value*/offset pair from MachineMemOperand out to a new
MachinePointerInfo struct, no functionality change.

This also adds an assert to MachineMemOperand::MachineMemOperand
that verifies that the Value* is either null or is an IR pointer type.

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

14 years agorandom cruft in my tree.
Chris Lattner [Tue, 21 Sep 2010 04:03:39 +0000 (04:03 +0000)]
random cruft in my tree.

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

14 years agofix rdar://8453210, a crash handling a call through a GS relative load.
Chris Lattner [Tue, 21 Sep 2010 03:37:00 +0000 (03:37 +0000)]
fix rdar://8453210, a crash handling a call through a GS relative load.
For now, just disable folding the load into the call.

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

14 years agoRevert unrelated change that was accidentally included in the previous commit.
Rafael Espindola [Tue, 21 Sep 2010 00:40:19 +0000 (00:40 +0000)]
Revert unrelated change that was accidentally included in the previous commit.

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

14 years agoImplement support for .local and its "interesting" interactions with .comm.
Rafael Espindola [Tue, 21 Sep 2010 00:24:38 +0000 (00:24 +0000)]
Implement support for .local and its "interesting" interactions with .comm.

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

14 years agoEnable machine sinking critical edge splitting. e.g.
Evan Cheng [Mon, 20 Sep 2010 22:52:00 +0000 (22:52 +0000)]
Enable machine sinking critical edge splitting. e.g.

define double @foo(double %x, double %y, i1 %c) nounwind {
  %a = fdiv double %x, 3.2
  %z = select i1 %c, double %a, double %y
  ret double %z
}

Was:
_foo:
        divsd   LCPI0_0(%rip), %xmm0
        testb   $1, %dil
        jne     LBB0_2
        movaps  %xmm1, %xmm0
LBB0_2:
        ret

Now:
_foo:
        testb   $1, %dil
        je      LBB0_2
        divsd   LCPI0_0(%rip), %xmm0
        ret
LBB0_2:
        movaps  %xmm1, %xmm0
        ret

This avoids the divsd when early exit is taken.
rdar://8454886

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

14 years agoRelax this check to silently swallow FE_INEXACT, following directions
Dan Gohman [Mon, 20 Sep 2010 22:32:25 +0000 (22:32 +0000)]
Relax this check to silently swallow FE_INEXACT, following directions
from rdar://8452472. This unbreaks gcc.dg/builtins-17.c.

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

14 years agoCombinerAA is now reordering these stores.
Owen Anderson [Mon, 20 Sep 2010 20:56:29 +0000 (20:56 +0000)]
CombinerAA is now reordering these stores.

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

14 years agoWhen TCO is turned on, it is possible to end up with aliasing FrameIndex's. Therefore,
Owen Anderson [Mon, 20 Sep 2010 20:39:59 +0000 (20:39 +0000)]
When TCO is turned on, it is possible to end up with aliasing FrameIndex's.  Therefore,
CombinerAA cannot assume that different FrameIndex's never alias, but can instead use
MachineFrameInfo to get the actual offsets of these slots and check for actual aliasing.

This fixes CodeGen/X86/2010-02-19-TailCallRetAddrBug.ll and CodeGen/X86/tailcallstack64.ll
when CombinerAA is enabled, modulo a different register allocation sequence.

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

14 years agoSimplify ARM callee-saved register handling by removing the distinction
Jim Grosbach [Mon, 20 Sep 2010 19:32:20 +0000 (19:32 +0000)]
Simplify ARM callee-saved register handling by removing the distinction
between the high and low registers for prologue/epilogue code. This was
a Darwin-only thing that wasn't providing a realistic benefit anymore.
Combining the save areas simplifies the compiler code and results in better
ARM/Thumb2 codegen.

For example, previously we would generate code like:
        push    {r4, r5, r6, r7, lr}
        add     r7, sp, #12
        stmdb   sp!, {r8, r10, r11}
With this change, we combine the register saves and generate:
        push    {r4, r5, r6, r7, r8, r10, r11, lr}
        add     r7, sp, #12

rdar://8445635

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

14 years agoProduce a R_X86_64_32 when the value is >=0.
Rafael Espindola [Mon, 20 Sep 2010 19:20:47 +0000 (19:20 +0000)]
Produce a R_X86_64_32 when the value is >=0.

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

14 years agoAvoid splitting critical edge twice for a set of PHI uses.
Evan Cheng [Mon, 20 Sep 2010 19:12:55 +0000 (19:12 +0000)]
Avoid splitting critical edge twice for a set of PHI uses.

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