diff options
Diffstat (limited to 'test/CodeGen/X86/bool-zext.ll')
-rw-r--r-- | test/CodeGen/X86/bool-zext.ll | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/test/CodeGen/X86/bool-zext.ll b/test/CodeGen/X86/bool-zext.ll index c98ad9e36d7ee..5cc758c06b5d6 100644 --- a/test/CodeGen/X86/bool-zext.ll +++ b/test/CodeGen/X86/bool-zext.ll @@ -1,10 +1,15 @@ +; RUN: llc < %s -mtriple=i686-unknown-linux-gnu | FileCheck %s -check-prefix=X86 ; RUN: llc < %s -mtriple=x86_64-apple-darwin10 | FileCheck %s -check-prefix=X64 ; RUN: llc < %s -mtriple=x86_64-pc-win32 | FileCheck %s -check-prefix=WIN64 -; X64: @bar1 +; Check that the argument gets zero-extended before calling. +; X86-LABEL: bar1 +; X86: movzbl +; X86: calll +; X64-LABEL: bar1 ; X64: movzbl ; X64: jmp -; WIN64: @bar1 +; WIN64-LABEL: bar1 ; WIN64: movzbl ; WIN64: callq define void @bar1(i1 zeroext %v1) nounwind ssp { @@ -14,10 +19,11 @@ entry: ret void } -; X64: @bar2 +; Check that on x86-64 the arguments are simply forwarded. +; X64-LABEL: bar2 ; X64-NOT: movzbl ; X64: jmp -; WIN64: @bar2 +; WIN64-LABEL: bar2 ; WIN64-NOT: movzbl ; WIN64: callq define void @bar2(i8 zeroext %v1) nounwind ssp { @@ -27,16 +33,19 @@ entry: ret void } -; X64: @bar3 -; X64: callq -; X64-NOT: movzbl -; X64-NOT: and -; X64: ret -; WIN64: @bar3 -; WIN64: callq -; WIN64-NOT: movzbl -; WIN64-NOT: and -; WIN64: ret +; Check that i1 return values are not zero-extended. +; X86-LABEL: bar3 +; X86: call +; X86-NEXT: {{add|pop}} +; X86-NEXT: ret +; X64-LABEL: bar3 +; X64: call +; X64-NEXT: {{add|pop}} +; X64-NEXT: ret +; WIN64-LABEL: bar3 +; WIN64: call +; WIN64-NEXT: {{add|pop}} +; WIN64-NEXT: ret define zeroext i1 @bar3() nounwind ssp { entry: %call = call i1 @foo2() nounwind |