oota-llvm.git
16 years agoHandle "always inline" note during inline cost analysis.
Devang Patel [Wed, 3 Sep 2008 18:47:45 +0000 (18:47 +0000)]
Handle "always inline" note during inline cost analysis.

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

16 years agoCheck noinline note and ignore other notes.
Devang Patel [Wed, 3 Sep 2008 18:46:35 +0000 (18:46 +0000)]
Check noinline note and ignore other notes.

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

16 years agoHandle "noinline" note inside the simple inliner.
Devang Patel [Wed, 3 Sep 2008 18:10:21 +0000 (18:10 +0000)]
Handle "noinline" note inside the simple inliner.

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

16 years agoOops, I accidentally broke the fallback case with my last commit.
Owen Anderson [Wed, 3 Sep 2008 17:51:57 +0000 (17:51 +0000)]
Oops, I accidentally broke the fallback case with my last commit.

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

16 years agoFix an issue where we were reusing materializations of constants in blocks not domina...
Owen Anderson [Wed, 3 Sep 2008 17:37:03 +0000 (17:37 +0000)]
Fix an issue where we were reusing materializations of constants in blocks not dominated by the materialization.  This is
the simple fix, materializing the constant before every use.  It might be better to either track domination of uses or
to materialize all constants and the beginning of the function and let remat sort when to do materialization at uses.

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

16 years agoUpdate test to check call instruction.
Devang Patel [Wed, 3 Sep 2008 17:05:49 +0000 (17:05 +0000)]
Update test to check call instruction.

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

16 years agoSplit the SelectionDAG-building code, including the FunctionLoweringInfo
Dan Gohman [Wed, 3 Sep 2008 16:12:24 +0000 (16:12 +0000)]
Split the SelectionDAG-building code, including the FunctionLoweringInfo
and SelectionDAGLowering classes, out of SelectionDAGISel.cpp and put
it in a separate file, SelectionDAGBuild.cpp.

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

16 years agoFix maxo bado thinko.
Duncan Sands [Wed, 3 Sep 2008 16:10:55 +0000 (16:10 +0000)]
Fix maxo bado thinko.

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

16 years agoSeparate MachineInstr-emitting routines from actual scheduling
Dan Gohman [Wed, 3 Sep 2008 16:01:59 +0000 (16:01 +0000)]
Separate MachineInstr-emitting routines from actual scheduling
routines and move them into a separate file, ScheduleDAGEmit.cpp.

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

16 years agoFix addRegisterDead and addRegisterKilled to be more thorough
Dan Gohman [Wed, 3 Sep 2008 15:56:16 +0000 (15:56 +0000)]
Fix addRegisterDead and addRegisterKilled to be more thorough
when searching for redundant subregister dead/kill bits.

Previously it was common to see instructions marked like this:
  "RET %EAX<imp-use,kill>, %AX<imp-use,kill>"

With this change, addRegisterKilled continues scanning after
finding the %EAX operand, so it proceeds to discover the
redundant %AX kill and eliminates it, producing this:
  "RET %EAX<imp-use,kill>"

This currently has no effect on the generated code.

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

16 years agoSince onlyReadsMemory returns true if in fact
Duncan Sands [Wed, 3 Sep 2008 15:31:24 +0000 (15:31 +0000)]
Since onlyReadsMemory returns true if in fact
doesNotAccessMemory, check doesNotAccessMemory
first, since otherwise functions may be
marked readonly rather than readnone.

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

16 years agoCleanup GlobalsModRef a bit. When analysing the
Duncan Sands [Wed, 3 Sep 2008 12:55:42 +0000 (12:55 +0000)]
Cleanup GlobalsModRef a bit.  When analysing the
callgraph, when one member of a SCC calls another
then the analysis would drop to mod-ref because
there is (usually) no function info for the callee
yet; fix this.  Teach the analysis about function
attributes, in particular the readonly attribute
(which requires being careful about globals).

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

