oota-llvm.git
15 years agoProvide convenient helpers
Anton Korobeynikov [Thu, 7 Aug 2008 09:51:54 +0000 (09:51 +0000)]
Provide convenient helpers

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

15 years agoSwitch Sparc to new section handling stuff. Refactor printing of module-level GVs...
Anton Korobeynikov [Thu, 7 Aug 2008 09:51:25 +0000 (09:51 +0000)]
Switch Sparc to new section handling stuff. Refactor printing of module-level GVs significantly.

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

15 years agoAdd hook for constant pool section selection for darwin.
Anton Korobeynikov [Thu, 7 Aug 2008 09:51:02 +0000 (09:51 +0000)]
Add hook for constant pool section selection for darwin.

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

15 years agoSelect section for constant pool entries
Anton Korobeynikov [Thu, 7 Aug 2008 09:50:34 +0000 (09:50 +0000)]
Select section for constant pool entries

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

15 years agoRemove trailing spaces.
Matthijs Kooijman [Thu, 7 Aug 2008 09:00:46 +0000 (09:00 +0000)]
Remove trailing spaces.

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

15 years agoDon't verify passes when assertions are disabled.
Chris Lattner [Thu, 7 Aug 2008 07:34:50 +0000 (07:34 +0000)]
Don't verify passes when assertions are disabled.

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

15 years agoRe-enable elimination of unnecessary SUBREG_TO_REG instructions in
Dan Gohman [Thu, 7 Aug 2008 02:54:50 +0000 (02:54 +0000)]
Re-enable elimination of unnecessary SUBREG_TO_REG instructions in
LowerSubregs, and fix an x86-64 isel bug that this exposed.

SUBREG_TO_REG for x86-64 implicit zero extension is only safe for
isel to generate when the source is known to always have zeros in
the high 32 bits. The EXTRACT_SUBREG instruction does not clear
the high 32 bits.

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

15 years agoAdd an extra example that shouldn't get an and instruction.
Dan Gohman [Thu, 7 Aug 2008 02:23:06 +0000 (02:23 +0000)]
Add an extra example that shouldn't get an and instruction.

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

15 years agoRewrite JIT handling of GlobalVariables so they
Dale Johannesen [Thu, 7 Aug 2008 01:30:15 +0000 (01:30 +0000)]
Rewrite JIT handling of GlobalVariables so they
are allocated in the same buffer as the code,
jump tables, etc.

The default JIT memory manager does not handle buffer
overflow well.  I didn't introduce this and I'm not
attempting to fix it here, but it is more likely to
be hit now since we're putting more stuff in the
buffer.  This affects one test that I know of so far,
MultiSource/Benchmarks/NPB-serial/is.

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

15 years agoFactor code that finalize PHI nodes, jump tables, etc. out of SelectBasicBlock. No...
Evan Cheng [Thu, 7 Aug 2008 00:43:25 +0000 (00:43 +0000)]
Factor code that finalize PHI nodes, jump tables, etc. out of SelectBasicBlock. No functionality changes.

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

15 years agoSDISel's constant branch folding can fold away self-loops, which doesn't result in...
Owen Anderson [Wed, 6 Aug 2008 23:16:52 +0000 (23:16 +0000)]
SDISel's constant branch folding can fold away self-loops, which doesn't result in any dead blocks, but
rather an incorrect phi input.  Add code to UnreachableMachineBlockElim to get rid of these entries.

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

15 years agoCorrect handle cases where two phis are coalesced together, and correct break up...
Owen Anderson [Wed, 6 Aug 2008 22:08:58 +0000 (22:08 +0000)]
Correct handle cases where two phis are coalesced together, and correct break up the case where two different
phis want to coalesce with the same vreg.

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

15 years agoOops, didn't mean to commit this.
Owen Anderson [Wed, 6 Aug 2008 20:58:38 +0000 (20:58 +0000)]
Oops, didn't mean to commit this.

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

15 years agoAdd libDriver.vcproj to solution file.
Ted Kremenek [Wed, 6 Aug 2008 20:57:07 +0000 (20:57 +0000)]
Add libDriver.vcproj to solution file.

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

