blob: bf1e0eaddd68a740ce04f257b24d4fbfc59f1e30 [file] [log] [blame]
Evan Cheng50d07052009-12-11 06:02:21 +00001; RUN: llc < %s -mtriple=i386-apple-darwin -asm-verbose=false | FileCheck %s -check-prefix=32BIT
2; RUN: llc < %s -mtriple=x86_64-apple-darwin -asm-verbose=false | FileCheck %s -check-prefix=64BIT
3
4define zeroext i16 @t1(i16 zeroext %c, i16 zeroext %k) nounwind ssp {
5entry:
6; 32BIT: t1:
7; 32BIT: movw 20(%esp), %ax
8; 32BIT-NOT: movw %ax, %cx
9; 32BIT: leal 1(%eax), %ecx
10
11; 64BIT: t1:
12; 64BIT-NOT: movw %si, %ax
13; 64BIT: leal 1(%rsi), %eax
14 %0 = icmp eq i16 %k, %c ; <i1> [#uses=1]
15 %1 = add i16 %k, 1 ; <i16> [#uses=3]
16 br i1 %0, label %bb, label %bb1
17
18bb: ; preds = %entry
19 tail call void @foo(i16 zeroext %1) nounwind
20 ret i16 %1
21
22bb1: ; preds = %entry
23 ret i16 %1
24}
25
26define zeroext i16 @t2(i16 zeroext %c, i16 zeroext %k) nounwind ssp {
27entry:
28; 32BIT: t2:
29; 32BIT: movw 20(%esp), %ax
30; 32BIT-NOT: movw %ax, %cx
31; 32BIT: leal -1(%eax), %ecx
32
33; 64BIT: t2:
34; 64BIT-NOT: movw %si, %ax
35; 64BIT: leal -1(%rsi), %eax
36 %0 = icmp eq i16 %k, %c ; <i1> [#uses=1]
37 %1 = add i16 %k, -1 ; <i16> [#uses=3]
38 br i1 %0, label %bb, label %bb1
39
40bb: ; preds = %entry
41 tail call void @foo(i16 zeroext %1) nounwind
42 ret i16 %1
43
44bb1: ; preds = %entry
45 ret i16 %1
46}
47
48declare void @foo(i16 zeroext)
49
50define zeroext i16 @t3(i16 zeroext %c, i16 zeroext %k) nounwind ssp {
51entry:
52; 32BIT: t3:
53; 32BIT: movw 20(%esp), %ax
54; 32BIT-NOT: movw %ax, %cx
55; 32BIT: leal 2(%eax), %ecx
56
57; 64BIT: t3:
58; 64BIT-NOT: movw %si, %ax
59; 64BIT: leal 2(%rsi), %eax
60 %0 = add i16 %k, 2 ; <i16> [#uses=3]
61 %1 = icmp eq i16 %k, %c ; <i1> [#uses=1]
62 br i1 %1, label %bb, label %bb1
63
64bb: ; preds = %entry
65 tail call void @foo(i16 zeroext %0) nounwind
66 ret i16 %0
67
68bb1: ; preds = %entry
69 ret i16 %0
70}
71
72define zeroext i16 @t4(i16 zeroext %c, i16 zeroext %k) nounwind ssp {
73entry:
74; 32BIT: t4:
75; 32BIT: movw 16(%esp), %ax
76; 32BIT: movw 20(%esp), %cx
77; 32BIT-NOT: movw %cx, %dx
78; 32BIT: leal (%ecx,%eax), %edx
79
80; 64BIT: t4:
81; 64BIT-NOT: movw %si, %ax
82; 64BIT: leal (%rsi,%rdi), %eax
83 %0 = add i16 %k, %c ; <i16> [#uses=3]
84 %1 = icmp eq i16 %k, %c ; <i1> [#uses=1]
85 br i1 %1, label %bb, label %bb1
86
87bb: ; preds = %entry
88 tail call void @foo(i16 zeroext %0) nounwind
89 ret i16 %0
90
91bb1: ; preds = %entry
92 ret i16 %0
93}