16 years agoTestcase for PR1678.
Duncan Sands [Wed, 3 Sep 2008 07:52:01 +0000 (07:52 +0000)]
Testcase for PR1678.

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

16 years agoTry to fold each element of a vector. This is needed to maintain structural
Nick Lewycky [Wed, 3 Sep 2008 06:48:55 +0000 (06:48 +0000)]
Try to fold each element of a vector. This is needed to maintain structural
equivalence.

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

16 years agoAdd X86 target hook to implement load (even from GlobalAddress).
Evan Cheng [Wed, 3 Sep 2008 06:44:39 +0000 (06:44 +0000)]
Add X86 target hook to implement load (even from GlobalAddress).

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

16 years agoIf TargetSelectInstruction returns true, move to next instruction.
Evan Cheng [Wed, 3 Sep 2008 06:43:41 +0000 (06:43 +0000)]
If TargetSelectInstruction returns true, move to next instruction.

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

16 years agoMake UpdateValueMap, createResultReg, etc. protected instead of private so they can...
Evan Cheng [Wed, 3 Sep 2008 06:43:10 +0000 (06:43 +0000)]
Make UpdateValueMap, createResultReg, etc. protected instead of private so they can used by target hooks.

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

16 years agoDon't apply this transform to vectors. Fixes PR2756.
Nick Lewycky [Wed, 3 Sep 2008 06:24:21 +0000 (06:24 +0000)]
Don't apply this transform to vectors. Fixes PR2756.

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

16 years agoDon't crash when trying to constant fold a vector with some elements that can't
Nick Lewycky [Wed, 3 Sep 2008 05:54:33 +0000 (05:54 +0000)]
Don't crash when trying to constant fold a vector with some elements that can't
be folded. Instead, fail to fold the entire vector.

We could also return a vector with some elements folded and some not. If anyone
thinks that's a better approach, please speak up!

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

16 years agoFix capitalization in #include of FastISel.h. This unbreaks the build on case-sensit...
Ted Kremenek [Wed, 3 Sep 2008 02:54:11 +0000 (02:54 +0000)]
Fix capitalization in #include of FastISel.h.  This unbreaks the build on case-sensitive filesystems.

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

16 years agoUnbreak fast isel.
Evan Cheng [Wed, 3 Sep 2008 01:04:47 +0000 (01:04 +0000)]
Unbreak fast isel.

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

16 years agoAdd additional check to ensure that iv is canonicalized.
Devang Patel [Wed, 3 Sep 2008 00:29:13 +0000 (00:29 +0000)]
Add additional check to ensure that iv is canonicalized.

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

16 years agoCheck iteration count.
Devang Patel [Wed, 3 Sep 2008 00:10:56 +0000 (00:10 +0000)]
Check iteration count.

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

16 years agoLet tblgen only generate fastisel routines, not the class definition. This makes...
Evan Cheng [Wed, 3 Sep 2008 00:03:49 +0000 (00:03 +0000)]
Let tblgen only generate fastisel routines, not the class definition. This makes it easier for targets to define its own fastisel class.

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

16 years agoWhile removing PHI, use basicblock to identify incoming value.
Devang Patel [Wed, 3 Sep 2008 00:02:42 +0000 (00:02 +0000)]
While removing PHI, use basicblock to identify incoming value.

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

16 years agos/FP_AlwaysInline/FN_NOTE_AlwaysInline/g
Devang Patel [Tue, 2 Sep 2008 22:43:57 +0000 (22:43 +0000)]
s/FP_AlwaysInline/FN_NOTE_AlwaysInline/g

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

16 years agoIf all IV uses are extending integer IV then change the type of IV itself, if possible.
Devang Patel [Tue, 2 Sep 2008 22:18:08 +0000 (22:18 +0000)]
If all IV uses are extending integer IV then change the type of IV itself, if possible.

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

16 years agorespect inline=never and inline=always notes.
Devang Patel [Tue, 2 Sep 2008 22:16:13 +0000 (22:16 +0000)]
respect inline=never and inline=always notes.

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

