summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Teach the legalizer how to handle operands for VSELECT nodesJustin Holewinski2012-11-292-1/+60
| | | | | | | If we need to split the operand of a VSELECT, it must be the mask operand. We split the entire VSELECT operand with EXTRACT_SUBVECTOR. llvm-svn: 168883
* Allow targets to prefer TypeSplitVector over TypePromoteInteger when ↵Justin Holewinski2012-11-291-1/+1
| | | | | | | | computing the legalization method for vectors For some targets, it is desirable to prefer scalarizing <N x i1> instead of promoting to a larger legal type, such as <N x i32>. llvm-svn: 168882
* Use MCPhysReg for RegisterClassInfo allocation orders.Jakob Stoklund Olesen2012-11-296-15/+17
| | | | | | This saves a bit of memory. llvm-svn: 168852
* Avoid rewriting instructions twice.Jakob Stoklund Olesen2012-11-291-0/+9
| | | | | | | | | This could cause miscompilations in targets where sub-register composition is not always idempotent (ARM). <rdar://problem/12758887> llvm-svn: 168837
* When combining consecutive stores allow loads in between the stores, if the ↵Nadav Rotem2012-11-291-3/+61
| | | | | | loads do not alias. llvm-svn: 168832
* Make the LiveRegMatrix analysis available to targets.Jakob Stoklund Olesen2012-11-2820-564/+21
| | | | | | | | | | | No functional change, just moved header files. Targets can inject custom passes between register allocation and rewriting. This makes it possible to tweak the register allocation before rewriting, using the full global interference checking available from LiveRegMatrix. llvm-svn: 168806
* misched: Analysis that partitions the DAG into subtrees.Andrew Trick2012-11-282-56/+222
| | | | | | | | | | | This is a simple, cheap infrastructure for analyzing the shape of a DAG. It recognizes uniform DAGs that take the shape of bottom-up subtrees, such as the included matrix multiplication example. This is useful for heuristics that balance register pressure with ILP. Two canonical expressions of the heuristic are implemented in scheduling modes: -misched-ilpmin and -misched-ilpmax. llvm-svn: 168773
* misched: rename ScheduleDAGILP to ScheduleDFS to prepare for other heuristics.Andrew Trick2012-11-282-2/+2
| | | | llvm-svn: 168772
* misched: better alias analysis.Andrew Trick2012-11-281-2/+3
| | | | | | | | | | | | | This fixes a hole in the "cheap" alias analysis logic implemented within the DAG builder itself, regardless of whether proper alias analysis is enabled. It now handles this pattern produced by LSR+CodeGenPrepare. %sunkaddr1 = ptrtoint * %obj to i64 %sunkaddr2 = add i64 %sunkaddr1, %lsr.iv %sunkaddr3 = inttoptr i64 %sunkaddr2 to i32* store i32 %v, i32* %sunkaddr3 llvm-svn: 168768
* misched: Debug output fix. Use an always valid iterator.Andrew Trick2012-11-281-1/+1
| | | | llvm-svn: 168767
* Move the guts of TargetInstrInfoImpl into the TargetInstrInfo class.Jakob Stoklund Olesen2012-11-283-691/+659
| | | | | | | The *Impl class no longer serves a purpose now that the super-class implementation is in CodeGen. llvm-svn: 168759
* Move Target{Instr,Register}Info.cpp into lib/CodeGen.Jakob Stoklund Olesen2012-11-283-0/+338
| | | | | | | | | | | | | | | | The Target library is not allowed to depend on the large CodeGen library, but the TRI and TII classes provide abstract interfaces that require both caller and callee to link to CodeGen. The implementation files for these classes provide default implementations of some of the hooks. These methods may need to reference CodeGen, so they belong in that library. We already have a number of methods implemented in the TargetInstrInfoImpl sub-class because of that. I will merge that class into the parent next. llvm-svn: 168758
* Revert r168630, r168631, and r168633 as these are causing nightly test failures.Chad Rosier2012-11-284-2/+4
| | | | llvm-svn: 168751
* Attempt to make the comments for dwarf debug look more likeEric Christopher2012-11-272-274/+200
| | | | | | the coding standard would like. llvm-svn: 168737
* Reapply section moving, make sure string section is output last.Eric Christopher2012-11-271-24/+54
| | | | llvm-svn: 168736
* CSE: allow PerformTrivialCoalescing to check copies across basic blockManman Ren2012-11-271-2/+0
| | | | | | | | | | | | | | | | boundaries. Given the following case: BB0 %vreg1<def> = SUBrr %vreg0, %vreg7 %vreg2<def> = COPY %vreg7 BB1 %vreg10<def> = SUBrr %vreg0, %vreg2 We should be able to CSE between SUBrr in BB0 and SUBrr in BB1. rdar://12462006 llvm-svn: 168717
* Remove duplicated #includes.Jakub Staszak2012-11-271-4/+0
| | | | llvm-svn: 168712
* Never use .lcomm on platforms where it does not accept an alignmentUlrich Weigand2012-11-271-2/+7
| | | | | | | | | | | argument. Instead, use a pair of .local and .comm directives. This avoids spurious differences between binaries built by the integrated assembler vs. those built by the external assembler, since the external assembler may impose alignment requirements on .lcomm symbols where the integrated assembler does not. llvm-svn: 168704
* Revert rearrangement of debug info sections to unblock the botsEric Christopher2012-11-271-59/+26
| | | | | | and O0 + debug codegen. llvm-svn: 168680
* Remove unneeded #include.Jakub Staszak2012-11-271-1/+0
| | | | llvm-svn: 168670
* Remove unneeded #include.Jakub Staszak2012-11-271-1/+0
| | | | llvm-svn: 168664
* llvm/CodeGen: Remove empty files in r168659.NAKAMURA Takumi2012-11-271-0/+0
| | | | llvm-svn: 168663
* Remove unused forward declaration.Jakub Staszak2012-11-271-1/+0
| | | | llvm-svn: 168660
* Remove unused MachineLoopRanges analysis.Jakub Staszak2012-11-274-149/+0
| | | | llvm-svn: 168659
* Make comment names match function names.Eric Christopher2012-11-271-3/+3
| | | | llvm-svn: 168644
* Add in sections for the fission case (no change so incorrect) andEric Christopher2012-11-271-1/+32
| | | | | | add a TODO for starting. llvm-svn: 168643
* Reorder section output ordering.Eric Christopher2012-11-271-25/+27
| | | | llvm-svn: 168638
* Whitespace cleanup.Eric Christopher2012-11-271-27/+27
| | | | llvm-svn: 168637
* Add an assertion to ensure freezeReservedRegs() is only ever called once.Chad Rosier2012-11-261-0/+2
| | | | llvm-svn: 168633
* Now that the X86 Maximal Stack Alignment Check pass has been removed (i.e.,Chad Rosier2012-11-262-3/+0
| | | | | | | | | r168627), we no longer need to call the freezeReservedRegs() function a second time. Previously, this pass was conservatively adding the FP to the set of reserved registers, requiring the second update to the reserved registers. rdar://12719844 llvm-svn: 168631
* Now that the X86 Maximal Stack Alignment Check pass has been removed (i.e.,Chad Rosier2012-11-261-1/+0
| | | | | | | | | r168627), we no longer need to call the freezeReservedRegs() function a second time. Previously, this pass was conservatively adding the FP to the set of reserved registers, requiring the second update to the reserved registers. rdar://12719844 llvm-svn: 168630
* Don't use iterator after being erased.Jakub Staszak2012-11-261-1/+1
| | | | llvm-svn: 168622
* Remove unneeded #includes.Jakub Staszak2012-11-261-4/+0
| | | | llvm-svn: 168608
* Refactor to make helper method static.Craig Topper2012-11-252-29/+14
| | | | llvm-svn: 168557
* Remove duplicate check of LimitFloatPrecision. It was already checked ↵Craig Topper2012-11-251-1/+1
| | | | | | earlier before IsExp10 could be set to true. llvm-svn: 168553
* Factor common code out of individual if blocks into common tail.Craig Topper2012-11-251-24/+12
| | | | llvm-svn: 168551
* Remove redundant calls to getCurDebugLoc in visitIntrinsicCall. It's already ↵Craig Topper2012-11-241-7/+4
| | | | | | called at the start of the function and captured in a local variable. llvm-svn: 168548
* Refactor a bit to make some helper methods static.Craig Topper2012-11-242-39/+20
| | | | llvm-svn: 168546
* Factor some common code out of individual if blocks.Craig Topper2012-11-241-52/+27
| | | | llvm-svn: 168538
* Refactor a bit to make some helper functions static.Craig Topper2012-11-232-54/+24
| | | | llvm-svn: 168524
* Cleanup: Simplify loop end logic in computeRegisterProperties().Patrik Hägglund2012-11-231-5/+4
| | | | llvm-svn: 168507
* Fix 80-col violationEli Bendersky2012-11-221-1/+2
| | | | llvm-svn: 168498
* llvm.fmuladd.* lowering should be checking isOperationLegalOrCustom, rather thanLang Hames2012-11-221-1/+1
| | | | | | isOperationLegal. Thanks to Craig Topper for pointing this out. llvm-svn: 168485
* Pull some code out into functions to make rearranging them a bit easier.Eric Christopher2012-11-222-46/+83
| | | | llvm-svn: 168481
* Whitespace.Eric Christopher2012-11-211-29/+29
| | | | llvm-svn: 168402
* Update for some of the coding standard before rearranging functionsEric Christopher2012-11-213-53/+53
| | | | | | around. llvm-svn: 168401
* Update some comments.Eric Christopher2012-11-211-1/+2
| | | | llvm-svn: 168400
* Update and add some comments.Eric Christopher2012-11-211-0/+8
| | | | llvm-svn: 168399
* Whitespace.Eric Christopher2012-11-211-26/+26
| | | | llvm-svn: 168398
* Remove constness from this, it modifies the output stream as doesEric Christopher2012-11-202-2/+2
| | | | | | everything else underneath. llvm-svn: 168395
OpenPOWER on IntegriCloud