| 1 | /* Data for function cosf. |
| 2 | Copyright (C) 2014-2023 Free Software Foundation, Inc. |
| 3 | This file is part of the GNU C Library. |
| 4 | |
| 5 | The GNU C Library is free software; you can redistribute it and/or |
| 6 | modify it under the terms of the GNU Lesser General Public |
| 7 | License as published by the Free Software Foundation; either |
| 8 | version 2.1 of the License, or (at your option) any later version. |
| 9 | |
| 10 | The GNU C Library is distributed in the hope that it will be useful, |
| 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 13 | Lesser General Public License for more details. |
| 14 | |
| 15 | You should have received a copy of the GNU Lesser General Public |
| 16 | License along with the GNU C Library; if not, see |
| 17 | <https://www.gnu.org/licenses/>. */ |
| 18 | |
| 19 | #include "svml_s_trig_data.h" |
| 20 | |
| 21 | .section .rodata, "a" |
| 22 | .align 64 |
| 23 | |
| 24 | /* Data table for vector implementations of function cosf. |
| 25 | The table may contain polynomial, reduction, lookup coefficients |
| 26 | and other macro_names obtained through different methods |
| 27 | of research and experimental work. */ |
| 28 | |
| 29 | .globl __svml_s_trig_data |
| 30 | __svml_s_trig_data: |
| 31 | |
| 32 | /* General purpose constants: |
| 33 | absolute value mask */ |
| 34 | float_vector __sAbsMask 0x7fffffff |
| 35 | |
| 36 | /* threshold for out-of-range values */ |
| 37 | float_vector __sRangeReductionVal 0x461c4000 |
| 38 | |
| 39 | /* +INF */ |
| 40 | float_vector __sRangeVal 0x7f800000 |
| 41 | |
| 42 | /* High Accuracy version polynomial coefficients: |
| 43 | S1 = -1.66666666664728165763e-01 */ |
| 44 | float_vector __sS1 0xbe2aaaab |
| 45 | |
| 46 | /* S2 = 8.33329173045453069014e-03 */ |
| 47 | float_vector __sS2 0x3c08885c |
| 48 | |
| 49 | /* C1 = -5.00000000000000000000e-01 */ |
| 50 | float_vector __sC1 0xbf000000 |
| 51 | |
| 52 | /* C2 = 4.16638942914469202550e-02 */ |
| 53 | float_vector __sC2 0x3d2aaa7c |
| 54 | |
| 55 | /* Range reduction PI-based constants: |
| 56 | PI high part */ |
| 57 | float_vector __sPI1 0x40490000 |
| 58 | |
| 59 | /* PI mid part 1 */ |
| 60 | float_vector __sPI2 0x3a7da000 |
| 61 | |
| 62 | /* PI mid part 2 */ |
| 63 | float_vector __sPI3 0x34222000 |
| 64 | |
| 65 | /* PI low part */ |
| 66 | float_vector __sPI4 0x2cb4611a |
| 67 | |
| 68 | /* PI1, PI2, and PI3 when FMA is available |
| 69 | PI high part (when FMA available) */ |
| 70 | float_vector __sPI1_FMA 0x40490fdb |
| 71 | |
| 72 | /* PI mid part (when FMA available) */ |
| 73 | float_vector __sPI2_FMA 0xb3bbbd2e |
| 74 | |
| 75 | /* PI low part (when FMA available) */ |
| 76 | float_vector __sPI3_FMA 0xa7772ced |
| 77 | |
| 78 | /* Polynomial constants for work w/o FMA, relative error ~ 2^(-26.625) */ |
| 79 | float_vector __sA3 0xbe2aaaa6 |
| 80 | float_vector __sA5 0x3c08876a |
| 81 | float_vector __sA7 0xb94fb7ff |
| 82 | float_vector __sA9 0x362edef8 |
| 83 | |
| 84 | /* Polynomial constants, work with FMA, relative error ~ 2^(-26.417) */ |
| 85 | float_vector __sA5_FMA 0x3c088768 |
| 86 | float_vector __sA7_FMA 0xb94fb6cf |
| 87 | float_vector __sA9_FMA 0x362ec335 |
| 88 | |
| 89 | /* 1/PI */ |
| 90 | float_vector __sInvPI 0x3ea2f983 |
| 91 | |
| 92 | /* right-shifter constant */ |
| 93 | float_vector __sRShifter 0x4b400000 |
| 94 | |
| 95 | /* PI/2 */ |
| 96 | float_vector __sHalfPI 0x3fc90fdb |
| 97 | |
| 98 | /* 1/2 */ |
| 99 | float_vector __sOneHalf 0x3f000000 |
| 100 | |
| 101 | /* high accuracy table index mask */ |
| 102 | float_vector __iIndexMask 0x000000ff |
| 103 | |
| 104 | /* 2^(k-1) */ |
| 105 | float_vector __i2pK_1 0x00000040 |
| 106 | |
| 107 | /* sign field mask */ |
| 108 | float_vector __sSignMask 0x80000000 |
| 109 | |
| 110 | .type __svml_s_trig_data,@object |
| 111 | .size __svml_s_trig_data,.-__svml_s_trig_data |
| 112 | |