Age | Commit message (Collapse) | Author | |
---|---|---|---|
2005-08-09 | new reg test for a failure last night on ppc/darwin | Chris Lattner | |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22725 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-09 | SCEVAddExpr::get() of an empty list is invalid. | Chris Lattner | |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22724 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-09 | This is now implemented | Chris Lattner | |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22723 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-09 | Implement: LoopStrengthReduce/share_ivs.ll | Chris Lattner | |
Two changes: * Only insert one PHI node for each stride. Other values are live in values. This cannot introduce higher register pressure than the previous approach, and can take advantage of reg+reg addressing modes. * Factor common base values out of uses before moving values from the base to the immediate fields. This improves codegen by starting the stride-specific PHI node out at a common place for each IV use. As an example, we used to generate this for a loop in swim: .LBB_main_no_exit_2E_6_2E_i_no_exit_2E_7_2E_i_2: ; no_exit.7.i lfd f0, 0(r8) stfd f0, 0(r3) lfd f0, 0(r6) stfd f0, 0(r7) lfd f0, 0(r2) stfd f0, 0(r5) addi r9, r9, 1 addi r2, r2, 8 addi r5, r5, 8 addi r6, r6, 8 addi r7, r7, 8 addi r8, r8, 8 addi r3, r3, 8 cmpw cr0, r9, r4 bgt .LBB_main_no_exit_2E_6_2E_i_no_exit_2E_7_2E_i_1 now we emit: .LBB_main_no_exit_2E_6_2E_i_no_exit_2E_7_2E_i_2: ; no_exit.7.i lfdx f0, r8, r2 stfdx f0, r9, r2 lfdx f0, r5, r2 stfdx f0, r7, r2 lfdx f0, r3, r2 stfdx f0, r6, r2 addi r10, r10, 1 addi r2, r2, 8 cmpw cr0, r10, r4 bgt .LBB_main_no_exit_2E_6_2E_i_no_exit_2E_7_2E_i_1 As another more dramatic example, we used to emit this: .LBB_main_L_90_no_exit_2E_0_2E_i16_no_exit_2E_1_2E_i19_2: ; no_exit.1.i19 lfd f0, 8(r21) lfd f4, 8(r3) lfd f5, 8(r27) lfd f6, 8(r22) lfd f7, 8(r5) lfd f8, 8(r6) lfd f9, 8(r30) lfd f10, 8(r11) lfd f11, 8(r12) fsub f10, f10, f11 fadd f5, f4, f5 fmul f5, f5, f1 fadd f6, f6, f7 fadd f6, f6, f8 fadd f6, f6, f9 fmadd f0, f5, f6, f0 fnmsub f0, f10, f2, f0 stfd f0, 8(r4) lfd f0, 8(r25) lfd f5, 8(r26) lfd f6, 8(r23) lfd f9, 8(r28) lfd f10, 8(r10) lfd f12, 8(r9) lfd f13, 8(r29) fsub f11, f13, f11 fadd f4, f4, f5 fmul f4, f4, f1 fadd f5, f6, f9 fadd f5, f5, f10 fadd f5, f5, f12 fnmsub f0, f4, f5, f0 fnmsub f0, f11, f3, f0 stfd f0, 8(r24) lfd f0, 8(r8) fsub f4, f7, f8 fsub f5, f12, f10 fnmsub f0, f5, f2, f0 fnmsub f0, f4, f3, f0 stfd f0, 8(r2) addi r20, r20, 1 addi r2, r2, 8 addi r8, r8, 8 addi r10, r10, 8 addi r12, r12, 8 addi r6, r6, 8 addi r29, r29, 8 addi r28, r28, 8 addi r26, r26, 8 addi r25, r25, 8 addi r24, r24, 8 addi r5, r5, 8 addi r23, r23, 8 addi r22, r22, 8 addi r3, r3, 8 addi r9, r9, 8 addi r11, r11, 8 addi r30, r30, 8 addi r27, r27, 8 addi r21, r21, 8 addi r4, r4, 8 cmpw cr0, r20, r7 bgt .LBB_main_L_90_no_exit_2E_0_2E_i16_no_exit_2E_1_2E_i19_1 we now emit: .LBB_main_L_90_no_exit_2E_0_2E_i16_no_exit_2E_1_2E_i19_2: ; no_exit.1.i19 lfdx f0, r21, r20 lfdx f4, r3, r20 lfdx f5, r27, r20 lfdx f6, r22, r20 lfdx f7, r5, r20 lfdx f8, r6, r20 lfdx f9, r30, r20 lfdx f10, r11, r20 lfdx f11, r12, r20 fsub f10, f10, f11 fadd f5, f4, f5 fmul f5, f5, f1 fadd f6, f6, f7 fadd f6, f6, f8 fadd f6, f6, f9 fmadd f0, f5, f6, f0 fnmsub f0, f10, f2, f0 stfdx f0, r4, r20 lfdx f0, r25, r20 lfdx f5, r26, r20 lfdx f6, r23, r20 lfdx f9, r28, r20 lfdx f10, r10, r20 lfdx f12, r9, r20 lfdx f13, r29, r20 fsub f11, f13, f11 fadd f4, f4, f5 fmul f4, f4, f1 fadd f5, f6, f9 fadd f5, f5, f10 fadd f5, f5, f12 fnmsub f0, f4, f5, f0 fnmsub f0, f11, f3, f0 stfdx f0, r24, r20 lfdx f0, r8, r20 fsub f4, f7, f8 fsub f5, f12, f10 fnmsub f0, f5, f2, f0 fnmsub f0, f4, f3, f0 stfdx f0, r2, r20 addi r19, r19, 1 addi r20, r20, 8 cmpw cr0, r19, r7 bgt .LBB_main_L_90_no_exit_2E_0_2E_i16_no_exit_2E_1_2E_i19_1 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22722 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | Suck the base value out of the UsersToProcess vector into the BasedUser | Chris Lattner | |
class to simplify the code. Fuse two loops. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22721 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | Split MoveLoopVariantsToImediateField out from MoveImmediateValues. The | Chris Lattner | |
first is a correctness thing, and the later is an optzn thing. This also is needed to support a future change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22720 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | Factor out some common code, and be smarter about when to emit load hi/lo | Nate Begeman | |
code sequences. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22719 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | A testcase I don't want to break in the future | Chris Lattner | |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22718 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | Allow tools with "consume after" options (like lli) to take more positional | Chris Lattner | |
opts than they take directly. Thanks to John C for pointing this problem out to me! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22717 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | Remove getImmediateForOpcode, which is now dead. | Chris Lattner | |
Patch by Jim Laskey. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22716 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | Add new immediate handling support for mul/div. | Chris Lattner | |
Patch by Jim Laskey! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22715 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | Add support for OR/XOR/SUB immediates that are handled with the new immediate | Chris Lattner | |
way. This allows ORI/ORIS pairs, for example. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22714 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | Modify the ISD::AND opcode case to use new immediate constant predicates. | Chris Lattner | |
Includes wider support for rotate and mask cases. Patch by Jim Laskey. I've requested that Jim add new regression tests the newly handled cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22712 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | Modify the ISD::ADD opcode case to use new immediate constant predicates. | Chris Lattner | |
Includes support for 32-bit constants using addi/addis. Patch by Jim Laskey. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22711 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | Modify existing support functions to use new immediate constant predicates. | Chris Lattner | |
Patch by Jim Laskey git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22710 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | Add support predicates for future immediate constant changes. | Chris Lattner | |
Patch by Jim Laskey git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22709 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | Move IsRunOfOnes to a more logical place and rename to a proper predicate form | Chris Lattner | |
(lowercase isXXX). Patch by Jim Laskey. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22708 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | Fix JIT encoding of ppc mfocrf instruction; the operands were reversed | Nate Begeman | |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22707 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | Use the new 'moveBefore' method to simplify some code. Really, which is | Chris Lattner | |
easier to understand? :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22706 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | Reject command lines that have too many positional arguments passed (e.g., | Chris Lattner | |
'opt x y'). This fixes PR493. Patch contributed by Owen Anderson! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22705 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | Not all constants are legal immediates in load/store instructions. | Chris Lattner | |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22704 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | new testcase, not implemented yet | Chris Lattner | |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22703 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | Implement LoopStrengthReduce/share_code_in_preheader.ll by having one | Chris Lattner | |
rewriter for all code inserted into the preheader, which is never flushed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22702 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | It is better to not depend on CSE to share multiplies due to IV insertion. | Chris Lattner | |
This testcase checks that only one mul is present in the output code, as it should be. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22701 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | These are both implemented by a recent LSR patch | Chris Lattner | |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22700 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | Implement a simple optimization for the termination condition of the loop. | Chris Lattner | |
The termination condition actually wants to use the post-incremented value of the loop, not a new indvar with an unusual base. On PPC, for example, this allows us to compile LoopStrengthReduce/exit_compare_live_range.ll to: _foo: li r2, 0 .LBB_foo_1: ; no_exit li r5, 0 stw r5, 0(r3) addi r2, r2, 1 cmpw cr0, r2, r4 bne .LBB_foo_1 ; no_exit blr instead of: _foo: li r2, 1 ;; IV starts at 1, not 0 .LBB_foo_1: ; no_exit li r5, 0 stw r5, 0(r3) addi r5, r2, 1 cmpw cr0, r2, r4 or r2, r5, r5 ;; Reg-reg copy, extra live range bne .LBB_foo_1 ; no_exit blr This implements LoopStrengthReduce/exit_compare_live_range.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22699 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | add new helper function | Chris Lattner | |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22698 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | add a new helper method | Chris Lattner | |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22697 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-08 | Handle 64-bit constant exprs on 64-bit targets. | Chris Lattner | |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22696 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-07 | All stats are "Number of ..." | Chris Lattner | |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22694 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-07 | Add some simple folds that occur in bitfield cases. Fix a minor bug in | Chris Lattner | |
isHighOnes, where it would consider 0 to have high ones. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22693 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-07 | Fix typoCVS: ↵ | Chris Lattner | |
---------------------------------------------------------------------- git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22692 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-07 | add a small simplification that can be exposed after promotion/expansion | Chris Lattner | |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22691 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-07 | * Use the new PHINode::hasConstantValue method to simplify some code | Chris Lattner | |
* Teach this code to move allocas out of the loop when tail call eliminating a call marked 'tail'. This implements TailCallElim/move_alloca_for_tail_call.ll * Do not perform this transformation if a call is marked 'tail' and if there are allocas that we cannot move out of the loop in #2. Doing so would increase the stack usage of the function. This implements fixes PR615 and TailCallElim/dont-tce-tail-marked-call.ll. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22690 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-07 | New testcases for PR615 | Chris Lattner | |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22689 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-05 | Consolidate the GPOpt stuff to all use the Subtarget, instead of still | Chris Lattner | |
depending on the command line option. Now the command line option just sets the subtarget as appropriate. G5 opts will now default to on on G5-enabled nightly testers among other machines. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22688 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-05 | adjust to change in getSubtarget() api | Chris Lattner | |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22687 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-05 | Since getSubtarget() always provides a const Subtarget, dont' require the user | Chris Lattner | |
to pass it in. Also, since it always returns a non-null pointer, make it return a reference instead for easier use. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22686 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-05 | Enable gp optimizations by default when available, even when a target triple | Chris Lattner | |
is available, since the target triple doesn't specify whether to use gpopts or not. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22685 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-05 | teach TestRunner about prcontext | Chris Lattner | |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22683 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-05 | two simple testcases loopreduce should handle but does not yet currently | Chris Lattner | |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22682 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-05 | add a note | Chris Lattner | |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22681 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-05 | Change FindEarliestCallSeqEnd (used by libcall insertion) to use a set to | Chris Lattner | |
avoid revisiting nodes more than once. This eliminates a source of potentially exponential behavior. For a small function in 191.fma3d (hexah_stress_divergence_), this speeds up isel from taking > 20mins to taking 0.07s. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22680 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-05 | Fix a use-of-dangling-pointer bug, from the introduction of SrcValue's. | Chris Lattner | |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22679 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-05 | Fix a latent bug in the libcall inserter that was exposed by Nate's patch | Chris Lattner | |
yesterday. This fixes whetstone and a bunch of programs in the External tests. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22678 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-05 | don't crash when running the PPC backend on non-ppc hosts without specifying | Chris Lattner | |
a subtarget. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22677 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-05 | PHINode::hasConstantValue should never return the PHI itself, even if the | Chris Lattner | |
PHI is its only operand. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22676 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-05 | Fix an iterator invalidation problem when we decide a phi has a constant value | Chris Lattner | |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22675 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-05 | Make sure to clean CastedPointers after casts are potentially deleted. | Chris Lattner | |
This fixes LSR crashes on 301.apsi, 191.fma3d, and 189.lucas git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22673 91177308-0d34-0410-b5e6-96231b3b80d8 | |||
2005-08-05 | now that hasConstantValue defaults to only returning values that dominate | Chris Lattner | |
the PHI node, this ugly code can vanish. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22672 91177308-0d34-0410-b5e6-96231b3b80d8 |