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
10define void @bar1(i1 zeroext %v1) nounwind ssp {
11entry:
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
23define void @bar2(i8 zeroext %v1) nounwind ssp {
24entry:
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
40define zeroext i1 @bar3() nounwind ssp {
41entry:
42  %call = call i1 @foo2() nounwind
43  ret i1 %call
44}
45
46declare i32 @foo1(...)
47declare zeroext i1 @foo2()
48