15 years agoWe don't need to try to coalesce input vregs that are the same as the output vreg.
Owen Anderson [Wed, 6 Aug 2008 20:29:20 +0000 (20:29 +0000)]
We don't need to try to coalesce input vregs that are the same as the output vreg.

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

15 years agoOnly trim a live interval if the register is not used after the PHI node.
Owen Anderson [Wed, 6 Aug 2008 18:36:17 +0000 (18:36 +0000)]
Only trim a live interval if the register is not used after the PHI node.

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

15 years agoOnly remap each VNInfo once when doing renumbering.
Owen Anderson [Wed, 6 Aug 2008 18:35:45 +0000 (18:35 +0000)]
Only remap each VNInfo once when doing renumbering.

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

15 years agoRe-introduce the 8-bit subreg zext-inreg patterns for x86-32,
Dan Gohman [Wed, 6 Aug 2008 18:27:21 +0000 (18:27 +0000)]
Re-introduce the 8-bit subreg zext-inreg patterns for x86-32,
this time using MOV32to32_ and MOV16to16_. Thanks to Evan for
suggesting this.

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

15 years agoFix a shufflevector instcombine that was emitting invalid masks indices
Dan Gohman [Wed, 6 Aug 2008 18:17:32 +0000 (18:17 +0000)]
Fix a shufflevector instcombine that was emitting invalid masks indices
when it meant to be emitting undef indices.

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

15 years agoPR2535, not PR2355.
Evan Cheng [Wed, 6 Aug 2008 18:06:48 +0000 (18:06 +0000)]
PR2535, not PR2355.

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

15 years agoFix PR2355: bug in ChangeCompareStride. When the loop termination compare is the...
Evan Cheng [Wed, 6 Aug 2008 18:04:43 +0000 (18:04 +0000)]
Fix PR2355: bug in ChangeCompareStride. When the loop termination compare is the only use of its iv stride, the stride can be eliminated by moving it to another stride. If the scale is negative, swap the predicate instead of using a inverse predicate.

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

15 years agoxchg does not modify FLAGS.
Dan Gohman [Wed, 6 Aug 2008 15:52:50 +0000 (15:52 +0000)]
xchg does not modify FLAGS.

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

15 years agoClarify "node" vs. "value" in some comments.
Dan Gohman [Wed, 6 Aug 2008 15:18:10 +0000 (15:18 +0000)]
Clarify "node" vs. "value" in some comments.

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

15 years agooptimize a common idiom generated by clang for bitfield access, PR2638.
Chris Lattner [Wed, 6 Aug 2008 07:35:52 +0000 (07:35 +0000)]
optimize a common idiom generated by clang for bitfield access, PR2638.

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

15 years agoAdded support for fp callee saved registers.
Bruno Cardoso Lopes [Wed, 6 Aug 2008 06:14:43 +0000 (06:14 +0000)]
Added support for fp callee saved registers.
Added fp register clobbering during calls.
Added AsmPrinter support for "fmask", a bitmask that indicates where on the
stack the fp callee saved registers are.

Fixed the stack frame layout for Mips, now the callee saved regs
are in the right stack location (a little documentation about how this
stack frame must look like is present in MipsRegisterInfo.cpp).
This was done using the method MipsRegisterInfo::adjustMipsStackFrame
To be more clear, these are examples of what is solves :

1) FP and RA are also callee saved, and despite they aren't in CSI they
   must be saved before the fp callee saved registers.
2) The ABI requires that local varibles are allocated before the callee
   saved register area, the opposite behavior from the default allocation.
3) CPU and FPU saved register area must be aligned independent of each
   other.

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

15 years agostacker is really gone.
Chris Lattner [Wed, 6 Aug 2008 05:57:58 +0000 (05:57 +0000)]
stacker is really gone.

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

15 years agoremove stacker
Chris Lattner [Wed, 6 Aug 2008 05:56:52 +0000 (05:56 +0000)]
remove stacker

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

15 years agoZap sitofp/fptoui pairs. In all cases when the sign difference
Chris Lattner [Wed, 6 Aug 2008 05:13:06 +0000 (05:13 +0000)]
Zap sitofp/fptoui pairs.  In all cases when the sign difference
matters, the result is undefined anyway.

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

