summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/loop-strength-reduce4.ll
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2010-02-12 10:34:29 +0000
committerDan Gohman <gohman@apple.com>2010-02-12 10:34:29 +0000
commit45774ce0ada1d386c4f338c057f74a3fb2b48efd (patch)
tree7a7381d527967385658fa0d399fb93483827c1e1 /llvm/test/CodeGen/X86/loop-strength-reduce4.ll
parentc7ef4cc9fcb5e91c0f402e9dc6c85f8357f2cbfc (diff)
downloadbcm5719-llvm-45774ce0ada1d386c4f338c057f74a3fb2b48efd.tar.gz
bcm5719-llvm-45774ce0ada1d386c4f338c057f74a3fb2b48efd.zip
Reapply the new LoopStrengthReduction code, with compile time and
bug fixes, and with improved heuristics for analyzing foreign-loop addrecs. This change also flattens IVUsers, eliminating the stride-oriented groupings, which makes it easier to work with. llvm-svn: 95975
Diffstat (limited to 'llvm/test/CodeGen/X86/loop-strength-reduce4.ll')
-rw-r--r--llvm/test/CodeGen/X86/loop-strength-reduce4.ll18
1 files changed, 16 insertions, 2 deletions
diff --git a/llvm/test/CodeGen/X86/loop-strength-reduce4.ll b/llvm/test/CodeGen/X86/loop-strength-reduce4.ll
index 07e46eca75e..6c0eb8c0df9 100644
--- a/llvm/test/CodeGen/X86/loop-strength-reduce4.ll
+++ b/llvm/test/CodeGen/X86/loop-strength-reduce4.ll
@@ -1,5 +1,19 @@
-; RUN: llc < %s -march=x86 | grep cmp | grep 64
-; RUN: llc < %s -march=x86 | not grep inc
+; RUN: llc < %s -march=x86 -relocation-model=static -mtriple=i686-apple-darwin | FileCheck %s -check-prefix=STATIC
+; RUN: llc < %s -march=x86 -relocation-model=pic | FileCheck %s -check-prefix=PIC
+
+; By starting the IV at -64 instead of 0, a cmp is eliminated,
+; as the flags from the add can be used directly.
+
+; STATIC: movl $-64, %ecx
+
+; STATIC: movl %eax, _state+76(%ecx)
+; STATIC: addl $16, %ecx
+; STATIC: jne
+
+; In PIC mode the symbol can't be folded, so the change-compare-stride
+; trick applies.
+
+; PIC: cmpl $64
@state = external global [0 x i32] ; <[0 x i32]*> [#uses=4]
@S = external global [0 x i32] ; <[0 x i32]*> [#uses=4]
OpenPOWER on IntegriCloud