]> git.ipfire.org Git - thirdparty/glibc.git/blame - sysdeps/ia64/fpu/s_fmaxl.S
ia64: strip trailing whitespace
[thirdparty/glibc.git] / sysdeps / ia64 / fpu / s_fmaxl.S
CommitLineData
d5efd131
MF
1.file "fmaxl.s"
2
3
4// Copyright (c) 2001 - 2003, Intel Corporation
5// All rights reserved.
6//
7// Contributed 2001 by the Intel Numerics Group, Intel Corporation
8//
9// Redistribution and use in source and binary forms, with or without
10// modification, are permitted provided that the following conditions are
11// met:
12//
13// * Redistributions of source code must retain the above copyright
14// notice, this list of conditions and the following disclaimer.
15//
16// * Redistributions in binary form must reproduce the above copyright
17// notice, this list of conditions and the following disclaimer in the
18// documentation and/or other materials provided with the distribution.
19//
20// * The name of Intel Corporation may not be used to endorse or promote
21// products derived from this software without specific prior written
22// permission.
23
0347518d
MF
24// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
d5efd131 26// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
0347518d 27// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS
d5efd131 28// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
0347518d
MF
29// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
30// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
31// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
d5efd131 32// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING
0347518d
MF
33// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
34// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35//
d5efd131 36// Intel Corporation is the author of this code, and requests that all
0347518d 37// problem reports or change requests be submitted to it directly at
d5efd131
MF
38// http://www.intel.com/software/products/opensource/libraries/num.htm.
39//
40// History
41//==============================================================
0347518d 42// 05/31/01 Initial version
d5efd131
MF
43// 05/20/02 Cleaned up namespace and sf0 syntax
44// 02/10/03 Reordered header: .section, .global, .proc, .align
45//
46// API
47//==============================================================
48// long double fmaxl (long double x, long double y)
49//
50// Overview of operation
51//==============================================================
52// returns the algebraic maximum of 2 input values
0347518d 53//
d5efd131
MF
54// Special cases:
55// fmaxl(x, nan) returns x if x is numeric // Must special case this one
56// fmaxl(nan, y) returns y if y is numeric
57// fmaxl(nan1, nan2) returns quietized nan2
58// fmaxl(+0,+0) returns +0
59// fmaxl(-0,+0) returns +0
60// fmaxl(-0,-0) returns -0
61// fmaxl(+0,-0) returns +0 // Must special case this one
0347518d 62//
d5efd131
MF
63// SNaN causes invalid to be set
64
65// floating-point registers used: 2
66// f8, input x, output
67// f9, input y
68
69.section .text
70GLOBAL_LIBM_ENTRY(fmaxl)
71
72{ .mfi
73 nop.m 999
74 fcmp.unord.s0 p6,p7 = f8, f9 // Is x or y a nan? Raise invalid or denormal
75 nop.i 999
76}
77;;
78
79{ .mfi
80 nop.m 999
81(p7) fclass.m.unc p8,p9 = f9, 0x06 // If no nan, is y=-0?
82 nop.i 999
83}
84;;
85
86{ .mfi
87 nop.m 999
88(p6) fclass.m.unc p10,p0 = f8, 0xc3 // Is x nan?
89 nop.i 999
90}
91;;
92
93{ .mfi
94 nop.m 999
95(p9) fmax.s0 f8 = f8, f9 // Normal case, no nan and y not -0
96 nop.i 999
97}
98;;
99
100{ .mfi
101 nop.m 999
102(p8) fmax.s0 f8 = f9, f8 // No nan and y -0
103 nop.i 999
104}
105;;
106
107{ .mfb
108 nop.m 999
109(p10) fmerge.s f8 = f9, f9 // If x nan, return y, else do nothing (returns x)
0347518d 110 br.ret.sptk b0
d5efd131
MF
111}
112;;
113
114GLOBAL_LIBM_END(fmaxl)