X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2FTransforms%2FInstCombine%2Fnarrow.ll;h=5dd13a09662177412404140af23f2cc2b3fa2b20;hb=dc89737bcdbb8f69d8ae7578bdfa904cabcfc5ed;hp=bff2b88a5db11eecea7438dcdb97f2157a06cab8;hpb=737ec5130ef29bd447eb3c93d6a6e980cc0b16e3;p=oota-llvm.git diff --git a/test/Transforms/InstCombine/narrow.ll b/test/Transforms/InstCombine/narrow.ll index bff2b88a5db..5dd13a09662 100644 --- a/test/Transforms/InstCombine/narrow.ll +++ b/test/Transforms/InstCombine/narrow.ll @@ -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 ; [#uses=1] + %ELIM1 = zext i1 %C1 to i32 ; [#uses=1] + %C2 = icmp sgt i32 %A, %B ; [#uses=1] + %ELIM2 = zext i1 %C2 to i32 ; [#uses=1] + %C3 = and i32 %ELIM1, %ELIM2 ; [#uses=1] + %ELIM3 = trunc i32 %C3 to i1 ; [#uses=1] + ret i1 %ELIM3 } +