+++ /dev/null
-/** @file\r
-\r
- Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
-\r
- SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-/**\r
- University of Illinois/NCSA\r
- Open Source License\r
-\r
- Copyright (c) 2003-2008 University of Illinois at Urbana-Champaign.\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
-#include "Llvm_int_lib.h"\r
-\r
-// Returns: logical a >> b\r
-\r
-// Precondition: 0 <= b < bits_in_dword\r
-\r
-INT64\r
-__lshrdi3(INT64 a, INT32 b)\r
-{\r
- const int bits_in_word = (int)(sizeof(INT32) * CHAR_BIT);\r
- udwords input;\r
- udwords result;\r
- input.all = a;\r
- if (b & bits_in_word) // bits_in_word <= b < bits_in_dword\r
- {\r
- result.high = 0;\r
- result.low = input.high >> (b - bits_in_word);\r
- }\r
- else // 0 <= b < bits_in_word\r
- {\r
- if (b == 0)\r
- return a;\r
- result.high = input.high >> b;\r
- result.low = (input.high << (bits_in_word - b)) | (input.low >> b);\r
- }\r
- return result.all;\r
-}\r