summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
Commit message (Collapse)AuthorAgeFilesLines
...
* Fold immediates into X86 shifts with fast isel. This generates:Chris Lattner2008-09-211-15/+24
| | | | | | | | | | | | | sarl $3, %ecx instead of: movl $3, %ecx sarl %cl, %edx This shrinks fast isel 176.gcc by about 2000 instructions (.3%) llvm-svn: 56413
* Instead of building a list and sorting it just to find a maximum element,Dan Gohman2008-09-211-26/+9
| | | | | | compute the maximum element directly. llvm-svn: 56411
* add a noteChris Lattner2008-09-201-1/+32
| | | | llvm-svn: 56391
* No need to print function stubs for Mac OS X 10.5 and up. Linker will handle it.Evan Cheng2008-09-201-3/+10
| | | | llvm-svn: 56378
* 80 column violation.Evan Cheng2008-09-201-4/+8
| | | | llvm-svn: 56377
* Fix a FastISel GlobalVariable CSE bug.Dan Gohman2008-09-191-2/+4
| | | | llvm-svn: 56376
* Refactor X86SelectConstAddr, folding it into X86SelectAddress. ThisDan Gohman2008-09-191-80/+66
| | | | | | | results in better code for globals. Also, unbreak the local CSE for GlobalValue stub loads. llvm-svn: 56371
* Address-mode folding for X86FastISel. It's pretty basic, but itDan Gohman2008-09-181-18/+95
| | | | | | | | catches a fair number of common cases. Note that this currently causes Fast-ISel to leave behind lots of dead instructions. Those will be dealt with in subsequent commits. llvm-svn: 56320
* Simplify this code. The FastISel class has its own TD member.Dan Gohman2008-09-181-4/+3
| | | | llvm-svn: 56311
* Duh. Default to ARMCC::AL (always).Evan Cheng2008-09-181-23/+63
| | | | llvm-svn: 56301
* Clean up.Evan Cheng2008-09-181-4/+8
| | | | llvm-svn: 56300
* Cosmetic.Evan Cheng2008-09-181-3/+5
| | | | llvm-svn: 56299
* FastISel: For calls, prefer using the callee's address as a constantDan Gohman2008-09-171-10/+13
| | | | | | | | | | | | over having it in a register. And wait until after checking type legality before requesting that the callee address be placed in a register. Also, fix support for calls with void return type. This speeds up fast-isel isel time by about 15% and reduces instruction counts by about 3% overall on certain testcases. It also changes many indirect calls to direct calls. llvm-svn: 56292
* Fix addrmode1 instruction encodings; fix bx_ret encoding.Evan Cheng2008-09-173-37/+49
| | | | llvm-svn: 56277
* Specify instruction encoding using range list to avoid endianess issues.Evan Cheng2008-09-171-25/+26
| | | | llvm-svn: 56276
* Simplify and generalize X86DAGToDAGISel::CanBeFoldedBy, and drawDan Gohman2008-09-171-56/+48
| | | | | | | up some new ascii art to illustrate what it does. This change currently has no effect on generated code. llvm-svn: 56270
* Add trampoline support to PPC. GCC simply calls the "__trampoline_setup"Bill Wendling2008-09-172-7/+50
| | | | | | function with appropriate parameters. This allows us to support blocks on PPC. llvm-svn: 56267
* Reverting r56249. On further investigation, this functionality isn't needed.Bill Wendling2008-09-1615-84/+85
| | | | | | Apologies for the thrashing. llvm-svn: 56251
* - Change "ExternalSymbolSDNode" to "SymbolSDNode".Bill Wendling2008-09-1615-85/+84
| | | | | | | | | | - Add linkage to SymbolSDNode (default to external). - Change ISD::ExternalSymbol to ISD::Symbol. - Change ISD::TargetExternalSymbol to ISD::TargetSymbol These changes pave the way to allowing SymbolSDNodes with non-external linkage. llvm-svn: 56249
* Fixed Bug 2751Bruno Cardoso Lopes2008-09-152-4/+4
| | | | | | | | | | | http://llvm.org/bugs/show_bug.cgi?id=2751 Abicall was enabled even when static code model was provided in the command line. The correct behavior is to disable abicall when static is specified. llvm-svn: 56228
* Remove isImm(), isReg(), and friends, in favor of Dan Gohman2008-09-137-37/+39
| | | | | | | | | isImmediate(), isRegister(), and friends, to avoid confusion about having two different names with the same meaning. I'm not attached to the longer names, and would be ok with changing to the shorter names if others prefer it. llvm-svn: 56189
* Fix random abort.Evan Cheng2008-09-131-2/+4
| | | | llvm-svn: 56184
* Define CallSDNode, an SDNode subclass for use with ISD::CALL.Dan Gohman2008-09-139-129/+121
| | | | | | | | | | | | | Currently it just holds the calling convention and flags for isVarArgs and isTailCall. And it has several utility methods, which eliminate magic 5+2*i and similar index computations in several places. CallSDNodes are not CSE'd. Teach UpdateNodeOperands to handle nodes that are not CSE'd gracefully. llvm-svn: 56183
* Typo.Evan Cheng2008-09-131-3/+3
| | | | llvm-svn: 56182
* Rely on instruction format to determine so_reg operand for now.Evan Cheng2008-09-131-1/+5
| | | | llvm-svn: 56181
* Revert 56176. All those instruction formats are still needed.Evan Cheng2008-09-134-49/+84
| | | | llvm-svn: 56180
* Accidentially flipped the condition.Evan Cheng2008-09-131-1/+1
| | | | llvm-svn: 56179
* Add debug dumps.Evan Cheng2008-09-131-0/+5
| | | | llvm-svn: 56178
* Eliminate unnecessary instruction formats.Evan Cheng2008-09-124-90/+51
| | | | llvm-svn: 56176
* Addrmode 1 S bit can be dynamically set. Look for CPSR def.Evan Cheng2008-09-122-28/+42
| | | | llvm-svn: 56172
* Rewrite address mode 1 code emission routines.Evan Cheng2008-09-122-129/+104
| | | | llvm-svn: 56171
* Rename ConstantSDNode::getValue to getZExtValue, for consistencyDan Gohman2008-09-1231-348/+392
| | | | | | | with ConstantInt. This led to fixing a bug in TargetLowering.cpp using getValue instead of getAPIntValue. llvm-svn: 56159
* udpate header comment: s/VP/VFP/Jim Grosbach2008-09-111-1/+1
| | | | llvm-svn: 56126
* When tailcallopt is enabled all fastcc calls must have an aligned argument ↵Arnold Schwaighofer2008-09-111-1/+1
| | | | | | stack size. Add a test case. llvm-svn: 56119
* Fix a bug in ANY_EXTEND handling that was breaking 403.gcc on X86-64 in fast ↵Owen Anderson2008-09-111-2/+7
| | | | | | isel. llvm-svn: 56117
* The version of AtomicSDNode::AtomicSDNode used (only) forDale Johannesen2008-09-111-6/+6
| | | | | | | | | | | | | cmp-and-swap reversed the Cmp and Swap arguments; comments make it clear this is unintentional. Unfortunately, the x86 BE had a compensating reversal, which is removed here. PPC is OK. From inspection of the Alpha code I think it is OK, but if somebody has that platform please check it out. I cannot test on that platform. llvm-svn: 56091
* If ISD::ANY_EXTEND fails, try ISD::ZERO_EXTEND and ISD::SIGN_EXTEND before ↵Owen Anderson2008-09-111-0/+7
| | | | | | | | giving up. This fixes 445.gobmk on X86-64 in fast isel. llvm-svn: 56088
* Succumb utterly to compatibility and implementDale Johannesen2008-09-111-4/+4
| | | | | | | __sync_fetch_and_nand as ANDC, even though that's not what nand means. llvm-svn: 56087
* X86FastISel support for double->float and float->double casts.Dan Gohman2008-09-101-0/+43
| | | | llvm-svn: 56070
* Add X86FastISel support for static allocas, and refencesDan Gohman2008-09-103-63/+82
| | | | | | | to static allocas. As part of this change, refactor the address mode code for laods and stores. llvm-svn: 56066
* Fix a fastcc + sret bug. If fastcc and sret, callee doesn't need to pop the ↵Evan Cheng2008-09-101-2/+4
| | | | | | hidden struct ptr; Re-enable fastcc. llvm-svn: 56061
* Handle new intrinsics with vector arguments.Dale Johannesen2008-09-101-0/+5
| | | | | | Patch by Paul Redmond. llvm-svn: 56059
* Fix name.Duncan Sands2008-09-101-1/+1
| | | | llvm-svn: 56055
* Add trampoline support for the new FastCC callingDuncan Sands2008-09-101-0/+1
| | | | | | | convention (not related to recent Ada testsuite failures). llvm-svn: 56054
* Turn off the new FastCC for the moment. It causesDuncan Sands2008-09-101-2/+0
| | | | | | | a slew of Ada testsuite failures on x86-32 linux. Seems to be related to the use of float. llvm-svn: 56053
* Move the uglier parts of deciding not to emit aDale Johannesen2008-09-091-0/+21
| | | | | | | | | UsedDirective for some symbols in llvm.used into Darwin-specific code. I've decided LessPrivateGlobal is potentially a useful abstraction and left it in the target-independent area, with improved comment. llvm-svn: 56024
* Make safer variant of alias resolution routine to be defaultAnton Korobeynikov2008-09-091-1/+1
| | | | llvm-svn: 56005
* Mark IMPLICIT_DEF as being rematerializable and cheap-as-a-move.Dan Gohman2008-09-091-0/+2
| | | | | | | | It's already special-cased and treated as rematerializable within LiveIntervals; this allows it to be handled by other passes such as TwoAddressInstrctionPass. llvm-svn: 55999
* Replace explicit pointer-size constants to TargetData query.Anton Korobeynikov2008-09-092-14/+12
| | | | | | No functionality change. llvm-svn: 55996
* Fix a constant lowering bug. Now we can do load and store instructions with ↵Evan Cheng2008-09-091-28/+43
| | | | | | funky getelementptr embedded in the address operand. llvm-svn: 55975
OpenPOWER on IntegriCloud