[TwoAddressInstructionPass] When looking for a 3 addr conversion after commuting...
[oota-llvm.git] / test / Transforms / LoopStrengthReduce / different-type-ivs.ll
index b8cda5a807f17d2cf111e04ed45aca36087de5cd..c24f877a5502e9547dbf281a21da5594bba1f4d7 100644 (file)
@@ -1,26 +1,25 @@
-; RUN: llvm-as < %s | opt -loop-reduce -disable-output
+; RUN: opt < %s -loop-reduce -disable-output
 ; Test to make sure that loop-reduce never crashes on IV's 
 ; with different types but identical strides.
 
-void %foo() {
+define void @foo() {
 entry:
        br label %no_exit
-
 no_exit:               ; preds = %no_exit, %entry
-       %indvar = phi uint [ 0, %entry ], [ %indvar.next, %no_exit ]            ; <uint> [#uses=3]
-       %indvar = cast uint %indvar to short            ; <short> [#uses=1]
-       %X.0.0 = mul short %indvar, 1234                ; <short> [#uses=1]
-       %tmp. = mul uint %indvar, 1234          ; <uint> [#uses=1]
-       %tmp.5 = cast short %X.0.0 to int               ; <int> [#uses=1]
-       %tmp.3 = call int (...)* %bar( int %tmp.5, uint %tmp. )         ; <int> [#uses=0]
-       %tmp.0 = call bool %pred( )             ; <int> [#uses=1]
-       %indvar.next = add uint %indvar, 1              ; <uint> [#uses=1]
-       br bool %tmp.0, label %return, label %no_exit
-
-return:
+       %indvar = phi i32 [ 0, %entry ], [ %indvar.next, %no_exit ]             ; <i32> [#uses=3]
+       %indvar.upgrd.1 = trunc i32 %indvar to i16              ; <i16> [#uses=1]
+       %X.0.0 = mul i16 %indvar.upgrd.1, 1234          ; <i16> [#uses=1]
+       %tmp. = mul i32 %indvar, 1234           ; <i32> [#uses=1]
+       %tmp.5 = sext i16 %X.0.0 to i32         ; <i32> [#uses=1]
+       %tmp.3 = call i32 (...) @bar( i32 %tmp.5, i32 %tmp. )           ; <i32> [#uses=0]
+       %tmp.0 = call i1 @pred( )               ; <i1> [#uses=1]
+       %indvar.next = add i32 %indvar, 1               ; <i32> [#uses=1]
+       br i1 %tmp.0, label %return, label %no_exit
+return:                ; preds = %no_exit
        ret void
 }
 
-declare bool %pred()
+declare i1 @pred()
+
+declare i32 @bar(...)
 
-declare int %bar(...)