summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/loop-strength-reduce-2.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-reduce-2.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-reduce-2.ll')
-rw-r--r--llvm/test/CodeGen/X86/loop-strength-reduce-2.ll19
1 files changed, 16 insertions, 3 deletions
diff --git a/llvm/test/CodeGen/X86/loop-strength-reduce-2.ll b/llvm/test/CodeGen/X86/loop-strength-reduce-2.ll
index 30b51143494..b546462b684 100644
--- a/llvm/test/CodeGen/X86/loop-strength-reduce-2.ll
+++ b/llvm/test/CodeGen/X86/loop-strength-reduce-2.ll
@@ -1,11 +1,24 @@
-; RUN: llc < %s -march=x86 -relocation-model=pic | \
-; RUN: grep {, 4} | count 1
-; RUN: llc < %s -march=x86 | not grep lea
+; RUN: llc < %s -march=x86 -relocation-model=pic | FileCheck %s -check-prefix=PIC
+; RUN: llc < %s -march=x86 -relocation-model=static | FileCheck %s -check-prefix=STATIC
;
; Make sure the common loop invariant A is hoisted up to preheader,
; since too many registers are needed to subsume it into the addressing modes.
; It's safe to sink A in when it's not pic.
+; PIC: align
+; PIC: movl $4, -4([[REG:%e[a-z]+]])
+; PIC: movl $5, ([[REG]])
+; PIC: addl $4, [[REG]]
+; PIC: decl {{%e[[a-z]+}}
+; PIC: jne
+
+; STATIC: align
+; STATIC: movl $4, -4(%ecx)
+; STATIC: movl $5, (%ecx)
+; STATIC: addl $4, %ecx
+; STATIC: decl %eax
+; STATIC: jne
+
@A = global [16 x [16 x i32]] zeroinitializer, align 32 ; <[16 x [16 x i32]]*> [#uses=2]
define void @test(i32 %row, i32 %N.in) nounwind {
OpenPOWER on IntegriCloud