1 /* 2 * Copyright (c) 2012 3 * MIPS Technologies, Inc., California. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 3. Neither the name of the MIPS Technologies, Inc., nor the names of is 14 * contributors may be used to endorse or promote products derived from 15 * this software without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE MIPS TECHNOLOGIES, INC. ``AS IS'' AND 18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 * ARE DISCLAIMED. IN NO EVENT SHALL THE MIPS TECHNOLOGIES, INC. BE LIABLE 21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 * 29 * Author: Stanislav Ocovaj (stanislav.ocovaj imgtec com) 30 * 31 * This file is part of FFmpeg. 32 * 33 * FFmpeg is free software; you can redistribute it and/or 34 * modify it under the terms of the GNU Lesser General Public 35 * License as published by the Free Software Foundation; either 36 * version 2.1 of the License, or (at your option) any later version. 37 * 38 * FFmpeg is distributed in the hope that it will be useful, 39 * but WITHOUT ANY WARRANTY; without even the implied warranty of 40 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 41 * Lesser General Public License for more details. 42 * 43 * You should have received a copy of the GNU Lesser General Public 44 * License along with FFmpeg; if not, write to the Free Software 45 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 46 */ 47 #ifndef AVUTIL_SOFTFLOAT_TABLES_H 48 #define AVUTIL_SOFTFLOAT_TABLES_H 49 50 #include <stdint.h> 51 52 static const int32_t av_sqrttbl_sf[512+1] = { /* sqrt(x), 0.5<=x<1 */ 53 0x2d413ccd,0x2d4c8bb3,0x2d57d7c6,0x2d63210a, 54 0x2d6e677f,0x2d79ab2a,0x2d84ec0b,0x2d902a23, 55 0x2d9b6578,0x2da69e08,0x2db1d3d6,0x2dbd06e6, 56 0x2dc83738,0x2dd364ce,0x2dde8fac,0x2de9b7d2, 57 0x2df4dd43,0x2e000000,0x2e0b200c,0x2e163d68, 58 0x2e215816,0x2e2c701a,0x2e378573,0x2e429824, 59 0x2e4da830,0x2e58b598,0x2e63c05d,0x2e6ec883, 60 0x2e79ce0a,0x2e84d0f5,0x2e8fd144,0x2e9acefb, 61 0x2ea5ca1b,0x2eb0c2a7,0x2ebbb89e,0x2ec6ac04, 62 0x2ed19cda,0x2edc8b23,0x2ee776df,0x2ef26012, 63 0x2efd46bb,0x2f082add,0x2f130c7b,0x2f1deb95, 64 0x2f28c82e,0x2f33a246,0x2f3e79e1,0x2f494eff, 65 0x2f5421a3,0x2f5ef1ce,0x2f69bf81,0x2f748abe, 66 0x2f7f5388,0x2f8a19e0,0x2f94ddc7,0x2f9f9f3e, 67 0x2faa5e48,0x2fb51ae8,0x2fbfd51c,0x2fca8ce9, 68 0x2fd5424e,0x2fdff54e,0x2feaa5eb,0x2ff55426, 69 0x30000000,0x300aa97b,0x3015509a,0x301ff55c, 70 0x302a97c5,0x303537d5,0x303fd58e,0x304a70f2, 71 0x30550a01,0x305fa0be,0x306a352a,0x3074c747, 72 0x307f5716,0x3089e499,0x30946fd2,0x309ef8c0, 73 0x30a97f67,0x30b403c7,0x30be85e2,0x30c905bb, 74 0x30d38351,0x30ddfea6,0x30e877bc,0x30f2ee96, 75 0x30fd6332,0x3107d594,0x311245bc,0x311cb3ad, 76 0x31271f67,0x313188ec,0x313bf03d,0x3146555c, 77 0x3150b84a,0x315b1909,0x31657798,0x316fd3fc, 78 0x317a2e34,0x31848642,0x318edc28,0x31992fe5, 79 0x31a3817d,0x31add0f0,0x31b81e40,0x31c2696e, 80 0x31ccb27b,0x31d6f969,0x31e13e38,0x31eb80eb, 81 0x31f5c182,0x32000000,0x320a3c65,0x321476b1, 82 0x321eaee8,0x3228e50a,0x32331917,0x323d4b13, 83 0x32477afc,0x3251a8d6,0x325bd4a2,0x3265fe5f, 84 0x32702611,0x327a4bb8,0x32846f55,0x328e90e9, 85 0x3298b076,0x32a2cdfd,0x32ace97e,0x32b702fd, 86 0x32c11a79,0x32cb2ff3,0x32d5436d,0x32df54e9, 87 0x32e96466,0x32f371e8,0x32fd7d6d,0x330786f9, 88 0x33118e8c,0x331b9426,0x332597cb,0x332f9979, 89 0x33399933,0x334396fa,0x334d92cf,0x33578cb2, 90 0x336184a6,0x336b7aab,0x33756ec3,0x337f60ed, 91 0x3389512d,0x33933f83,0x339d2bef,0x33a71672, 92 0x33b0ff10,0x33bae5c7,0x33c4ca99,0x33cead88, 93 0x33d88e95,0x33e26dbf,0x33ec4b09,0x33f62673, 94 0x34000000,0x3409d7af,0x3413ad82,0x341d817a, 95 0x34275397,0x343123db,0x343af248,0x3444bedd, 96 0x344e899d,0x34585288,0x3462199f,0x346bdee3, 97 0x3475a254,0x347f63f5,0x348923c6,0x3492e1c9, 98 0x349c9dfe,0x34a65865,0x34b01101,0x34b9c7d2, 99 0x34c37cda,0x34cd3018,0x34d6e18f,0x34e0913f, 100 0x34ea3f29,0x34f3eb4d,0x34fd95ae,0x35073e4c, 101 0x3510e528,0x351a8a43,0x35242d9d,0x352dcf39, 102 0x35376f16,0x35410d36,0x354aa99a,0x35544442, 103 0x355ddd2f,0x35677463,0x357109df,0x357a9da2, 104 0x35842fb0,0x358dc007,0x35974ea9,0x35a0db98, 105 0x35aa66d3,0x35b3f05c,0x35bd7833,0x35c6fe5a, 106 0x35d082d3,0x35da059c,0x35e386b7,0x35ed0626, 107 0x35f683e8,0x36000000,0x36097a6e,0x3612f331, 108 0x361c6a4d,0x3625dfc1,0x362f538f,0x3638c5b7, 109 0x36423639,0x364ba518,0x36551252,0x365e7deb, 110 0x3667e7e2,0x36715039,0x367ab6f0,0x36841c07, 111 0x368d7f81,0x3696e15d,0x36a0419d,0x36a9a040, 112 0x36b2fd49,0x36bc58b8,0x36c5b28e,0x36cf0acb, 113 0x36d86170,0x36e1b680,0x36eb09f8,0x36f45bdc, 114 0x36fdac2b,0x3706fae7,0x37104810,0x371993a7, 115 0x3722ddad,0x372c2622,0x37356d08,0x373eb25f, 116 0x3747f629,0x37513865,0x375a7914,0x3763b838, 117 0x376cf5d0,0x377631e0,0x377f6c64,0x3788a561, 118 0x3791dcd6,0x379b12c4,0x37a4472c,0x37ad7a0e, 119 0x37b6ab6a,0x37bfdb44,0x37c90999,0x37d2366d, 120 0x37db61be,0x37e48b8e,0x37edb3de,0x37f6daae, 121 0x38000000,0x380923d3,0x3812462a,0x381b6703, 122 0x38248660,0x382da442,0x3836c0aa,0x383fdb97, 123 0x3848f50c,0x38520d09,0x385b238d,0x3864389b, 124 0x386d4c33,0x38765e55,0x387f6f01,0x38887e3b, 125 0x38918c00,0x389a9853,0x38a3a334,0x38acaca3, 126 0x38b5b4a3,0x38bebb32,0x38c7c051,0x38d0c402, 127 0x38d9c645,0x38e2c71b,0x38ebc685,0x38f4c482, 128 0x38fdc114,0x3906bc3c,0x390fb5fa,0x3918ae4f, 129 0x3921a53a,0x392a9abe,0x39338edb,0x393c8192, 130 0x394572e2,0x394e62ce,0x39575155,0x39603e77, 131 0x39692a36,0x39721494,0x397afd8f,0x3983e527, 132 0x398ccb60,0x3995b039,0x399e93b2,0x39a775cc, 133 0x39b05689,0x39b935e8,0x39c213e9,0x39caf08e, 134 0x39d3cbd9,0x39dca5c7,0x39e57e5b,0x39ee5596, 135 0x39f72b77,0x3a000000,0x3a08d331,0x3a11a50a, 136 0x3a1a758d,0x3a2344ba,0x3a2c1291,0x3a34df13, 137 0x3a3daa41,0x3a46741b,0x3a4f3ca3,0x3a5803d7, 138 0x3a60c9ba,0x3a698e4b,0x3a72518b,0x3a7b137c, 139 0x3a83d41d,0x3a8c936f,0x3a955173,0x3a9e0e29, 140 0x3aa6c992,0x3aaf83ae,0x3ab83c7e,0x3ac0f403, 141 0x3ac9aa3c,0x3ad25f2c,0x3adb12d1,0x3ae3c52d, 142 0x3aec7642,0x3af5260e,0x3afdd492,0x3b0681d0, 143 0x3b0f2dc6,0x3b17d878,0x3b2081e4,0x3b292a0c, 144 0x3b31d0f0,0x3b3a7690,0x3b431aec,0x3b4bbe06, 145 0x3b545fdf,0x3b5d0077,0x3b659fcd,0x3b6e3de4, 146 0x3b76daba,0x3b7f7651,0x3b8810aa,0x3b90a9c4, 147 0x3b9941a1,0x3ba1d842,0x3baa6da5,0x3bb301cd, 148 0x3bbb94b9,0x3bc4266a,0x3bccb6e2,0x3bd5461f, 149 0x3bddd423,0x3be660ee,0x3beeec81,0x3bf776dc, 150 0x3c000000,0x3c0887ed,0x3c110ea4,0x3c199426, 151 0x3c221872,0x3c2a9b8a,0x3c331d6e,0x3c3b9e1d, 152 0x3c441d9a,0x3c4c9be5,0x3c5518fd,0x3c5d94e3, 153 0x3c660f98,0x3c6e891d,0x3c770172,0x3c7f7898, 154 0x3c87ee8e,0x3c906356,0x3c98d6ef,0x3ca1495b, 155 0x3ca9ba9a,0x3cb22aac,0x3cba9992,0x3cc3074c, 156 0x3ccb73dc,0x3cd3df41,0x3cdc497b,0x3ce4b28c, 157 0x3ced1a73,0x3cf58132,0x3cfde6c8,0x3d064b37, 158 0x3d0eae7f,0x3d17109f,0x3d1f719a,0x3d27d16e, 159 0x3d30301d,0x3d388da8,0x3d40ea0d,0x3d49454f, 160 0x3d519f6d,0x3d59f867,0x3d625040,0x3d6aa6f6, 161 0x3d72fc8b,0x3d7b50fe,0x3d83a451,0x3d8bf683, 162 0x3d944796,0x3d9c9788,0x3da4e65c,0x3dad3412, 163 0x3db580a9,0x3dbdcc24,0x3dc61680,0x3dce5fc0, 164 0x3dd6a7e4,0x3ddeeeed,0x3de734d9,0x3def79ab, 165 0x3df7bd62,0x3e000000,0x3e084184,0x3e1081ee, 166 0x3e18c140,0x3e20ff7a,0x3e293c9c,0x3e3178a7, 167 0x3e39b39a,0x3e41ed77,0x3e4a263d,0x3e525def, 168 0x3e5a948b,0x3e62ca12,0x3e6afe85,0x3e7331e4, 169 0x3e7b642f,0x3e839567,0x3e8bc58c,0x3e93f49f, 170 0x3e9c22a1,0x3ea44f91,0x3eac7b6f,0x3eb4a63e, 171 0x3ebccffb,0x3ec4f8aa,0x3ecd2049,0x3ed546d9, 172 0x3edd6c5a,0x3ee590cd,0x3eedb433,0x3ef5d68c, 173 0x3efdf7d7,0x3f061816,0x3f0e3749,0x3f165570, 174 0x3f1e728c,0x3f268e9d,0x3f2ea9a4,0x3f36c3a0, 175 0x3f3edc93,0x3f46f47c,0x3f4f0b5d,0x3f572135, 176 0x3f5f3606,0x3f6749cf,0x3f6f5c90,0x3f776e4a, 177 0x3f7f7efe,0x3f878eab,0x3f8f9d53,0x3f97aaf6, 178 0x3f9fb793,0x3fa7c32c,0x3fafcdc1,0x3fb7d752, 179 0x3fbfdfe0,0x3fc7e76b,0x3fcfedf3,0x3fd7f378, 180 0x3fdff7fc,0x3fe7fb7f,0x3feffe00,0x3ff7ff80, 181 0x3fffffff, 182 }; 183 184 static const int32_t av_sqr_exp_multbl_sf[2] = { 185 0x20000000,0x2d413ccd, 186 }; 187 188 static const int32_t av_costbl_1_sf[16] = { 189 0x40000000,0x3ec52fa0,0x3b20d79e,0x3536cc52, 190 0x2d413ccd,0x238e7673,0x187de2a7,0x0c7c5c1e, 191 0x00000000,0xf383a3e3,0xe7821d5a,0xdc71898e, 192 0xd2bec334,0xcac933af,0xc4df2863,0xc13ad061, 193 }; 194 195 static const int32_t av_costbl_2_sf[32] = { 196 0x40000000,0x3fffb10b,0x3ffec42d,0x3ffd3969, 197 0x3ffb10c1,0x3ff84a3c,0x3ff4e5e0,0x3ff0e3b6, 198 0x3fec43c7,0x3fe7061f,0x3fe12acb,0x3fdab1d9, 199 0x3fd39b5a,0x3fcbe75e,0x3fc395f9,0x3fbaa740, 200 0x3fb11b48,0x3fa6f228,0x3f9c2bfb,0x3f90c8da, 201 0x3f84c8e2,0x3f782c30,0x3f6af2e3,0x3f5d1d1d, 202 0x3f4eaafe,0x3f3f9cab,0x3f2ff24a,0x3f1fabff, 203 0x3f0ec9f5,0x3efd4c54,0x3eeb3347,0x3ed87efc, 204 }; 205 206 static const int32_t av_sintbl_2_sf[32] = { 207 0x00000000,0x006487c4,0x00c90e90,0x012d936c, 208 0x0192155f,0x01f69373,0x025b0caf,0x02bf801a, 209 0x0323ecbe,0x038851a2,0x03ecadcf,0x0451004d, 210 0x04b54825,0x0519845e,0x057db403,0x05e1d61b, 211 0x0645e9af,0x06a9edc9,0x070de172,0x0771c3b3, 212 0x07d59396,0x08395024,0x089cf867,0x09008b6a, 213 0x09640837,0x09c76dd8,0x0a2abb59,0x0a8defc3, 214 0x0af10a22,0x0b540982,0x0bb6ecef,0x0c19b374, 215 }; 216 217 static const int32_t av_costbl_3_sf[32] = { 218 0x40000000,0x3fffffec,0x3fffffb1,0x3fffff4e, 219 0x3ffffec4,0x3ffffe13,0x3ffffd39,0x3ffffc39, 220 0x3ffffb11,0x3ffff9c1,0x3ffff84a,0x3ffff6ac, 221 0x3ffff4e6,0x3ffff2f8,0x3ffff0e3,0x3fffeea7, 222 0x3fffec43,0x3fffe9b7,0x3fffe705,0x3fffe42a, 223 0x3fffe128,0x3fffddff,0x3fffdaae,0x3fffd736, 224 0x3fffd396,0x3fffcfcf,0x3fffcbe0,0x3fffc7ca, 225 0x3fffc38c,0x3fffbf27,0x3fffba9b,0x3fffb5e7, 226 }; 227 228 static const int32_t av_sintbl_3_sf[32] = { 229 0x00000000,0x0003243f,0x0006487f,0x00096cbe, 230 0x000c90fe,0x000fb53d,0x0012d97c,0x0015fdbb, 231 0x001921fb,0x001c463a,0x001f6a79,0x00228eb8, 232 0x0025b2f7,0x0028d736,0x002bfb74,0x002f1fb3, 233 0x003243f1,0x00356830,0x00388c6e,0x003bb0ac, 234 0x003ed4ea,0x0041f928,0x00451d66,0x004841a3, 235 0x004b65e1,0x004e8a1e,0x0051ae5b,0x0054d297, 236 0x0057f6d4,0x005b1b10,0x005e3f4c,0x00616388, 237 }; 238 239 static const int32_t av_costbl_4_sf[33] = { 240 0x40000000,0x40000000,0x40000000,0x40000000, 241 0x40000000,0x40000000,0x3fffffff,0x3fffffff, 242 0x3fffffff,0x3ffffffe,0x3ffffffe,0x3ffffffe, 243 0x3ffffffd,0x3ffffffd,0x3ffffffc,0x3ffffffc, 244 0x3ffffffb,0x3ffffffa,0x3ffffffa,0x3ffffff9, 245 0x3ffffff8,0x3ffffff7,0x3ffffff7,0x3ffffff6, 246 0x3ffffff5,0x3ffffff4,0x3ffffff3,0x3ffffff2, 247 0x3ffffff1,0x3ffffff0,0x3fffffef,0x3fffffed, 248 0x3fffffec, 249 }; 250 251 static const int32_t av_sintbl_4_sf[33] = { 252 0x00000000,0x00001922,0x00003244,0x00004b66, 253 0x00006488,0x00007daa,0x000096cc,0x0000afee, 254 0x0000c910,0x0000e232,0x0000fb54,0x00011476, 255 0x00012d98,0x000146ba,0x00015fdc,0x000178fe, 256 0x00019220,0x0001ab42,0x0001c464,0x0001dd86, 257 0x0001f6a8,0x00020fca,0x000228ec,0x0002420e, 258 0x00025b30,0x00027452,0x00028d74,0x0002a696, 259 0x0002bfb7,0x0002d8d9,0x0002f1fb,0x00030b1d, 260 0x0003243f, 261 }; 262 #endif /* AVUTIL_SOFTFLOAT_TABLES_H */ 263