Fix pointer info on PPC byval stores
[oota-llvm.git] / test / Transforms / InstCombine / narrow.ll
index a26d61575fdf39d16d8a3a1246865e725bd9a9f2..5dd13a09662177412404140af23f2cc2b3fa2b20 100644 (file)
@@ -1,18 +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 | not grep %ELIM
-; XFAIL: *
+; RUN: opt < %s -instcombine -S | \
+; 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
 }
+