X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=blobdiff_plain;f=test%2FTransforms%2FInstCombine%2Fnot.ll;h=edb402a125ac10e8f03a9cc847b1f6f9c52d7892;hp=4a8825b15c4e15102d3f1ba6bfbc94e7eb493c81;hb=c832b3af7827959d456b8d9b3e296263ac4ef120;hpb=26b0000166ca3d00f2a1990b43a1f45cdac4e9b6 diff --git a/test/Transforms/InstCombine/not.ll b/test/Transforms/InstCombine/not.ll index 4a8825b15c4..edb402a125a 100644 --- a/test/Transforms/InstCombine/not.ll +++ b/test/Transforms/InstCombine/not.ll @@ -1,54 +1,61 @@ ; This test makes sure that these instructions are properly eliminated. ; -; RUN: opt < %s -instcombine -S | not grep xor +; RUN: opt < %s -instcombine -S | FileCheck %s +; CHECK-NOT: xor define i32 @test1(i32 %A) { - %B = xor i32 %A, -1 ; [#uses=1] - %C = xor i32 %B, -1 ; [#uses=1] + %B = xor i32 %A, -1 + %C = xor i32 %B, -1 ret i32 %C } define i1 @test2(i32 %A, i32 %B) { ; Can change into setge - %cond = icmp sle i32 %A, %B ; [#uses=1] - %Ret = xor i1 %cond, true ; [#uses=1] + %cond = icmp sle i32 %A, %B + %Ret = xor i1 %cond, true ret i1 %Ret } -; Test that demorgans law can be instcombined +; Test that De Morgan's law can be instcombined. define i32 @test3(i32 %A, i32 %B) { - %a = xor i32 %A, -1 ; [#uses=1] - %b = xor i32 %B, -1 ; [#uses=1] - %c = and i32 %a, %b ; [#uses=1] - %d = xor i32 %c, -1 ; [#uses=1] + %a = xor i32 %A, -1 + %b = xor i32 %B, -1 + %c = and i32 %a, %b + %d = xor i32 %c, -1 ret i32 %d } -; Test that demorgens law can work with constants +; Test that De Morgan's law can work with constants. define i32 @test4(i32 %A, i32 %B) { - %a = xor i32 %A, -1 ; [#uses=1] - %c = and i32 %a, 5 ; [#uses=1] - %d = xor i32 %c, -1 ; [#uses=1] + %a = xor i32 %A, -1 + %c = and i32 %a, 5 + %d = xor i32 %c, -1 ret i32 %d } -; test the mirror of demorgans law... +; Test the mirror of De Morgan's law. define i32 @test5(i32 %A, i32 %B) { - %a = xor i32 %A, -1 ; [#uses=1] - %b = xor i32 %B, -1 ; [#uses=1] - %c = or i32 %a, %b ; [#uses=1] - %d = xor i32 %c, -1 ; [#uses=1] + %a = xor i32 %A, -1 + %b = xor i32 %B, -1 + %c = or i32 %a, %b + %d = xor i32 %c, -1 ret i32 %d } ; PR2298 -define zeroext i8 @test6(i32 %a, i32 %b) nounwind { +define zeroext i8 @test6(i32 %a, i32 %b) { entry: - %tmp1not = xor i32 %a, -1 ; [#uses=1] - %tmp2not = xor i32 %b, -1 ; [#uses=1] - %tmp3 = icmp slt i32 %tmp1not, %tmp2not ; [#uses=1] - %retval67 = zext i1 %tmp3 to i8 ; [#uses=1] + %tmp1not = xor i32 %a, -1 + %tmp2not = xor i32 %b, -1 + %tmp3 = icmp slt i32 %tmp1not, %tmp2not + %retval67 = zext i1 %tmp3 to i8 ret i8 %retval67 } +define <2 x i1> @test7(<2 x i32> %A, <2 x i32> %B) { + %cond = icmp sle <2 x i32> %A, %B + %Ret = xor <2 x i1> %cond, + ret <2 x i1> %Ret +} +