VirtualBox

source: vbox/trunk/src/libs/softfloat-3e/testfloat/source/functions.h@ 104199

Last change on this file since 104199 was 94551, checked in by vboxsync, 3 years ago

libs/softfloat: Copied TestFloat-3e from vendor branch and to testfloat subdir. bugref:9898

  • Property svn:eol-style set to native
File size: 7.6 KB
Line 
1
2/*============================================================================
3
4This C header file is part of TestFloat, Release 3e, a package of programs for
5testing the correctness of floating-point arithmetic complying with the IEEE
6Standard for Floating-Point, by John R. Hauser.
7
8Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
9University of California. All rights reserved.
10
11Redistribution and use in source and binary forms, with or without
12modification, are permitted provided that the following conditions are met:
13
14 1. Redistributions of source code must retain the above copyright notice,
15 this list of conditions, and the following disclaimer.
16
17 2. Redistributions in binary form must reproduce the above copyright notice,
18 this list of conditions, and the following disclaimer in the documentation
19 and/or other materials provided with the distribution.
20
21 3. Neither the name of the University nor the names of its contributors may
22 be used to endorse or promote products derived from this software without
23 specific prior written permission.
24
25THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
26EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
27WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
28DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
29DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
30(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
32ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
34SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35
36=============================================================================*/
37
38#include <stdint.h>
39
40/*----------------------------------------------------------------------------
41| Warning: This list must match the contents of "functionInfos.c".
42*----------------------------------------------------------------------------*/
43enum {
44 /*------------------------------------------------------------------------
45 *------------------------------------------------------------------------*/
46#ifdef FLOAT16
47 UI32_TO_F16 = 1,
48 UI32_TO_F32,
49#else
50 UI32_TO_F32 = 1,
51#endif
52#ifdef FLOAT64
53 UI32_TO_F64,
54#endif
55#ifdef EXTFLOAT80
56 UI32_TO_EXTF80,
57#endif
58#ifdef FLOAT128
59 UI32_TO_F128,
60#endif
61#ifdef FLOAT16
62 UI64_TO_F16,
63#endif
64 UI64_TO_F32,
65#ifdef FLOAT64
66 UI64_TO_F64,
67#endif
68#ifdef EXTFLOAT80
69 UI64_TO_EXTF80,
70#endif
71#ifdef FLOAT128
72 UI64_TO_F128,
73#endif
74#ifdef FLOAT16
75 I32_TO_F16,
76#endif
77 I32_TO_F32,
78#ifdef FLOAT64
79 I32_TO_F64,
80#endif
81#ifdef EXTFLOAT80
82 I32_TO_EXTF80,
83#endif
84#ifdef FLOAT128
85 I32_TO_F128,
86#endif
87#ifdef FLOAT16
88 I64_TO_F16,
89#endif
90 I64_TO_F32,
91#ifdef FLOAT64
92 I64_TO_F64,
93#endif
94#ifdef EXTFLOAT80
95 I64_TO_EXTF80,
96#endif
97#ifdef FLOAT128
98 I64_TO_F128,
99#endif
100 /*------------------------------------------------------------------------
101 *------------------------------------------------------------------------*/
102#ifdef FLOAT16
103 F16_TO_UI32,
104 F16_TO_UI64,
105 F16_TO_I32,
106 F16_TO_I64,
107 F16_TO_UI32_R_MINMAG,
108 F16_TO_UI64_R_MINMAG,
109 F16_TO_I32_R_MINMAG,
110 F16_TO_I64_R_MINMAG,
111 F16_TO_F32,
112#ifdef FLOAT64
113 F16_TO_F64,
114#endif
115#ifdef EXTFLOAT80
116 F16_TO_EXTF80,
117#endif
118#ifdef FLOAT128
119 F16_TO_F128,
120#endif
121 F16_ROUNDTOINT,
122 F16_ADD,
123 F16_SUB,
124 F16_MUL,
125 F16_MULADD,
126 F16_DIV,
127 F16_REM,
128 F16_SQRT,
129 F16_EQ,
130 F16_LE,
131 F16_LT,
132 F16_EQ_SIGNALING,
133 F16_LE_QUIET,
134 F16_LT_QUIET,
135#endif
136 /*------------------------------------------------------------------------
137 *------------------------------------------------------------------------*/
138 F32_TO_UI32,
139 F32_TO_UI64,
140 F32_TO_I32,
141 F32_TO_I64,
142 F32_TO_UI32_R_MINMAG,
143 F32_TO_UI64_R_MINMAG,
144 F32_TO_I32_R_MINMAG,
145 F32_TO_I64_R_MINMAG,
146#ifdef FLOAT16
147 F32_TO_F16,
148#endif
149#ifdef FLOAT64
150 F32_TO_F64,
151#endif
152#ifdef EXTFLOAT80
153 F32_TO_EXTF80,
154#endif
155#ifdef FLOAT128
156 F32_TO_F128,
157#endif
158 F32_ROUNDTOINT,
159 F32_ADD,
160 F32_SUB,
161 F32_MUL,
162 F32_MULADD,
163 F32_DIV,
164 F32_REM,
165 F32_SQRT,
166 F32_EQ,
167 F32_LE,
168 F32_LT,
169 F32_EQ_SIGNALING,
170 F32_LE_QUIET,
171 F32_LT_QUIET,
172 /*------------------------------------------------------------------------
173 *------------------------------------------------------------------------*/
174#ifdef FLOAT64
175 F64_TO_UI32,
176 F64_TO_UI64,
177 F64_TO_I32,
178 F64_TO_I64,
179 F64_TO_UI32_R_MINMAG,
180 F64_TO_UI64_R_MINMAG,
181 F64_TO_I32_R_MINMAG,
182 F64_TO_I64_R_MINMAG,
183#ifdef FLOAT16
184 F64_TO_F16,
185#endif
186 F64_TO_F32,
187#ifdef EXTFLOAT80
188 F64_TO_EXTF80,
189#endif
190#ifdef FLOAT128
191 F64_TO_F128,
192#endif
193 F64_ROUNDTOINT,
194 F64_ADD,
195 F64_SUB,
196 F64_MUL,
197 F64_MULADD,
198 F64_DIV,
199 F64_REM,
200 F64_SQRT,
201 F64_EQ,
202 F64_LE,
203 F64_LT,
204 F64_EQ_SIGNALING,
205 F64_LE_QUIET,
206 F64_LT_QUIET,
207#endif
208 /*------------------------------------------------------------------------
209 *------------------------------------------------------------------------*/
210#ifdef EXTFLOAT80
211 EXTF80_TO_UI32,
212 EXTF80_TO_UI64,
213 EXTF80_TO_I32,
214 EXTF80_TO_I64,
215 EXTF80_TO_UI32_R_MINMAG,
216 EXTF80_TO_UI64_R_MINMAG,
217 EXTF80_TO_I32_R_MINMAG,
218 EXTF80_TO_I64_R_MINMAG,
219#ifdef FLOAT16
220 EXTF80_TO_F16,
221#endif
222 EXTF80_TO_F32,
223#ifdef FLOAT64
224 EXTF80_TO_F64,
225#endif
226#ifdef FLOAT128
227 EXTF80_TO_F128,
228#endif
229 EXTF80_ROUNDTOINT,
230 EXTF80_ADD,
231 EXTF80_SUB,
232 EXTF80_MUL,
233 EXTF80_DIV,
234 EXTF80_REM,
235 EXTF80_SQRT,
236 EXTF80_EQ,
237 EXTF80_LE,
238 EXTF80_LT,
239 EXTF80_EQ_SIGNALING,
240 EXTF80_LE_QUIET,
241 EXTF80_LT_QUIET,
242#endif
243 /*------------------------------------------------------------------------
244 *------------------------------------------------------------------------*/
245#ifdef FLOAT128
246 F128_TO_UI32,
247 F128_TO_UI64,
248 F128_TO_I32,
249 F128_TO_I64,
250 F128_TO_UI32_R_MINMAG,
251 F128_TO_UI64_R_MINMAG,
252 F128_TO_I32_R_MINMAG,
253 F128_TO_I64_R_MINMAG,
254#ifdef FLOAT16
255 F128_TO_F16,
256#endif
257 F128_TO_F32,
258#ifdef FLOAT64
259 F128_TO_F64,
260#endif
261#ifdef EXTFLOAT80
262 F128_TO_EXTF80,
263#endif
264 F128_ROUNDTOINT,
265 F128_ADD,
266 F128_SUB,
267 F128_MUL,
268 F128_MULADD,
269 F128_DIV,
270 F128_REM,
271 F128_SQRT,
272 F128_EQ,
273 F128_LE,
274 F128_LT,
275 F128_EQ_SIGNALING,
276 F128_LE_QUIET,
277 F128_LT_QUIET,
278#endif
279 NUM_FUNCTIONS
280};
281
282enum {
283 ROUND_NEAR_EVEN = 1,
284 ROUND_MINMAG,
285 ROUND_MIN,
286 ROUND_MAX,
287 ROUND_NEAR_MAXMAG,
288#ifdef FLOAT_ROUND_ODD
289 ROUND_ODD,
290#endif
291 NUM_ROUNDINGMODES
292};
293enum {
294 TININESS_BEFORE_ROUNDING = 1,
295 TININESS_AFTER_ROUNDING,
296 NUM_TININESSMODES
297};
298
299extern const uint_fast8_t roundingModes[NUM_ROUNDINGMODES];
300extern const uint_fast8_t tininessModes[NUM_TININESSMODES];
301
302enum {
303 FUNC_ARG_UNARY = 0x01,
304 FUNC_ARG_BINARY = 0x02,
305 FUNC_ARG_ROUNDINGMODE = 0x04,
306 FUNC_ARG_EXACT = 0x08,
307 FUNC_EFF_ROUNDINGPRECISION = 0x10,
308 FUNC_EFF_ROUNDINGMODE = 0x20,
309 FUNC_EFF_TININESSMODE = 0x40,
310 FUNC_EFF_TININESSMODE_REDUCEDPREC = 0x80
311};
312struct functionInfo {
313 const char *namePtr;
314 unsigned char attribs;
315};
316extern const struct functionInfo functionInfos[NUM_FUNCTIONS];
317
318struct standardFunctionInfo {
319 const char *namePtr;
320 unsigned char functionCode;
321 char roundingCode, exact;
322};
323extern const struct standardFunctionInfo standardFunctionInfos[];
324
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette