llvm-6502/lib
Chris Lattner 4dd4a2d278 If the false value for a select_cc is really simple (has no inputs), evaluate
it in the block.  This codegens:

int %test(bool %c) {
        %retval = select bool %c, int 17, int 1
        ret int %retval
}

as:

_test:
        rlwinm r2, r3, 0, 31, 31
        li r2, 17
        cmpwi cr0, r3, 0
        bne .LBB_test_2 ;
.LBB_test_1:    ;
        li r2, 1
.LBB_test_2:    ;
        or r3, r2, r2
        blr

instead of:

_test:
        rlwinm r2, r3, 0, 31, 31
        li r2, 17
        li r4, 1
        cmpwi cr0, r3, 0
        bne .LBB_test_2 ;
.LBB_test_1:    ;
        or r2, r4, r4
.LBB_test_2:    ;
        or r3, r2, r2
        blr

... which is one fewer instruction.  The savings are more significant for
global address and constantfp nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22946 91177308-0d34-0410-b5e6-96231b3b80d8
2005-08-21 17:41:11 +00:00
..
Analysis Fix Transforms/LoopStrengthReduce/2005-08-15-AddRecIV.ll 2005-08-16 00:37:01 +00:00
Archive Final Changes For PR495: 2005-07-08 03:08:58 +00:00
AsmParser Fix grammar 2005-06-24 18:00:40 +00:00
Bytecode Culling out use of unions for converting FP to bits and vice versa. 2005-08-17 19:34:49 +00:00
CodeGen fix bogus warning 2005-08-20 18:07:27 +00:00
Debugger For PR495: 2005-07-07 23:21:43 +00:00
ExecutionEngine one cannot allocate a global, until one is done initializing the global pointers 2005-08-01 17:35:40 +00:00
Linker For PR495: 2005-07-07 23:21:43 +00:00
Support Allow tools with "consume after" options (like lli) to take more positional 2005-08-08 21:57:27 +00:00
System Fix grammar: it's == "it is". 2005-08-02 16:04:59 +00:00
Target If the false value for a select_cc is really simple (has no inputs), evaluate 2005-08-21 17:41:11 +00:00
Transforms Fix Transforms/LoopStrengthReduce/2005-08-17-OutOfLoopVariant.ll, a crash 2005-08-17 21:22:41 +00:00
VMCore Move code dependency for MathExtras.h out of Constants.h. 2005-08-17 20:06:22 +00:00
Makefile