16 years ago80 col violations.
Evan Cheng [Tue, 2 Sep 2008 21:59:13 +0000 (21:59 +0000)]
80 col violations.

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

16 years agoRead and write function notes.
Devang Patel [Tue, 2 Sep 2008 21:47:13 +0000 (21:47 +0000)]
Read and write function notes.

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

16 years agoUse bitwise AND.
Devang Patel [Tue, 2 Sep 2008 21:46:44 +0000 (21:46 +0000)]
Use bitwise AND.

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

16 years agoNew testcase for targets without 64-bit atomics;
Dale Johannesen [Tue, 2 Sep 2008 21:19:30 +0000 (21:19 +0000)]
New testcase for targets without 64-bit atomics;
xfail old test for ppc.

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

16 years agoFunction notes tests.
Devang Patel [Tue, 2 Sep 2008 20:58:16 +0000 (20:58 +0000)]
Function notes tests.

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

16 years agoPrint function notes.
Devang Patel [Tue, 2 Sep 2008 20:56:33 +0000 (20:56 +0000)]
Print function notes.

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

16 years agoParse function notes.
Devang Patel [Tue, 2 Sep 2008 20:52:40 +0000 (20:52 +0000)]
Parse function notes.

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

16 years agoInitialize function notes.
Devang Patel [Tue, 2 Sep 2008 20:51:15 +0000 (20:51 +0000)]
Initialize function notes.

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

16 years agoFix some bugs in the code sequences for atomics.
Dale Johannesen [Tue, 2 Sep 2008 20:30:23 +0000 (20:30 +0000)]
Fix some bugs in the code sequences for atomics.

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

16 years agoEnsure that HandlePHINodesInSuccessorBlocks is run for all blocks,
Dan Gohman [Tue, 2 Sep 2008 20:17:56 +0000 (20:17 +0000)]
Ensure that HandlePHINodesInSuccessorBlocks is run for all blocks,
even in FastISel mode in the case where FastISel successfully
selects all the instructions.

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

16 years agoGetter and setter for function notes.
Devang Patel [Tue, 2 Sep 2008 18:33:55 +0000 (18:33 +0000)]
Getter and setter for function notes.

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

16 years agoReapply majority of r55557 but with the changes to compilation flags
Daniel Dunbar [Tue, 2 Sep 2008 17:35:16 +0000 (17:35 +0000)]
Reapply majority of r55557 but with the changes to compilation flags
disabled until issues with gcc 4.1 on linux 32-bit are resolved.

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

16 years agoplug memleak: destroy internal buffer
Nuno Lopes [Tue, 2 Sep 2008 12:06:08 +0000 (12:06 +0000)]
plug memleak: destroy internal buffer

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

16 years agoplug a little memleak in verifyFunction()
Nuno Lopes [Tue, 2 Sep 2008 11:30:10 +0000 (11:30 +0000)]
plug a little memleak in verifyFunction()
# first commit to llvm, so whatch out :)

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

16 years agoRevert r55557, it is causing linking failures on 32bit linux.
Matthijs Kooijman [Tue, 2 Sep 2008 09:51:00 +0000 (09:51 +0000)]
Revert r55557, it is causing linking failures on 32bit linux.

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

16 years agoMMI may be null.
Evan Cheng [Tue, 2 Sep 2008 08:14:01 +0000 (08:14 +0000)]
MMI may be null.

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

16 years agoAdd Mac OS X compatible JIT callback routine.
Evan Cheng [Tue, 2 Sep 2008 07:49:03 +0000 (07:49 +0000)]
Add Mac OS X compatible JIT callback routine.

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

16 years agoRevamp ARM JIT.
Evan Cheng [Tue, 2 Sep 2008 06:52:38 +0000 (06:52 +0000)]
Revamp ARM JIT.

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

