summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Keep track of how many times a live range has been dequeued, and prioritize ↵Jakob Stoklund Olesen2011-02-231-0/+7
| | | | | | | | | | | new ranges. When a large live range is evicted, it will usually be split when it comes around again. By deferring evicted live ranges, the splitting happens at a time when the interference pattern is more realistic. This prevents repeated splitting and evictions. llvm-svn: 126282
* Fix a bug in determining if there is only a single interfering register.Jakob Stoklund Olesen2011-02-231-2/+1
| | | | llvm-svn: 126277
* Be more aggressive about evicting interference.Jakob Stoklund Olesen2011-02-231-26/+88
| | | | | | | | | | | | | Use interval sizes instead of spill weights to determine if it is legal to evict interference. A smaller interval can evict interference if all interfering live ranges are larger. Allow multiple interferences to be evicted as along as they are all larger than the live range being allocated. Spill weights are still used to select the preferred eviction candidate. llvm-svn: 126276
* [AVX] General VUNPCKL codegen support.David Greene2011-02-222-0/+20
| | | | llvm-svn: 126264
* Change the RAGreedy register assignment order so large live ranges are ↵Jakob Stoklund Olesen2011-02-223-47/+69
| | | | | | | | | | | | | | allocated first. This is based on the observation that long live ranges are more difficult to allocate, so there is a better chance of solving the puzzle by handling the big pieces first. The allocator will evict and split long alive ranges when they get in the way. RABasic is still using spill weights for its priority queue, so the interface to the queue has been virtualized. llvm-svn: 126259
* 80 Col.Jakob Stoklund Olesen2011-02-221-2/+1
| | | | llvm-svn: 126258
* Make LoopDeletion work on loops with multiple edges, as long as the incomingCameron Zwarich2011-02-221-8/+15
| | | | | | values from all of the loop's exiting blocks are equal. Patch by Andrew Clinton. llvm-svn: 126253
* Use the same (%dx) hack for in[bwl] as for out[bwl].Joerg Sonnenberger2011-02-221-0/+13
| | | | llvm-svn: 126244
* VFP single precision arith instructions can go down to NEON pipeline, but on ↵Evan Cheng2011-02-226-109/+114
| | | | | | Cortex-A8 only. llvm-svn: 126238
* Follow LLVM coding style. Devang Patel2011-02-221-77/+77
| | | | | | clang uses DBuilder, so it requries corresponding change. llvm-svn: 126231
* Stack alignment is 16 bytes on FreeBSD/i386 too.Roman Divacky2011-02-222-3/+5
| | | | llvm-svn: 126226
* Bug#9172: Don't use static in file scope, use an attribute on theJoerg Sonnenberger2011-02-221-5/+5
| | | | | | parser. llvm-svn: 126225
* MachineConstantPoolValues are not uniqued, so they need to be freed if theyCameron Zwarich2011-02-221-1/+7
| | | | | | | | | share entries. Add a DenseSet to MachineConstantPool for the MachineCPVs that it owns. This will hopefully fix the MC/ARM/elf-reloc-01.ll failure on the leaks bots. llvm-svn: 126218
* Guard against de-referencing MBB.end().Evan Cheng2011-02-221-1/+4
| | | | llvm-svn: 126192
* available_externally (hidden or not) GVs are always accessed via stubs. ↵Evan Cheng2011-02-221-1/+3
| | | | | | rdar://9027648. llvm-svn: 126191
* VirtRegRewriter assertion fix.Andrew Trick2011-02-221-2/+4
| | | | | | | Apparently it's ok for multiple operands to "kill" the same register. Fixes PR9237. llvm-svn: 126190
* Roll out r126169 and r126170 in an attempt to fix the selfhost bot.Cameron Zwarich2011-02-223-59/+9
| | | | llvm-svn: 126185
* Only use blx for external function calls on thumb, these could be fixedEric Christopher2011-02-221-12/+26
| | | | | | | | | up by the dynamic linker, but it's better to use the correct instruction to begin with. Fixes rdar://9011034 llvm-svn: 126176
* Merge information about the number of zero, one, and sign bits of live-out ↵Cameron Zwarich2011-02-223-7/+54
| | | | | | | | | registers at phis. This enables us to eliminate a lot of pointless zexts during the DAGCombine phase. This fixes <rdar://problem/8760114>. llvm-svn: 126170
* Have isel visit blocks in reverse postorder rather than an undefined order. ThisCameron Zwarich2011-02-221-2/+5
| | | | | | allows for the information propagated across basic blocks to be merged at phis. llvm-svn: 126169
* Recognize loopz and loopnz as aliases for loope and loopne.Joerg Sonnenberger2011-02-221-0/+3
| | | | | | From Dimitry Andric. llvm-svn: 126168
* Implement xgetbv and xsetbv.Rafael Espindola2011-02-224-0/+19
| | | | | | Patch by Jai Menon. llvm-svn: 126165
* Revert r125960, it's breaking darwin10 bootstrap.Eric Christopher2011-02-211-4/+8
| | | | llvm-svn: 126163
* Skipping over debugvalue instructions to determine whether the split spot is ↵Evan Cheng2011-02-211-0/+3
| | | | | | in a IT block. rdar://9030770 llvm-svn: 126159
* Add more debugging output.Evan Cheng2011-02-211-2/+4
| | | | llvm-svn: 126158
* Handle FK_PCRel_1 and add a test case for this and FK_PCRel_4.Joerg Sonnenberger2011-02-211-0/+4
| | | | llvm-svn: 126157
* Revert r124611 - "Keep track of incoming argument's location while emitting ↵Devang Patel2011-02-2110-47/+29
| | | | | | | | | | | LiveIns." In other words, do not keep track of argument's location. The debugger (gdb) is not prepared to see line table entries for arguments. For the debugger, "second" line table entry marks beginning of function body. This requires some coordination with debugger to get this working. - The debugger needs to be aware of prolog_end attribute attached with line table entries. - The compiler needs to accurately mark prolog_end in line table entries (at -O0 and at -O1+) llvm-svn: 126155
* Add SplitKit::isOriginalEndpoint and use it to force live range splitting to ↵Jakob Stoklund Olesen2011-02-213-2/+32
| | | | | | | | | | | | | | terminate. An original endpoint is an instruction that killed or defined the original live range before any live ranges were split. When splitting global live ranges, avoid creating local live ranges without any original endpoints. We may still create global live ranges without original endpoints, but such a range won't be split again, and live range splitting still terminates. llvm-svn: 126151
* Fixed a bug in the X86 disassembler where a member of theSean Callanan2011-02-212-5/+5
| | | | | | | | X86 instruction decode structure was being interpreted as being in units of bits, although it is actually stored in units of bytes. llvm-svn: 126147
* End the line if we return early. Radar 9012638.Stuart Hastings2011-02-211-1/+3
| | | | llvm-svn: 126141
* Add XCore intrinsics for various instructions on ports.Richard Osborne2011-02-211-2/+24
| | | | llvm-svn: 126132
* The stack should be 16 byte aligned on 32 bit solaris. Patch by Yuri.Duncan Sands2011-02-212-3/+4
| | | | llvm-svn: 126130
* If the phi node was used by an unreachable instruction that ends up usingDuncan Sands2011-02-211-2/+3
| | | | | | | | | | | | itself without going via a phi node then we could return false here in spite of making a change. Also, tweak the comment because this method can (and always could) return true without deleting the original phi node. For example, if the phi node was used by a read-only invoke instruction which is used by another phi node phi2 which is only used by and only uses the invoke, then phi2 would be deleted but not the invoke instruction and not the original phi node. llvm-svn: 126129
* Fix to correctly support attribute((section("__DATA, __common"))).Stuart Hastings2011-02-212-8/+18
| | | | | | Radar 9012638. llvm-svn: 126127
* a serious "compare CSE" issue that is nontrivial to get right,Chris Lattner2011-02-211-0/+69
| | | | | | but which is responsible for us doing really bad things to 256.bzip2. llvm-svn: 126126
* fix a crasher in disabled code (on variable stride loops)Chris Lattner2011-02-211-1/+1
| | | | llvm-svn: 126125
* Simplify RecursivelyDeleteDeadPHINode. The only functionality changeDuncan Sands2011-02-211-28/+16
| | | | | | | | should be that if the phi is used by a side-effect free instruction with no uses then the phi and the instruction now get zapped (checked by the unittest). llvm-svn: 126124
* Target/X86/X86FastISel: [PR6275] Fix Win32's dllimport function with fastisel.NAKAMURA Takumi2011-02-211-2/+6
| | | | | | | "dllimport" function must not be GlobalVariable, but Function. It is enough to check with GlobalValue. test/CodeGen/X86/dll-linkage.ll is updated to check llc -O0. llvm-svn: 126110
* Generate correct Sparc32 ABI compliant code for functions that return a struct.Venkatraman Govindaraju2011-02-214-8/+84
| | | | llvm-svn: 126108
* add a missed loop deletion case.Chris Lattner2011-02-211-0/+14
| | | | llvm-svn: 126103
* Add some (disabled code) to print out negative strides.Chris Lattner2011-02-211-3/+15
| | | | llvm-svn: 126102
* add an idiom that loop idiom could theoretically catch.Chris Lattner2011-02-211-0/+10
| | | | llvm-svn: 126101
* A lo/hi mul has higher latency than an imul r,ri, e.g. 5 cycles compared to 3Cameron Zwarich2011-02-211-35/+0
| | | | | | on Core 2 and Nehalem, so the code we generate is better than GCC's here. llvm-svn: 126100
* Use a vector of pairs to implement the section stack, not twoJoerg Sonnenberger2011-02-211-2/+2
| | | | | | independent vectors. llvm-svn: 126099
* The signed version of our "magic number" computation for the integer ↵Cameron Zwarich2011-02-212-7/+5
| | | | | | | | | | | | | approximation of a constant had a minor typo introduced when copying it from the book, which caused it to favor negative approximations over positive approximations in many cases. Positive approximations require fewer operations beyond the multiplication. In the case of division by 3, we still generate code that is a single instruction larger than GCC's code. llvm-svn: 126097
* Add some limited support for labels in org directives. Hopefully enough to fixRafael Espindola2011-02-201-1/+17
| | | | | | PR9245. llvm-svn: 126091
* Make RecursivelyDeleteDeadPHINode delete a phi node that has no users and add aNick Lewycky2011-02-201-7/+12
| | | | | | | | | test for that. With this change, test/CodeGen/X86/codegen-dce.ll no longer finds any instructions to DCE, so delete the test. Also renamed J and JP to I and IP in RecursivelyDeleteDeadPHINode. llvm-svn: 126088
* Move "A | ~(A & ?) -> -1" from InstCombine to InstructionSimplify.Benjamin Kramer2011-02-202-16/+18
| | | | llvm-svn: 126082
* InstCombine: Add a bunch of combines of the form x | (y ^ z).Benjamin Kramer2011-02-201-0/+41
| | | | | | | | | We usually catch this kind of optimization through InstSimplify's distributive magic, but or doesn't distribute over xor in general. "A | ~(A | B) -> A | ~B" hits 24 times on gcc.c. llvm-svn: 126081
* Fix 9267; Add vector zext support.Nadav Rotem2011-02-201-1/+3
| | | | | | | | The DAGCombiner folds the zext into complex load instructions. This patch prevents this optimization on vectors since none of the supported targets knows how to perform load+vector_zext in one instruction. llvm-svn: 126080
OpenPOWER on IntegriCloud