1; RUN: llc  -march=mipsel -mcpu=mips32 -relocation-model=static -O3 < %s -mips-os16  | FileCheck %s -check-prefix=32
2
3@x = global float 1.000000e+00, align 4
4@y = global float 2.000000e+00, align 4
5@zz = common global float 0.000000e+00, align 4
6@z = common global float 0.000000e+00, align 4
7
8define float @fv() #0 {
9entry:
10  ret float 1.000000e+00
11}
12
13; 32: 	.set	nomips16                  # @fv
14; 32: 	.ent	fv
15; 32:	.set	noreorder
16; 32:	.set	nomacro
17; 32:	.set	noat
18; 32:	jr	$ra
19; 32:	.set	at
20; 32:	.set	macro
21; 32:	.set	reorder
22; 32:	.end	fv
23
24define double @dv() #0 {
25entry:
26  ret double 2.000000e+00
27}
28
29; 32: 	.set	nomips16                  # @dv
30; 32: 	.ent	dv
31; 32:	.set	noreorder
32; 32:	.set	nomacro
33; 32:	.set	noat
34; 32:	jr	$ra
35; 32:	.set	at
36; 32:	.set	macro
37; 32:	.set	reorder
38; 32:	.end	dv
39
40define void @vf(float %x) #0 {
41entry:
42  %x.addr = alloca float, align 4
43  store float %x, float* %x.addr, align 4
44  ret void
45}
46
47; 32: 	.set	nomips16                  # @vf
48; 32: 	.ent	vf
49; 32:	.set	noreorder
50; 32:	.set	nomacro
51; 32:	.set	noat
52; 32:	jr	$ra
53; 32:	.set	at
54; 32:	.set	macro
55; 32:	.set	reorder
56; 32:	.end	vf
57
58define void @vd(double %x) #0 {
59entry:
60  %x.addr = alloca double, align 8
61  store double %x, double* %x.addr, align 8
62  ret void
63}
64
65; 32: 	.set	nomips16                  # @vd
66; 32: 	.ent	vd
67; 32:	.set	noreorder
68; 32:	.set	nomacro
69; 32:	.set	noat
70; 32:	jr	$ra
71; 32:	.set	at
72; 32:	.set	macro
73; 32:	.set	reorder
74; 32:	.end	vd
75
76define void @foo1() #0 {
77entry:
78  store float 1.000000e+00, float* @zz, align 4
79  %0 = load float* @y, align 4
80  %1 = load float* @x, align 4
81  %add = fadd float %0, %1
82  store float %add, float* @z, align 4
83  ret void
84}
85
86; 32: 	.set	nomips16                  # @foo1
87; 32: 	.ent	foo1
88; 32:	.set	noreorder
89; 32:	.set	nomacro
90; 32:	.set	noat
91; 32:	jr	$ra
92; 32:	.set	at
93; 32:	.set	macro
94; 32:	.set	reorder
95; 32:	.end	foo1
96
97define void @foo2() #0 {
98entry:
99  %0 = load float* @x, align 4
100  call void @vf(float %0)
101  ret void
102}
103
104
105; 32: 	.set	nomips16                  # @foo2
106; 32: 	.ent	foo2
107; 32:	.set	noreorder
108; 32:	.set	nomacro
109; 32:	.set	noat
110; 32:	jr	$ra
111; 32:	.set	at
112; 32:	.set	macro
113; 32:	.set	reorder
114; 32:	.end	foo2
115
116define void @foo3() #0 {
117entry:
118  %call = call float @fv()
119  store float %call, float* @x, align 4
120  ret void
121}
122
123; 32: 	.set	nomips16                  # @foo3
124; 32: 	.ent	foo3
125; 32:	.set	noreorder
126; 32:	.set	nomacro
127; 32:	.set	noat
128; 32:	jr	$ra
129; 32:	.set	at
130; 32:	.set	macro
131; 32:	.set	reorder
132; 32:	.end	foo3
133
134attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
135
136define void @vv() #0 {
137entry:
138  ret void
139}
140
141; 32: 	.set	mips16                  # @vv
142; 32: 	.ent	vv
143
144; 32:	save	{{.+}}
145; 32:	restore	{{.+}}
146; 32:	.end	vv
147
148
149
150