Extend the statepoint intrinsic to allow statepoints to be marked as transitions...
[oota-llvm.git] / test / CodeGen / X86 / bool-zext.ll
1 ; RUN: llc < %s -mtriple=x86_64-apple-darwin10 | FileCheck %s -check-prefix=X64
2 ; RUN: llc < %s -mtriple=x86_64-pc-win32 | FileCheck %s -check-prefix=WIN64
3
4 ; X64: @bar1
5 ; X64: movzbl
6 ; X64: jmp
7 ; WIN64: @bar1
8 ; WIN64: movzbl
9 ; WIN64: callq
10 define void @bar1(i1 zeroext %v1) nounwind ssp {
11 entry:
12   %conv = zext i1 %v1 to i32
13   %call = tail call i32 (...) @foo1(i32 %conv) nounwind
14   ret void
15 }
16
17 ; X64: @bar2
18 ; X64-NOT: movzbl
19 ; X64: jmp
20 ; WIN64: @bar2
21 ; WIN64-NOT: movzbl
22 ; WIN64: callq
23 define void @bar2(i8 zeroext %v1) nounwind ssp {
24 entry:
25   %conv = zext i8 %v1 to i32
26   %call = tail call i32 (...) @foo1(i32 %conv) nounwind
27   ret void
28 }
29
30 ; X64: @bar3
31 ; X64: callq
32 ; X64-NOT: movzbl
33 ; X64-NOT: and
34 ; X64: ret
35 ; WIN64: @bar3
36 ; WIN64: callq
37 ; WIN64-NOT: movzbl
38 ; WIN64-NOT: and
39 ; WIN64: ret
40 define zeroext i1 @bar3() nounwind ssp {
41 entry:
42   %call = call i1 @foo2() nounwind
43   ret i1 %call
44 }
45
46 declare i32 @foo1(...)
47 declare zeroext i1 @foo2()