xref: /titanic_51/usr/src/lib/libm/common/m9x/__fenv_amd64.il (revision 25c28e83beb90e7c80452a7c818c5e6f73a07dc8)
1/
2/ CDDL HEADER START
3/
4/ The contents of this file are subject to the terms of the
5/ Common Development and Distribution License (the "License").
6/ You may not use this file except in compliance with the License.
7/
8/ You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9/ or http://www.opensolaris.org/os/licensing.
10/ See the License for the specific language governing permissions
11/ and limitations under the License.
12/
13/ When distributing Covered Code, include this CDDL HEADER in each
14/ file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15/ If applicable, add the following below this CDDL HEADER, with the
16/ fields enclosed by brackets "[]" replaced with your own identifying
17/ information: Portions Copyright [yyyy] [name of copyright owner]
18/
19/ CDDL HEADER END
20/
21/ Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
22/
23/ Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
24/ Use is subject to license terms.
25/
26	.inline	__fenv_getcwsw,1
27	fstsw	(%rdi)
28	fstcw	2(%rdi)
29	.end
30
31	.inline	__fenv_setcwsw,1
32	movw	(%rdi),%dx
33	movw	2(%rdi),%cx
34	subq	$32,%rsp
35	fstenv	(%rsp)
36	movw	%cx,(%rsp)
37	movw	%dx,4(%rsp)
38	fldenv	(%rsp)
39	fwait
40	addq	$32,%rsp
41	.end
42
43	.inline	__fenv_getmxcsr,1
44	stmxcsr	(%rdi)
45	.end
46
47	.inline	__fenv_setmxcsr,1
48	ldmxcsr	(%rdi)
49	.end
50
51	.inline	f2xm1,1
52	fldt	(%rsp)
53	f2xm1
54	.end
55
56	.inline	fyl2x,2
57	fldt	(%rsp)
58	fldt	16(%rsp)
59	fyl2x
60	.end
61
62	.inline	fptan,1
63	fldt	(%rsp)
64	fptan
65	fstpt	(%rsp)
66	.end
67
68	.inline	fpatan,2
69	fldt	(%rsp)
70	fldt	16(%rsp)
71	fpatan
72	.end
73
74	.inline	fxtract,1
75	fldt	(%rsp)
76	fxtract
77	.end
78
79	.inline	fprem1,2
80	fldt	(%rsp)
81	fldt	16(%rsp)
82	fprem1
83	fstp	%st(1)
84	.end
85
86	.inline	fprem,2
87	fldt	(%rsp)
88	fldt	16(%rsp)
89	fprem
90	fstp	%st(1)
91	.end
92
93	.inline	fyl2xp1,2
94	fldt	(%rsp)
95	fldt	16(%rsp)
96	fyl2xp1
97	.end
98
99	.inline	fsqrt,1
100	fldt	(%rsp)
101	fsqrt
102	.end
103
104	.inline	fsincos,1
105	fldt	(%rsp)
106	fsincos
107	.end
108
109	.inline	frndint,1
110	fldt	(%rsp)
111	frndint
112	.end
113
114	.inline	fscale,2
115	fldt	(%rsp)
116	fldt	16(%rsp)
117	fscale
118	fstp	%st(1)
119	.end
120
121	.inline	fsin,1
122	fldt	(%rsp)
123	fsin
124	.end
125
126	.inline	fcos,1
127	fldt	(%rsp)
128	fcos
129	.end
130
131	.inline	sse_cmpeqss,3
132	movss	(%rdi),%xmm0
133	cmpeqss	(%rsi),%xmm0
134	movss	%xmm0,(%rdx)
135	.end
136
137	.inline	sse_cmpltss,3
138	movss	(%rdi),%xmm0
139	cmpltss	(%rsi),%xmm0
140	movss	%xmm0,(%rdx)
141	.end
142
143	.inline	sse_cmpless,3
144	movss	(%rdi),%xmm0
145	cmpless	(%rsi),%xmm0
146	movss	%xmm0,(%rdx)
147	.end
148
149	.inline	sse_cmpunordss,3
150	movss	(%rdi),%xmm0
151	cmpunordss	(%rsi),%xmm0
152	movss	%xmm0,(%rdx)
153	.end
154
155	.inline	sse_minss,3
156	movss	(%rdi),%xmm0
157	minss	(%rsi),%xmm0
158	movss	%xmm0,(%rdx)
159	.end
160
161	.inline	sse_maxss,3
162	movss	(%rdi),%xmm0
163	maxss	(%rsi),%xmm0
164	movss	%xmm0,(%rdx)
165	.end
166
167	.inline	sse_addss,3
168	movss	(%rdi),%xmm0
169	addss	(%rsi),%xmm0
170	movss	%xmm0,(%rdx)
171	.end
172
173	.inline	sse_subss,3
174	movss	(%rdi),%xmm0
175	subss	(%rsi),%xmm0
176	movss	%xmm0,(%rdx)
177	.end
178
179	.inline	sse_mulss,3
180	movss	(%rdi),%xmm0
181	mulss	(%rsi),%xmm0
182	movss	%xmm0,(%rdx)
183	.end
184
185	.inline	sse_divss,3
186	movss	(%rdi),%xmm0
187	divss	(%rsi),%xmm0
188	movss	%xmm0,(%rdx)
189	.end
190
191	.inline	sse_sqrtss,2
192	sqrtss	(%rdi),%xmm0
193	movss	%xmm0,(%rsi)
194	.end
195
196	.inline	sse_ucomiss,2
197	movss	(%rdi),%xmm0
198	ucomiss	(%rsi),%xmm0
199	.end
200
201	.inline	sse_comiss,2
202	movss	(%rdi),%xmm0
203	comiss	(%rsi),%xmm0
204	.end
205
206	.inline	sse_cvtss2sd,2
207	cvtss2sd	(%rdi),%xmm0
208	movsd	%xmm0,(%rsi)
209	.end
210
211	.inline	sse_cvtsi2ss,2
212	cvtsi2ss	(%rdi),%xmm0
213	movss	%xmm0,(%rsi)
214	.end
215
216	.inline	sse_cvttss2si,2
217	cvttss2si	(%rdi),%ecx
218	movl	%ecx,(%rsi)
219	.end
220
221	.inline	sse_cvtss2si,2
222	cvtss2si	(%rdi),%ecx
223	movl	%ecx,(%rsi)
224	.end
225
226	.inline	sse_cvtsi2ssq,2
227	cvtsi2ssq	(%rdi),%xmm0
228	movss	%xmm0,(%rsi)
229	.end
230
231	.inline	sse_cvttss2siq,2
232	cvttss2siq	(%rdi),%rcx
233	movq	%rcx,(%rsi)
234	.end
235
236	.inline	sse_cvtss2siq,2
237	cvtss2siq	(%rdi),%rcx
238	movq	%rcx,(%rsi)
239	.end
240
241	.inline	sse_cmpeqsd,3
242	movsd	(%rdi),%xmm0
243	cmpeqsd	(%rsi),%xmm0
244	movsd	%xmm0,(%rdx)
245	.end
246
247	.inline	sse_cmpltsd,3
248	movsd	(%rdi),%xmm0
249	cmpltsd	(%rsi),%xmm0
250	movsd	%xmm0,(%rdx)
251	.end
252
253	.inline	sse_cmplesd,3
254	movsd	(%rdi),%xmm0
255	cmplesd	(%rsi),%xmm0
256	movsd	%xmm0,(%rdx)
257	.end
258
259	.inline	sse_cmpunordsd,3
260	movsd	(%rdi),%xmm0
261	cmpunordsd	(%rsi),%xmm0
262	movsd	%xmm0,(%rdx)
263	.end
264
265	.inline	sse_minsd,3
266	movsd	(%rdi),%xmm0
267	minsd	(%rsi),%xmm0
268	movsd	%xmm0,(%rdx)
269	.end
270
271	.inline	sse_maxsd,3
272	movsd	(%rdi),%xmm0
273	maxsd	(%rsi),%xmm0
274	movsd	%xmm0,(%rdx)
275	.end
276
277	.inline	sse_addsd,3
278	movsd	(%rdi),%xmm0
279	addsd	(%rsi),%xmm0
280	movsd	%xmm0,(%rdx)
281	.end
282
283	.inline	sse_subsd,3
284	movsd	(%rdi),%xmm0
285	subsd	(%rsi),%xmm0
286	movsd	%xmm0,(%rdx)
287	.end
288
289	.inline	sse_mulsd,3
290	movsd	(%rdi),%xmm0
291	mulsd	(%rsi),%xmm0
292	movsd	%xmm0,(%rdx)
293	.end
294
295	.inline	sse_divsd,3
296	movsd	(%rdi),%xmm0
297	divsd	(%rsi),%xmm0
298	movsd	%xmm0,(%rdx)
299	.end
300
301	.inline	sse_sqrtsd,2
302	sqrtsd	(%rdi),%xmm0
303	movsd	%xmm0,(%rsi)
304	.end
305
306	.inline	sse_ucomisd,2
307	movsd	(%rdi),%xmm0
308	ucomisd	(%rsi),%xmm0
309	.end
310
311	.inline	sse_comisd,2
312	movsd	(%rdi),%xmm0
313	comisd	(%rsi),%xmm0
314	.end
315
316	.inline	sse_cvtsd2ss,2
317	cvtsd2ss	(%rdi),%xmm0
318	movss	%xmm0,(%rsi)
319	.end
320
321	.inline	sse_cvtsi2sd,2
322	cvtsi2sd	(%rdi),%xmm0
323	movsd	%xmm0,(%rsi)
324	.end
325
326	.inline	sse_cvttsd2si,2
327	cvttsd2si	(%rdi),%ecx
328	movl	%ecx,(%rsi)
329	.end
330
331	.inline	sse_cvtsd2si,2
332	cvtsd2si	(%rdi),%ecx
333	movl	%ecx,(%rsi)
334	.end
335
336	.inline	sse_cvtsi2sdq,2
337	cvtsi2sdq	(%rdi),%xmm0
338	movsd	%xmm0,(%rsi)
339	.end
340
341	.inline	sse_cvttsd2siq,2
342	cvttsd2siq	(%rdi),%rcx
343	movq	%rcx,(%rsi)
344	.end
345
346	.inline	sse_cvtsd2siq,2
347	cvtsd2siq	(%rdi),%rcx
348	movq	%rcx,(%rsi)
349	.end
350