15 years agoReinstate this optimization, but without the miscompile. Thanks to Bill for
Nick Lewycky [Wed, 6 Aug 2008 04:54:03 +0000 (04:54 +0000)]
Reinstate this optimization, but without the miscompile. Thanks to Bill for
tracking down that this was breaking llvm-gcc bootstrap on Linux.

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

15 years agoJust grep for through the LL code instead of the ASM code
Bill Wendling [Wed, 6 Aug 2008 00:10:32 +0000 (00:10 +0000)]
Just grep for through the LL code instead of the ASM code

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

15 years agoAdd ARM to the targets to build.
Bill Wendling [Tue, 5 Aug 2008 23:52:28 +0000 (23:52 +0000)]
Add ARM to the targets to build.

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

15 years agoUse strcpy instead of sprintf here. This avoids a GCC 4.3 format-string
Dan Gohman [Tue, 5 Aug 2008 23:36:35 +0000 (23:36 +0000)]
Use strcpy instead of sprintf here. This avoids a GCC 4.3 format-string
warning. There wasn't actually a problem here, because the contents of
the string are known.

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

15 years agoAdd default architecture.
Bill Wendling [Tue, 5 Aug 2008 23:36:00 +0000 (23:36 +0000)]
Add default architecture.

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

15 years agoPass the computed iteration count value to RewriteLoopExitValues
Dan Gohman [Tue, 5 Aug 2008 22:34:21 +0000 (22:34 +0000)]
Pass the computed iteration count value to RewriteLoopExitValues
instead of having it call getIterationCount again.

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

15 years agoIt's "a static", not "an static"
Bill Wendling [Tue, 5 Aug 2008 22:29:16 +0000 (22:29 +0000)]
It's "a static", not "an static"

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

15 years agoFix breakage on ARM/2008-04-10-ScavengerAssert.ll.
Owen Anderson [Tue, 5 Aug 2008 22:24:40 +0000 (22:24 +0000)]
Fix breakage on ARM/2008-04-10-ScavengerAssert.ll.

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

15 years agoTestcase for PR2629.
Bill Wendling [Tue, 5 Aug 2008 22:23:59 +0000 (22:23 +0000)]
Testcase for PR2629.

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

15 years agoFix PR2620: Fix X86cmppd selection code so it expects operands to be v2f64.
Evan Cheng [Tue, 5 Aug 2008 22:19:15 +0000 (22:19 +0000)]
Fix PR2620: Fix X86cmppd selection code so it expects operands to be v2f64.

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

15 years agoFix PR2596: out of bound reference.
Evan Cheng [Tue, 5 Aug 2008 21:51:46 +0000 (21:51 +0000)]
Fix PR2596: out of bound reference.

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

15 years agoCorrectly handle replacement and removal of PHIs with one incoming register.
Owen Anderson [Tue, 5 Aug 2008 21:40:45 +0000 (21:40 +0000)]
Correctly handle replacement and removal of PHIs with one incoming register.

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

15 years agoRevert r53282. This was causing a miscompile on Linux. Also, the transformation
Bill Wendling [Tue, 5 Aug 2008 21:23:45 +0000 (21:23 +0000)]
Revert r53282. This was causing a miscompile on Linux. Also, the transformation
looks bogus. Please see PR2629 for details on why this is breaking things.

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

15 years agoOops, we were already checking for dead phis. Handle this the proper way, then.
Owen Anderson [Tue, 5 Aug 2008 21:18:51 +0000 (21:18 +0000)]
Oops, we were already checking for dead phis.  Handle this the proper way, then.

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

15 years agoWe don't need to update live intervals for dead PHIs.
Owen Anderson [Tue, 5 Aug 2008 20:51:26 +0000 (20:51 +0000)]
We don't need to update live intervals for dead PHIs.

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

15 years agoExpand acronyms, suggested by Walter Pawley
Chris Lattner [Tue, 5 Aug 2008 18:29:16 +0000 (18:29 +0000)]
Expand acronyms, suggested by Walter Pawley

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