16 years agoChange getBinaryCodeForInstr prototype. First operand MachineInstr& should be const...
Evan Cheng [Tue, 2 Sep 2008 06:51:36 +0000 (06:51 +0000)]
Change getBinaryCodeForInstr prototype. First operand MachineInstr& should be const. Make corresponding changes.

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

16 years agoProvide two overloads of AnalyzeNewNode.
Gabor Greif [Mon, 1 Sep 2008 15:10:19 +0000 (15:10 +0000)]
Provide two overloads of AnalyzeNewNode.

The first can update the SDNode in an SDValue
while the second is called with SDNode* and
returns a possibly updated SDNode*.

This patch has no intended functional impact,
but helps eliminating ugly temporary SDValues.

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

16 years agoEven though no caller actually uses the new value
Duncan Sands [Mon, 1 Sep 2008 13:11:13 +0000 (13:11 +0000)]
Even though no caller actually uses the new value
(what matters is that it is added to the worklist),
it seems more logical to return it.

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

16 years agoTurn this legalize types test on.
Duncan Sands [Mon, 1 Sep 2008 12:00:55 +0000 (12:00 +0000)]
Turn this legalize types test on.

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

16 years agoAdd a small pass that sets the readnone/readonly
Duncan Sands [Mon, 1 Sep 2008 11:40:11 +0000 (11:40 +0000)]
Add a small pass that sets the readnone/readonly
attributes on functions, based on the result of
alias analysis.  It's not hardwired to use
GlobalsModRef even though this is the only (AFAIK)
alias analysis that results in this pass actually
doing something.  Enable as follows:
  opt ... -globalsmodref-aa -markmodref ...
Advantages of this pass: (1) records the result
of globalsmodref in the bitcode, meaning it is
available for use by later passes (currently
the pass manager isn't smart enough to magically
make an advanced alias analysis available to all
later passes), which may expose more optimization
opportunities; (2) hopefully speeds up compilation
when code is optimized twice, for example when a
file is compiled to bitcode, then later LTO is done
on it: marking functions readonly/readnone when
producing the initial bitcode should speed up alias
analysis during LTO; (3) good for discovering that
globalsmodref doesn't work very well :)
Not currently turned on by default.

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

16 years agoControl flow instruction encodings.
Evan Cheng [Mon, 1 Sep 2008 08:25:56 +0000 (08:25 +0000)]
Control flow instruction encodings.

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

16 years agoldm / stm instruction encodings.
Evan Cheng [Mon, 1 Sep 2008 07:48:18 +0000 (07:48 +0000)]
ldm / stm instruction encodings.

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

16 years agoAXI2 and AXI3 instruction encodings.
Evan Cheng [Mon, 1 Sep 2008 07:34:13 +0000 (07:34 +0000)]
AXI2 and AXI3 instruction encodings.

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

16 years agoReorganize instruction formats again; AXI1 encoding.
Evan Cheng [Mon, 1 Sep 2008 07:19:00 +0000 (07:19 +0000)]
Reorganize instruction formats again; AXI1 encoding.

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

16 years agoaddrmode3 instruction encodings.
Evan Cheng [Mon, 1 Sep 2008 07:00:14 +0000 (07:00 +0000)]
addrmode3 instruction encodings.

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

16 years agoReorganize some instruction format definitions. No functionality change.
Evan Cheng [Mon, 1 Sep 2008 01:51:14 +0000 (01:51 +0000)]
Reorganize some instruction format definitions. No functionality change.

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

16 years agoRest of addrmode2 instruction encodings.
Evan Cheng [Mon, 1 Sep 2008 01:27:33 +0000 (01:27 +0000)]
Rest of addrmode2 instruction encodings.

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

16 years agoAddr2 word / byte load encodings.
Evan Cheng [Sun, 31 Aug 2008 19:02:21 +0000 (19:02 +0000)]
Addr2 word / byte load encodings.

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

16 years agoAddr1 instructions opcodes are encoded in bits 21-24; encode S bit.
Evan Cheng [Sun, 31 Aug 2008 18:32:16 +0000 (18:32 +0000)]
Addr1 instructions opcodes are encoded in bits 21-24; encode S bit.

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

