Extend 'readonly' and 'readnone' to work on function arguments as well as
[oota-llvm.git] / test / Transforms / InstCombine / narrow.ll
index bff2b88a5db11eecea7438dcdb97f2157a06cab8..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-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | \
-; RUN:    grep 'ret i1 false'
+; 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 = zext bool %C1 to uint
-        %C2 = setgt int %A, %B
-        %ELIM2 = zext bool %C2 to uint
-        %C3 = and uint %ELIM1, %ELIM2
-        %ELIM3 = trunc 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
 }
+