1 //===-- C standard library header stdfix.h --------------------------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLVM_LIBC_STDFIX_H 10 #define LLVM_LIBC_STDFIX_H 11 12 #include "__llvm-libc-common.h" 13 #include "llvm-libc-macros/stdfix-macros.h" 14 15 // From ISO/IEC TR 18037:2008 standard: 16 // https://www.iso.org/standard/51126.html 17 // https://standards.iso.org/ittf/PubliclyAvailableStandards/c051126_ISO_IEC_TR_18037_2008.zip 18 19 20 __BEGIN_C_DECLS 21 22 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 23 short accum abshk(short accum) __NOEXCEPT; 24 #endif // LIBC_COMPILER_HAS_FIXED_POINT 25 26 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 27 short fract abshr(short fract) __NOEXCEPT; 28 #endif // LIBC_COMPILER_HAS_FIXED_POINT 29 30 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 31 accum absk(accum) __NOEXCEPT; 32 #endif // LIBC_COMPILER_HAS_FIXED_POINT 33 34 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 35 long accum abslk(long accum) __NOEXCEPT; 36 #endif // LIBC_COMPILER_HAS_FIXED_POINT 37 38 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 39 long fract abslr(long fract) __NOEXCEPT; 40 #endif // LIBC_COMPILER_HAS_FIXED_POINT 41 42 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 43 fract absr(fract) __NOEXCEPT; 44 #endif // LIBC_COMPILER_HAS_FIXED_POINT 45 46 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 47 short accum exphk(short accum) __NOEXCEPT; 48 #endif // LIBC_COMPILER_HAS_FIXED_POINT 49 50 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 51 accum expk(accum) __NOEXCEPT; 52 #endif // LIBC_COMPILER_HAS_FIXED_POINT 53 54 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 55 short accum roundhk(short accum, int) __NOEXCEPT; 56 #endif // LIBC_COMPILER_HAS_FIXED_POINT 57 58 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 59 short fract roundhr(short fract, int) __NOEXCEPT; 60 #endif // LIBC_COMPILER_HAS_FIXED_POINT 61 62 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 63 accum roundk(accum, int) __NOEXCEPT; 64 #endif // LIBC_COMPILER_HAS_FIXED_POINT 65 66 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 67 long accum roundlk(long accum, int) __NOEXCEPT; 68 #endif // LIBC_COMPILER_HAS_FIXED_POINT 69 70 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 71 long fract roundlr(long fract, int) __NOEXCEPT; 72 #endif // LIBC_COMPILER_HAS_FIXED_POINT 73 74 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 75 fract roundr(fract, int) __NOEXCEPT; 76 #endif // LIBC_COMPILER_HAS_FIXED_POINT 77 78 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 79 unsigned short accum rounduhk(unsigned short accum, int) __NOEXCEPT; 80 #endif // LIBC_COMPILER_HAS_FIXED_POINT 81 82 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 83 unsigned short fract rounduhr(unsigned short fract, int) __NOEXCEPT; 84 #endif // LIBC_COMPILER_HAS_FIXED_POINT 85 86 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 87 unsigned accum rounduk(unsigned accum, int) __NOEXCEPT; 88 #endif // LIBC_COMPILER_HAS_FIXED_POINT 89 90 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 91 unsigned long accum roundulk(unsigned long accum, int) __NOEXCEPT; 92 #endif // LIBC_COMPILER_HAS_FIXED_POINT 93 94 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 95 unsigned long fract roundulr(unsigned long fract, int) __NOEXCEPT; 96 #endif // LIBC_COMPILER_HAS_FIXED_POINT 97 98 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 99 unsigned fract roundur(unsigned fract, int) __NOEXCEPT; 100 #endif // LIBC_COMPILER_HAS_FIXED_POINT 101 102 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 103 unsigned short accum sqrtuhk(unsigned short accum) __NOEXCEPT; 104 #endif // LIBC_COMPILER_HAS_FIXED_POINT 105 106 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 107 unsigned short fract sqrtuhr(unsigned short fract) __NOEXCEPT; 108 #endif // LIBC_COMPILER_HAS_FIXED_POINT 109 110 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 111 unsigned accum sqrtuk(unsigned accum) __NOEXCEPT; 112 #endif // LIBC_COMPILER_HAS_FIXED_POINT 113 114 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 115 unsigned fract sqrtur(unsigned fract) __NOEXCEPT; 116 #endif // LIBC_COMPILER_HAS_FIXED_POINT 117 118 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 119 unsigned long fract sqrtulr(unsigned long fract) __NOEXCEPT; 120 #endif // LIBC_COMPILER_HAS_FIXED_POINT 121 122 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 123 unsigned short accum uhksqrtus(unsigned short) __NOEXCEPT; 124 #endif // LIBC_COMPILER_HAS_FIXED_POINT 125 126 #ifdef LIBC_COMPILER_HAS_FIXED_POINT 127 unsigned accum uksqrtui(unsigned int) __NOEXCEPT; 128 #endif // LIBC_COMPILER_HAS_FIXED_POINT 129 130 __END_C_DECLS 131 132 #endif // LLVM_LIBC_STDFIX_H 133