16 years agofix a bunch of 80-col violations
Gabor Greif [Sun, 31 Aug 2008 15:37:04 +0000 (15:37 +0000)]
fix a bunch of 80-col violations

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

16 years agoRevert the "XFAIL" for the rotate_ops.ll testcase. Instead, mark ISD::ROTR
Bill Wendling [Sun, 31 Aug 2008 02:59:23 +0000 (02:59 +0000)]
Revert the "XFAIL" for the rotate_ops.ll testcase. Instead, mark ISD::ROTR
instructions in CellSPU as "Expand" so that they won't be generated. I added a
"FIXME" so that this hack can be addressed and reverted once ISD::ROTR is
supported in the .td files.

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

16 years agoExpand for ROTR with MVT::i64.
Bill Wendling [Sun, 31 Aug 2008 02:53:19 +0000 (02:53 +0000)]
Expand for ROTR with MVT::i64.

Dale, Could you please review this?

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

16 years agoCellSPU doesn't appear to support fully the "ISD::ROTR" operation. The DAG
Bill Wendling [Sun, 31 Aug 2008 02:32:12 +0000 (02:32 +0000)]
CellSPU doesn't appear to support fully the "ISD::ROTR" operation. The DAG
combiner can now generate ROTR if the backend says that it can handle it. Cell
SPU says this, but gets an error from code gen saying that it can't select
ROTR. I'm xfailing this test until this can be fixed.

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

16 years agoCosmetic changes to Machine LICM. No functionality change.
Bill Wendling [Sun, 31 Aug 2008 02:30:23 +0000 (02:30 +0000)]
Cosmetic changes to Machine LICM. No functionality change.

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

16 years agoAnother situation where ROTR is cheaper than ROTL.
Bill Wendling [Sun, 31 Aug 2008 01:13:31 +0000 (01:13 +0000)]
Another situation where ROTR is cheaper than ROTL.

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

16 years agoFor this pattern, ROTR is the cheaper option.
Bill Wendling [Sun, 31 Aug 2008 01:04:56 +0000 (01:04 +0000)]
For this pattern, ROTR is the cheaper option.

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

16 years ago- Fix comment so that it describes how the code really works:
Bill Wendling [Sun, 31 Aug 2008 00:37:27 +0000 (00:37 +0000)]
- Fix comment so that it describes how the code really works:

   // fold (or (shl x, (*ext y)), (srl x, (*ext (sub 32, y)))) ->
   //   (rotl x, y)
   // fold (or (shl x, (*ext y)), (srl x, (*ext (sub 32, y)))) ->
   //   (rotr x, (sub 32, y))

Example: (x == 0xDEADBEEF and y == 4)

    (x << 4) | (x >> 28)
 => 0xEADBEEF0 | 0x0000000D
 => 0xEADBEEFD

    (rotl x, 4)
 => 0xEADBEEFD

    (rotr x, 28)
 => 0xEADBEEFD

- Fix comment and code for second version. It wasn't using the rot* propertly.

   // fold (or (shl x, (*ext (sub 32, y))), (srl x, (*ext r))) ->
   //   (rotr x, y)
   // fold (or (shl x, (*ext (sub 32, y))), (srl x, (*ext r))) ->
   //   (rotl x, (sub 32, y))

    (x << 28) | (x >> 4)
 => 0xD0000000 | 0x0DEADBEE
 => 0xDDEADBEE

    (rotl x, 4)
 => 0xEADBEEFD

    (rotr x, 28)
 => (0xEADBEEFD)

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

16 years agotypo
Gabor Greif [Sat, 30 Aug 2008 22:16:05 +0000 (22:16 +0000)]
typo

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

16 years agofix some 80-col violations
Gabor Greif [Sat, 30 Aug 2008 19:29:20 +0000 (19:29 +0000)]
fix some 80-col violations

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