15 years agoRemove the -disable-correct-folding option, which was ugly and is no longer needed.
Owen Anderson [Tue, 5 Aug 2008 18:27:54 +0000 (18:27 +0000)]
Remove the -disable-correct-folding option, which was ugly and is no longer needed.

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

15 years agoCapitalize LLVM, suggested by Walt Pawley
Chris Lattner [Tue, 5 Aug 2008 18:21:08 +0000 (18:21 +0000)]
Capitalize LLVM, suggested by Walt Pawley

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

15 years agoUpdate the remaining tests not to use -disable-correct-folding, and remove two
Owen Anderson [Tue, 5 Aug 2008 18:19:14 +0000 (18:19 +0000)]
Update the remaining tests not to use -disable-correct-folding, and remove two
that couldn't be updated.

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

15 years agoOne more -disable-correct-folding case removed.
Owen Anderson [Tue, 5 Aug 2008 18:08:56 +0000 (18:08 +0000)]
One more -disable-correct-folding case removed.

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

15 years agoRemove another -disable-correct-folding use.
Owen Anderson [Tue, 5 Aug 2008 18:05:58 +0000 (18:05 +0000)]
Remove another -disable-correct-folding use.

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

15 years agoEliminate another use of -disable-correct-folding.
Owen Anderson [Tue, 5 Aug 2008 18:03:01 +0000 (18:03 +0000)]
Eliminate another use of -disable-correct-folding.

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

15 years agoThis check is unnecessary, and getting rid of it removes a use of -disable-correct...
Owen Anderson [Tue, 5 Aug 2008 17:52:54 +0000 (17:52 +0000)]
This check is unnecessary, and getting rid of it removes a use of -disable-correct-folding.

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

15 years agoRemove the need for -disable-correct-folding from this test.
Owen Anderson [Tue, 5 Aug 2008 17:49:52 +0000 (17:49 +0000)]
Remove the need for -disable-correct-folding from this test.

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

15 years agoFix the AsmWriter to not print extra spaces after parameter attributes.
Dan Gohman [Tue, 5 Aug 2008 15:51:44 +0000 (15:51 +0000)]
Fix the AsmWriter to not print extra spaces after parameter attributes.

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

15 years agoTrim #includes.
Dan Gohman [Tue, 5 Aug 2008 15:32:23 +0000 (15:32 +0000)]
Trim #includes.

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

15 years agoFix several const-correctness issues, resolving some -Wcast-qual warnings.
Dan Gohman [Tue, 5 Aug 2008 14:45:15 +0000 (14:45 +0000)]
Fix several const-correctness issues, resolving some -Wcast-qual warnings.

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

15 years agoCorrect an assertion string.
Dan Gohman [Tue, 5 Aug 2008 14:42:28 +0000 (14:42 +0000)]
Correct an assertion string.

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

15 years agoRemove #if 0.
Evan Cheng [Tue, 5 Aug 2008 07:20:57 +0000 (07:20 +0000)]
Remove #if 0.

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

15 years agoFix PR2568: Fix bug that cause redudant kill marker after its live interval has been...
Evan Cheng [Tue, 5 Aug 2008 07:10:38 +0000 (07:10 +0000)]
Fix PR2568: Fix bug that cause redudant kill marker after its live interval has been extended due to coalescing.

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

15 years agoRemove unneeded iteration. Thanks to Dan for the feedback.
Owen Anderson [Tue, 5 Aug 2008 00:30:10 +0000 (00:30 +0000)]
Remove unneeded iteration.  Thanks to Dan for the feedback.

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

15 years agoThis option doesn't need to be a target option. It can be in SDISel instead.
Owen Anderson [Tue, 5 Aug 2008 00:27:28 +0000 (00:27 +0000)]
This option doesn't need to be a target option.  It can be in SDISel instead.

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

15 years agoUpdate these tests to work by disabling the new correct CFG generation. This flag...
Owen Anderson [Mon, 4 Aug 2008 23:55:29 +0000 (23:55 +0000)]
Update these tests to work by disabling the new correct CFG generation.  This flag should ONLY be used to for tests like these.

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

