summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* Move the available queue to being inside the ListSchedule method, since itChris Lattner2006-03-051-10/+15
| | | | | | bounds its lifetime. llvm-svn: 26550
* Reinstate this now that the offending opposite xform has been removed.Chris Lattner2006-03-051-0/+7
| | | | llvm-svn: 26548
* print arbitrary constant pool entriesChris Lattner2006-03-051-0/+9
| | | | llvm-svn: 26545
* Back out fold (shl (add x, c1), c2) -> (add (shl x, c2), c1<<c2) for now.Evan Cheng2006-03-051-7/+0
| | | | | | It's causing an infinite loop compiling ldecod on x86 / Darwin. llvm-svn: 26544
* Add some simple copysign foldsChris Lattner2006-03-052-7/+61
| | | | llvm-svn: 26543
* Codegen copysign[f] into a FCOPYSIGN nodeChris Lattner2006-03-053-4/+63
| | | | llvm-svn: 26542
* fold (mul (add x, c1), c2) -> (add (mul x, c2), c1*c2)Chris Lattner2006-03-041-1/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | fold (shl (add x, c1), c2) -> (add (shl x, c2), c1<<c2) This allows us to compile CodeGen/PowerPC/addi-reassoc.ll into: _test1: slwi r2, r4, 4 add r2, r2, r3 lwz r3, 36(r2) blr _test2: mulli r2, r4, 5 add r2, r2, r3 lbz r2, 11(r2) extsb r3, r2 blr instead of: _test1: addi r2, r4, 2 slwi r2, r2, 4 add r2, r3, r2 lwz r3, 4(r2) blr _test2: addi r2, r4, 2 mulli r2, r2, 5 add r2, r3, r2 lbz r2, 1(r2) extsb r3, r2 blr llvm-svn: 26535
* Added support for dwarf block data entries.Jim Laskey2006-03-031-49/+248
| | | | llvm-svn: 26509
* Adding basic structure support.Jim Laskey2006-03-032-4/+46
| | | | llvm-svn: 26505
* Add more vector NodeTypes: VSDIV, VUDIV, VAND, VOR, and VXOR.Evan Cheng2006-03-032-8/+20
| | | | llvm-svn: 26504
* SDOperand::isOperand should not be a forwarding. It must check *this against ↵Evan Cheng2006-03-031-0/+7
| | | | | | N's operands. llvm-svn: 26502
* Added isOperand(N): true if this is an operand of NEvan Cheng2006-03-031-0/+7
| | | | llvm-svn: 26501
* A bit more tweakingEvan Cheng2006-03-031-6/+24
| | | | llvm-svn: 26500
* Fix VC++ compilation errors.Jeff Cohen2006-03-031-4/+4
| | | | llvm-svn: 26498
* Move #include "llvm/CodeGen/AsmPrinter.h" to top since it's the interface.Evan Cheng2006-03-031-1/+1
| | | | llvm-svn: 26493
* remove the read/write port/io intrinsics.Chris Lattner2006-03-033-91/+0
| | | | llvm-svn: 26479
* Split memcpy/memset/memmove intrinsics into i32/i64 versions, resolvingChris Lattner2006-03-032-9/+24
| | | | | | PR709, and paving the way for future progress. llvm-svn: 26476
* - Fixed some priority calculation bugs that were causing bug 478. Among them:Evan Cheng2006-03-021-64/+98
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | a predecessor appearing more than once in the operand list was counted as multiple predecessor; priority1 should be updated during scheduling; CycleBound was updated after the node is inserted into priority queue; one of the tie breaking condition was flipped. - Take into consideration of two address opcodes. If a predecessor is a def&use operand, it should have a higher priority. - Scheduler should also favor floaters, i.e. nodes that do not have real predecessors such as MOV32ri. - The scheduling fixes / tweaks fixed bug 478: .text .align 4 .globl _f _f: movl 4(%esp), %eax movl 8(%esp), %ecx movl %eax, %edx imull %ecx, %edx imull %eax, %eax imull %ecx, %ecx addl %eax, %ecx leal (%ecx,%edx,2), %eax ret It is also a slight performance win (1% - 3%) for most tests. llvm-svn: 26470
* Support for enumerations.Jim Laskey2006-03-012-2/+57
| | | | llvm-svn: 26466
* Don't print llvm constant in assmebly file. Assembler won't like comments thatEvan Cheng2006-03-011-1/+3
| | | | | | span multiple lines. llvm-svn: 26463
* Fix CodeGen/Generic/2006-03-01-dagcombineinfloop.ll, an infinite loopChris Lattner2006-03-011-4/+9
| | | | | | in the dag combiner on 176.gcc on x86. llvm-svn: 26459
* Switch back to using actual dwarf tags. Simplifies code without loss to otherJim Laskey2006-03-012-55/+103
| | | | | | debug forms. llvm-svn: 26455
* Fix a typo evan noticedChris Lattner2006-03-011-1/+1
| | | | llvm-svn: 26454
* Use context and not compile unit.Jim Laskey2006-03-011-11/+13
| | | | llvm-svn: 26453
* I guess I can handle large type sizes.Jim Laskey2006-03-011-2/+1
| | | | llvm-svn: 26452
* Basic array support.Jim Laskey2006-03-012-10/+197
| | | | llvm-svn: 26451
* Add support for target-specific dag combinesChris Lattner2006-03-011-13/+58
| | | | llvm-svn: 26443
* Add a new AddToWorkList method, start using itChris Lattner2006-03-011-57/+63
| | | | llvm-svn: 26441
* Pull shifts by a constant through multiplies (a form of reassociation),Chris Lattner2006-03-011-0/+27
| | | | | | implementing Regression/CodeGen/X86/mul-shift-reassoc.ll llvm-svn: 26440
* Vector ops lowering.Evan Cheng2006-03-013-50/+76
| | | | llvm-svn: 26436
* - Added VConstant as an abstract version of ConstantVec.Evan Cheng2006-03-011-12/+19
| | | | | | | - All abstrct vector nodes must have # of elements and element type as their first two operands. llvm-svn: 26432
* Add const, volatile, restrict support.Jim Laskey2006-02-282-5/+67
| | | | | | Add array of debug descriptor support. llvm-svn: 26428
* Compile:Chris Lattner2006-02-281-10/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | unsigned foo4(unsigned short *P) { return *P & 255; } unsigned foo5(short *P) { return *P & 255; } to: _foo4: lbz r3,1(r3) blr _foo5: lbz r3,1(r3) blr not: _foo4: lhz r2, 0(r3) rlwinm r3, r2, 0, 24, 31 blr _foo5: lhz r2, 0(r3) rlwinm r3, r2, 0, 24, 31 blr llvm-svn: 26419
* Fold "and (LOAD P), 255" -> zextload. This allows us to compile:Chris Lattner2006-02-281-0/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | unsigned foo3(unsigned *P) { return *P & 255; } as: _foo3: lbz r3, 3(r3) blr instead of: _foo3: lwz r2, 0(r3) rlwinm r3, r2, 0, 24, 31 blr and: unsigned short foo2(float a) { return a; } as: _foo2: fctiwz f0, f1 stfd f0, -8(r1) lhz r3, -2(r1) blr instead of: _foo2: fctiwz f0, f1 stfd f0, -8(r1) lwz r2, -4(r1) rlwinm r3, r2, 0, 16, 31 blr llvm-svn: 26417
* fold (sra (sra x, c1), c2) -> (sra x, c1+c2)Chris Lattner2006-02-281-3/+11
| | | | llvm-svn: 26416
* Add support for output memory constraints.Chris Lattner2006-02-271-7/+38
| | | | llvm-svn: 26410
* Qualify dwarf namespace inside llvm namespace.Jim Laskey2006-02-271-1/+1
| | | | llvm-svn: 26409
* Partial enabling of functions.Jim Laskey2006-02-271-1/+1
| | | | llvm-svn: 26404
* Supporting multiple compile units.Jim Laskey2006-02-271-136/+185
| | | | llvm-svn: 26402
* Re-orging file.Jim Laskey2006-02-271-556/+357
| | | | llvm-svn: 26401
* remove some completed notesChris Lattner2006-02-271-4/+0
| | | | llvm-svn: 26390
* Print ConstantPoolSDNode offset field.Evan Cheng2006-02-261-0/+5
| | | | llvm-svn: 26381
* Added an offset field to ConstantPoolSDNode.Evan Cheng2006-02-252-9/+14
| | | | llvm-svn: 26371
* Fix a bug that Evan exposed with some changes he's making, and that wasChris Lattner2006-02-251-9/+23
| | | | | | | | | exposed with a fastcc problem (breaking pcompress2 on x86 with -enable-x86-fastcc). When reloading a reused reg, make sure to invalidate the reloaded reg, and check to see if there are any other pending uses of the same register. llvm-svn: 26369
* Remove debugging printout :)Chris Lattner2006-02-251-5/+6
| | | | | | Add a minor compile time win, no codegen change. llvm-svn: 26368
* Refactor some code from being inline to being out in a new class with methods.Chris Lattner2006-02-251-42/+97
| | | | | | | | This gets rid of two gotos, which is always nice, and also adds some comments. No functionality change, this is just a refactor. llvm-svn: 26367
* Use the PrintAsmMemoryOperand to print addressing modes.Chris Lattner2006-02-241-4/+19
| | | | llvm-svn: 26364
* Pass all the flags to the asm printer, not just the # operands.Chris Lattner2006-02-242-3/+5
| | | | llvm-svn: 26362
* rename NumOps -> NumVals to avoid shadowing a NumOps var in an outer scope.Chris Lattner2006-02-241-5/+11
| | | | | | Add support for addressing modes. llvm-svn: 26361
* Refactor operand adding out to a new AddOperand methodChris Lattner2006-02-241-66/+81
| | | | llvm-svn: 26358
OpenPOWER on IntegriCloud