summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Properly remove duplicate instructions as result of diamond if-conversion. ↵Evan Cheng2007-06-181-103/+176
| | | | | | Other bug fixes. llvm-svn: 37623
* Cache the results of dependsOnInvoke()Owen Anderson2007-06-181-4/+18
| | | | llvm-svn: 37622
* Fix indentation.Owen Anderson2007-06-181-6/+6
| | | | llvm-svn: 37621
* Don't perform an expensive check if it's not necessary.Owen Anderson2007-06-181-2/+12
| | | | llvm-svn: 37620
* Revert patch. It regresses:Bill Wendling2007-06-161-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | define double @test2(i64 %A) { %B = bitcast i64 %A to double ret double %B } $ llvm-as < t.ll | llc -march=x86-64 before: .align 4 .globl _test2 _test2: movd %rdi, %xmm0 ret after: _test2: subq $8, %rsp movq %rdi, (%rsp) movsd (%rsp), %xmm0 addq $8, %rsp ret llvm-svn: 37617
* Really turn if-converter loose:Evan Cheng2007-06-161-166/+211
| | | | | | | | | | 1. Consider all possible ifcvt cases at once. No longer restricted to bottom up iterative approach. 2. Sort all possible cases based on a cost function. Perform the most profitable ones first invalidate others that target the same blocks. 3. Fixed a number of bugs related to block duplication. llvm-svn: 37613
* Fix a failure to bit_convert from integer GPR to MMX register.Bill Wendling2007-06-161-0/+2
| | | | llvm-svn: 37611
* Fix test/Transforms/GVNPRE/2007-06-15-InvokeInst.ll by ignoring all ↵Owen Anderson2007-06-161-3/+36
| | | | | | instructions that depend on invokes. llvm-svn: 37610
* Codegen support (stripped out) for the annotate attribute.Tanya Lattner2007-06-152-0/+7
| | | | llvm-svn: 37608
* Not every predicable block can be safely duplicated.Evan Cheng2007-06-151-8/+35
| | | | llvm-svn: 37607
* Instructions with unique labels or embedded jumptables cannot be duplicated ↵Evan Cheng2007-06-152-0/+31
| | | | | | during ifcvt. llvm-svn: 37606
* Fold a binary operator with constant operands when expanding code for a SCEV.Dan Gohman2007-06-151-0/+5
| | | | llvm-svn: 37602
* Fix CodeGen/X86/inline-asm-x-scalar.ll:test4, by retaining regclass infoChris Lattner2007-06-151-6/+9
| | | | | | for tied register constraints. llvm-svn: 37601
* MachineInstr::isPredicable() is no longer needed.Evan Cheng2007-06-152-10/+5
| | | | llvm-svn: 37599
* Workaround for PR1508.Duncan Sands2007-06-151-29/+96
| | | | llvm-svn: 37597
* Use SCEVConstant::get instead of SCEVUnknown::get to create anDan Gohman2007-06-151-2/+2
| | | | | | integer constant SCEV. llvm-svn: 37596
* Fix test/Transforms/GVNPRE/2007-06-15-Looping.llOwen Anderson2007-06-151-4/+2
| | | | llvm-svn: 37595
* Extra edges are deleted later if needed.Evan Cheng2007-06-151-1/+0
| | | | llvm-svn: 37593
* Add a SCEV class and supporting code for sign-extend expressions.Dan Gohman2007-06-154-25/+76
| | | | | | | | | | This created an ambiguity for expandInTy to decide when to use sign-extension or zero-extension, but it turns out that most of its callers don't actually need a type conversion, now that LLVM types don't have explicit signedness. Drop expandInTy in favor of plain expand, and change the few places that actually need a type conversion to do it themselves. llvm-svn: 37591
* Allow small blocks to be duplicated to enable if-conversion.Evan Cheng2007-06-151-25/+99
| | | | llvm-svn: 37590
* Generalize many transforms to work on ~ of vectors in addition to ~ ofChris Lattner2007-06-151-29/+31
| | | | | | | integer ops. This implements Transforms/InstCombine/and-or-not.ll test3/test4, and finishes off PR1510 llvm-svn: 37589
* add a Constant::getAllOnesValue helper function, which works on integersChris Lattner2007-06-151-0/+5
| | | | | | AND vectors. llvm-svn: 37586
* Enhance BinaryOperator::isNot to support vector not.Chris Lattner2007-06-151-1/+5
| | | | llvm-svn: 37585
* Implement two xforms:Chris Lattner2007-06-151-6/+26
| | | | | | | | | | | 1. ~(~X | Y) === (X & ~Y) 2. (A|B) & ~(A&B) -> A^B This allows us to transform ~(~(a|b) | (a&b)) -> a^b. This implements PR1510 for scalar values. llvm-svn: 37584
* delete some obviously dead vector operations, which deletes a few thousandChris Lattner2007-06-151-1/+12
| | | | | | operations from Duraids example. llvm-svn: 37582
* No really, clear predcessors states.Evan Cheng2007-06-141-7/+8
| | | | llvm-svn: 37581
* If BB is predicated, invalidate its predecessor(s) which would if-convert ↵Evan Cheng2007-06-141-3/+7
| | | | | | it. It needs to be re-analyzed. llvm-svn: 37580
* Rename MVT::getVectorBaseType to MVT::getVectorElementType.Dan Gohman2007-06-146-34/+34
| | | | llvm-svn: 37579
* Do not treat FP_REG_KILL as terminator in branch analysis (X86).Dale Johannesen2007-06-142-4/+11
| | | | llvm-svn: 37578
* Fix typo.Evan Cheng2007-06-141-1/+1
| | | | llvm-svn: 37577
* Add a target hook to allow loads from constant pools to be rematerialized, ↵Dan Gohman2007-06-144-3/+32
| | | | | | | | and an implementation for x86. llvm-svn: 37576
* Fix some stupid bugs that have effectively disabled if-conversion.Evan Cheng2007-06-141-1/+7
| | | | llvm-svn: 37575
* Eliminate some redundant newlines in asm output.Dan Gohman2007-06-143-5/+4
| | | | llvm-svn: 37574
* Add support to tablegen for specifying subregister classes on a per register ↵Christopher Lamb2007-06-131-0/+4
| | | | | | class basis. llvm-svn: 37572
* Handle blocks with 2 unconditional branches in AnalyzeBranch.Dale Johannesen2007-06-134-0/+40
| | | | llvm-svn: 37571
* Only correctly lower exception handing intrinsics if exception handling isDuncan Sands2007-06-131-8/+7
| | | | | | turned on. Likewise for scanning of invokes to mark landing pads. llvm-svn: 37570
* Introduce new SelectionDAG node opcodes VEXTRACT_SUBVECTOR andDan Gohman2007-06-133-21/+83
| | | | | | | | | | | | | VCONCAT_VECTORS. Use these for CopyToReg and CopyFromReg legalizing in the case that the full register is to be split into subvectors instead of scalars. This replaces uses of VBIT_CONVERT to present values as vector-of-vector types in order to make whole subvectors accessible via BUILD_VECTOR and EXTRACT_VECTOR_ELT. This is in preparation for adding extended ValueType values, where having vector-of-vector types is undesirable. llvm-svn: 37569
* When creating CopyFromReg nodes, always use legal types. And use theDan Gohman2007-06-131-6/+6
| | | | | | | correct types for the result vector, even though it is currently bitcasted to a different type immediately. llvm-svn: 37568
* The fix that was applied for PR1224 stops the compilerDuncan Sands2007-06-131-32/+24
| | | | | | | | | | | | | | | | | | | | | | | | crashing but breaks exception handling. The problem described in PR1224 is that invoke is a terminator that can produce a value. The value may be needed in other blocks. The code that writes to registers values needed in other blocks runs before terminators are lowered (in this case invoke) so asserted because the value was not yet available. The fix that was applied was to do invoke lowering earlier, before writing values to registers. The problem this causes is that the code to copy values to registers can be output after the invoke call. If an exception is raised and control is passed to the landing pad then this copy-code will never execute. If the value is needed in some code path reached via the landing pad then that code will get something bogus. So revert the original fix and simply skip invoke values in the general copying to registers code. Instead copy the invoke value to a register in the invoke lowering code. llvm-svn: 37567
* TypoEvan Cheng2007-06-131-1/+1
| | | | llvm-svn: 37566
* Now if-converting all 4 variants of triangles.Evan Cheng2007-06-121-24/+40
| | | | llvm-svn: 37565
* Fix test/Transforms/GVNPRE/2007-06-12-PhiTranslate.llOwen Anderson2007-06-121-38/+39
| | | | llvm-svn: 37564
* isReachableFromEntry() is not suitable for post dominator.Devang Patel2007-06-121-0/+2
| | | | llvm-svn: 37562
* Remove redundant check.Devang Patel2007-06-121-7/+3
| | | | llvm-svn: 37561
* Check A dominates B and vise versa first while searching for nearestDevang Patel2007-06-121-8/+4
| | | | | | common dominator. llvm-svn: 37559
* Refactor some code, and fix test/Transforms/GVNPRE/2007-06-12-NoExit.ll by ↵Owen Anderson2007-06-121-47/+69
| | | | | | | | being more careful when using post-dominator information. llvm-svn: 37556
* Sink CmpInst's to their uses to reduce register pressure.Dale Johannesen2007-06-121-3/+61
| | | | llvm-svn: 37554
* Break DominatorTree from ETNode.Devang Patel2007-06-122-97/+8
| | | | | | Remove unused PostETForest. llvm-svn: 37551
* Fix a few more bugs, including an instance of walking in reverse topological ↵Owen Anderson2007-06-121-31/+49
| | | | | | | | rather than topological order. This fixes a testcase extracted from llvm-test. llvm-svn: 37550
* Use SmallPtrSet instaed of std::setDevang Patel2007-06-121-2/+1
| | | | llvm-svn: 37548
OpenPOWER on IntegriCloud