15 years ago- Fix SelectionDAG to generate correct CFGs.
Owen Anderson [Mon, 4 Aug 2008 23:54:43 +0000 (23:54 +0000)]
- Fix SelectionDAG to generate correct CFGs.
- Add a basic machine-level dead block eliminator.

These two have to go together, since many other parts of the code generator are unable to handle the unreachable blocks otherwise created.

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

15 years agoPR2621: Improvements to the SCEV AddRec binomial expansion. This
Eli Friedman [Mon, 4 Aug 2008 23:49:06 +0000 (23:49 +0000)]
PR2621: Improvements to the SCEV AddRec binomial expansion.  This
version uses a new algorithm for evaluating the binomial coefficients
which is significantly more efficient for AddRecs of more than 2 terms
(see the comments in the code for details on how the algorithm works).
It also fixes some bugs: it removes the arbitrary length restriction for
AddRecs, it fixes the silent generation of incorrect code for AddRecs
which require a wide calculation width, and it fixes an issue where we
were incorrectly truncating the iteration count too far when evaluating
an AddRec expression narrower than the induction variable.

There are still a few related issues I know of: I think there's
still an issue with the SCEVExpander expansion of AddRec in terms of
the width of the induction variable used.  The hack to avoid generating
too-wide integers shouldn't be necessary; instead, the callers should be
considering the cost of the expansion before expanding it (in addition
to not expanding too-wide integers, we might not want to expand
expressions that are really expensive, especially when optimizing for
size; calculating an length-17 32-bit AddRec currently generates about 250
instructions of straight-line code on X86).  Also, for long 32-bit
AddRecs on X86, CodeGen really sucks at scheduling the code.  I'm planning on
filing follow-up PRs for these issues.

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

15 years agoFix SDISel lowering of PHI nodes to use ComputeValueVTs.
Dan Gohman [Mon, 4 Aug 2008 23:42:46 +0000 (23:42 +0000)]
Fix SDISel lowering of PHI nodes to use ComputeValueVTs.
This allows it to work correctly on aggregate values.
This fixes PR2623.

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

15 years agoFix SDISel lowering of zeroinitializer and undef to use ComputeValueVTs.
Dan Gohman [Mon, 4 Aug 2008 23:30:41 +0000 (23:30 +0000)]
Fix SDISel lowering of zeroinitializer and undef to use ComputeValueVTs.
This allows it to work correctly on nested aggregate values.
This fixes PR2625.

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

15 years agoAdd an assert to catch invalid VECTOR_SHUFFLE mask indices.
Dan Gohman [Mon, 4 Aug 2008 23:09:15 +0000 (23:09 +0000)]
Add an assert to catch invalid VECTOR_SHUFFLE mask indices.

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

15 years agoMips ISelLowering cleanup : Removed old LowerCALL and FORMAL_ARGS helpers, they
Bruno Cardoso Lopes [Mon, 4 Aug 2008 07:12:52 +0000 (07:12 +0000)]
Mips ISelLowering cleanup : Removed old LowerCALL and FORMAL_ARGS helpers, they
aren't used anyway, they also used to broke compiling when fastcc was specified for a
function, but not anymore.

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

15 years agoHandle i32->f32 bitconvert results.
Bruno Cardoso Lopes [Mon, 4 Aug 2008 06:44:31 +0000 (06:44 +0000)]
Handle i32->f32 bitconvert results.

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

15 years agoAdd atomic sub for other sizes
Andrew Lenharth [Sun, 3 Aug 2008 20:17:34 +0000 (20:17 +0000)]
Add atomic sub for other sizes

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

15 years agoEmit saveri with the correct operand order, patch by Richard Pennington!
Chris Lattner [Sun, 3 Aug 2008 18:16:14 +0000 (18:16 +0000)]
Emit saveri with the correct operand order, patch by Richard Pennington!

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

15 years agoFix PR2615
Bruno Cardoso Lopes [Sun, 3 Aug 2008 15:37:43 +0000 (15:37 +0000)]
Fix PR2615

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

