summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Silence VC++ redeclaration warnings.Jeff Cohen2005-09-291-4/+6
| | | | llvm-svn: 23516
* Never rely on ReplaceAllUsesWith when selecting, use CodeGenMap instead.Chris Lattner2005-09-291-34/+29
| | | | | | | ReplaceAllUsesWith does not replace scalars SDOperand floating around on the stack, permitting things to be selected multiple times. llvm-svn: 23515
* Codegen ADD X, IMM -> addis/addi if needed.Chris Lattner2005-09-281-2/+12
| | | | | | This implements PowerPC/fold-li.ll llvm-svn: 23514
* add a testcase for a feature we regressed on because noone wrote the test! :(Chris Lattner2005-09-281-0/+14
| | | | llvm-svn: 23513
* Autogen MUL, move FP cases togetherChris Lattner2005-09-281-24/+12
| | | | llvm-svn: 23512
* disentangle FP from INT versions of div/mulChris Lattner2005-09-281-18/+16
| | | | llvm-svn: 23511
* Use the autogenerated matcher for ADD/SUBChris Lattner2005-09-281-30/+0
| | | | llvm-svn: 23510
* add a patter for SUBFICChris Lattner2005-09-281-1/+1
| | | | llvm-svn: 23509
* Mark int binops as int-only, add FP binops. Mark FADD/FMUL as commutative butChris Lattner2005-09-281-15/+23
| | | | | | not associative. Add [SU]REM. llvm-svn: 23508
* wrap a long lineChris Lattner2005-09-281-1/+2
| | | | llvm-svn: 23507
* Add FP versions of the binary operators, keeping the int and fp worlds seperate.Chris Lattner2005-09-284-115/+124
| | | | llvm-svn: 23506
* Add FP versions of the binary operators, keeping the int and fp worlds seperate.Chris Lattner2005-09-284-97/+108
| | | | | | | | Though I have done extensive testing, it is possible that this will break things in configs I can't test. Please let me know if this causes a problem and I'll fix it ASAP. llvm-svn: 23505
* Add FP versions of the binary operators, keeping the int and fp worlds seperate.Chris Lattner2005-09-284-87/+209
| | | | | | | | Though I have done extensive testing, it is possible that this will break things in configs I can't test. Please let me know if this causes a problem and I'll fix it ASAP. llvm-svn: 23504
* Mark associative nodes as associativeChris Lattner2005-09-281-6/+12
| | | | llvm-svn: 23503
* add support for an associative markerChris Lattner2005-09-282-5/+7
| | | | llvm-svn: 23502
* Emit an error if instructions or patterns are defined but can never match.Chris Lattner2005-09-282-3/+52
| | | | | | | | | | | | | | Currently we check that immediate values live on the RHS of commutative operators. Defining ORI like this, for example: def ORI : DForm_4<24, (ops GPRC:$dst, GPRC:$src1, u16imm:$src2), "ori $dst, $src1, $src2", [(set GPRC:$dst, (or immZExt16:$src2, GPRC:$src1))]>; results in: tblgen: In ORI: Instruction can never match: Immediate values must be on the RHS of commutative operators! llvm-svn: 23501
* Nate pointed out that mulh[us] are commutative as well. Thanks!Chris Lattner2005-09-281-2/+2
| | | | llvm-svn: 23500
* collect commutativity informationChris Lattner2005-09-282-0/+24
| | | | llvm-svn: 23499
* expose commutativity informationChris Lattner2005-09-281-8/+17
| | | | llvm-svn: 23498
* All (xor *) cases are autogenerated nowChris Lattner2005-09-281-43/+0
| | | | llvm-svn: 23497
* add support for missed eqv testsChris Lattner2005-09-281-0/+9
| | | | llvm-svn: 23496
* add testcase for nandChris Lattner2005-09-281-1/+7
| | | | llvm-svn: 23495
* Implement PowerPC/eqv-andc-orc-nor.ll:EQV3Chris Lattner2005-09-281-1/+5
| | | | llvm-svn: 23494
* Consolidate the eqv.ll and nor.ll files together.Chris Lattner2005-09-283-51/+58
| | | | | | Add a missed eqv case. llvm-svn: 23493
* Prefer cheaper patterns to more expensive ones. Print the costs to the ↵Chris Lattner2005-09-281-39/+50
| | | | | | | | generated file llvm-svn: 23492
* simple tests for nor generationChris Lattner2005-09-281-0/+12
| | | | llvm-svn: 23491
* learn to codegen not as NOR instead of xoris/xoriChris Lattner2005-09-281-1/+5
| | | | llvm-svn: 23490
* These nodes are all autogeneratedChris Lattner2005-09-281-44/+0
| | | | llvm-svn: 23489
* Select Constant nodes to TargetConstant nodesChris Lattner2005-09-281-5/+19
| | | | llvm-svn: 23488
* Constant fold llvm.sqrtChris Lattner2005-09-281-1/+9
| | | | llvm-svn: 23487
* add a note about a way to improve this code further, that I won't be gettingChris Lattner2005-09-271-0/+8
| | | | | | to right now. llvm-svn: 23485
* Fix a regression in my previous patch, fixing GlobalOpt/2005-09-27-Crash.llChris Lattner2005-09-271-1/+1
| | | | | | and PR632. llvm-svn: 23484
* Testcase for PR632Chris Lattner2005-09-271-0/+28
| | | | llvm-svn: 23483
* Darwin, like many BSD systems, has a setjmp/longjmp which saves the signal maskChris Lattner2005-09-271-0/+3
| | | | | | | | | on setjmp calls and restores it on longjmp calls (both of which require syscalls). This makes the calls REALLY slow. Use _setjmp/_longjmp instead. This speeds up hexxagon from 120.31s to 15.68s: from 5.53x slower than GCC to 28% faster than GCC. llvm-svn: 23482
* If the target prefers it, use _setjmp/_longjmp should be used instead of ↵Chris Lattner2005-09-271-2/+6
| | | | | | setjmp/longjmp for llvm.setjmp/llvm.longjmp. llvm-svn: 23481
* initialize new flagChris Lattner2005-09-271-0/+1
| | | | llvm-svn: 23480
* Add a new flag for targets where setjmp/longjmp saves/restores the signal mask,Chris Lattner2005-09-271-1/+18
| | | | | | and _setjmp/_longjmp should be used instead (for llvm.setjmp/llvm.longjmp). llvm-svn: 23479
* Avoid spilling stack slots... to stack slots.Chris Lattner2005-09-271-0/+6
| | | | llvm-svn: 23478
* Completely rewrite 'correct' eh support. This changes how setjmp insertionChris Lattner2005-09-271-140/+301
| | | | | | | | | | | | | | | | | is performed so it is only at most once per function that contains an invoke instead of once per invoke in the function. This patch has the following perks: 1. It fixes PR631, which complains about slowness. 2. If fixes PR240, which complains about non-volatile vars being live across setjmp/longjmps. 3. It improves (but does not fix) the jmpbuf alignment issue on itanium by not forcing the jmpbufs to always be 8-bytes off the alignment of the structure. 4. It speeds up 253.perlbmk from 338s to 13.70s (a 25x improvement!), making us now about 4% faster than GCC. Further improvements are also possible. llvm-svn: 23477
* Make the pass name simplerChris Lattner2005-09-271-1/+1
| | | | llvm-svn: 23476
* fix CBackend/2005-09-27-VolatileFuncPtr.llChris Lattner2005-09-271-4/+4
| | | | llvm-svn: 23475
* new testcase the CBE creates invalid C code forChris Lattner2005-09-271-0/+10
| | | | llvm-svn: 23474
* allow demotion to volatile values, add support for invokeChris Lattner2005-09-271-12/+15
| | | | llvm-svn: 23473
* allow demotion to volatile valuesChris Lattner2005-09-271-1/+1
| | | | llvm-svn: 23472
* Add a simple testcase for lowerinvokeChris Lattner2005-09-271-0/+28
| | | | llvm-svn: 23471
* Make sure to clear the CodeGenMap after each basic block is selected to avoidChris Lattner2005-09-271-0/+1
| | | | | | cross MBB pollution. llvm-svn: 23470
* Remove some redundancies.Jim Laskey2005-09-271-10/+10
| | | | llvm-svn: 23469
* Make this slightly more efficient by pushing actual type information downChris Lattner2005-09-271-8/+11
| | | | | | | into the evaluator. This shrinks a release build of instcombine's text section from 216363 to 215975 bytes (on PPC). llvm-svn: 23468
* Split SimpleConstantVal up into its components, so each Constant subclass ↵Chris Lattner2005-09-271-10/+14
| | | | | | | | | | getsa different enum value. This allows 'classof' for these to be really simple,not needing to call getType() anymore. This speeds up isa/dyncast/etc for constants, and also makes them smaller. For example, the text section of a release build of InstCombine.cpp shrinks from 230037 bytes to 216363 bytes, a 6% reduction. llvm-svn: 23467
* Split SimpleConstantVal up into its components, so each Constant subclass getsChris Lattner2005-09-273-35/+32
| | | | | | | | | | | a different enum value. This allows 'classof' for these to be really simple, not needing to call getType() anymore. This speeds up isa/dyncast/etc for constants, and also makes them smaller. For example, the text section of a release build of InstCombine.cpp shrinks from 230037 bytes to 216363 bytes, a 6% reduction. llvm-svn: 23466
OpenPOWER on IntegriCloud