llvm/lib
Chris Lattner 82e14db9a9 Add a hack to avoid some horrible code in some cases by always emitting
token chains first.  For this C function:

int test() {
  int i;
  for (i = 0; i < 100000; ++i)
    foo();
}

Instead of emitting this (condition before call)

.LBB_test_1:    ; no_exit
        addi r30, r30, 1
        lis r2, 1
        ori r2, r2, 34464
        cmpw cr2, r30, r2
        bl L_foo$stub
        bne cr2, .LBB_test_1    ; no_exit

Emit this:

.LBB_test_1:    ; no_exit
        bl L_foo$stub
        addi r30, r30, 1
        lis r2, 1
        ori r2, r2, 34464
        cmpw cr0, r30, r2
        bne cr0, .LBB_test_1    ; no_exit

Which makes it so we don't have to save/restore cr2 in the prolog/epilog of
the function.

This also makes the code much more similar to what the pattern isel produces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23135 91177308-0d34-0410-b5e6-96231b3b80d8
2005-08-29 23:21:29 +00:00
..
Analysis
Archive
AsmParser Implement PR614: 2005-08-27 18:50:39 +00:00
Bytecode
CodeGen Add a hack to avoid some horrible code in some cases by always emitting 2005-08-29 23:21:29 +00:00
Debugger
ExecutionEngine
Linker
Support Allow bugpoint+PPC codegen to use fsqrt 2005-08-29 13:14:24 +00:00
System
Target Fix a dumb bug of mine where we were mishandling the PPC ABI (undef handling). 2005-08-29 22:22:57 +00:00
Transforms Fix Regression/Transforms/Reassociate/2005-08-24-Crash.ll 2005-08-24 17:55:32 +00:00
VMCore add printer support for flag operands 2005-08-25 17:59:23 +00:00
Makefile