15 years agoImproved asm inline for hi,lo results
Bruno Cardoso Lopes [Sat, 2 Aug 2008 19:42:36 +0000 (19:42 +0000)]
Improved asm inline for hi,lo results
Added hi,lo registers to be used,def implicitly. This provides better handle of
instructions which use hi/lo.
Fixes a small BranchAnalysis bug

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

15 years agoApply the same pattern used in 'and' lowering for 'or'
Bruno Cardoso Lopes [Sat, 2 Aug 2008 19:37:33 +0000 (19:37 +0000)]
Apply the same pattern used in 'and' lowering for 'or'

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

15 years agoFix comment typos.
Duncan Sands [Fri, 1 Aug 2008 12:23:49 +0000 (12:23 +0000)]
Fix comment typos.

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

15 years agoRemoved unused parameters.
Bill Wendling [Fri, 1 Aug 2008 05:50:13 +0000 (05:50 +0000)]
Removed unused parameters.

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

15 years agoMake sse2 explicit, for non-x86 hosts.
Dale Johannesen [Thu, 31 Jul 2008 20:16:33 +0000 (20:16 +0000)]
Make sse2 explicit, for non-x86 hosts.

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

15 years agoExpand fcopysign
Bruno Cardoso Lopes [Thu, 31 Jul 2008 18:50:54 +0000 (18:50 +0000)]
Expand fcopysign

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

15 years agoHandle more SELECT corner cases considering legalize types, probabily wont work with
Bruno Cardoso Lopes [Thu, 31 Jul 2008 18:31:28 +0000 (18:31 +0000)]
Handle more SELECT corner cases considering legalize types, probabily wont work with
the default legalizer.

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

