blob: b9a39e08cb5190f44f10ccf91442a92d5b2510e7 [file] [log] [blame]
Preston Gurda01daac2013-01-08 18:27:24 +00001; RUN: llc < %s -O1 -mcpu=atom -mtriple=i686-linux | FileCheck %s
2
3declare void @external_function(...)
4
5define i32 @test_return_val(i32 %a) nounwind {
6; CHECK: test_return_val
7; CHECK: movl
8; CHECK: nop
9; CHECK: nop
10; CHECK: nop
11; CHECK: nop
12; CHECK: nop
13; CHECK: nop
14; CHECK: ret
15 ret i32 %a
16}
17
18define i32 @test_optsize(i32 %a) nounwind optsize {
19; CHECK: test_optsize
20; CHECK: movl
21; CHECK-NEXT: ret
22 ret i32 %a
23}
24
Preston Gurd99c69902013-01-11 22:06:56 +000025define i32 @test_minsize(i32 %a) nounwind minsize {
26; CHECK: test_minsize
27; CHECK: movl
28; CHECK-NEXT: ret
29 ret i32 %a
30}
31
Preston Gurda01daac2013-01-08 18:27:24 +000032define i32 @test_add(i32 %a, i32 %b) nounwind {
33; CHECK: test_add
34; CHECK: addl
35; CHECK: nop
36; CHECK: nop
37; CHECK: nop
38; CHECK: nop
39; CHECK: ret
40 %result = add i32 %a, %b
41 ret i32 %result
42}
43
44define i32 @test_multiple_ret(i32 %a, i32 %b, i1 %c) nounwind {
45; CHECK: @test_multiple_ret
46; CHECK: je
47
48; CHECK: nop
49; CHECK: nop
50; CHECK: ret
51
52; CHECK: nop
53; CHECK: nop
54; CHECK: ret
55
56 br i1 %c, label %bb1, label %bb2
57
58bb1:
59 ret i32 %a
60
61bb2:
62 ret i32 %b
63}
64
65define void @test_call_others(i32 %x) nounwind
66{
67; CHECK: test_call_others
68; CHECK: je
69 %tobool = icmp eq i32 %x, 0
70 br i1 %tobool, label %if.end, label %true.case
71
72; CHECK: jmp external_function
73true.case:
74 tail call void bitcast (void (...)* @external_function to void ()*)() nounwind
75 br label %if.end
76
77; CHECK: nop
78; CHECK: nop
79; CHECK: nop
80; CHECK: nop
81; CHECK: ret
82if.end:
83 ret void
84
85}
Preston Gurd99c69902013-01-11 22:06:56 +000086
87define void @test_branch_to_same_bb(i32 %x, i32 %y) nounwind {
88; CHECK: @test_branch_to_same_bb
89 %cmp = icmp sgt i32 %x, 0
90 br i1 %cmp, label %while.cond, label %while.end
91
92while.cond:
93 br label %while.cond
94
95; CHECK: nop
96; CHECK: nop
97; CHECK: nop
98; CHECK: nop
99; CHECK: ret
100while.end:
101 ret void
102}
103