X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2FCodeGen%2FX86%2Ftrunc-to-bool.ll;h=92b6859d1dc4d2feba7e0446a6c33890bc60fb21;hb=87070fe1073b1e95748d987af0810d02aac43603;hp=8486bbd4286845aecaecd3a1735726ec6a4aebe7;hpb=908504347b0565c4d4817af444012be76ba4b76f;p=oota-llvm.git diff --git a/test/CodeGen/X86/trunc-to-bool.ll b/test/CodeGen/X86/trunc-to-bool.ll index 8486bbd4286..92b6859d1dc 100644 --- a/test/CodeGen/X86/trunc-to-bool.ll +++ b/test/CodeGen/X86/trunc-to-bool.ll @@ -1,19 +1,18 @@ ; An integer truncation to i1 should be done with an and instruction to make ; sure only the LSBit survives. Test that this is the case both for a returned ; value and as the operand of a branch. -; RUN: llvm-as < %s | llc -march=x86 && -; RUN: llvm-as < %s | llc -march=x86 | grep '\(and\)\|\(test.*\$1\)' | \ -; RUN: wc -l | grep 6 +; RUN: llc < %s -march=x86 | FileCheck %s -define i1 @test1(i32 %X) zext { +define zeroext i1 @test1(i32 %X) nounwind { %Y = trunc i32 %X to i1 ret i1 %Y } +; CHECK: test1: +; CHECK: andl $1, %eax -define i1 @test2(i32 %val, i32 %mask) { +define i1 @test2(i32 %val, i32 %mask) nounwind { entry: - %maski8 = trunc i32 %mask to i8 - %shifted = ashr i32 %val, i8 %maski8 + %shifted = ashr i32 %val, %mask %anded = and i32 %shifted, 1 %trunced = trunc i32 %anded to i1 br i1 %trunced, label %ret_true, label %ret_false @@ -22,8 +21,10 @@ ret_true: ret_false: ret i1 false } +; CHECK: test2: +; CHECK: btl %eax -define i32 @test3(i8* %ptr) { +define i32 @test3(i8* %ptr) nounwind { %val = load i8* %ptr %tmp = trunc i8 %val to i1 br i1 %tmp, label %cond_true, label %cond_false @@ -32,8 +33,10 @@ cond_true: cond_false: ret i32 42 } +; CHECK: test3: +; CHECK: testb $1, (%eax) -define i32 @test4(i8* %ptr) { +define i32 @test4(i8* %ptr) nounwind { %tmp = ptrtoint i8* %ptr to i1 br i1 %tmp, label %cond_true, label %cond_false cond_true: @@ -41,17 +44,10 @@ cond_true: cond_false: ret i32 42 } +; CHECK: test4: +; CHECK: testb $1, 4(%esp) -define i32 @test5(float %f) { - %tmp = fptoui float %f to i1 - br i1 %tmp, label %cond_true, label %cond_false -cond_true: - ret i32 21 -cond_false: - ret i32 42 -} - -define i32 @test6(double %d) { +define i32 @test5(double %d) nounwind { %tmp = fptosi double %d to i1 br i1 %tmp, label %cond_true, label %cond_false cond_true: @@ -59,4 +55,5 @@ cond_true: cond_false: ret i32 42 } - +; CHECK: test5: +; CHECK: testb $1