Use the llvm-upgrade program to upgrade llvm assembly.
[oota-llvm.git] / test / Transforms / LoopStrengthReduce / var_stride_used_by_compare.ll
1 ; RUN: llvm-upgrade < %s | llvm-as | opt -loop-reduce | llvm-dis &&
2
3 ; Base should not be i*3, it should be i*2.
4 ; RUN: llvm-upgrade < %s | llvm-as | opt -loop-reduce | llvm-dis | not grep 'mul.*%i, 3' &&
5
6 ; Indvar should not start at zero:
7 ; RUN: llvm-upgrade < %s | llvm-as | opt -loop-reduce | llvm-dis | not grep 'phi uint .* 0'
8
9 ; mul uint %i, 3
10
11 ; ModuleID = 't.bc'
12 target datalayout = "e-p:32:32"
13 target endian = little
14 target pointersize = 32
15 target triple = "i686-apple-darwin8"
16 %flags2 = external global [8193 x sbyte], align 32              ; <[8193 x sbyte]*> [#uses=1]
17
18 implementation   ; Functions:
19
20 void %foo(int %k, int %i) {
21 entry:
22         %i = cast int %i to uint                ; <uint> [#uses=2]
23         %k_addr.012 = shl int %i, ubyte 1               ; <int> [#uses=1]
24         %tmp14 = setgt int %k_addr.012, 8192            ; <bool> [#uses=1]
25         br bool %tmp14, label %return, label %bb.preheader
26
27 bb.preheader:           ; preds = %entry
28         %tmp. = shl uint %i, ubyte 1            ; <uint> [#uses=1]
29         br label %bb
30
31 bb:             ; preds = %bb, %bb.preheader
32         %indvar = phi uint [ %indvar.next, %bb ], [ 0, %bb.preheader ]          ; <uint> [#uses=2]
33         %tmp.15 = mul uint %indvar, %i          ; <uint> [#uses=1]
34         %tmp.16 = add uint %tmp.15, %tmp.               ; <uint> [#uses=2]
35         %k_addr.0.0 = cast uint %tmp.16 to int          ; <int> [#uses=1]
36         %tmp = getelementptr [8193 x sbyte]* %flags2, int 0, uint %tmp.16               ; <sbyte*> [#uses=1]
37         store sbyte 0, sbyte* %tmp
38         %k_addr.0 = add int %k_addr.0.0, %i             ; <int> [#uses=1]
39         %tmp = setgt int %k_addr.0, 8192                ; <bool> [#uses=1]
40         %indvar.next = add uint %indvar, 1              ; <uint> [#uses=1]
41         br bool %tmp, label %return.loopexit, label %bb
42
43 return.loopexit:                ; preds = %bb
44         br label %return
45
46 return:         ; preds = %return.loopexit, %entry
47         ret void
48 }