summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* just like they can opt into getting the root of the pattern beingChris Lattner2010-09-211-1/+5
| | | | | | | matched, allow ComplexPatterns to opt into getting the parent node of the operand being matched. llvm-svn: 114472
* fix a long standing wart: all the ComplexPattern's were beingChris Lattner2010-09-2116-139/+126
| | | | | | | | | | | 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. llvm-svn: 114471
* Refix MSVC9 and upper_bound. It actually needs a fully symmetric comparator.Jakob Stoklund Olesen2010-09-211-7/+5
| | | | llvm-svn: 114469
* even though I'm about to rip it out, simplify the address mode stuffChris Lattner2010-09-212-28/+13
| | | | llvm-svn: 114468
* finish pushing MachinePointerInfo through selectiondags. At this point,Chris Lattner2010-09-212-16/+7
| | | | | | | 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. llvm-svn: 114464
* convert a couple more places to use the new getStore()Chris Lattner2010-09-213-11/+16
| | | | llvm-svn: 114463
* update a bunch of code to use the MachinePointerInfo version of getStore.Chris Lattner2010-09-2114-93/+87
| | | | llvm-svn: 114461
* When adding the carry bit to another value on X86, exploit the fact that the ↵Owen Anderson2010-09-211-0/+23
| | | | | | | | | | | 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>. llvm-svn: 114460
* Don't pollute the global namespace.Jakob Stoklund Olesen2010-09-211-0/+2
| | | | llvm-svn: 114459
* MSVC9 does not support upper_bound with an asymmetric comparator.Jakob Stoklund Olesen2010-09-211-6/+10
| | | | llvm-svn: 114455
* Define the TargetLowering::getTgtMemIntrinsic hook for ARM so that NEON loadBob Wilson2010-09-213-1/+66
| | | | | | and store intrinsics are represented with MemIntrinsicSDNodes. llvm-svn: 114454
* eliminate some uses of the getStore overload.Chris Lattner2010-09-213-41/+60
| | | | llvm-svn: 114453
* eliminate an old SelectionDAG::getTruncStore method, propagatingChris Lattner2010-09-218-93/+77
| | | | | | MachinePointerInfo around more. llvm-svn: 114452
* eliminate last SelectionDAG::getLoad old entrypoint, on to stores.Chris Lattner2010-09-213-22/+7
| | | | llvm-svn: 114450
* fix the code that infers SV info to be correct when dealingChris Lattner2010-09-211-28/+53
| | | | | | with an indexed load/store that has an offset in the index. llvm-svn: 114449
* Add LiveInterval::find and use it for most LiveRange searching operationsJakob Stoklund Olesen2010-09-211-68/+8
| | | | | | | | | | | | 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. llvm-svn: 114448
* Remove dead method.Jakob Stoklund Olesen2010-09-211-21/+0
| | | | llvm-svn: 114447
* propagate MachinePointerInfo through various uses of the oldChris Lattner2010-09-2111-297/+283
| | | | | | SelectionDAG::getExtLoad overload, and eliminate it. llvm-svn: 114446
* Fix errant printing of [v]ldm instructions that aren't a popJim Grosbach2010-09-211-32/+24
| | | | llvm-svn: 114445
* Simplify code.Benjamin Kramer2010-09-211-8/+6
| | | | llvm-svn: 114444
* continue MachinePointerInfo'izing, eliminating use of one of the oldChris Lattner2010-09-218-192/+192
| | | | | | getLoad overloads. llvm-svn: 114443
* convert dagcombine off the old form of getLoad. This fixes several bugs Chris Lattner2010-09-211-16/+18
| | | | | | with SVOffset computation. llvm-svn: 114442
* Make CreateComplexVariable independent of SmallVector.Benjamin Kramer2010-09-211-7/+6
| | | | llvm-svn: 114439
* simplify DAGCombiner::SimplifySelectOps step #2/2.Chris Lattner2010-09-211-55/+53
| | | | llvm-svn: 114437
* substantially reduce indentation and simplify DAGCombiner::SimplifySelectOps.Chris Lattner2010-09-211-85/+76
| | | | | | no functionality change (step #1) llvm-svn: 114436
* llvmc: Allow multiple output languages.Mikhail Glushenkov2010-09-211-23/+35
| | | | llvm-svn: 114433
* Fixed ambiguous call.Lang Hames2010-09-211-1/+2
| | | | llvm-svn: 114431
* Fix buglet when the TST instruction directly uses the AND result.Gabor Greif2010-09-211-5/+6
| | | | | | | 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. llvm-svn: 114430
* Added an additional PBQP problem builder which adds coalescing costs (both ↵Lang Hames2010-09-211-14/+127
| | | | | | between pairs of virtuals, and between virtuals and physicals). llvm-svn: 114429
* Move the search for the appropriate AND instructionGabor Greif2010-09-213-23/+47
| | | | | | | | | | into OptimizeCompareInstr. This necessitates the passing of CmpValue around, so widen the virtual functions to accomodate. No functionality changes. llvm-svn: 114428
* a few more trivial updates. This fixes PerformInsertVectorEltInMemory to notChris Lattner2010-09-212-15/+13
| | | | | | | pass a completely incorrect SrcValue, which would result in a miscompile with combiner-aa. llvm-svn: 114411
* convert the targets off the non-MachinePointerInfo of getLoad.Chris Lattner2010-09-2111-102/+116
| | | | llvm-svn: 114410
* add some accessorsChris Lattner2010-09-211-0/+7
| | | | llvm-svn: 114409
* it's more elegant to put the "getConstantPool" andChris Lattner2010-09-215-29/+40
| | | | | | | | "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. llvm-svn: 114406
* update the X86 backend to use the MachinePointerInfo version of oneChris Lattner2010-09-211-38/+44
| | | | | | | of the getLoad methods. This fixes at least one bug where an incorrect svoffset is passed in (a potential combiner-aa miscompile). llvm-svn: 114404
* Fix a bug where the x86 backend would lower memcpy/memset of segment ↵Chris Lattner2010-09-211-0/+9
| | | | | | | | relative operations into non-segment-relative copies. llvm-svn: 114402
* reimplement memcpy/memmove/memset lowering to use MachinePointerInfoChris Lattner2010-09-2110-66/+85
| | | | | | | instead of srcvalue/offset pairs. This corrects SV info for mem operations whose size is > 32-bits. llvm-svn: 114401
* add some helpful accessors.Chris Lattner2010-09-211-0/+8
| | | | llvm-svn: 114400
* add overloads for SelectionDAG::getLoad, getStore, getTruncStore that take aChris Lattner2010-09-211-18/+47
| | | | | | | MachinePointerInfo. Among other virtues, this doesn't silently truncate the svoffset to 32-bits. llvm-svn: 114399
* simplify interface to SelectionDAG::getMemIntrinsicNode, making it take a ↵Chris Lattner2010-09-212-6/+6
| | | | | | MachinePointerInfo llvm-svn: 114397
* chagne interface to SelectionDAG::getAtomic to take a MachinePointerInfo,Chris Lattner2010-09-212-12/+4
| | | | | | eliminating some weird "infer a frame address" logic which was dead. llvm-svn: 114396
* don't implicitly drop the offset of a machinememoperand when legalizing atomics.Chris Lattner2010-09-211-2/+2
| | | | llvm-svn: 114395
* force clients of MachineFunction::getMachineMemOperand to provide aChris Lattner2010-09-213-24/+15
| | | | | | | MachinePointerInfo, propagating the type out a level of API. Remove the old MachineFunction::getMachineMemOperand impl. llvm-svn: 114393
* convert targets to the new MF.getMachineMemOperand interface.Chris Lattner2010-09-219-30/+42
| | | | llvm-svn: 114391
* start pushing MachinePointerInfo out through the MachineMemOperand interfaceChris Lattner2010-09-212-9/+16
| | | | | | to the MachineFunction construction methods. llvm-svn: 114390
* refactor the Value*/offset pair from MachineMemOperand out to a newChris Lattner2010-09-211-5/+5
| | | | | | | | | 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. llvm-svn: 114389
* fix rdar://8453210, a crash handling a call through a GS relative load.Chris Lattner2010-09-211-1/+7
| | | | | | For now, just disable folding the load into the call. llvm-svn: 114386
* Revert unrelated change that was accidentally included in the previous commit.Rafael Espindola2010-09-211-4/+1
| | | | llvm-svn: 114383
* Implement support for .local and its "interesting" interactions with .comm.Rafael Espindola2010-09-213-11/+36
| | | | llvm-svn: 114382
* Enable machine sinking critical edge splitting. e.g.Evan Cheng2010-09-201-7/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 llvm-svn: 114372
OpenPOWER on IntegriCloud