15 years agoAdd a flag to disable jump table generation (all
Dale Johannesen [Thu, 31 Jul 2008 18:13:12 +0000 (18:13 +0000)]
Add a flag to disable jump table generation (all
switches use the binary search algorithm) for
environments that don't support it.  PPC64 JIT
is such an environment; turn the flag on for that.

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

15 years agoImprove dagcombining for sext-loads and sext-in-reg nodes.
Dan Gohman [Thu, 31 Jul 2008 00:50:31 +0000 (00:50 +0000)]
Improve dagcombining for sext-loads and sext-in-reg nodes.

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

15 years agoAdded pattern for floating point zero immediate (avoiding a constant pool
Bruno Cardoso Lopes [Wed, 30 Jul 2008 19:00:31 +0000 (19:00 +0000)]
Added pattern for floating point zero immediate (avoiding a constant pool
access).
Added pattern to match bitconvert node.
Fixed MTC1 asm string bug.

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

15 years agoMove SelectionDAG::viewGraph() out of line; as an inline function
Dan Gohman [Wed, 30 Jul 2008 18:48:53 +0000 (18:48 +0000)]
Move SelectionDAG::viewGraph() out of line; as an inline function
it isn't always visible to gdb.

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

15 years agoDon't look for leaf values to store when lowering stores of
Dan Gohman [Wed, 30 Jul 2008 18:36:51 +0000 (18:36 +0000)]
Don't look for leaf values to store when lowering stores of
empty structs. This fixes PR2612.

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

15 years agoUse existing LiveInterval methods to simplify live interval merging. Thanks to Evan...
Owen Anderson [Wed, 30 Jul 2008 18:27:35 +0000 (18:27 +0000)]
Use existing LiveInterval methods to simplify live interval merging.  Thanks to Evan for pointing these out.

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

15 years agoI missed this file in r54223. movzbl is now used instead
Dan Gohman [Wed, 30 Jul 2008 18:23:34 +0000 (18:23 +0000)]
I missed this file in r54223. movzbl is now used instead
of movzbw here.

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

15 years agoReapply r54147 with a constraint to only use the 8-bit
Dan Gohman [Wed, 30 Jul 2008 18:09:17 +0000 (18:09 +0000)]
Reapply r54147 with a constraint to only use the 8-bit
subreg form on x86-64, to avoid the problem with x86-32
having GPRs that don't have 8-bit subregs.

Also, change several 16-bit instructions to use
equivalent 32-bit instructions. These have a smaller
encoding and avoid partial-register updates.

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

15 years agoValue numbers whose def index is a special sentinel value should not be remapped.
Owen Anderson [Wed, 30 Jul 2008 17:42:47 +0000 (17:42 +0000)]
Value numbers whose def index is a special sentinel value should not be remapped.

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

15 years agoFixed bug in global address lowering for functions and in Brcond lowering
Bruno Cardoso Lopes [Wed, 30 Jul 2008 17:06:13 +0000 (17:06 +0000)]
Fixed bug in global address lowering for functions and in Brcond lowering

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

15 years agoRemoved small section flag for mips, the assembler doesnt support this flag
Bruno Cardoso Lopes [Wed, 30 Jul 2008 17:04:04 +0000 (17:04 +0000)]
Removed small section flag for mips, the assembler doesnt support this flag

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

15 years agoAdded new features to represent specific instructions groups
Bruno Cardoso Lopes [Wed, 30 Jul 2008 17:01:06 +0000 (17:01 +0000)]
Added new features to represent specific instructions groups

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

15 years agoInstruction definition cleanup
Bruno Cardoso Lopes [Wed, 30 Jul 2008 16:58:59 +0000 (16:58 +0000)]
Instruction definition cleanup

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

15 years agoDocument BasicBlock::Create.
Matthijs Kooijman [Wed, 30 Jul 2008 12:53:14 +0000 (12:53 +0000)]
Document BasicBlock::Create.

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

15 years agoNot that using stream headers other than iostream is allowed.
Matthijs Kooijman [Wed, 30 Jul 2008 12:14:10 +0000 (12:14 +0000)]
Not that using stream headers other than iostream is allowed.

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

15 years agoAdded support for overloading intrinsics (atomics) based on pointers
Mon P Wang [Wed, 30 Jul 2008 04:36:53 +0000 (04:36 +0000)]
Added support for overloading intrinsics (atomics) based on pointers
to different address spaces.  This alters the naming scheme for those
intrinsics, e.g., atomic.load.add.i32 => atomic.load.add.i32.p0i32

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

15 years agoAnother SCEV issue from PR2607; essentially the same issue, but this
Eli Friedman [Wed, 30 Jul 2008 04:36:32 +0000 (04:36 +0000)]
Another SCEV issue from PR2607; essentially the same issue, but this
time applying to the implicit comparison in smin expressions. The
correct way to transform an inequality into the opposite
inequality, either signed or unsigned, is with a not expression.

I looked through the SCEV code, and I don't think there are any more
occurrences of this issue.

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

15 years agoMore fixes for corner cases when remapping live range indices.
Owen Anderson [Wed, 30 Jul 2008 00:22:56 +0000 (00:22 +0000)]
More fixes for corner cases when remapping live range indices.

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

15 years agoWhen merging live intervals, we also need to merge in any live ranges that are inputs...
Owen Anderson [Wed, 30 Jul 2008 00:21:16 +0000 (00:21 +0000)]
When merging live intervals, we also need to merge in any live ranges that are inputs to two-address instructions
that themselves define a range we already care about.

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

15 years agoFix for PR2607: SCEV miscomputing the loop count for loops with an
Eli Friedman [Wed, 30 Jul 2008 00:04:08 +0000 (00:04 +0000)]
Fix for PR2607: SCEV miscomputing the loop count for loops with an
SGT exit condition.  Essentially, the correct way to flip an inequality
in 2's complement is the not operator, not the negation operator.
That said, the difference only affects cases involving INT_MIN.

Also, enhance the pre-test search logic to be a bit smarter about
inequalities flipped with a not operator, so it can eliminate the smax
from the iteration count for simple loops.

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

15 years agoWhen merging a PHI operand's live interval into the PHI's live interval, we need...
Owen Anderson [Tue, 29 Jul 2008 21:17:08 +0000 (21:17 +0000)]
When merging a PHI operand's live interval into the PHI's live interval, we need to merge over all liveranges in
the operand's interval that share the relevant value number, not just the range that immediately precedes the PHI.

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

15 years agoDon't decrement the BB remap when we don't need to.
Owen Anderson [Tue, 29 Jul 2008 21:15:44 +0000 (21:15 +0000)]
Don't decrement the BB remap when we don't need to.

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