summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* Fix UnitTests/2005-05-12-Int64ToFP.c with llc-beta. In particular, do notChris Lattner2006-09-191-7/+10
| | | | | | allow it to go into an infinite loop, filling up the disk! llvm-svn: 30494
* Fold extract_element(cst) to cstChris Lattner2006-09-191-2/+8
| | | | llvm-svn: 30478
* Minor speedup for legalize by avoiding some malloc trafficChris Lattner2006-09-191-0/+9
| | | | llvm-svn: 30477
* Fix a typo.Evan Cheng2006-09-181-3/+2
| | | | llvm-svn: 30474
* Allow i32 UDIV, SDIV, UREM, SREM to be expanded into libcalls.Evan Cheng2006-09-181-6/+30
| | | | llvm-svn: 30470
* oopsAndrew Lenharth2006-09-181-1/+0
| | | | llvm-svn: 30462
* absolute addresses must match pointer sizeAndrew Lenharth2006-09-182-1/+2
| | | | llvm-svn: 30461
* Sort out mangled names for globalsJim Laskey2006-09-181-13/+23
| | | | llvm-svn: 30460
* Oh yeah, this is needed tooChris Lattner2006-09-161-3/+3
| | | | llvm-svn: 30407
* simplify control flow, no functionality changeChris Lattner2006-09-161-6/+12
| | | | llvm-svn: 30403
* Allow custom expand of mulChris Lattner2006-09-161-0/+9
| | | | llvm-svn: 30402
* Keep track of the start of MBB's in a separate map from instructions. ThisChris Lattner2006-09-151-38/+45
| | | | | | is faster and is needed for future improvements. llvm-svn: 30383
* Fold (X & C1) | (Y & C2) -> (X|Y) & C3 when possible.Chris Lattner2006-09-141-0/+20
| | | | | | This implements CodeGen/X86/and-or-fold.ll llvm-svn: 30379
* Split rotate matching code out to its own function. Make it stronger, byChris Lattner2006-09-141-53/+142
| | | | | | matching things like ((x >> c1) & c2) | ((x << c3) & c4) to (rot x, c5) & c6 llvm-svn: 30376
* Use getOffset() instead.Evan Cheng2006-09-141-2/+2
| | | | llvm-svn: 30327
* Use MachineConstantPoolEntry getOffset() and getType() accessors.Evan Cheng2006-09-141-13/+7
| | | | llvm-svn: 30326
* A MachineConstantPool may have mixed Constant* and MachineConstantPoolValue* ↵Evan Cheng2006-09-141-2/+8
| | | | | | values. llvm-svn: 30316
* If LSR went through a lot of trouble to put constants (e.g. the addr of a globalChris Lattner2006-09-131-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | in a specific BB, don't undo this!). This allows us to compile CodeGen/X86/loop-hoist.ll into: _foo: xorl %eax, %eax *** movl L_Arr$non_lazy_ptr, %ecx movl 4(%esp), %edx LBB1_1: #cond_true movl %eax, (%ecx,%eax,4) incl %eax cmpl %edx, %eax jne LBB1_1 #cond_true LBB1_2: #return ret instead of: _foo: xorl %eax, %eax movl 4(%esp), %ecx LBB1_1: #cond_true *** movl L_Arr$non_lazy_ptr, %edx movl %eax, (%edx,%eax,4) incl %eax cmpl %ecx, %eax jne LBB1_1 #cond_true LBB1_2: #return ret This was noticed in 464.h264ref. This doesn't usually affect PPC, but strikes X86 all the time. llvm-svn: 30290
* Compile X << 1 (where X is a long-long) to:Chris Lattner2006-09-131-7/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | addl %ecx, %ecx adcl %eax, %eax instead of: movl %ecx, %edx addl %edx, %edx shrl $31, %ecx addl %eax, %eax orl %ecx, %eax and to: addc r5, r5, r5 adde r4, r4, r4 instead of: slwi r2,r9,1 srwi r0,r11,31 slwi r3,r11,1 or r2,r0,r2 on PPC. llvm-svn: 30284
* Added support for machine specific constantpool values. These are useful forEvan Cheng2006-09-126-51/+152
| | | | | | representing expressions that can only be resolved at link time, etc. llvm-svn: 30278
* Behold, more work on relocations. Things are looking pretty good now.Nate Begeman2006-09-101-38/+106
| | | | llvm-svn: 30240
* This code was trying too hard. By eliminating redundant edges in the CFGChris Lattner2006-09-101-6/+3
| | | | | | | | | due to switch cases going to the same place, it make #pred != #phi entries, breaking live interval analysis. This fixes 458.sjeng on x86 with llc. llvm-svn: 30236
* Implement the fpowi now by lowering to a libcallChris Lattner2006-09-093-1/+16
| | | | llvm-svn: 30225
* Allow targets to custom lower expanded BIT_CONVERT'sChris Lattner2006-09-091-2/+15
| | | | llvm-svn: 30217
* First pass at supporting relocations. Relocations are written correctly toNate Begeman2006-09-081-43/+75
| | | | | | | the file now, however the relocated address is currently wrong. Fixing that will require some deep pondering. llvm-svn: 30207
* Non-allocatable physregs can be killed and dead, but don't treat them asChris Lattner2006-09-081-0/+6
| | | | | | safe for later allocation. This fixes McCat/18-imp with llc-beta. llvm-svn: 30204
* This fixes Benchmarks/Prolangs-C/unix-smailChris Lattner2006-09-081-0/+2
| | | | llvm-svn: 30198
* Fix a bunch of llc-beta failures on x86 yesterday. Don't allow selectionChris Lattner2006-09-081-17/+42
| | | | | | | of unallocatable registers, just because an alias is allocatable. We were picking registers like SIL just because ESI was being used. llvm-svn: 30197
* Make target asm info a property of the target machine.Jim Laskey2006-09-072-18/+20
| | | | llvm-svn: 30162
* Fix pasto that was breaking x86 tests.Evan Cheng2006-09-071-2/+2
| | | | llvm-svn: 30151
* Fix CodeGen/Generic/2006-09-06-SwitchLowering.ll, a bug where SDIsel insertedChris Lattner2006-09-071-15/+32
| | | | | | too many phi operands when lowering a switch to branches in some cases. llvm-svn: 30142
* Separate target specific asm properties from the asm printers.Jim Laskey2006-09-062-212/+169
| | | | llvm-svn: 30126
* Only call isUse/isDef on register operandsEvan Cheng2006-09-051-3/+3
| | | | llvm-svn: 30122
* Only call isUse/isDef on register operandsChris Lattner2006-09-052-13/+7
| | | | llvm-svn: 30118
* Don't call isDef on non-registersChris Lattner2006-09-051-1/+2
| | | | llvm-svn: 30117
* Change the default to 0, which means 'default'.Chris Lattner2006-09-051-1/+1
| | | | llvm-svn: 30114
* Completely eliminate def&use operands. Now a register operand is EITHER aChris Lattner2006-09-052-12/+12
| | | | | | def operand or a use operand. llvm-svn: 30109
* Fix a long-standing wart in the code generator: two-address instruction loweringChris Lattner2006-09-055-109/+99
| | | | | | | | | | | | | | | actually *removes* one of the operands, instead of just assigning both operands the same register. This make reasoning about instructions unnecessarily complex, because you need to know if you are before or after register allocation to match up operand #'s with the target description file. Changing this also gets rid of a bunch of hacky code in various places. This patch also includes changes to fold loads into cmp/test instructions in the X86 backend, along with a significant simplification to the X86 spill folding code. llvm-svn: 30108
* Correct fix for a crasher on functions with live in valuesChris Lattner2006-09-041-4/+6
| | | | llvm-svn: 30099
* Hack around a regression I introduced yesterdayChris Lattner2006-09-041-0/+3
| | | | llvm-svn: 30098
* forgot thisDuraid Madina2006-09-041-0/+2
| | | | llvm-svn: 30097
* add setJumpBufSize() and setJumpBufAlignment() to target-lowering.Duraid Madina2006-09-041-2/+2
| | | | | | | Call these from your backend to enjoy setjmp/longjmp goodness, see lib/Target/IA64/IA64ISelLowering.cpp for an example llvm-svn: 30095
* new fileChris Lattner2006-09-041-0/+154
| | | | llvm-svn: 30082
* Avoid beating on the mi2i map when we know the answer already.Chris Lattner2006-09-031-12/+19
| | | | llvm-svn: 30066
* minor speedupChris Lattner2006-09-031-3/+3
| | | | llvm-svn: 30065
* Fix Regression/CodeGen/Generic/2006-09-02-LocalAllocCrash.ll on X86.Chris Lattner2006-09-031-6/+11
| | | | | | | Just because an alias of a register is available, it doesn't mean that we can arbitrarily evict the register. llvm-svn: 30064
* When deleting a machine instruction, make sure to remove it from theChris Lattner2006-09-031-1/+4
| | | | | | livevariables information. This fixes several regalloc=local failures on x86 llvm-svn: 30062
* Move two methods out of line, make them work when the record for a machineChris Lattner2006-09-031-0/+36
| | | | | | instruction includes physregs. llvm-svn: 30061
* improve compat with certain versions of GCC (on cygwin?)Chris Lattner2006-09-021-1/+1
| | | | llvm-svn: 30054
* Iteration is required for some cases, even if they don't occur in crafty.Chris Lattner2006-09-021-13/+24
| | | | | | Restore it, which re-fixes X86/2006-08-21-ExtraMovInst.ll llvm-svn: 30050
OpenPOWER on IntegriCloud