summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* Constructors and operators for anonymous aggregates does not names. Do not ↵Devang Patel2010-03-021-1/+3
| | | | | | force empty AT_name attribute in such cases. llvm-svn: 97533
* remove dead code.Chris Lattner2010-03-021-31/+0
| | | | llvm-svn: 97529
* refactor some code out of OPC_EmitMergeInputChains into aChris Lattner2010-03-021-21/+37
| | | | | | new helper function. llvm-svn: 97525
* remove all but one version of SelectionDAG::MorphNodeToChris Lattner2010-03-011-81/+0
| | | | | | (the most general) the others are dead. llvm-svn: 97511
* Use methods to determine if a LiveInterval is spillable.Jakob Stoklund Olesen2010-03-011-18/+26
| | | | | | Don't accidentally produce unspillable intervals for deeply nested loops. llvm-svn: 97496
* Accelerate isel dispatch for tables that start with a top-level Chris Lattner2010-03-011-1/+36
| | | | | | | OPC_SwitchOpcode to use a table lookup instead of having to go through the interpreter for this. llvm-svn: 97469
* Fix optimization of ISD::TRUNCATE on vector operands. Based on a patchDan Gohman2010-03-011-4/+5
| | | | | | by Micah Villmow for PR6335. llvm-svn: 97461
* some trivial microoptimizations.Chris Lattner2010-03-012-9/+18
| | | | llvm-svn: 97441
* eliminate the CheckMultiOpcodeMatcher code and have each Chris Lattner2010-03-011-9/+0
| | | | | | | | | ComplexPattern at the root be generated multiple times, once for each opcode they are part of. This encourages factoring because the opcode checks get treated just like everything else in the matcher. llvm-svn: 97439
* add a new OPC_SwitchOpcode which is semantically equivalentChris Lattner2010-03-011-0/+30
| | | | | | | | | | | | to a scope where every child starts with a CheckOpcode, but executes more efficiently. Enhance DAGISelMatcherOpt to form it. This also fixes a bug in CheckOpcode: apparently the SDNodeInfo objects are not pointer comparable, we have to compare the enum name. llvm-svn: 97438
* eliminate GetInt1/2Chris Lattner2010-02-281-16/+3
| | | | llvm-svn: 97426
* hoist the new isel interpreter out of DAGISelHeader.hChris Lattner2010-02-281-0/+859
| | | | | | | | (which gets #included into the middle of each target's DAGISel class) into a .cpp file where it is only compiled once. llvm-svn: 97425
* enhance the new isel to handle the 'node already exists'Chris Lattner2010-02-281-1/+1
| | | | | | case of MorphNodeTo directly. llvm-svn: 97417
* simplify this code, return only ever has zero or one operands.Chris Lattner2010-02-281-8/+6
| | | | llvm-svn: 97408
* Don't try to replace physical registers when doing CSE.Dan Gohman2010-02-281-1/+12
| | | | llvm-svn: 97360
* Add a flag to addPassesToEmit* to disable the Verifier pass runDan Gohman2010-02-281-8/+18
| | | | | | after LSR, so that clients can opt in. llvm-svn: 97357
* Don't unconditionally suppress hoisting of instructions with implicitDan Gohman2010-02-281-26/+4
| | | | | | | | defs or uses. The regular def and use checking below covers them, and can be more precise. It's safe to hoist an instruction with a dead implicit def if the register isn't live into the loop header. llvm-svn: 97352
* Re-apply 97040 with fix. This survives a ppc self-host llvm-gcc bootstrap.Evan Cheng2010-02-272-9/+86
| | | | llvm-svn: 97310
* The TType is always absptr on Mach-O...at least for now.Bill Wendling2010-02-271-1/+1
| | | | llvm-svn: 97295
* A much cleaner (and less code!) way of inserting the correct amount of paddingBill Wendling2010-02-261-50/+6
| | | | | | | | for alignment into the LSDA. If the TType base offset is emitted, then put the padding there. Otherwise, put it in the call site table length. There will be no conflict between the two sites when placing the padding in one place. llvm-svn: 97277
* Comment typo.Bill Wendling2010-02-261-1/+1
| | | | llvm-svn: 97269
* Use the right floating point load/store instructions in ↵Jakob Stoklund Olesen2010-02-261-2/+4
| | | | | | | | | | | | | | | | | | PPCInstrInfo::foldMemoryOperandImpl(). The PowerPC floating point registers can represent both f32 and f64 via the two register classes F4RC and F8RC. F8RC is considered a subclass of F4RC to allow cross-class coalescing. This coalescing only affects whether registers are spilled as f32 or f64. Spill slots must be accessed with load/store instructions corresponding to the class of the spilled register. PPCInstrInfo::foldMemoryOperandImpl was looking at the instruction opcode which is wrong. X86 has similar floating point register classes, but doesn't try to fold memory operands, so there is no problem there. llvm-svn: 97262
* Remove dead codeJakob Stoklund Olesen2010-02-261-4/+0
| | | | llvm-svn: 97261
* Move dbg_value generation to target-independent FastISel,Dale Johannesen2010-02-261-0/+28
| | | | | | as X86 is currently the only FastISel target. Per review. llvm-svn: 97255
* Remove unused "NoPRE" parameter in GVN and createGVNPass().Bob Wilson2010-02-261-1/+1
| | | | llvm-svn: 97235
* Fix comments.Bill Wendling2010-02-261-3/+3
| | | | llvm-svn: 97200
* Add another (and hopefully the last) exception case, where once we recalculateBill Wendling2010-02-261-3/+11
| | | | | | | the alignment requirement, if it no longer makes the TType base offset overflow into extra bytes, then we need to pad to those bytes ourselves. llvm-svn: 97196
* And should use the correct variable.Bill Wendling2010-02-261-1/+1
| | | | llvm-svn: 97193
* Got assertion check backwards.Bill Wendling2010-02-261-1/+1
| | | | llvm-svn: 97192
* Catch a corner case where adding the padding to the "TType base offset" fieldBill Wendling2010-02-251-2/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | will eliminate the need for padding in the "Call site table length". E.g., if we have this: GCC_except_table1: Lexception1: .byte 0xff ## @LPStart Encoding = omit .byte 0x9b ## @TType Encoding = indirect pcrel sdata4 .byte 0x7f ## @TType base offset .byte 0x03 ## Call site Encoding = udata4 .byte 0x89 ## Call site table length with padding of 1. We want to emit the padding like this: GCC_except_table1: Lexception1: .byte 0xff ## @LPStart Encoding = omit .byte 0x9b ## @TType Encoding = indirect pcrel sdata4 .byte 0xff ## @TType base offset .space 1,0 ## Padding .byte 0x03 ## Call site Encoding = udata4 .byte 0x89 ## Call site table length and not with padding on the "Call site table length" entry. llvm-svn: 97183
* Make comment more meaningful.Bill Wendling2010-02-251-1/+2
| | | | llvm-svn: 97169
* Fix ExpandVectorBuildThroughStack for the case where theDan Gohman2010-02-251-3/+3
| | | | | | | operands are themselves vectors. Based on a patch by Micah Villmow for PR6338. llvm-svn: 97165
* Revert r97064. Duncan pointed out that bitcasts are defined inDan Gohman2010-02-253-23/+12
| | | | | | | | terms of store and load, which means bitcasting between scalar integer and vector has endian-specific results, which undermines this whole approach. llvm-svn: 97137
* MC'ize padding when padding the ULEB128 value.Bill Wendling2010-02-251-7/+5
| | | | llvm-svn: 97087
* LLVM puts padding bytes in the __gcc_except_tab section after theBill Wendling2010-02-243-41/+52
| | | | | | | | | | GCC_except_table label but before the Lexception, which the FDE references. This causes problems as the FDE does not point to the start of an LSDA chunk. Use an unnormalized uleb128 for the call-site table length that includes the padding. llvm-svn: 97078
* clean up various VT manipulations, patch by Micah Villmow! PR6337Chris Lattner2010-02-241-9/+6
| | | | llvm-svn: 97072
* Make getTypeSizeInBits work correctly for array types; it should returnDan Gohman2010-02-243-12/+23
| | | | | | | | | | | | | | | the number of value bits, not the number of bits of allocation for in-memory storage. Make getTypeStoreSize and getTypeAllocSize work consistently for arrays and vectors. Fix several places in CodeGen which compute offsets into in-memory vectors to use TargetData information. This fixes PR1784. llvm-svn: 97064
* convert cycle checker to smallptrset, add comments and make itChris Lattner2010-02-241-20/+20
| | | | | | more elegant. llvm-svn: 97059
* revert david's patch which does not even build.Chris Lattner2010-02-241-4/+4
| | | | llvm-svn: 97057
* Use a SmallPtrSet as suggested by Chris.David Greene2010-02-241-4/+4
| | | | llvm-svn: 97056
* Speculatively revert r97011, "Re-apply 96540 and 96556 with fixes.", again inDaniel Dunbar2010-02-242-86/+9
| | | | | | the hopes of fixing PPC bootstrap. llvm-svn: 97040
* When forming SSE min and max nodes for UGE and ULE comparisons, it'sDan Gohman2010-02-241-0/+23
| | | | | | | | | | | necessary to swap the operands to handle NaN and negative zero properly. Also, reintroduce logic for checking for NaN conditions when forming SSE min and max instructions, fixed to take into consideration NaNs and negative zeros. This allows forming min and max instructions in more cases. llvm-svn: 97025
* Change the scheduler from adding nodes in allnodes orderChris Lattner2010-02-241-2/+14
| | | | | | | | | | | | | | | | | | to adding them in a determinstic order (bottom up from the root) based on the structure of the graph itself. This updates tests for some random changes, interesting bits: CodeGen/Blackfin/promote-logic.ll no longer crashes. I have no idea why, but that's good right? CodeGen/X86/2009-07-16-LoadFoldingBug.ll also fails, but now compiles to have one fewer constant pool entry, making the expected load that was being folded disappear. Since it is an unreduced mass of gnast, I just removed it. This fixes PR6370 llvm-svn: 97023
* add node #'s to debug dumps.Chris Lattner2010-02-241-3/+3
| | | | llvm-svn: 97019
* Re-apply 96540 and 96556 with fixes.Evan Cheng2010-02-242-9/+86
| | | | llvm-svn: 97011
* make selectnodeto set the nodeid to -1. This makes it more akin toChris Lattner2010-02-231-1/+4
| | | | | | creating a new node then replacing uses. llvm-svn: 97000
* Remember to handle sub-registers when moving imp-defs to a rematted instruction.Jakob Stoklund Olesen2010-02-231-2/+17
| | | | llvm-svn: 96995
* Keep track of phi join registers explicitly in LiveVariables.Jakob Stoklund Olesen2010-02-233-52/+36
| | | | | | | | Previously, LiveIntervalAnalysis would infer phi joins by looking for multiply defined registers. That doesn't work if the phi join is implicitly defined in all but one of the predecessors. llvm-svn: 96994
* fix a bug in findNonImmUse (used by IsLegalToFold) where nodes withChris Lattner2010-02-231-2/+14
| | | | | | | | | | no id's would cause early exit allowing IsLegalToFold to return true instead of false, producing a cyclic dag. This was striking the new isel because it isn't using SelectNodeTo yet, which theoretically is just an optimization. llvm-svn: 96972
* Print node ID's in dumps and views if set.Chris Lattner2010-02-231-0/+3
| | | | llvm-svn: 96971
OpenPOWER on IntegriCloud