blob: b147f58e455381458ea2c039eaed191048a83ab7 [file] [log] [blame]
Akira Hatanaka168d4e52013-11-27 23:38:42 +00001; RUN: llc -march=mipsel -disable-mips-delay-filler < %s | \
2; RUN: FileCheck %s -check-prefix=O32
3; RUN: llc -march=mipsel -mips-load-target-from-got=false \
4; RUN: -disable-mips-delay-filler < %s | FileCheck %s -check-prefix=O32-LOADTGT
5
6@gd1 = common global double 0.000000e+00, align 8
7@gd2 = common global double 0.000000e+00, align 8
8
9; O32-LABEL: caller3:
10; O32-DAG: lw $25, %call16(callee3)
11; O32-DAG: move $gp
12; O32: jalr $25
13; O32-DAG: lw $25, %call16(callee3)
14; O32-NOT: move $gp
15; O32: jalr $25
16; O32-DAG: lw $25, %call16(callee3)
17; O32-NOT: move $gp
18; O32: jalr $25
19
20; O32-LOADTGT-LABEL: caller3:
21; O32-LOADTGT-DAG: lw $25, %call16(callee3)
22; O32-LOADTGT-DAG: move $gp
23; O32-LOADTGT: jalr $25
24; O32-LOADTGT-DAG: move $25
25; O32-LOADTGT-NOT: move $gp
26; O32-LOADTGT: jalr $25
27; O32-LOADTGT-DAG: move $25
28; O32-LOADTGT-NOT: move $gp
29; O32-LOADTGT: jalr $25
30
31define void @caller3(i32 %n) {
32entry:
33 tail call void @callee3()
34 tail call void @callee3()
35 %tobool1 = icmp eq i32 %n, 0
36 br i1 %tobool1, label %while.end, label %while.body
37
38while.body:
39 %n.addr.02 = phi i32 [ %dec, %while.body ], [ %n, %entry ]
40 %dec = add nsw i32 %n.addr.02, -1
41 tail call void @callee3()
42 %tobool = icmp eq i32 %dec, 0
43 br i1 %tobool, label %while.end, label %while.body
44
45while.end:
46 ret void
47}
48
49declare void @callee3()
50
51; O32-LABEL: caller4:
52; O32-DAG: lw $25, %call16(ceil)
53; O32-DAG: move $gp
54; O32: jalr $25
55; O32-DAG: lw $25, %call16(ceil)
56; O32-NOT: move $gp
57; O32: jalr $25
58; O32-DAG: lw $25, %call16(ceil)
59; O32-NOT: move $gp
60; O32: jalr $25
61
62; O32-LOADTGT-LABEL: caller4:
63; O32-LOADTGT-DAG: lw $25, %call16(ceil)
64; O32-LOADTGT-DAG: move $gp
65; O32-LOADTGT: jalr $25
66; O32-LOADTGT-DAG: move $25
67; O32-LOADTGT-NOT: move $gp
68; O32-LOADTGT: jalr $25
69; O32-LOADTGT-DAG: move $25
70; O32-LOADTGT-NOT: move $gp
71; O32-LOADTGT: jalr $25
72
73define void @caller4(double %d) {
74entry:
75 %call = tail call double @ceil(double %d)
76 %call1 = tail call double @ceil(double %call)
77 store double %call1, double* @gd2, align 8
78 %call2 = tail call double @ceil(double %call1)
79 store double %call2, double* @gd1, align 8
80 ret void
81}
82
83declare double @ceil(double)