summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86ISelLowering.cpp
Commit message (Collapse)AuthorAgeFilesLines
* reapply r101364, which has been backed out in r101368Gabor Greif2010-04-151-2/+2
| | | | | | | | | | | | | with a fix rotate CallInst operands, i.e. move callee to the back of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary llvm-svn: 101397
* back out r101364, as it trips the linux nightlybot on some clang C++ testsGabor Greif2010-04-151-2/+2
| | | | llvm-svn: 101368
* rotate CallInst operands, i.e. move callee to the backGabor Greif2010-04-151-2/+2
| | | | | | | | | | of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary llvm-svn: 101364
* Add const qualifiers to CodeGen's use of LLVM IR constructs.Dan Gohman2010-04-151-4/+5
| | | | llvm-svn: 101334
* Allow lowering for palignr instructions for mmx sized vectors. AddEric Christopher2010-04-151-2/+2
| | | | | | patterns to handle the lowering. llvm-svn: 101331
* Factor out EH landing pad code into a separate function, and constifyDan Gohman2010-04-141-1/+1
| | | | | | a bunch of stuff to support it. llvm-svn: 101273
* Avoid using f64 to lower memcpy from constant string. It's cheaper to use ↵Evan Cheng2010-04-081-11/+18
| | | | | | i32 store of immediates. llvm-svn: 100751
* rename llvm::llvm_report_error -> llvm::report_fatal_errorChris Lattner2010-04-071-3/+3
| | | | llvm-svn: 100709
* Clean up some signedness oddities in this code noticed by clang.John McCall2010-04-071-5/+6
| | | | llvm-svn: 100599
* unthread MMI from FastISelChris Lattner2010-04-051-2/+2
| | | | llvm-svn: 100416
* fastisel doesn't need DwarfWriter, remove some tendricles.Chris Lattner2010-04-051-2/+1
| | | | llvm-svn: 100381
* Reapply address space patch after fixing an issue in MemCopyOptimizer.Mon P Wang2010-04-041-6/+8
| | | | | | | Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) llvm-svn: 100304
* use DebugLoc default ctor instead of DebugLoc::getUnknownLoc()Chris Lattner2010-04-021-11/+7
| | | | llvm-svn: 100214
* Correctly lower memset / memcpy of undef. It should be a nop. PR6767.Evan Cheng2010-04-021-7/+9
| | | | llvm-svn: 100208
* Revert r100191 since it breaks objc in clang Mon P Wang2010-04-021-8/+6
| | | | llvm-svn: 100199
* Reapply address space patch after fixing an issue in MemCopyOptimizer.Mon P Wang2010-04-021-6/+8
| | | | | | | Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) llvm-svn: 100191
* Remove FIXME - if there's a better way to do this it isn't here.Eric Christopher2010-04-021-3/+0
| | | | llvm-svn: 100176
* Disambiguate conditional expression for newer GCCs.Chandler Carruth2010-04-021-2/+2
| | | | llvm-svn: 100167
* In 64-bit mode, use i64 to lower memcpy / memset instead of f64.Evan Cheng2010-04-011-0/+1
| | | | llvm-svn: 100137
* Add comments about DstAlign and SrcAlign.Evan Cheng2010-04-011-3/+6
| | | | llvm-svn: 100132
* - Avoid using floating point stores to implement memset unless the value is ↵Evan Cheng2010-04-011-2/+4
| | | | | | | | zero. - Do not try to infer GV alignment unless its type is sized. It's not possible to infer alignment if it has opaque type. llvm-svn: 100118
* Fix sdisel memcpy, memset, memmove lowering:Evan Cheng2010-04-011-9/+17
| | | | | | | | | | | | | 1. Makes it possible to lower with floating point loads and stores. 2. Avoid unaligned loads / stores unless it's fast. 3. Fix some memcpy lowering logic bug related to when to optimize a load from constant string into a constant. 4. Adjust x86 memcpy lowering threshold to make it more sane. 5. Fix x86 target hook so it uses vector and floating point memory ops more effectively. rdar://7774704 llvm-svn: 100090
* Revert Mon Ping's change 99928, since it broke all the llvm-gcc buildbots.Bob Wilson2010-03-301-8/+6
| | | | llvm-svn: 99948
* Added support for address spaces and added a isVolatile field to memcpy, ↵Mon P Wang2010-03-301-6/+8
| | | | | | | | | memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) A update of langref will occur in a subsequent checkin. llvm-svn: 99928
* Rip out the 'is temporary' nonsense from the MCContext interface toChris Lattner2010-03-301-2/+2
| | | | | | | | | create symbols. It is extremely error prone and a source of a lot of the remaining integrated assembler bugs on x86-64. This fixes rdar://7807601. llvm-svn: 99902
* Add FIXME for operand promotion.Eric Christopher2010-03-301-0/+4
| | | | llvm-svn: 99859
* Make isInt?? and isUint?? template specializations of the generic versions. ThisBenjamin Kramer2010-03-291-1/+1
| | | | | | | makes calls a little bit more consistent and allows easy removal of the specializations in the future. Convert all callers to the templated functions. llvm-svn: 99838
* Do not sibcall if stack needs to be dynamically aligned.Evan Cheng2010-03-261-0/+6
| | | | llvm-svn: 99620
* Allow trivial sibcall of vararg callee when no arguments are being passed.Evan Cheng2010-03-261-2/+3
| | | | llvm-svn: 99598
* Per chris's request, add some comments.Nate Begeman2010-03-241-2/+17
| | | | llvm-svn: 99434
* BUILD_VECTOR was missing out on some prime opportunities to use SSE 4.1 inserts.Nate Begeman2010-03-241-75/+68
| | | | llvm-svn: 99423
* If call result is in ST0 and it is not being passed to the caller'sEvan Cheng2010-03-201-0/+22
| | | | | | | caller, then it is not safe to optimize the call into a sibcall since the call result has to be popped off the x87 stack. llvm-svn: 99032
* MC: Allow modifiers in MCSymbolRefExpr, and eliminate X86MCTargetExpr.Daniel Dunbar2010-03-151-3/+3
| | | | | | | - Although it would be nice to allow this decoupling, the assembler needs to be able to reason about MCSymbolRefExprs in too many places to make this viable. We can use a target specific encoding of the variant if this becomes an issue. - This patch also extends llvm-mc to support parsing of the modifiers, as opposed to lumping them in with the symbol. llvm-svn: 98592
* Recognize code for doing vector gather/scatter index calculations withDan Gohman2010-03-151-0/+84
| | | | | | | | 32-bit indices. Instead of shuffling each element out of the index vector, when all indices are needed, just store the input vector to the stack and load the elements out. llvm-svn: 98588
* Now that the default for Darwin platforms is to place the LSDA into the TEXTBill Wendling2010-03-151-6/+0
| | | | | | section, remove the target-specific code that performs this. llvm-svn: 98580
* Place the LSDA into the TEXT section for x86 Darwin. If the global it's pointingBill Wendling2010-03-151-43/+4
| | | | | | | | | | | to is local to the translation unit, we need to place fill the value of that symbol into the non-lazy pointer. This should conclude all Darwin changes for placing the LSDA into the TEXT section. There is some cleanup to do. I.e., there's no longer a special need for target-specific code here. But that can come later. llvm-svn: 98564
* Avoid sibcall optimization if either caller or callee is using sret semantics.Evan Cheng2010-03-151-3/+10
| | | | llvm-svn: 98561
* fix PR6605, X86ISD::CMP always returns i32 (EFLAGS), notChris Lattner2010-03-141-1/+1
| | | | | | the operand type. llvm-svn: 98507
* add support for pentium class CPUs which do not have cmov,Chris Lattner2010-03-141-0/+5
| | | | | | PR4841. Patch by Craig Smith! llvm-svn: 98496
* Do not force indirect tailcall through fixed registers: eax, r11. Add ↵Evan Cheng2010-03-141-20/+0
| | | | | | support to allow loads to be folded to tail call instructions. llvm-svn: 98465
* eliminate the now-unneeded context argument of MBB::getSymbol()Chris Lattner2010-03-131-1/+1
| | | | llvm-svn: 98451
* Add a beta-test for placing the LSDA into the TEXT section on X86.Bill Wendling2010-03-121-0/+47
| | | | llvm-svn: 98370
* Use StringRef::substr instead of std::string::substr to avoid using a free'dBenjamin Kramer2010-03-121-1/+2
| | | | | | string temporary. This should fix PR6590. llvm-svn: 98349
* Remove getWidenVectorType, which is no longer used.Dan Gohman2010-03-111-38/+0
| | | | llvm-svn: 98289
* revert r98270.Bill Wendling2010-03-111-2/+2
| | | | llvm-svn: 98281
* Bad bad bug. x86 force indirect tail call address into eax when it's meant ↵Evan Cheng2010-03-111-2/+2
| | | | | | to force it into a call preserved register instead. Change it to ecx for now. llvm-svn: 98270
* add support, testcases, and dox for the new GHC callingChris Lattner2010-03-111-11/+23
| | | | | | convention. Patch by David Terei! llvm-svn: 98212
* Progress towards shepherding debug info through SelectionDAG.Dale Johannesen2010-03-101-0/+15
| | | | | | | No functional effect yet. This is still evolving and should not be viewed as final. llvm-svn: 98195
* set the temporary bit on MCSymbols correctly.Chris Lattner2010-03-101-2/+2
| | | | llvm-svn: 98124
* Lower dynamic stack allocation on mingw32 to separate instruction.Anton Korobeynikov2010-03-061-14/+29
| | | | | | | We cannot use a normal call here since it has extra unmodelled side effects (it changes stack pointer). This should fix PR5292. llvm-svn: 97884
OpenPOWER on IntegriCloud