summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
Commit message (Collapse)AuthorAgeFilesLines
* Pass boolean constants into function calls more efficiently, generating:Chris Lattner2004-05-121-1/+7
| | | | | | | | | | | mov DWORD PTR [%ESP + 4], 1 instead of: mov %EAX, 1 mov DWORD PTR [%ESP + 4], %EAX llvm-svn: 13494
* Fix a fairly serious pessimizaion that was preventing us from efficientlyChris Lattner2004-05-101-2/+3
| | | | | | | compiling things like 'add long %X, 1'. The problem is that we were switching the order of the operands for longs even though we can't fold them yet. llvm-svn: 13451
* Fix some comments, avoid sign extending booleans when zero extend works fineChris Lattner2004-05-091-5/+5
| | | | llvm-svn: 13440
* Generate more efficient code for casting booleans to integers (no sign ↵Chris Lattner2004-05-091-1/+1
| | | | | | extension required) llvm-svn: 13439
* syntactically loopify natural loops so that the GCC loop optimizer can find ↵Chris Lattner2004-05-091-52/+85
| | | | | | them. This should *dramatically* improve the performance of CBE compiled code on targets that depend on GCC's loop optimizations (like PPC) llvm-svn: 13438
* Do not emit prototypes for setjmp/longjmp, as they are handled speciallyChris Lattner2004-05-091-1/+2
| | | | llvm-svn: 13437
* Make the floating point constant pools local to each function, split theChris Lattner2004-05-091-99/+112
| | | | | | | FindUsedTypes manipulation stuff out to be a seperate pass, and make the main CWriter be a function pass now! llvm-svn: 13435
* Get this looking more like a function pass.Chris Lattner2004-05-091-32/+33
| | | | llvm-svn: 13433
* Print all PHI copies for successor blocks before the terminator, whether it ↵Chris Lattner2004-05-091-10/+23
| | | | | | be a conditional branch or switch. llvm-svn: 13430
* Changed CPUResource to allow access to maxnum users.Tanya Lattner2004-05-081-6/+16
| | | | llvm-svn: 13425
* Add support for widening integral casts.Brian Gaeke2004-05-081-34/+76
| | | | | | | | | | | | | | | | | | Flesh out the SetCC support... which currently ends in a little bit of unfinished code (which is probably completely hilarious) for generating the condition value splitting the basic block up into 4 blocks, like this (clearly a better API is needed for this!): BB cond. branch / / R1=1 R2=0 \ / \ / R=phi(R1,R2) Other minor edits. llvm-svn: 13423
* Add a bunch more branchesBrian Gaeke2004-05-081-4/+12
| | | | llvm-svn: 13422
* Flesh out GEP supportBrian Gaeke2004-05-081-3/+53
| | | | llvm-svn: 13421
* Add ADD with immediateBrian Gaeke2004-05-081-0/+1
| | | | llvm-svn: 13420
* Add forms of CMP, SUBCC, and a few branches, and some comments.Brian Gaeke2004-05-081-0/+13
| | | | llvm-svn: 13419
* Add stub support for GEPs.Brian Gaeke2004-05-081-8/+90
| | | | | | | | | Add support for branches (based loosely on X86/InstSelectSimple). Add support for not visiting phi nodes in the first pass. Add support for loading bools. Flesh out support for stores. llvm-svn: 13418
* Add support for copying bool constants to registers.Brian Gaeke2004-05-071-8/+36
| | | | | | | | Disable the code that copies long constants to registers - it looks fishy. Implement some simple casts: integral, smaller than longs, and equal-width or narrowing only. llvm-svn: 13413
* Codegen floating point stores of constants into integer instructions. ThisChris Lattner2004-05-071-15/+37
| | | | | | | | | | | | | | | | | | | allows us to compile: store float 10.0, float* %P into: mov DWORD PTR [%EAX], 1092616192 instead of: .CPItest_0: # float 0x4024000000000000 .long 1092616192 # float 10 ... fld DWORD PTR [.CPItest_0] fstp DWORD PTR [%EAX] llvm-svn: 13409
* Make comparisons against the null pointer as efficient as integer comparisonsChris Lattner2004-05-071-1/+8
| | | | | | | | | | | | | against zero. In particular, don't emit: mov %ESI, 0 cmp %ECX, %ESI instead, emit: test %ECX, %ECX llvm-svn: 13407
* Missing piece of fix for Bug 333Brian Gaeke2004-05-041-1/+1
| | | | llvm-svn: 13362
* Correctly mangle function names when they are used as part of aBrian Gaeke2004-05-041-3/+3
| | | | | | | | | constant pool member's name. This is intended to address Bug 333. Also, fix an anachronistic usage of "M" as a parameter of type Function *. llvm-svn: 13357
* Remove unneeded checkChris Lattner2004-05-041-1/+0
| | | | llvm-svn: 13355
* Improve signed division by power of 2 *dramatically* from this:Chris Lattner2004-05-041-9/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | div: mov %EDX, DWORD PTR [%ESP + 4] mov %ECX, 64 mov %EAX, %EDX sar %EDX, 31 idiv %ECX ret to this: div: mov %EAX, DWORD PTR [%ESP + 4] mov %ECX, %EAX sar %ECX, 5 shr %ECX, 26 mov %EDX, %EAX add %EDX, %ECX sar %EAX, 6 ret Note that the intel compiler is currently making this: div: movl 4(%esp), %edx #3.5 movl %edx, %eax #4.14 sarl $5, %eax #4.14 shrl $26, %eax #4.14 addl %edx, %eax #4.14 sarl $6, %eax #4.14 ret #4.14 Which has one less register->register copy. (hint hint alkis :) llvm-svn: 13354
* Improve code generated for integer multiplications by 2,3,5,9Chris Lattner2004-05-041-2/+16
| | | | llvm-svn: 13342
* Remove unused #includeChris Lattner2004-05-011-1/+0
| | | | llvm-svn: 13304
* Iterate over the Machine CFG that Brian added instead of the LLVM CFG.Chris Lattner2004-05-011-21/+4
| | | | | | Look at all of the pretty minuses. :) llvm-svn: 13303
* Add a constructor that got lostChris Lattner2004-05-011-0/+3
| | | | llvm-svn: 13297
* Removing MachineResource class.Tanya Lattner2004-04-301-1/+1
| | | | llvm-svn: 13291
* Make RequiresFPRegKill() take a MachineBasicBlock arg.Brian Gaeke2004-04-281-3/+3
| | | | | | | In InsertFPRegKills(), just check the MachineBasicBlock for successors instead of its corresponding BasicBlock. llvm-svn: 13213
* In InsertFPRegKills(), use the machine-CFG itself rather than theBrian Gaeke2004-04-281-3/+3
| | | | | | LLVM CFG when trying to find the successors of BB. llvm-svn: 13212
* Update the machine-CFG edges whenever we see a branch.Brian Gaeke2004-04-281-0/+5
| | | | llvm-svn: 13211
* Integrate the rest of my random sparcv9 scribblings into this fileBrian Gaeke2004-04-271-2/+3
| | | | llvm-svn: 13204
* Changes to fix up the inst_iterator to pass to boost iterator checks. ThisChris Lattner2004-04-272-9/+9
| | | | | | patch was graciously contributed by Vladimir Prus. llvm-svn: 13185
* Fix file header comments and include guards -- many files have been moved orBrian Gaeke2004-04-2530-54/+67
| | | | | | | renamed since they were last spiffed up, or they just never had proper comments in the first place. llvm-svn: 13148
* Add a getRegisterInfo() accessor just like on the X86 target.Brian Gaeke2004-04-251-0/+3
| | | | llvm-svn: 13147
* Regularize file header comment and include guard.Brian Gaeke2004-04-251-3/+12
| | | | | | | | Include SparcV9RegisterInfo.h. Add a getRegisterInfo() accessor and SparcV9RegisterInfo instance, just like on the X86 target. llvm-svn: 13146
* Add MRegisterInfo subclass for the SparcV9 target (containing only stubBrian Gaeke2004-04-252-0/+420
| | | | | | | | | | | | functions for now). This automatically turns on the printing of machine registers using their own real names, instead of goofy things like %mreg(42), and allows us to migrate code incrementally to the new interface as we see fit. The register file description it uses is hand-written, so that the register numbers will match the ones that the SparcV9 target already uses. Perhaps someday we'll tablegen it. llvm-svn: 13145
* Fix a typo.Brian Gaeke2004-04-231-2/+1
| | | | llvm-svn: 13136
* Merge TargetRegInfo.h into SparcV9RegInfo.h, which is its only subclass.Brian Gaeke2004-04-231-5/+280
| | | | | | | | This prepares us to be able to de-virtualize and de-abstract it, and take the register allocator bits out and move them into the register allocator proper... llvm-svn: 13127
* Include SparcV9RegInfo.h instead of TargetRegInfo.h.Brian Gaeke2004-04-2310-10/+10
| | | | llvm-svn: 13126
* Get rid of the old byte-at-a-time emission code used when the Sparc JIT wasBrian Gaeke2004-04-231-9/+0
| | | | | | being tested on X86, as per Chris's request. llvm-svn: 13124
* Use emitWordAt() to emit forward-branch fixups.Brian Gaeke2004-04-231-1/+1
| | | | llvm-svn: 13120
* Emit SPARC machine code a word at a time instead of a byte at a time.Brian Gaeke2004-04-231-1/+5
| | | | | | Use emitWordAt() to emit forward-branch fixups. llvm-svn: 13119
* Make SparcV9RegInfo::getRegType() return the right answer for registersBrian Gaeke2004-04-211-5/+6
| | | | | | | | | of IntCC, FloatCC, and Special types. Make SparcV9RegInfo::getRegClassIDOfRegType() return the right answer if you ask for the class corresponding to SpecialRegType. llvm-svn: 13095
* Make it legal to ask for the type of a specialregBrian Gaeke2004-04-201-0/+2
| | | | llvm-svn: 13078
* Make it legal to request a load or store of %fsr.Brian Gaeke2004-04-191-0/+2
| | | | llvm-svn: 13073
* Regularize include guards and remove some excess whitespace.Brian Gaeke2004-04-191-4/+2
| | | | llvm-svn: 13071
* Tighten up SparcV9FloatCCRegClass::getRegName()'s assertion - if you ask it forBrian Gaeke2004-04-191-2/+1
| | | | | | | the name of %fsr (as the comment in SparcV9RegClassInfo.h used to suggest) you would walk off the end of the FloatCCRegName array. llvm-svn: 13070
* Regularize include guards, remove some excess whitespace and fix some comments.Brian Gaeke2004-04-191-14/+11
| | | | | | Remove the extra %fsr register from SparcV9FloatCCRegClass. llvm-svn: 13069
* Give SparcV9CodeEmitter a head-of-file comment and a PassName.Brian Gaeke2004-04-151-1/+6
| | | | llvm-svn: 12967
OpenPOWER on IntegriCloud