16 years agoPR2731: C and Ocaml bindings for setTailCall and isTailCall.
Gordon Henriksen [Sat, 30 Aug 2008 16:34:54 +0000 (16:34 +0000)]
PR2731: C and Ocaml bindings for setTailCall and isTailCall.

Based on patch by Giorgos Korfiatis.

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

16 years agoFix ConstantExpr::getInsertElement.
Gordon Henriksen [Sat, 30 Aug 2008 15:41:51 +0000 (15:41 +0000)]
Fix ConstantExpr::getInsertElement.

Breakage was exposed in the Ocaml bindings tests after Chris
uncommented an assertion in r55084.

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

16 years agofix some 80-col violations
Gabor Greif [Sat, 30 Aug 2008 10:09:02 +0000 (10:09 +0000)]
fix some 80-col violations

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

16 years agoRe-apply 55467 with fix. If copy is being replaced by remat'ed def, transfer the...
Evan Cheng [Sat, 30 Aug 2008 09:09:33 +0000 (09:09 +0000)]
Re-apply 55467 with fix. If copy is being replaced by remat'ed def, transfer the implicit defs onto the remat'ed instruction.

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

16 years agoFold isRematerializable checks into isSafeToReMat.
Evan Cheng [Sat, 30 Aug 2008 09:07:18 +0000 (09:07 +0000)]
Fold isRematerializable checks into isSafeToReMat.

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

16 years agoFor now, can't mark XOR64rr isAsCheapAsAMove. It's technically correct. But various...
Evan Cheng [Sat, 30 Aug 2008 08:54:22 +0000 (08:54 +0000)]
For now, can't mark XOR64rr isAsCheapAsAMove. It's technically correct. But various passes cannot handle remating these.

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

16 years agoTransform (x << (y&31)) -> (x << y). This takes advantage of the fact x86 shift instr...
Evan Cheng [Sat, 30 Aug 2008 02:03:58 +0000 (02:03 +0000)]
Transform (x << (y&31)) -> (x << y). This takes advantage of the fact x86 shift instructions 2nd operand (shift count) is limited to 0 to 31 (or 63 in the x86-64 case).

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

16 years agoEnable -fvisibility-inlines-hidden by default for compilers which
Daniel Dunbar [Sat, 30 Aug 2008 01:16:19 +0000 (01:16 +0000)]
Enable -fvisibility-inlines-hidden by default for compilers which
support it.

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

16 years agoTestcases for ppc atomics.
Dale Johannesen [Sat, 30 Aug 2008 00:54:31 +0000 (00:54 +0000)]
Testcases for ppc atomics.

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

16 years agoFix an issue where a use might be selected before a def, and then we didn't respect...
Owen Anderson [Sat, 30 Aug 2008 00:38:46 +0000 (00:38 +0000)]
Fix an issue where a use might be selected before a def, and then we didn't respect the pre-chosen vreg
assignment when selecting the def.  This is the naive solution to the problem: insert a copy to the pre-chosen
vreg.  Other solutions might be preferable, such as:
  1) Passing the dest reg into FastEmit_.  However, this would require the higher level code to know about reg classes, which they don't currently.
  2) Selecting blocks in reverse postorder.  This has some compile time cost for computing the order, and we'd need to measure its impact.

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

16 years agoAdd ppc partial-word ATOMIC_CMP_SWAP.
Dale Johannesen [Sat, 30 Aug 2008 00:08:53 +0000 (00:08 +0000)]
Add ppc partial-word ATOMIC_CMP_SWAP.

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

