+++ /dev/null
-/**\r
-University of Illinois/NCSA\r
-Open Source License\r
-\r
-Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT\r
-\r
-All rights reserved.\r
-\r
-Developed by:\r
-\r
- LLVM Team\r
-\r
- University of Illinois at Urbana-Champaign\r
-\r
- http://llvm.org\r
-\r
-Permission is hereby granted, free of charge, to any person obtaining a copy of\r
-this software and associated documentation files (the "Software"), to deal with\r
-the Software without restriction, including without limitation the rights to\r
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\r
-of the Software, and to permit persons to whom the Software is furnished to do\r
-so, subject to the following conditions:\r
-\r
- * Redistributions of source code must retain the above copyright notice,\r
- this list of conditions and the following disclaimers.\r
-\r
- * Redistributions in binary form must reproduce the above copyright notice,\r
- this list of conditions and the following disclaimers in the\r
- documentation and/or other materials provided with the distribution.\r
-\r
- * Neither the names of the LLVM Team, University of Illinois at\r
- Urbana-Champaign, nor the names of its contributors may be used to\r
- endorse or promote products derived from this Software without specific\r
- prior written permission.\r
-\r
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\r
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
-CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE\r
-SOFTWARE.\r
-**/\r
-\r
-#define DOUBLE_PRECISION\r
-#include "fp_lib.h"\r
-\r
-#include "int_lib.h"\r
-\r
-ARM_EABI_FNALIAS(ui2d, floatunsidf)\r
-\r
-COMPILER_RT_ABI fp_t\r
-__floatunsidf(unsigned int a) {\r
-\r
- const int aWidth = sizeof a * CHAR_BIT;\r
-\r
- // Handle zero as a special case to protect clz\r
- if (a == 0) return fromRep(0);\r
-\r
- // Exponent of (fp_t)a is the width of abs(a).\r
- const int exponent = (aWidth - 1) - __builtin_clz(a);\r
- rep_t result;\r
-\r
- // Shift a into the significand field and clear the implicit bit.\r
- const int shift = significandBits - exponent;\r
- result = (rep_t)a << shift ^ implicitBit;\r
-\r
- // Insert the exponent\r
- result += (rep_t)(exponent + exponentBias) << significandBits;\r
- return fromRep(result);\r
-}\r