summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
Commit message (Collapse)AuthorAgeFilesLines
* Change MachineRelocation::DoesntNeedFnStub to NeedStub. This fields will be usedEvan Cheng2008-01-033-50/+52
| | | | | | for non-function GV relocations that require function address stubs (e.g. Mac OS X in non-static mode). llvm-svn: 45527
* X86 PIC JIT bug fix: relocations for constantpool and jumptable.Evan Cheng2008-01-021-7/+6
| | | | llvm-svn: 45515
* Machine LICM will check that operands are defined outside of the loop. AlsoBill Wendling2008-01-022-40/+1
| | | | | | check that register isn't 0 before going further. llvm-svn: 45498
* darwin9 and above support aligned common symbols.Chris Lattner2008-01-023-12/+36
| | | | llvm-svn: 45494
* leopard and above support alignment for common symbols.Chris Lattner2008-01-023-11/+32
| | | | llvm-svn: 45493
* Move some more instruction creation methods from RegisterInfo into InstrInfo.Owen Anderson2008-01-0132-1177/+1240
| | | | llvm-svn: 45484
* Fix a bug in my previous patch: refer to the impl not the pure virtual ↵Chris Lattner2008-01-012-2/+2
| | | | | | version. It's unclear why gcc would ever compile this... llvm-svn: 45476
* Fix a problem where lib/Target/TargetInstrInfo.h would include and useChris Lattner2008-01-0117-60/+16
| | | | | | | | | | a header file from libcodegen. This violates a layering order: codegen depends on target, not the other way around. The fix to this is to split TII into two classes, TII and TargetInstrInfoImpl, which defines stuff that depends on libcodegen. It is defined in libcodegen, where the base is not. llvm-svn: 45475
* Move copyRegToReg from MRegisterInfo to TargetInstrInfo. This is part of theOwen Anderson2007-12-3124-244/+294
| | | | | | Machine-level API cleanup instigated by Chris. llvm-svn: 45470
* Rename SSARegMap -> MachineRegisterInfo in keeping with the idea Chris Lattner2007-12-3122-196/+189
| | | | | | | | | | | | | | that "machine" classes are used to represent the current state of the code being compiled. Given this expanded name, we can start moving other stuff into it. For now, move the UsedPhysRegs and LiveIn/LoveOuts vectors from MachineFunction into it. Update all the clients to match. This also reduces some needless #includes, such as MachineModuleInfo from MachineFunction. llvm-svn: 45467
* Add new shorter predicates for testing machine operands for various types: Chris Lattner2007-12-3032-150/+149
| | | | | | | | | | | | e.g. MO.isMBB() instead of MO.isMachineBasicBlock(). I don't plan on switching everything over, so new clients should just start using the shorter names. Remove old long accessors, switching everything over to use the short accessor: getMachineBasicBlock() -> getMBB(), getConstantPoolIndex() -> getIndex(), setMachineBasicBlock -> setMBB(), etc. llvm-svn: 45464
* More cleanups for MachineOperand:Chris Lattner2007-12-303-17/+5
| | | | | | | | | | - Eliminate the static "print" method for operands, moving it into MachineOperand::print. - Change various set* methods for register flags to take a bool for the value to set it to. Remove unset* methods. - Group methods more logically by operand flavor in MachineOperand.h llvm-svn: 45461
* Use MachineOperand::getImm instead of MachineOperand::getImmedValue. ↵Chris Lattner2007-12-3031-159/+156
| | | | | | Likewise setImmedValue -> setImm llvm-svn: 45453
* If we have a load of a global address that's not modified during theBill Wendling2007-12-302-3/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | function, then go ahead and hoist it out of the loop. This is the result: $ cat a.c volatile int G; int A(int N) { for (; N > 0; --N) G++; } $ llc -o - -relocation-model=pic _A: ... LBB1_2: # bb movl L_G$non_lazy_ptr-"L1$pb"(%eax), %esi incl (%esi) incl %edx cmpl %ecx, %edx jne LBB1_2 # bb ... $ llc -o - -relocation-model=pic -machine-licm _A: ... movl L_G$non_lazy_ptr-"L1$pb"(%eax), %eax LBB1_2: # bb incl (%eax) incl %edx cmpl %ecx, %edx jne LBB1_2 # bb ... I'm limiting this to the MOV32rm x86 instruction for now. llvm-svn: 45444
* use simplified operand addition methods.Chris Lattner2007-12-302-10/+11
| | | | llvm-svn: 45437
* Shrinkify the machine operand creation method names.Chris Lattner2007-12-301-1/+1
| | | | llvm-svn: 45433
* Remove attribution from file headers, per discussion on llvmdev.Chris Lattner2007-12-29248-544/+498
| | | | llvm-svn: 45418
* remove attribution from lib Makefiles.Chris Lattner2007-12-2911-23/+23
| | | | llvm-svn: 45415
* this is done.Chris Lattner2007-12-291-7/+0
| | | | llvm-svn: 45408
* One readme entry is done, one is really easy (Evan, want to investigateChris Lattner2007-12-291-77/+25
| | | | | | | | eliminating the llvm.x86.sse2.loadl.pd intrinsic?), one shuffle optzn may be done (if shufps is better than pinsw, Evan, please review), and we already know about LICM of simple instructions. llvm-svn: 45407
* Fold comparisons against a constant nan, and optimize ORD/UNORD Chris Lattner2007-12-291-17/+0
| | | | | | | | | | | | | | | | | | | | | | | | comparisons with a constant. This allows us to compile isnan to: _foo: fcmpu cr7, f1, f1 mfcr r2 rlwinm r3, r2, 0, 31, 31 blr instead of: LCPI1_0: ; float .space 4 _foo: lis r2, ha16(LCPI1_0) lfs f0, lo16(LCPI1_0)(r2) fcmpu cr7, f1, f0 mfcr r2 rlwinm r3, r2, 0, 31, 31 blr llvm-svn: 45405
* this xform is implemented.Chris Lattner2007-12-291-22/+0
| | | | llvm-svn: 45404
* Codegen:Chris Lattner2007-12-291-4/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | as: _bar: pushl %esi subl $8, %esp movl 16(%esp), %esi call L_foo$stub fstps (%esi) addl $8, %esp popl %esi #FP_REG_KILL ret instead of: _bar: pushl %esi subl $8, %esp movl 16(%esp), %esi call L_foo$stub fstpl (%esi) cvtsd2ss (%esi), %xmm0 movss %xmm0, (%esi) addl $8, %esp popl %esi #FP_REG_KILL ret llvm-svn: 45401
* avoid going through a stack slot to convert from fpstack to xmm regChris Lattner2007-12-292-29/+39
| | | | | | | | | if we are just going to store it back anyway. This improves things like: double foo(); void bar(double *P) { *P = foo(); } llvm-svn: 45399
* add a noteChris Lattner2007-12-291-1/+41
| | | | llvm-svn: 45397
* expand note.Chris Lattner2007-12-291-0/+4
| | | | llvm-svn: 45393
* add a note.Chris Lattner2007-12-281-0/+32
| | | | llvm-svn: 45388
* add a note.Chris Lattner2007-12-281-0/+32
| | | | llvm-svn: 45387
* add a noteChris Lattner2007-12-281-0/+19
| | | | llvm-svn: 45377
* add a simple hackChris Lattner2007-12-241-0/+12
| | | | llvm-svn: 45343
* Setting GlobalDirective in TargetAsmInfo by default rather thanGordon Henriksen2007-12-232-2/+1
| | | | | | | providing a misleading facility. It's used once in the MIPS backend and hardcoded as "\t.globl\t" everywhere else. llvm-svn: 45338
* fix some warnings. This code needs to be de-tabified :(Chris Lattner2007-12-221-2/+3
| | | | llvm-svn: 45325
* fix strict-aliasing violationChris Lattner2007-12-221-3/+1
| | | | llvm-svn: 45324
* Erm, really disable :)Anton Korobeynikov2007-12-221-1/+1
| | | | llvm-svn: 45319
* Disable, until we'll really need itAnton Korobeynikov2007-12-221-0/+3
| | | | llvm-svn: 45318
* Preliminary PIC JIT support for X86 (32-bit) / Darwin.Evan Cheng2007-12-225-65/+89
| | | | llvm-svn: 45313
* Oops.Evan Cheng2007-12-221-2/+1
| | | | llvm-svn: 45312
* Fix JIT code emission of X86::MovePCtoStack.Evan Cheng2007-12-222-5/+7
| | | | llvm-svn: 45307
* Allow JIT with non-static relocation model.Evan Cheng2007-12-221-1/+2
| | | | llvm-svn: 45304
* Fix silly typo in the FP CEP handling.Anton Korobeynikov2007-12-211-0/+1
| | | | llvm-svn: 45300
* Fix a brain fart by our beloved leader (the contentDuncan Sands2007-12-211-4/+3
| | | | | | of this patch is the last line). llvm-svn: 45289
* Fix unintented change from last commitNicolas Geoffray2007-12-211-3/+3
| | | | llvm-svn: 45282
* Enable EH for linux/ppc32 targetsNicolas Geoffray2007-12-212-15/+33
| | | | llvm-svn: 45281
* New entry.Evan Cheng2007-12-211-0/+15
| | | | llvm-svn: 45280
* Fix JIT encoding for CMPSD as well.Evan Cheng2007-12-202-4/+8
| | | | llvm-svn: 45268
* More working CellSPU tests:Scott Michel2007-12-206-60/+70
| | | | | | | - vec_const.ll: Vector constant loads - immed64.ll: i64, f64 constant loads llvm-svn: 45242
* Enable EH on PPC Darwin. This basically works; thereDale Johannesen2007-12-191-1/+1
| | | | | | | | | | | | are a couple of issues that show up with the optimizer, but I don't think they're really EH problems. (llvm-gcc testsuite users note: By default the testsuite uses the unwinding code that's built as part of your local llvm-gcc, which does not work. You need to trick it into using the installed system unwinding code to get useful results.) llvm-svn: 45221
* CellSPU testcase, extract_elt.ll: extract vector element.Scott Michel2007-12-191-2/+5
| | | | llvm-svn: 45219
* Two more test cases: or_ops.ll (arithmetic or operations) and vecinsert.llScott Michel2007-12-192-6/+5
| | | | | | (vector insertions) llvm-svn: 45216
* Add new immed16.ll test case, fix CellSPU errata to make test case work.Scott Michel2007-12-195-13/+23
| | | | llvm-svn: 45196
OpenPOWER on IntegriCloud