Move a DenseMap's declaration outside of a loop, and just call
[oota-llvm.git] / test / Transforms / InstCombine / narrow.ll
index b8be8c30555b33e3fb140f0351562ddc6b6db4ef..41106e759ce0e3bec0762c4a5a9f06d4e2c83ba3 100644 (file)
@@ -1,17 +1,18 @@
 ; This file contains various testcases that check to see that instcombine
 ; is narrowing computations when possible.
-
-; RUN: llvm-as < %s | opt -instcombine | llvm-dis | grep 'ret bool false'
+; RUN: llvm-as < %s | opt -instcombine | llvm-dis | \
+; RUN:    grep {ret i1 false}
 
 ; test1 - Eliminating the casts in this testcase (by narrowing the AND
 ; operation) allows instcombine to realize the function always returns false.
 ;
-bool %test1(int %A, int %B) {
-        %C1 = setlt int %A, %B
-        %ELIM1 = cast bool %C1 to uint
-        %C2 = setgt int %A, %B
-        %ELIM2 = cast bool %C2 to uint
-        %C3 = and uint %ELIM1, %ELIM2
-        %ELIM3 = cast uint %C3 to bool
-        ret bool %ELIM3
+define i1 @test1(i32 %A, i32 %B) {
+        %C1 = icmp slt i32 %A, %B               ; <i1> [#uses=1]
+        %ELIM1 = zext i1 %C1 to i32             ; <i32> [#uses=1]
+        %C2 = icmp sgt i32 %A, %B               ; <i1> [#uses=1]
+        %ELIM2 = zext i1 %C2 to i32             ; <i32> [#uses=1]
+        %C3 = and i32 %ELIM1, %ELIM2            ; <i32> [#uses=1]
+        %ELIM3 = trunc i32 %C3 to i1            ; <i1> [#uses=1]
+        ret i1 %ELIM3
 }
+