16 years agoSwap fp comparison operands and change predicate to allow load folding (safely this...
Evan Cheng [Fri, 29 Aug 2008 23:22:12 +0000 (23:22 +0000)]
Swap fp comparison operands and change predicate to allow load folding (safely this time).

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

16 years agoUse static_cast instead of C style cast.
Evan Cheng [Fri, 29 Aug 2008 23:21:31 +0000 (23:21 +0000)]
Use static_cast instead of C style cast.

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

16 years agoFix 80 col. violations.
Evan Cheng [Fri, 29 Aug 2008 23:20:46 +0000 (23:20 +0000)]
Fix 80 col. violations.

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

16 years agoxfail this.
Evan Cheng [Fri, 29 Aug 2008 22:59:13 +0000 (22:59 +0000)]
xfail this.

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

16 years agoBack out 55498. It broken Apple style bootstrapping.
Evan Cheng [Fri, 29 Aug 2008 22:21:44 +0000 (22:21 +0000)]
Back out 55498. It broken Apple style bootstrapping.

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

16 years agoBacking out 55521. Not safe.
Evan Cheng [Fri, 29 Aug 2008 22:13:21 +0000 (22:13 +0000)]
Backing out 55521. Not safe.

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

16 years agoAdd partial word version of ATOMIC_SWAP.
Dale Johannesen [Fri, 29 Aug 2008 18:29:46 +0000 (18:29 +0000)]
Add partial word version of ATOMIC_SWAP.

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

16 years agoAdd initial support for fast isel of instructions that have inputs pinned to physical...
Owen Anderson [Fri, 29 Aug 2008 17:45:56 +0000 (17:45 +0000)]
Add initial support for fast isel of instructions that have inputs pinned to physical registers.

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

16 years agoregenerate
Chris Lattner [Fri, 29 Aug 2008 17:20:18 +0000 (17:20 +0000)]
regenerate

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

16 years agoAsmprint nameless instructions as:
Chris Lattner [Fri, 29 Aug 2008 17:19:30 +0000 (17:19 +0000)]
Asmprint nameless instructions as:

%4 = add ...

instead of:

add ...    ; 4

This makes opt -print-cfg output actually usable and makes .ll files
generally easier to read.  This fixes PR2480

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

16 years agoallow this to pass.
Chris Lattner [Fri, 29 Aug 2008 17:18:26 +0000 (17:18 +0000)]
allow this to pass.

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

16 years agoAdd support for parsing .ll files that have numbers in front of
Chris Lattner [Fri, 29 Aug 2008 17:12:13 +0000 (17:12 +0000)]
Add support for parsing .ll files that have numbers in front of
nameless values, such as:

%3 = add i32 4, 2

This fixes the first half of PR2480

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

16 years agoTableGen'ing instruction encodings.
Evan Cheng [Fri, 29 Aug 2008 07:42:03 +0000 (07:42 +0000)]
TableGen'ing instruction encodings.

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

16 years agoaddrmode1 (data processing) instruction encoding: bits 5-6 are 0, bits 7-10 encode...
Evan Cheng [Fri, 29 Aug 2008 07:40:52 +0000 (07:40 +0000)]
addrmode1 (data processing) instruction encoding: bits 5-6 are 0, bits 7-10 encode the opcode.

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

16 years agoMVN is addrmode1.
Evan Cheng [Fri, 29 Aug 2008 07:36:24 +0000 (07:36 +0000)]
MVN is addrmode1.

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

16 years agoAdd GlobalValue::{removeFromParent,eraseFromParent}
Daniel Dunbar [Fri, 29 Aug 2008 07:30:15 +0000 (07:30 +0000)]
Add GlobalValue::{removeFromParent,eraseFromParent}

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

16 years agoMore refactoring.
Evan Cheng [Fri, 29 Aug 2008 06:41:12 +0000 (06:41 +0000)]
More refactoring.

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

16 years agoAdd DenseMap::lookup:
Daniel Dunbar [Fri, 29 Aug 2008 00:48:44 +0000 (00:48 +0000)]
Add DenseMap::lookup:
  /// lookup - Return the entry for the specified key, or a default
  /// constructed value if no such entry exists.

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

16 years agoSwap fp comparison operands and change predicate to allow load folding.
Evan Cheng [Thu, 28 Aug 2008 23:48:31 +0000 (23:48 +0000)]
Swap fp comparison operands and change predicate to allow load folding.

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