From d51372aa965a3d92dc9f9028af97ab70a3dbb8a9 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 2 Mar 2008 19:29:42 +0000 Subject: another random note llvm-svn: 47831 --- llvm/lib/Target/README.txt | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'llvm') diff --git a/llvm/lib/Target/README.txt b/llvm/lib/Target/README.txt index 80b00377ae7..d477c82fbb2 100644 --- a/llvm/lib/Target/README.txt +++ b/llvm/lib/Target/README.txt @@ -705,3 +705,26 @@ int f() { } //===---------------------------------------------------------------------===// + +The loop unroller should partially unroll loops (instead of peeling them) +when code growth isn't too bad and when an unroll count allows simplification +of some code within the loop. One trivial example is: + +#include +int main() { + int nRet = 17; + int nLoop; + for ( nLoop = 0; nLoop < 1000; nLoop++ ) { + if ( nLoop & 1 ) + nRet += 2; + else + nRet -= 1; + } + return nRet; +} + +Unrolling by 2 would eliminate the '&1' in both copies, leading to a net +reduction in code size. The resultant code would then also be suitable for +exit value computation. + +//===---------------------------------------------------------------------===// -- cgit v1.2.3