summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Added versions of VCGE, VCGT, VCLE, and VCLT NEON instructions which compare toJohnny Chen2010-02-231-9/+25
| | | | | | | | (immediate #0) for disassembly only. A8.6.283, A8.6.285, A8.6.287, A8.6.290 llvm-svn: 96856
* fix hte last cellspu failure.Chris Lattner2010-02-231-11/+12
| | | | llvm-svn: 96854
* hack around more crimes in instruction selection.Chris Lattner2010-02-231-16/+26
| | | | llvm-svn: 96852
* the cell backend is making all sorts of unsafe and incorrect assumptions Chris Lattner2010-02-231-26/+44
| | | | | | | about ownership and update policies. It isn't clear why it is doing all this lowering at isel time instead of in legalize. This fixes fcmp64.ll llvm-svn: 96849
* Added VCEQ (immediate #0) NEON instruction for disassembly only.Johnny Chen2010-02-231-0/+41
| | | | | | A8.6.281 llvm-svn: 96838
* Dead code eliminationJakob Stoklund Olesen2010-02-232-14/+0
| | | | llvm-svn: 96837
* Fix viewCFG on Linux.Jeffrey Yasskin2010-02-231-1/+1
| | | | llvm-svn: 96834
* Instcombine constant folding can normalize gep with negative index to index ↵Evan Cheng2010-02-221-4/+9
| | | | | | with large offset. When instcombine objsize checking transformation sees these geps where the offset seemingly point out of bound, it should just return "i don't know" rather than asserting. llvm-svn: 96825
* Updated version of r96634 (which was reverted due to failing 176.gcc andJim Grosbach2010-02-225-5/+23
| | | | | | | | 126.gcc nightly tests. These failures uncovered latent bugs that machine DCE could remove one half of a stack adjust down/up pair, causing PEI to assert. This update fixes that, and the tests now pass. llvm-svn: 96822
* Clean up a bit and fix for when SPAdj != 0Jim Grosbach2010-02-221-3/+2
| | | | llvm-svn: 96818
* The predicate index isn't fixed, so scan for it to make sure we get the properJim Grosbach2010-02-221-2/+3
| | | | | | | | | value. Thumb2 uses the tADJCALLSTACK* instructions, and doesn't need t2 versions, so remove the FIXME entry. llvm-svn: 96817
* Canonicalize ConstantInts to the right operand of commutativeDan Gohman2010-02-222-2/+6
| | | | | | | | | | operators. The test difference is just due to the multiplication operands being commuted (and thus requiring a more elaborate match). In optimized code, that expression would be folded. llvm-svn: 96816
* remove dupes now.Chris Lattner2010-02-221-2/+0
| | | | llvm-svn: 96811
* move #includes earlier.Chris Lattner2010-02-222-2/+3
| | | | llvm-svn: 96810
* MC/Mach-O: Remove non-sensical comment, and add a missing AddValueSymbols call.Daniel Dunbar2010-02-221-3/+1
| | | | llvm-svn: 96809
* Minor formatting cleanup.Dan Gohman2010-02-221-2/+1
| | | | llvm-svn: 96808
* Use Instruction::isCommutative instead of duplicating it.Dan Gohman2010-02-221-24/+1
| | | | llvm-svn: 96807
* Added SEL, SXTB16, SXTAB16, UXTAB16, SMMULR, SMMLAR, SMMLSR, SMUAD, and SMUSD,Johnny Chen2010-02-221-5/+83
| | | | | | for disassembly only. llvm-svn: 96806
* Erase deleted instructions from GVN's ValueTable. This fixes assertionBob Wilson2010-02-221-0/+7
| | | | | | failures from ValueTable::verifyRemoved() when using -debug. llvm-svn: 96805
* Added a bunch of instructions for disassembly only:Johnny Chen2010-02-221-19/+145
| | | | | | | | | | o signed/unsigned add/subtract o signed/unsigned halving add/subtract o unsigned sum of absolute difference [and accumulate] o signed/unsigned saturate o signed multiply accumulate/subtract [long] dual llvm-svn: 96795
* Mark the return address stack slot as mutable when moving the return addressArnold Schwaighofer2010-02-221-2/+2
| | | | | | | | | | | | | | | | | during a tail call. A parameter might overwrite this stack slot during the tail call. The sequence during a tail call is: 1.) load return address to temp reg 2.) move parameters (might involve storing to return address stack slot) 3.) store return address to new location from temp reg If the stack location is marked immutable CodeGen can colocate load (1) with the store (3). This fixes bug 6225. llvm-svn: 96783
* Remove unused variables and parameters.Dan Gohman2010-02-224-50/+28
| | | | llvm-svn: 96780
* Fix various doxygen warnings.Dan Gohman2010-02-222-4/+2
| | | | llvm-svn: 96779
* Fix a typo in a comment.Dan Gohman2010-02-221-1/+1
| | | | llvm-svn: 96778
* Constant-fold certain comparisons with infinity and negative infinity.Dan Gohman2010-02-221-0/+26
| | | | llvm-svn: 96777
* Remove the logic for reasoning about NaNs from the code that formsDan Gohman2010-02-221-88/+11
| | | | | | | | | | SSE min and max instructions. The real thing this code needs to be concerned about is negative zero. Update the sse-minmax.ll test accordingly, and add tests for -enable-unsafe-fp-math mode as well. llvm-svn: 96775
* When emitting an instruction which depends on both a post-incrementedDan Gohman2010-02-221-2/+4
| | | | | | | | | induction variable value and a loop-variant value, don't force the insert position to be at the post-increment position, because it may not be dominated by the loop-variant value. This fixes a use-before-def problem noticed on PPC. llvm-svn: 96774
* This cast<Instruction> is unnecessary.Dan Gohman2010-02-221-1/+1
| | | | llvm-svn: 96771
* fix an incorrect VT: eflags is always i32. The bug was causing us toChris Lattner2010-02-221-1/+1
| | | | | | | | create an X86ISD::Cmp node with result type i64 on the CodeGen/X86/shift-i256.ll testcase and the new isel was assert on it downstream. llvm-svn: 96768
* MC/X86: Add stub AsmBackend.Daniel Dunbar2010-02-215-3/+50
| | | | llvm-svn: 96763
* MC: Sketch registry support for target specific assembler backends.Daniel Dunbar2010-02-211-0/+19
| | | | llvm-svn: 96762
* It turned out that we failed to emit proper symbol stubs on non-x86/darwin ↵Anton Korobeynikov2010-02-214-84/+30
| | | | | | | | | for ages (we emitted a reference to a stub, but no stub was emitted). The code inside x86-32/macho target objfile lowering should actually be the generic one - move it there. This (I really, really hope) should fix EH issues on ppc/darwin and arm/darwin. llvm-svn: 96755
* Remove a bunch of duplicated code, where there was one version taking a ↵Duncan Sands2010-02-211-177/+15
| | | | | | | | std::ostream and another taking a raw_ostream, but otherwise identical. Use raw_ostream everywhere. llvm-svn: 96746
* Enable assertion to detect cyclic valno references.Jakob Stoklund Olesen2010-02-211-1/+1
| | | | | | This changes the stack overflow in PR6363 to an assertion failure. llvm-svn: 96744
* IT turns out that during jumpless setcc lowering eq and ne were swapped.Anton Korobeynikov2010-02-211-8/+5
| | | | | | This fixes PR6348 llvm-svn: 96734
* fix and un-xfail X86/vec_ss_load_fold.llChris Lattner2010-02-211-3/+2
| | | | llvm-svn: 96720
* Undo r96654. The printing of ARM shift instructions in canonical forms can beJohnny Chen2010-02-211-24/+28
| | | | | | | | handled in ARMInstPrinter.cpp. And added PLD/PLDW/PLI (Preload Data/Instruction) for disassembly only. llvm-svn: 96719
* rename SelectScalarSSELoad -> SelectScalarSSELoadXXX and rewriteChris Lattner2010-02-211-18/+28
| | | | | | | | | | | | it to follow the mode needed by the new isel. Instead of returning the input and output chains, it just returns the (currently only one, which is a silly limitation) node that has input and output chains. Since we want the old thing to still work, add a new SelectScalarSSELoad to emulate the old interface. The XXX suffix and the wrapper will eventually go away. llvm-svn: 96715
* Eliminate some uses of immAllOnes, just use -1, it doesChris Lattner2010-02-212-4/+4
| | | | | | the same thing and is more efficient for the matcher. llvm-svn: 96712
* Rename getSDiv to getExactSDiv to reflect its behavior in cases whereDan Gohman2010-02-191-23/+25
| | | | | | the division would have a remainder. llvm-svn: 96693
* Check for overflow when scaling up an add or an addrec forDan Gohman2010-02-191-18/+49
| | | | | | scaled reuse. llvm-svn: 96692
* Revert 96634. It causes assertion failures for 126.gcc and 176.gcc inBob Wilson2010-02-193-17/+6
| | | | | | the armv6 nightly tests. llvm-svn: 96691
* Add a comment.Dan Gohman2010-02-191-0/+6
| | | | llvm-svn: 96688
* Add support for the 'alignstack' attribute to the x86 backend. Fixes PR5254.Charles Davis2010-02-192-1/+6
| | | | | | Also, FileCheck'ize a test. llvm-svn: 96686
* Teach ScalarEvolution how to compute a tripcount for a loop withDan Gohman2010-02-191-0/+13
| | | | | | | | true or false as its exit condition. These are usually eliminated by SimplifyCFG, but the may be left around during a pass which wishes to preserve the CFG. llvm-svn: 96683
* Revert Anton's most recent EH patch (r96637), since it breaks a lot ofBob Wilson2010-02-193-17/+40
| | | | | | ARM and Thumb tests. llvm-svn: 96680
* Revert commits 96556 and 96640, because commit 96556 breaks theDuncan Sands2010-02-193-112/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | dragonegg self-host build. I reverted 96640 in order to revert 96556 (96640 goes on top of 96556), but it also looks like with both of them applied the breakage happens even earlier. The symptom of the 96556 miscompile is the following crash: llvm[3]: Compiling AlphaISelLowering.cpp for Release build cc1plus: /home/duncan/tmp/tmp/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:4982: void llvm::SelectionDAG::ReplaceAllUsesWith(llvm::SDNode*, llvm::SDNode*, llvm::SelectionDAG::DAGUpdateListener*): Assertion `(!From->hasAnyUseOfValue(i) || From->getValueType(i) == To->getValueType(i)) && "Cannot use this version of ReplaceAllUsesWith!"' failed. Stack dump: 0. Running pass 'X86 DAG->DAG Instruction Selection' on function '@_ZN4llvm19AlphaTargetLowering14LowerOperationENS_7SDValueERNS_12SelectionDAGE' g++: Internal error: Aborted (program cc1plus) This occurs when building LLVM using LLVM built by LLVM (via dragonegg). Probably LLVM has miscompiled itself, though it may have miscompiled GCC and/or dragonegg itself: at this point of the self-host build, all of GCC, LLVM and dragonegg were built using LLVM. Unfortunately this kind of thing is extremely hard to debug, and while I did rummage around a bit I didn't find any smoking guns, aka obviously miscompiled code. Found by bisection. r96556 | evancheng | 2010-02-18 03:13:50 +0100 (Thu, 18 Feb 2010) | 5 lines Some dag combiner goodness: Transform br (xor (x, y)) -> br (x != y) Transform br (xor (xor (x,y), 1)) -> br (x == y) Also normalize (and (X, 1) == / != 1 -> (and (X, 1)) != / == 0 to match to "test on x86" and "tst on arm" r96640 | evancheng | 2010-02-19 01:34:39 +0100 (Fri, 19 Feb 2010) | 16 lines Transform (xor (setcc), (setcc)) == / != 1 to (xor (setcc), (setcc)) != / == 1. e.g. On x86_64 %0 = icmp eq i32 %x, 0 %1 = icmp eq i32 %y, 0 %2 = xor i1 %1, %0 br i1 %2, label %bb, label %return => testl %edi, %edi sete %al testl %esi, %esi sete %cl cmpb %al, %cl je LBB1_2 llvm-svn: 96672
* recommit 96626, evidence that it broke things appearsDale Johannesen2010-02-192-0/+36
| | | | | | to be spurious llvm-svn: 96662
* Added entries for ASR, LSL, LSR, ROR, and RRX so that the disassembler printsJohnny Chen2010-02-191-0/+24
| | | | | | | | | | | | | | | | | out the canonical form (A8.6.98) instead of the pseudo-instruction as provided via MOVs. DBG_ARM_DISASM=YES llvm-mc -triple=arm-unknown-unknown --disassemble 0xc0 0x00 0xa0 0xe1 Opcode=29 Name=ASR Format=ARM_FORMAT_LDMISCFRM 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ------------------------------------------------------------------------------------------------- | 1: 1: 1: 0| 0: 0: 0: 1| 1: 0: 1: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 1: 1: 0: 0| 0: 0: 0: 0| ------------------------------------------------------------------------------------------------- asr r0, r0, #1 llvm-svn: 96654
* Revert 96626, which causes build failure on ppc Darwin.Dale Johannesen2010-02-192-36/+0
| | | | llvm-svn: 96653
OpenPOWER on IntegriCloud