summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* Add section switching to common code generator code. Add a couple ofChris Lattner2005-11-213-2/+23
| | | | | | asserts. llvm-svn: 24445
* Legalize MERGE_VALUES, expand READCYCLECOUNTER correctly, so it doesn'tChris Lattner2005-11-201-8/+13
| | | | | | break control dependence. llvm-svn: 24437
* The first patch of X86 support for read cycle counterAndrew Lenharth2005-11-201-0/+12
| | | | llvm-svn: 24429
* more progress towards bug 291 being finished. Patch by Owen Anderson,Chris Lattner2005-11-201-12/+17
| | | | | | HAVE_GV case fixed up by me. llvm-svn: 24428
* Unbreak codegen of bools. This should fix the llc/jit/llc-beta failuresChris Lattner2005-11-191-1/+1
| | | | | | from last night. llvm-svn: 24427
* Improve Selection DAG printer portability. Patch by Owen Anderson!Chris Lattner2005-11-191-4/+6
| | | | llvm-svn: 24425
* Teach the graph viewer to handle register operands that are zero.Chris Lattner2005-11-191-1/+1
| | | | llvm-svn: 24421
* Silence a bogus warningChris Lattner2005-11-191-3/+2
| | | | llvm-svn: 24420
* Add some method variants, patch by Evan ChengChris Lattner2005-11-191-15/+41
| | | | llvm-svn: 24418
* Teach LLVM how to scalarize packed types. Currently, this only works onNate Begeman2005-11-194-33/+111
| | | | | | | | | | | | | | | | | | | | | | | packed types with an element count of 1, although more generic support is coming. This allows LLVM to turn the following code: void %foo(<1 x float> * %a) { entry: %tmp1 = load <1 x float> * %a; %tmp2 = add <1 x float> %tmp1, %tmp1 store <1 x float> %tmp2, <1 x float> *%a ret void } Into: _foo: lfs f0, 0(r3) fadds f0, f0, f0 stfs f0, 0(r3) blr llvm-svn: 24416
* Split out the shift code from visitBinary.Nate Begeman2005-11-181-7/+14
| | | | llvm-svn: 24412
* Allow targets to custom legalize leaf nodes like GlobalAddress.Chris Lattner2005-11-171-1/+13
| | | | llvm-svn: 24387
* Teach legalize about targetglobaladdressChris Lattner2005-11-171-0/+1
| | | | llvm-svn: 24385
* when debugging lower dbg intrinsics to callsChris Lattner2005-11-161-0/+22
| | | | llvm-svn: 24377
* Remove extraneous parents around constants when using a constant expr cast.Chris Lattner2005-11-151-2/+0
| | | | llvm-svn: 24357
* Teach emitAlignment to handle explicit alignment requests by globals.Chris Lattner2005-11-141-1/+3
| | | | llvm-svn: 24354
* Fix operator precedence bug caught by VC++.Jeff Cohen2005-11-121-2/+2
| | | | llvm-svn: 24318
* added a chain outputAndrew Lenharth2005-11-111-2/+10
| | | | llvm-svn: 24306
* continued readcyclecounter supportAndrew Lenharth2005-11-114-0/+15
| | | | llvm-svn: 24300
* nuke blank lineChris Lattner2005-11-101-1/+0
| | | | llvm-svn: 24278
* Get rid of casts by #including the right headerChris Lattner2005-11-101-6/+6
| | | | llvm-svn: 24275
* Compile C strings to:Chris Lattner2005-11-101-0/+1
| | | | | | | | | | | | | l1__2E_str_1: ; '.str_1' .asciz "foo" not: .align 0 l1__2E_str_1: ; '.str_1' .asciz "foo" llvm-svn: 24273
* add support for .asciz, and enable it by default. If your target ↵Chris Lattner2005-11-101-5/+13
| | | | | | | | | | | | | | | | assemblerdoesn't support .asciz, just set AscizDirective to null in your asmprinter. This compiles C strings to: l1__2E_str_1: ; '.str_1' .asciz "foo" instead of: l1__2E_str_1: ; '.str_1' .ascii "foo\000" llvm-svn: 24272
* Switch the allnodes list from a vector of pointers to an ilist of nodes.This ↵Chris Lattner2005-11-094-46/+37
| | | | | | | | eliminates the vector, allows constant time removal of a node froma graph, and makes iteration over the all nodes list stable when adding nodes to the graph. llvm-svn: 24263
* Refactor intrinsic lowering stuff out of visitCallChris Lattner2005-11-091-98/+107
| | | | llvm-svn: 24261
* Handle the trivial (but common) two-op case more efficientlyChris Lattner2005-11-091-11/+18
| | | | llvm-svn: 24259
* Nuke noop copies.Chris Lattner2005-11-091-4/+11
| | | | llvm-svn: 24258
* Fix CodeGen/X86/shift-folding.ll:test3 on X86Chris Lattner2005-11-091-1/+1
| | | | llvm-svn: 24256
* Disable some overly-aggressive checking code. This speeds up the localChris Lattner2005-11-091-1/+2
| | | | | | allocator from 23s to 11s on kc++ in debug mode. llvm-svn: 24255
* Avoid creating a token factor node in trivially redundant cases. ThisChris Lattner2005-11-091-1/+12
| | | | | | eliminates almost one node per block in common cases. llvm-svn: 24254
* Handle GEP's a bit more intelligently. Fold constant indices early andChris Lattner2005-11-091-16/+40
| | | | | | turn power-of-two multiplies into shifts early to improve compile time. llvm-svn: 24253
* Allocate the right amount of memory for this vector up front.Chris Lattner2005-11-081-0/+1
| | | | llvm-svn: 24252
* Change the ValueList array for each node to be shared instead of ↵Chris Lattner2005-11-081-5/+48
| | | | | | individuallyallocated. Further, in the common case where a node has a single value, justreference an element from a small array. This is a small compile-time win. llvm-svn: 24251
* Switch the operandlist/valuelist from being vectors to being just an ↵Chris Lattner2005-11-081-23/+33
| | | | | | | | | array.This saves 12 bytes from SDNode, but doesn't speed things up substantially (our graphs apparently already fit within the cache on my g5). In any case this reduces memory usage. llvm-svn: 24249
* Explicitly initialize some instance varsChris Lattner2005-11-081-4/+5
| | | | llvm-svn: 24247
* Clean up RemoveDeadNodes significantly, by eliminating the need for a temporaryChris Lattner2005-11-081-32/+34
| | | | | | | | set and eliminating the need to iterate whenever something is removed (which can be really slow in some cases). Thx to Jim for pointing out something silly I was getting stuck on. :) llvm-svn: 24241
* Let's try ignoring resource utilization on the backward pass.Jim Laskey2005-11-071-0/+2
| | | | llvm-svn: 24231
* Always compute max align.Chris Lattner2005-11-061-6/+5
| | | | llvm-svn: 24227
* Add the necessary support to the ISel to allow targets to codegen the newNate Begeman2005-11-062-5/+16
| | | | | | | | alignment information appropriately. Includes code for PowerPC to support fixed-size allocas with alignment larger than the stack. Support for arbitrarily aligned dynamic allocas coming soon. llvm-svn: 24224
* Fix logic bug in finding retry slot in tally.Jim Laskey2005-11-051-15/+33
| | | | llvm-svn: 24188
* Fix a warningJim Laskey2005-11-041-0/+1
| | | | llvm-svn: 24187
* Scheduling now uses itinerary data.Jim Laskey2005-11-041-166/+201
| | | | llvm-svn: 24180
* Fix a crash that Andrew noticed, and add a pair of braces to unfconfuseNate Begeman2005-11-021-5/+5
| | | | | | XCode's indenting. llvm-svn: 24159
* Fix a source of undefined behavior when dealing with 64-bit types. ThisChris Lattner2005-11-021-1/+1
| | | | | | may fix PR652. Thanks to Andrew for tracking down the problem. llvm-svn: 24145
* 1. Embed and not inherit vector for NodeGroup.Jim Laskey2005-10-311-20/+39
| | | | | | | | 2. Iterate operands and not uses (performance.) 3. Some long pending comment changes. llvm-svn: 24119
* Significantly simplify this code and make it more aggressive. Instead of havingChris Lattner2005-10-301-103/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a special case hack for X86, make the hack more general: if an incoming argument register is not used in any block other than the entry block, don't copy it to a vreg. This helps us compile code like this: %struct.foo = type { int, int, [0 x ubyte] } int %test(%struct.foo* %X) { %tmp1 = getelementptr %struct.foo* %X, int 0, uint 2, int 100 %tmp = load ubyte* %tmp1 ; <ubyte> [#uses=1] %tmp2 = cast ubyte %tmp to int ; <int> [#uses=1] ret int %tmp2 } to: _test: lbz r3, 108(r3) blr instead of: _test: lbz r2, 108(r3) or r3, r2, r2 blr The (dead) copy emitted to copy r3 into a vreg for extra-block uses was increasing the live range of r3 past the load, preventing the coallescing. This implements CodeGen/PowerPC/reg-coallesce-simple.ll llvm-svn: 24115
* Reduce the number of copies emitted as machine instructions byChris Lattner2005-10-301-16/+57
| | | | | | | | | | | | | | | | | generating results in vregs that will need them. In the case of something like this: CopyToReg((add X, Y), reg1024), we no longer emit code like this: reg1025 = add X, Y reg1024 = reg 1025 Instead, we emit: reg1024 = add X, Y Whoa! :) llvm-svn: 24111
* Codegen mul by negative power of two with a shift and negate.Chris Lattner2005-10-301-3/+13
| | | | | | | | | | | | | | | | | | | This implements test/Regression/CodeGen/PowerPC/mul-neg-power-2.ll, producing: _foo: slwi r2, r3, 1 subfic r3, r2, 63 blr instead of: _foo: mulli r2, r3, -2 addi r3, r2, 63 blr llvm-svn: 24106
* Fix DSE to not nuke dead stores unless they redundant store is the sameChris Lattner2005-10-271-1/+4
| | | | | | VT as the killing one. Fix fixes PR491 llvm-svn: 24034
* Add a simple xform that is useful for bitfield operations.Chris Lattner2005-10-271-0/+9
| | | | llvm-svn: 24029
OpenPOWER on IntegriCloud