copy and modify this GNU Manual, like GNU software. Copies published by the Free Software Foundation raise funds for GNU development." INFO-DIR-SECTION GNU Packages START-INFO-DIR-ENTRY * Make: (make). Remake files automatically. END-INFO-DIR-ENTRY  Indirect: make.info-1: 1297 make.info-2: 301265  Tag Table: (Indirect) Node: Top1297 Node: Overview14702 Node: Preparing15712 Node: Reading16684 Node: Bugs17611 Node: Introduction19441 Node: Rule Introduction21033 Node: Simple Makefile22777 Node: How Make Works26406 Node: Variables Simplify29061 Node: make Deduces31267 Node: Combine By Prerequisite33007 Node: Cleanup34036 Node: Makefiles35455 Node: Makefile Contents36421 Node: Makefile Names39376 Node: Include40987 Ref: Include-Footnote-144619 Node: MAKEFILES Variable44753 Node: MAKEFILE_LIST Variable46263 Node: Special Variables47531 Node: Remaking Makefiles51038 Node: Overriding Makefiles55287 Node: Reading Makefiles57340 Node: Secondary Expansion60244 Node: Rules67678 Node: Rule Example70350 Node: Rule Syntax71207 Node: Prerequisite Types73710 Node: Wildcards75486 Node: Wildcard Examples77204 Node: Wildcard Pitfall78460 Node: Wildcard Function80249 Node: Directory Search82033 Node: General Search83175 Node: Selective Search84890 Node: Search Algorithm87878 Node: Commands/Search90397 Node: Implicit/Search91743 Node: Libraries/Search92687 Node: Phony Targets94779 Node: Force Targets99865 Node: Empty Targets100910 Node: Special Targets102208 Node: Multiple Targets109382 Node: Multiple Rules111257 Node: Static Pattern113493 Node: Static Usage114145 Node: Static versus Implicit117866 Node: Double-Colon119610 Node: Automatic Prerequisites121267 Node: Commands125545 Node: Command Syntax126753 Node: Splitting Lines128778 Node: Variables in Commands131759 Node: Echoing133086 Node: Execution134378 Ref: Execution-Footnote-1135629 Node: Choosing the Shell135775 Node: Parallel139744 Node: Errors143337 Node: Interrupts146983 Node: Recursion148570 Node: MAKE Variable150664 Node: Variables/Recursion152931 Node: Options/Recursion158372 Node: -w Option163537 Node: Sequences164532 Node: Empty Commands167544 Node: Using Variables168718 Node: Reference171831 Node: Flavors173390 Node: Advanced179128 Node: Substitution Refs179633 Node: Computed Names181186 Node: Values185730 Node: Setting186643 Node: Appending188679 Node: Override Directive192605 Node: Defining193989 Node: Environment196453 Node: Target-specific198702 Node: Pattern-specific201669 Node: Conditionals203071 Node: Conditional Example203781 Node: Conditional Syntax206358 Node: Testing Flags212083 Node: Functions213185 Node: Syntax of Functions214605 Node: Text Functions216804 Node: File Name Functions225375 Node: Conditional Functions230597 Node: Foreach Function232971 Node: Call Function236183 Node: Value Function239068 Node: Eval Function240505 Node: Origin Function242779 Node: Flavor Function245997 Node: Shell Function247063 Node: Make Control Functions248697 Node: Running250366 Node: Makefile Arguments252355 Node: Goals253071 Node: Instead of Execution257812 Node: Avoiding Compilation261098 Node: Overriding263073 Node: Testing265371 Node: Options Summary267256 Node: Implicit Rules277382 Node: Using Implicit279530 Node: Catalogue of Rules283069 Node: Implicit Variables292419 Node: Chained Rules297254 Node: Pattern Rules301265 Node: Pattern Intro302801 Node: Pattern Examples305698 Node: Automatic Variables307507 Node: Pattern Match314878 Node: Match-Anything Rules316514 Node: Canceling Rules320389 Node: Last Resort321105 Node: Suffix Rules322952 Node: Implicit Rule Search326681 Node: Archives330200 Node: Archive Members330898 Node: Archive Update332511 Node: Archive Symbols334425 Node: Archive Pitfalls335659 Node: Archive Suffix Rules336382 Node: Features337929 Node: Missing346484 Node: Makefile Conventions350222 Node: Makefile Basics351008 Node: Utilities in Makefiles354175 Node: Command Variables356313 Node: Directory Variables359883 Node: Standard Targets374023 Ref: Standard Targets-Footnote-1387142 Node: Install Command Categories387242 Node: Quick Reference391768 Node: Error Messages402464 Node: Complex Makefile410154 Node: GNU Free Documentation License418872 Node: Concept Index441321 Node: Name Index506510  End Tag Table This is doc/gccint.info, produced by makeinfo version 4.12 from /usr/local/home/bellard/cpux86/rootdisk/buildroot-2011.02/output/toolchain/gcc-4.3.5/gcc/doc/gccint.texi. Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with the Invariant Sections being "GNU General Public License" and "Funding Free Software", the Front-Cover texts being (a) (see below), and with the Back-Cover Texts being (b) (see below). A copy of the license is included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: A GNU Manual (b) The FSF's Back-Cover Text is: You have freedom to copy and modify this GNU Manual, like GNU software. Copies published by the Free Software Foundation raise funds for GNU development. INFO-DIR-SECTION Software development START-INFO-DIR-ENTRY * gccint: (gccint). Internals of the GNU Compiler Collection. END-INFO-DIR-ENTRY This file documents the internals of the GNU compilers. Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with the Invariant Sections being "GNU General Public License" and "Funding Free Software", the Front-Cover texts being (a) (see below), and with the Back-Cover Texts being (b) (see below). A copy of the license is included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: A GNU Manual (b) The FSF's Back-Cover Text is: You have freedom to copy and modify this GNU Manual, like GNU software. Copies published by the Free Software Foundation raise funds for GNU development.  File: gccint.info, Node: Top, Next: Contributing, Up: (DIR) Introduction ************ This manual documents the internals of the GNU compilers, including how to port them to new targets and some information about how to write front ends for new languages. It corresponds to the compilers (Buildroot 2011.02) version 4.3.5. The use of the GNU compilers is documented in a separate manual. *Note Introduction: (gcc)Top. This manual is mainly a reference manual rather than a tutorial. It discusses how to contribute to GCC (*note Contributing::), the characteristics of the machines supported by GCC as hosts and targets (*note Portability::), how GCC relates to the ABIs on such systems (*note Interface::), and the characteristics of the languages for which GCC front ends are written (*note Languages::). It then describes the GCC source tree structure and build system, some of the interfaces to GCC front ends, and how support for a target system is implemented in GCC. Additional tutorial information is linked to from `http://gcc.gnu.org/readings.html'. * Menu: * Contributing:: How to contribute to testing and developing GCC. * Portability:: Goals of GCC's portability features. * Interface:: Function-call interface of GCC output. * Libgcc:: Low-level runtime library used by GCC. * Languages:: Languages for which GCC front ends are written. * Source Tree:: GCC source tree structure and build system. * Options:: Option specification files. * Passes:: Order of passes, what they do, and what each file is for. * Trees:: The source representation used by the C and C++ front ends. * Tree SSA:: Analysis and optimization of the tree representation. * RTL:: Machine-dependent low-level intermediate representation. * Control Flow:: Maintaining and manipulating the control flow graph. * Loop Analysis and Representation:: Analysis and representation of loops * Machine Desc:: How to write machine description instruction patterns. * Target Macros:: How to write the machine description C macros and functions. * Host Config:: Writing the `xm-MACHINE.h' file. * Fragments:: Writing the `t-TARGET' and `x-HOST' files. * Collect2:: How `collect2' works; how it finds `ld'. * Header Dirs:: Understanding the standard header file directories. * Type Information:: GCC's memory management; generating type information. * Funding:: How to help assure funding for free software. * GNU Project:: The GNU Project and GNU/Linux. * Copying:: GNU General Public License says how you can copy and share GCC. * GNU Free Documentation License:: How you can copy and share this manual. * Contributors:: People who have contributed to GCC. * Option Index:: Index to command line options. * Concept Index:: Index of concepts and symbol names.  File: gccint.info, Node: Contributing, Next: Portability, Prev: Top, Up: Top 1 Contributing to GCC Development ********************************* If you would like to help pretest GCC releases to assure they work well, current development sources are available by SVN (see `http://gcc.gnu.org/svn.html'). Source and binary snapshots are also available for FTP; see `http://gcc.gnu.org/snapshots.html'. If you would like to work on improvements to GCC, please read the advice at these URLs: `http://gcc.gnu.org/contribute.html' `http://gcc.gnu.org/contributewhy.html' for information on how to make useful contributions and avoid duplication of effort. Suggested projects are listed at `http://gcc.gnu.org/projects/'.  File: gccint.info, Node: Portability, Next: Interface, Prev: Contributing, Up: Top 2 GCC and Portability ********************* GCC itself aims to be portable to any machine where `int' is at least a 32-bit type. It aims to target machines with a flat (non-segmented) byte addressed data address space (the code address space can be separate). Target ABIs may have 8, 16, 32 or 64-bit `int' type. `char' can be wider than 8 bits. GCC gets most of the information about the target machine from a machine description which gives an algebraic formula for each of the machine's instructions. This is a very clean way to describe the target. But when the compiler needs information that is difficult to express in this fashion, ad-hoc parameters have been defined for machine descriptions. The purpose of portability is to reduce the total work needed on the compiler; it was not of interest for its own sake. GCC does not contain machine dependent code, but it does contain code that depends on machine parameters such as endianness (whether the most significant byte has the highest or lowest address of the bytes in a word) and the availability of autoincrement addressing. In the RTL-generation pass, it is often necessary to have multiple strategies for generating code for a particular kind of syntax tree, strategies that are usable for different combinations of parameters. Often, not all possible cases have been addressed, but only the common ones or only the ones that have been encountered. As a result, a new target may require additional strategies. You will know if this happens because the compiler will call `abort'. Fortunately, the new strategies can be added in a machine-independent fashion, and will affect only the target machines that need them.  File: gccint.info, Node: Interface, Next: Libgcc, Prev: Portability, Up: Top 3 Interfacing to GCC Output *************************** GCC is normally configured to use the same function calling convention normally in use on the target system. This is done with the machine-description macros described (*note Target Macros::). However, returning of structure and union values is done differently on some target machines. As a result, functions compiled with PCC returning such types cannot be called from code compiled with GCC, and vice versa. This does not cause trouble often because few Unix library routines return structures or unions. GCC code returns structures and unions that are 1, 2, 4 or 8 bytes long in the same registers used for `int' or `double' return values. (GCC typically allocates variables of such types in registers also.) Structures and unions of other sizes are returned by storing them into an address passed by the caller (usually in a register). The target hook `TARGET_STRUCT_VALUE_RTX' tells GCC where to pass this address. By contrast, PCC on most target machines returns structures and unions of any size by copying the data into an area of static storage, and then returning the address of that storage as if it were a pointer value. The caller must copy the data from that memory area to the place where the value is wanted. This is slower than the method used by GCC, and fails to be reentrant. On some target machines, such as RISC machines and the 80386, the standard system convention is to pass to the subroutine the address of where to return the value. On these machines, GCC has been configured to be compatible with the standard compiler, when this method is used. It may not be compatible for structures of 1, 2, 4 or 8 bytes. GCC uses the system's standard convention for passing arguments. On some machines, the first few arguments are passed in registers; in others, all are passed on the stack. It would be possible to use registers for argument passing on any machine, and this would probably result in a significant speedup. But the result would be complete incompatibility with code that follows the standard convention. So this change is practical only if you are switching to GCC as the sole C compiler for the system. We may implement register argument passing on certain machines once we have a complete GNU system so that we can compile the libraries with GCC. On some machines (particularly the SPARC), certain types of arguments are passed "by invisible reference". This means that the value is stored in memory, and the address of the memory location is passed to the subroutine. If you use `longjmp', beware of automatic variables. ISO C says that automatic variables that are not declared `volatile' have undefined values after a `longjmp'. And this is all GCC promises to do, because it is very difficult to restore register variables correctly, and one of GCC's features is that it can put variables in registers without your asking it to.  File: gccint.info, Node: Libgcc, Next: Languages, Prev: Interface, Up: Top 4 The GCC low-level runtime library *********************************** GCC provides a low-level runtime library, `libgcc.a' or `libgcc_s.so.1' on some platforms. GCC generates calls to routines in this library automatically, whenever it needs to perform some operation that is too complicated to emit inline code for. Most of the routines in `libgcc' handle arithmetic operations that the target processor cannot perform directly. This includes integer multiply and divide on some machines, and all floating-point and fixed-point operations on other machines. `libgcc' also includes routines for exception handling, and a handful of miscellaneous operations. Some of these routines can be defined in mostly machine-independent C. Others must be hand-written in assembly language for each processor that needs them. GCC will also generate calls to C library routines, such as `memcpy' and `memset', in some cases. The set of routines that GCC may possibly use is documented in *note Other Builtins: (gcc)Other Builtins. These routines take arguments and return values of a specific machine mode, not a specific C type. *Note Machine Modes::, for an explanation of this concept. For illustrative purposes, in this chapter the floating point type `float' is assumed to correspond to `SFmode'; `double' to `DFmode'; and `long double' to both `TFmode' and `XFmode'. Similarly, the integer types `int' and `unsigned int' correspond to `SImode'; `long' and `unsigned long' to `DImode'; and `long long' and `unsigned long long' to `TImode'. * Menu: * Integer library r !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~£ãģţƣǣȣɣʣˣ̣ͣΣϣУѣңӣԣգ֣ףأ٣ڣۣܣݣޣߣ outines:: * Soft float library routines:: * Decimal float library routines:: * Fixed-point fractional library routines:: * Exception handling routines:: * Miscellaneous routines::  File: gccint.info, Node: Integer library routines, Next: Soft float library routines, Up: Libgcc 4.1 Routines for integer arithmetic =================================== The integer arithmetic routines are used on platforms that don't provide hardware support for arithmetic operations on some modes. 4.1.1 Arithmetic functions -------------------------- -- Runtime Function: int __ashlsi3 (int A, int B) -- Runtime Function: long __ashldi3 (long A, int B) -- Runtime Function: long long __ashlti3 (long long A, int B) These functions return the result of shifting A left by B bits. -- Runtime Function: int __ashrsi3 (int A, int B) -- Runtime Function: long __ashrdi3 (long A, int B) -- Runtime Function: long long __ashrti3 (long long A, int B) These functions return the result of arithmetically shifting A right by B bits. -- Runtime Function: int __divsi3 (int A, int B) -- Runtime Function: long __divdi3 (long A, long B) -- Runtime Function: long long __divti3 (long long A, long long B) These functions return the quotient of the signed division of A and B. -- Runtime Function: int __lshrsi3 (int A, int B) -- Runtime Function: long __lshrdi3 (long A, int B) -- Runtime Function: long long __lshrti3 (long long A, int B) These functions return the result of logically shifting A right by B bits. -- Runtime Function: int __modsi3 (int A, int B) -- Runtime Function: long __moddi3 (long A, long B) -- Runtime Function: long long __modti3 (long long A, long long B) These functions return the remainder of the signed division of A and B. -- Runtime Function: int __mulsi3 (int A, int B) -- Runtime Function: long __muldi3 (long A, long B) -- Runtime Function: long long __multi3 (long long A, long long B) These functions return the product of A and B. -- Runtime Function: long __negdi2 (long A) -- Runtime Function: long long __negti2 (long long A) These functions return the negation of A. -- Runtime Function: unsigned int __udivsi3 (unsigned int A, unsigned int B) -- Runtime Function: unsigned long __udivdi3 (unsigned long A, unsigned long B) -- Runtime Function: unsigned long long __udivti3 (unsigned long long A, unsigned long long B) These functions return the quotient of the unsigned division of A and B. -- Runtime Function: unsigned long __udivmoddi3 (unsigned long A, unsigned long B, unsigned long *C) -- Runtime Function: unsigned long long __udivti3 (unsigned long long A, unsigned long long B, unsigned long long *C) These functions calculate both the quotient and remainder of the unsigned division of A and B. The return value is the quotient, and the remainder is placed in variable pointed to by C. -- Runtime Function: unsigned int __umodsi3 (unsigned int A, unsigned int B) -- Runtime Function: unsigned long __umoddi3 (unsigned long A, unsigned long B) -- Runtime Function: unsigned long long __umodti3 (unsigned long long A, unsigned long long B) These functions return the remainder of the unsigned division of A and B. 4.1.2 Comparison functions -------------------------- The following functions implement integral comparisons. These functions implement a low-level compare, upon which the higher level comparison operators (such as less than and greater than or equal to) can be constructed. The returned values lie in the range zero to two, to allow the high-level operators to be implemented by testing the returned result using either signed or unsigned comparison. -- Runtime Function: int __cmpdi2 (long A, long B) -- Runtime Function: int __cmpti2 (long long A, long long B) These functions perform a signed comparison of A and B. If A is less than B, they return 0; if A is greater than B, they return 2; and if A and B are equal they return 1. -- Runtime Function: int __ucmpdi2 (unsigned long A, unsigned long B) -- Runtime Function: int __ucmpti2 (unsigned long long A, unsigned long long B) These functions perform an unsigned comparison of A and B. If A is less than B, they return 0; if A is greater than B, they return 2; and if A and B are equal they return 1. 4.1.3 Trapping arithmetic functions ----------------------------------- The following functions implement trapping arithmetic. These functions call the libc function `abort' upon signed arithmetic overflow. -- Runtime Function: int __absvsi2 (int A) -- Runtime Function: long __absvdi2 (long A) These functions return the absolute value of A. -- Runtime Function: int __addvsi3 (int A, int B) -- Runtime Function: long __addvdi3 (long A, long B) These functions return the sum of A and B; that is `A + B'. -- Runtime Function: int __mulvsi3 (int A, int B) -- Runtime Function: long __mulvdi3 (long A, long B) The functions return the product of A and B; that is `A * B'. -- Runtime Function: int __negvsi2 (int A) -- Runtime Function: long __negvdi2 (long A) These functions return the negation of A; that is `-A'. -- Runtime Function: int __subvsi3 (int A, int B) -- Runtime Function: long __subvdi3 (long A, long B) These functions return the difference between B and A; that is `A - B'. 4.1.4 Bit operations -------------------- -- Runtime Function: int __clzsi2 (int A) -- Runtime Function: int __clzdi2 (long A) -- Runtime Function: int __clzti2 (long long A) These functions return the number of leading 0-bits in A, starting at the most significant bit position. If A is zero, the result is undefined. -- Runtime Function: int __ctzsi2 (int A) -- Runtime Function: int __ctzdi2 (long A) -- Runtime Function: int __ctzti2 (long long A) These functions return the number of trailing 0-bits in A, starting at the least significant bit position. If A is zero, the result is undefined. -- Runtime Function: int __ffsdi2 (long A) -- Runtime Function: int __ffsti2 (long long A) These functions return the index of the least significant 1-bit in A, or the value zero if A is zero. The least significant bit is index one. -- Runtime Function: int __paritysi2 (int A) -- Runtime Function: int __paritydi2 (long A) -- Runtime Function: int __parityti2 (long long A) These functions return the value zero if the number of bits set in A is even, and the value one otherwise. -- Runtime Function: int __popcountsi2 (int A) -- Runtime Function: int __popcountdi2 (long A) -- Runtime Function: int __popcountti2 (long long A) These functions return the number of bits set in A. -- Runtime Function: int32_t __bswapsi2 (int32_t A) -- Runtime Function: int64_t __bswapdi2 (int64_t A) These functions return the A byteswapped.  File: gccint.info, Node: Soft float library routines, Next: Decimal float library routines, Prev: Integer library routines, Up: Libgcc 4.2 Routines for floating point emulation ========================================= The software floating point library is used on machines which do not have hardware support for floating point. It is also used whenever `-msoft-float' is used to disable generation of floating point instructions. (Not all targets support this switch.) For compatibility with other compilers, the floating point emulation routines can be renamed with the `DECLARE_LIBRARY_RENAMES' macro (*note Library Calls::). In this section, the default names are used. Presently the library does not support `XFmode', which is used for `long double' on some architectures. 4.2.1 Arithmetic functions -------------------------- -- Runtime Function: float __addsf3 (float A, float B) -- Runtime Function: double __adddf3 (double A, double B) -- Runtime Function: long double __addtf3 (long double A, long double B) -- Runtime Function: long double __addxf3 (long double A, long double B) These functions return the sum of A and B. -- Runtime Function: float __subsf3 (float A, float B) -- Runtime Function: double __subdf3 (double A, double B) -- Runtime Function: long double __subtf3 (long double A, long double B) -- Runtime Function: long double __subxf3 (long double A, long double B) These functions return the difference between B and A; that is, A - B. -- Runtime Function: float __mulsf3 (float A, float B) -- Runtime Function: double __muldf3 (double A, double B) -- Runtime Function: long double __multf3 (long double A, long double B) -- Runtime Function: long double __mulxf3 (long double A, long double B) These functions return the product of A and B. -- Runtime Function: float __divsf3 (float A, float B) -- Runtime Function: double __divdf3 (double A, double B) -- Runtime Function: long double __divtf3 (long double A, long double B) -- Runtime Function: long double __divxf3 (long double A, long double B) These functions return the quotient of A and B; that is, A / B. -- Runtime Function: float __negsf2 (float A) -- Runtime Function: double __negdf2 (double A) -- Runtime Function: long double __negtf2 (long double A) -- Runtime Function: long double __negxf2 (long double A) These functions return the negation of A. They simply flip the sign bit, so they can produce negative zero and negative NaN. 4.2.2 Conversion functions -------------------------- -- Runtime Function: double __extendsfdf2 (float A) -- Runtime Function: long double __extendsftf2 (float A) -- Runtime Function: long double __extendsfxf2 (float A) -- Runtime Function: long double __extenddftf2 (double A) -- Runtime Function: long double __extenddfxf2 (double A) These functions extend A to the wider mode of their return type. -- Runtime Function: double __truncxfdf2 (long double A) -- Runtime Function: double __trunctfdf2 (long double A) -- Runtime Function: float __truncxfsf2 (long double A) -- Runtime Function: float __trunctfsf2 (long double A) -- Runtime Function: float __truncdfsf2 (double A) These functions truncate A to the narrower mode of their return type, rounding toward zero. -- Runtime Function: int __fixsfsi (float A) -- Runtime Function: int __fixdfsi (double A) -- Runtime Function: int __fixtfsi (long double A) -- Runtime Function: int __fixxfsi (long double A) These functions convert A to a signed integer, rounding toward zero. -- Runtime Function: long __fixsfdi (float A) -- Runtime Function: long __fixdfdi (double A) -- Runtime Function: long __fixtfdi (long double A) -- Runtime Function: long __fixxfdi (long double A) These functions convert A to a signed long, rounding toward zero. -- Runtime Function: long long __fixsfti (float A) -- Runtime Function: long long __fixdfti (double A) -- Runtime Function: long long __fixtfti (long double A) -- Runtime Function: long long __fixxfti (long double A) These functions convert A to a signed long long, rounding toward zero. -- Runtime Function: unsigned int __fixunssfsi (float A) -- Runtime Function: unsigned int __fixunsdfsi (double A) -- Runtime Function: unsigned int __fixunstfsi (long double A) -- Runtime Function: unsigned int __fixunsxfsi (long double A) These functions convert A to an unsigned integer, rounding toward zero. Negative values all become zero. -- Runtime Function: unsigned long __fixunssfdi (float A) -- Runtime Function: unsigned long __fixunsdfdi (double A) -- Runtime Function: unsigned long __fixunstfdi (long double A) -- Runtime Function: unsigned long __fixunsxfdi (long double A) These functions convert A to an unsigned long, rounding toward zero. Negative values all become zero. -- Runtime Function: unsigned long long __fixunssfti (float A) -- Runtime Function: unsigned long long __fixunsdfti (double A) -- Runtime Function: unsigned long long __fixunstfti (long double A) -- Runtime Function: unsigned long long __fixunsxfti (long double A) These functions convert A to an unsigned long long, rounding toward zero. Negative values all become zero. -- Runtime Function: float __floatsisf (int I) -- Runtime Function: double __floatsidf (int I) -- Runtime Function: long double __floatsitf (int I) -- Runtime Function: long double __floatsixf (int I) These functions convert I, a signed integer, to floating point. -- Runtime Function: float __floatdisf (long I) -- Runtime Function: double __floatdidf (long I) -- Runtime Function: long double __floatditf (long I) -- Runtime Function: long double __floatdixf (long I) These functions convert I, a signed long, to floating point. -- Runtime Function: float __floattisf (long long I) -- Runtime Function: double __floattidf (long long I) -- Runtime Function: long double __floattitf (long long I) -- Runtime Function: long double __floattixf (long long I) These functions convert I, a signed long long, to floating point. -- Runtime Function: float __floatunsisf (unsigned int I) -- Runtime Function: double __floatunsidf (unsigned int I) -- Runtime Function: long double __floatunsitf (unsigned int I) -- Runtime Function: long double __floatunsixf (unsigned int I) These functions convert I, an unsigned integer, to floating point. -- Runtime Function: float __floatundisf (unsigned long I) -- Runtime Function: double __floatundidf (unsigned long I) -- Runtime Function: long double __floatunditf (unsigned long I) -- Runtime Function: long double __floatundixf (unsigned long I) These functions convert I, an unsigned long, to floating point. -- Runtime Function: float __floatuntisf (unsigned long long I) -- Runtime Function: double __floatuntidf (unsigned long long I) -- Runtime Function: long double __floatuntitf (unsigned long long I) -- Runtime Function: long double __floatuntixf (unsigned long long I) These functions convert I, an unsigned long long, to floating point. 4.2.3 Comparison functions -------------------------- There are two sets of basic comparison functions. -- Runtime Function: int __cmpsf2 (float A, float B) -- Runtime Function: int __cmpdf2 (double A, double B) -- Runtime Function: int __cmptf2 (long double A, long double B) These functions calculate a <=> b. That is, if A is less than B, they return -1; if A is greater than B, they return 1; and if A and B are equal they return 0. If either argument is NaN they return 1, but you should not rely on this; if NaN is a possibility, use one of the higher-level comparison functions. -- Runtime Function: int __unordsf2 (float A, float B) -- Runtime Function: int __unorddf2 (double A, double B) -- Runtime Function: int __unordtf2 (long double A, long double B) These functions return a nonzero value if either argument is NaN, otherwise 0. There is also a complete group of higher level functions which correspond directly to comparison operators. They implement the ISO C semantics for floating-point comparisons, taking NaN into account. Pay careful attention to the return values defined for each set. Under the hood, all of these routines are implemented as if (__unordXf2 (a, b)) return E; return __cmpXf2 (a, b); where E is a constant chosen to give the proper behavior for NaN. Thus, the meaning of the return value is different for each set. Do not rely on this implementation; only the semantics documented below are guaranteed. -- Runtime Function: int __eqsf2 (float A, float B) -- Runtime Function: int __eqdf2 (double A, double B) -- Runtime Function: int __eqtf2 (long double A, long double B) These functions return zero if neither argument is NaN, and A and B are equal. -- Runtime Function: int __nesf2 (float A, float B) -- Runtime Function: int __nedf2 (double A, double B) -- Runtime Function: int __netf2 (long double A, long double B) These functions return a nonzero value if either argument is NaN, or if A and B are unequal. -- Runtime Function: int __gesf2 (float A, float B) -- Runtime Function: int __gedf2 (double A, double B) -- Runtime Function: int __getf2 (long double A, long double B) These functions return a value greater than or equal to zero if neither argument is NaN, and A is greater than or equal to B. -- Runtime Function: int __ltsf2 (float A, float B) -- Runtime Function: int __ltdf2 (double A, double B) -- Runtime Function: int __lttf2 (long double A, long double B) These functions return a value less than zero if neither argument is NaN, and A is strictly less than B. -- Runtime Function: int __lesf2 (float A, float B) -- Runtime Function: int __ledf2 (double A, double B) -- Runtime Function: int __letf2 (long double A, long double B) These functions return a value less than or equal to zero if neither argument is NaN, and A is less than or equal to B. -- Runtime Function: int __gtsf2 (float A, float B) -- Runtime Function: int __gtdf2 (double A, double B) -- Runtime Function: int __gttf2 (long double A, long double B) These functions return a value greater than zero if neither argument is NaN, and A is strictly greater than B. 4.2.4 Other floating-point functions ------------------------------------ -- Runtime Function: float __powisf2 (float A, int B) -- Runtime Function: double __powidf2 (double A, int B) -- Runtime Function: long double __powitf2 (long double A, int B) -- Runtime Function: long double __powixf2 (long double A, int B) These functions convert raise A to the power B. -- Runtime Function: complex float __mulsc3 (float A, float B, float C, float D) -- Runtime Function: complex double __muldc3 (double A, double B, double C, double D) -- Runtime Function: complex long double __multc3 (long double A, long double B, long double C, long double D) -- Runtime Function: complex long double __mulxc3 (long double A, long double B, long double C, long double D) These functions return the product of A + iB and C + iD, following the rules of C99 Annex G. -- Runtime Function: complex float __divsc3 (float A, float B, float C, float D) -- Runtime Function: complex double __divdc3 (double A, double B, double C, double D) -- Runtime Function: complex long double __divtc3 (long double A, long double B, long double C, long double D) -- Runtime Function: complex long double __divxc3 (long double A, long double B, long double C, long double D) These functions return the quotient of A + iB and C + iD (i.e., (A + iB) / (C + iD)), following the rules of C99 Annex G.  File: gccint.info, Node: Decimal float library routines, Next: Fixed-point fractional library routines, Prev: Soft float library routines, Up: Libgcc 4.3 Routines for decimal floating point emulation ================================================= The software decimal floating point library implements IEEE 754R decimal floating point arithmetic and is only activated on selected targets. The software decimal floating point library supports either DPD (Densely Packed Decimal) or BID (Binary Integer Decimal) encoding as selected at configure time. 4.3.1 Arithmetic functions -------------------------- -- Runtime Function: _Decimal32 __dpd_addsd3 (_Decimal32 A, _Decimal32 B) -- Runtime Function: _Decimal32 __bid_addsd3 (_Decimal32 A, _Decimal32 B) -- Runtime Function: _Decimal64 __dpd_adddd3 (_Decimal64 A, _Decimal64 B) -- Runtime Function: _Decimal64 __bid_adddd3 (_Decimal64 A, _Decimal64 B) -- Runtime Function: _Decimal128 __dpd_addtd3 (_Decimal128 A, _Decimal128 B) -- Runtime Function: _Decimal128 __bid_addtd3 (_Decimal128 A, _Decimal128 B) These functions return the sum of A and B. -- Runtime Function: _Decimal32 __dpd_subsd3 (_Decimal32 A, _Decimal32 B) -- Runtime Function: _Decimal32 __bid_subsd3 (_Decimal32 A, _Decimal32 B) -- Runtime Function: _Decimal64 __dpd_subdd3 (_Decimal64 A, _Decimal64 B) -- Runtime Function: _Decimal64 __bid_subdd3 (_Decimal64 A, _Decimal64 B) -- Runtime Function: _Decimal128 __dpd_subtd3 (_Decimal128 A, _Decimal128 B) -- Runtime Function: _Decimal128 __bid_subtd3 (_Decimal128 A, _Decimal128 B) These functions return the difference between B and A; that is, A - B. -- Runtime Function: _Decimal32 __dpd_mulsd3 (_Decimal32 A, _Decimal32 B) -- Runtime Function: _Decimal32 __bid_mulsd3 (_Decimal32 A, _Decimal32 B) -- Runtime Function: _Decimal64 __dpd_muldd3 (_Decimal64 A, _Decimal64 B) -- Runtime Function: _Decimal64 __bid_muldd3 (_Decimal64 A, _Decimal64 B) -- Runtime Function: _Decimal128 __dpd_multd3 (_Decimal128 A, _Decimal128 B) -- Runtime Function: _Decimal128 __bid_multd3 (_Decimal128 A, _Decimal128 B) These functions return the product of A and B. -- Runtime Function: _Decimal32 __dpd_divsd3 (_Decimal32 A, _Decimal32 B) -- Runtime Function: _Decimal32 __bid_divsd3 (_Decimal32 A, _Decimal32 B) -- Runtime Function: _Decimal64 __dpd_divdd3 (_Decimal64 A, _Decimal64 B) -- Runtime Function: _Decimal64 __bid_divdd3 (_Decimal64 A, _Decimal64 B) -- Runtime Function: _Decimal128 __dpd_divtd3 (_Decimal128 A, _Decimal128 B) -- Runtime Function: _Decimal128 __bid_divtd3 (_Decimal128 A, _Decimal128 B) These functions return the quotient of A and B; that is, A / B. -- Runtime Function: _Decimal32 __dpd_negsd2 (_Decimal32 A) -- Runtime Function: _Decimal32 __bid_negsd2 (_Decimal32 A) -- Runtime Function: _Decimal64 __dpd_negdd2 (_Decimal64 A) -- Runtime Function: _Decimal64 __bid_negdd2 (_Decimal64 A) -- Runtime Function: _Decimal128 __dpd_negtd2 (_Decimal128 A) -- Runtime Function: _Decimal128 __bid_negtd2 (_Decimal128 A) These functions return the negation of A. They simply flip the sign bit, so they can produce negative zero and negative NaN. 4.3.2 Conversion functions -------------------------- -- Runtime Function: _Decimal64 __dpd_extendsddd2 (_Decimal32 A) -- Runtime Function: _Decimal64 __bid_extendsddd2 (_Decimal32 A) -- Runtime Function: _Decimal128 __dpd_extendsdtd2 (_Decimal32 A) -- Runtime Function: _Decimal128 __bid_extendsdtd2 (_Decimal32 A) -- Runtime Function: _Decimal128 __dpd_extendddtd2 (_Decimal64 A) -- Runtime Function: _Decimal128 __bid_extendddtd2 (_Decimal64 A) -- Runtime Function: _Decimal32 __dpd_truncddsd2 (_Decimal64 A) -- Runtime Function: _Decimal32 __bid_truncddsd2 (_Decimal64 A) -- Runtime Function: _Decimal32 __dpd_trunctdsd2 (_Decimal128 A) -- Runtime Function: _Decimal32 __bid_trunctdsd2 (_Decimal128 A) -- Runtime Function: _Decimal64 __dpd_trunctddd2 (_Decimal128 A) -- Runtime Function: _Decimal64 __bid_trunctddd2 (_Decimal128 A) These functions convert the value A from one decimal floating type to another. -- Runtime Function: _Decimal64 __dpd_extendsfdd (float A) -- Runtime Function: _Decimal64 __bid_extendsfdd (float A) -- Runtime Function: _Decimal128 __dpd_extendsftd (float A) -- Runtime Function: _Decimal128 __bid_extendsftd (float A) -- Runtime Function: _Decimal128 __dpd_extenddftd (double A) -- Runtime Function: _Decimal128 __bid_extenddftd (double A) -- Runtime Function: _Decimal128 __dpd_extendxftd (long double A) -- Runtime Function: _Decimal128 __bid_extendxftd (long double A) -- Runtime Function: _Decimal32 __dpd_truncdfsd (double A) -- Runtime Function: _Decimal32 __bid_truncdfsd (double A) -- Runtime Function: _Decimal32 __dpd_truncxfsd (long double A) -- Runtime Function: _Decimal32 __bid_truncxfsd (long double A) -- Runtime Function: _Decimal32 __dpd_trunctfsd (long double A) -- Runtime Function: _Decimal32 __bid_trunctfsd (long double A) -- Runtime Function: _Decimal64 __dpd_truncxfdd (long double A) -- Runtime Function: _Decimal64 __bid_truncxfdd (long double A) -- Runtime Function: _Decimal64 __dpd_trunctfdd (long double A) -- Runtime Function: _Decimal64 __bid_trunctfdd (long double A) These functions convert the value of A from a binary floating type to a decimal floating type of a different size. -- Runtime Function: float __dpd_truncddsf (_Decimal64 A) -- Runtime Function: float __bid_truncddsf (_Decimal64 A) -- Runtime Function: float __dpd_trunctdsf (_Decimal128 A) -- Runtime Function: float __bid_trunctdsf (_Decimal128 A) -- Runtime Function: double __dpd_extendsddf (_Decimal32 A) -- Runtime Function: double __bid_extendsddf (_Decimal32 A) -- Runtime Function: double __dpd_trunctddf (_Decimal128 A) -- Runtime Function: double __bid_trunctddf (_Decimal128 A) -- Runtime Function: long double __dpd_extendsdxf (_Decimal32 A) -- Runtime Function: long double __bid_extendsdxf (_Decimal32 A) -- Runtime Function: long double __dpd_extendddxf (_Decimal64 A) -- Runtime Function: long double __bid_extendddxf (_Decimal64 A) -- Runtime Function: long double __dpd_trunctdxf (_Decimal128 A) -- Runtime Function: long double __bid_trunctdxf (_Decimal128 A) -- Runtime Function: long double __dpd_extendsdtf (_Decimal32 A) -- Runtime Function: long double __bid_extendsdtf (_Decimal32 A) -- Runtime Function: long double __dpd_extendddtf (_Decimal64 A) -- Runtime Function: long double __bid_extendddtf (_Decimal64 A) These functions convert the value of A from a decimal floating type to a binary floating type of a different size. -- Runtime Function: _Decimal32 __dpd_extendsfsd (float A) -- Runtime Function: _Decimal32 __bid_extendsfsd (float A) -- Runtime Function: _Decimal64 __dpd_extenddfdd (double A) -- Runtime Function: _Decimal64 __bid_extenddfdd (double A) -- Runtime Function: _Decimal128 __dpd_extendtftd (long double A) -- Runtime Function: _Decimal128 __bid_extendtftd (long double A) -- Runtime Function: float __dpd_truncsdsf (_Decimal32 A) -- Runtime Function: float __bid_truncsdsf (_Decimal32 A) -- Runtime Function: double __dpd_truncdddf (_Decimal64 A) -- Runtime Function: double __bid_truncdddf (_Decimal64 A) -- Runtime Function: long double __dpd_trunctdtf (_Decimal128 A) -- Runtime Function: long double __bid_trunctdtf (_Decimal128 A) These functions convert the value of A between decimal and binary floating types of the same size. -- Runtime Function: int __dpd_fixsdsi (_Decimal32 A) -- Runtime Function: int __bid_fixsdsi (_Decimal32 A) -- Runtime Function: int __dpd_fixddsi (_Decimal64 A) -- Runtime Function: int __bid_fixddsi (_Decimal64 A) -- Runtime Function: int __dpd_fixtdsi (_Decimal128 A) -- Runtime Function: int __bid_fixtdsi (_Decimal128 A) These functions convert A to a signed integer. -- Runtime Function: long __dpd_fixsddi (_Decimal32 A) -- Runtime Function: long __bid_fixsddi (_Decimal32 A) -- Runtime Function: long __dpd_fixdddi (_Decimal64 A) -- Runtime Function: long __bid_fixdddi (_Decimal64 A) -- Runtime Function: long __dpd_fixtddi (_Decimal128 A) -- Runtime Function: long __bid_fixtddi (_Decimal128 A) These functions convert A to a signed long. -- Runtime Function: unsigned int __dpd_fixunssdsi (_Decimal32 A) -- Runtime Function: unsigned int __bid_fixunssdsi (_Decimal32 A) -- Runtime Function: unsigned int __dpd_fixunsddsi (_Decimal64 A) -- Runtime Function: unsigned int __bid_fixunsddsi (_Decimal64 A) -- Runtime Function: unsigned int __dpd_fixunstdsi (_Decimal128 A) -- Runtime Function: unsigned int __bid_fixunstdsi (_Decimal128 A) These functions convert A to an unsigned integer. Negative values all become zero. -- Runtime Function: unsigned long __dpd_fixunssddi (_Decimal32 A) -- Runtime Function: unsigned long __bid_fixunssddi (_Decimal32 A) -- Runtime Function: unsigned long __dpd_fixunsdddi (_Decimal64 A) -- Runtime Function: unsigned long __bid_fixunsdddi (_Decimal64 A) -- Runtime Function: unsigned long __dpd_fixunstddi (_Decimal128 A) -- Runtime Function: unsigned long __bid_fixunstddi (_Decimal128 A) These functions convert A to an unsigned long. Negative values all become zero. -- Runtime Function: _Decimal32 __dpd_floatsisd (int I) -- Runtime Function: _Decimal32 __bid_floatsisd (int I) -- Runtime Function: _Decimal64 __dpd_floatsidd (int I) -- Runtime Function: _Decimal64 __bid_floatsidd (int I) -- Runtime Function: _Decimal128 __dpd_floatsitd (int I) -- Runtime Function: _Decimal128 __bid_floatsitd (int I) These functions convert I, a signed integer, to decimal floating point. -- Runtime Function: _Decimal32 __dpd_floatdisd (long I) -- Runtime Function: _Decimal32 __bid_floatdisd (long I) -- Runtime Function: _Decimal64 __dpd_floatdidd (long I) -- Runtime Function: _Decimal64 __bid_floatdidd (long I) -- Runtime Function: _Decimal128 __dpd_floatditd (long I) -- Runtime Function: _Decimal128 __bid_floatditd (long I) These functions convert I, a signed long, to decimal floating point. -- Runtime Function: _Decimal32 __dpd_floatunssisd (unsigned int I) -- Runtime Function: _Decimal32 __bid_floatunssisd (unsigned int I) -- Runtime Function: _Decimal64 __dpd_floatunssidd (unsigned int I) -- Runtime Function: _Decimal64 __bid_floatunssidd (unsigned int I) -- Runtime Function: _Decimal128 __dpd_floatunssitd (unsigned int I) -- Runtime Function: _Decimal128 __bid_floatunssitd (unsigned int I) These functions convert I, an unsigned integer, to decimal floating point. -- Runtime Function: _Decimal32 __dpd_floatunsdisd (unsigned long I) -- Runtime Function: _Decimal32 __bid_floatunsdisd (unsigned long I) -- Runtime Function: _Decimal64 __dpd_floatunsdidd (unsigned long I) -- Runtime Function: _Decimal64 __bid_floatunsdidd (unsigned long I) -- Runtime Function: _Decimal128 __dpd_floatunsditd (unsigned long I) -- Runtime Function: _Decimal128 __bid_floatunsditd (unsigned long I) These functions convert I, an unsigned long, to decimal floating point. 4.3.3 Comparison functions -------------------------- -- Runtime Function: int __dpd_unordsd2 (_Decimal32 A, _Decimal32 B) -- Runtime Function: int __bid_unordsd2 (_Decimal32 A, _Decimal32 B) -- Runtime Function: int __dpd_unorddd2 (_Decimal64 A, _Decimal64 B) -- Runtime Function: int __bid_unorddd2 (_Decimal64 A, _Decimal64 B) -- Runtime Function: int __dpd_unordtd2 (_Decimal128 A, _Decimal128 B) -- Runtime Function: int __bid_unordtd2 (_Decimal128 A, _Decimal128 B) These functions return a nonzero value if either argument is NaN, otherwise 0. There is also a complete group of higher level functions which correspond directly to comparison operators. They implement the ISO C semantics for floating-point comparisons, taking NaN into account. Pay careful attention to the return values defined for each set. Under the hood, all of these routines are implemented as if (__bid_unordXd2 (a, b)) return E; return __bid_cmpXd2 (a, b); where E is a constant chosen to give the proper behavior for NaN. Thus, the meaning of the return value is different for each set. Do not rely on this implementation; only the semantics documented below are guaranteed. -- Runtime Function: int __dpd_eqsd2 (_Decimal32 A, _Decimal32 B) -- Runtime Function: int __bid_eqsd2 (_Decimal32 A, _Decimal32 B) -- Runtime Function: int __dpd_eqdd2 (_Decimal64 A, _Decimal64 B) -- Runtime Function: int __bid_eqdd2 (_Decimal64 A, _Decimal64 B) -- Runtime Function: int __dpd_eqtd2 (_Decimal128 A, _Decimal128 B) -- Runtime Function: int __bid_eqtd2 (_Decimal128 A, _Decimal128 B) These functions return zero if neither argument is NaN, and A and B are equal. -- Runtime Function: int __dpd_nesd2 (_Decimal32 A, _Decimal32 B) -- Runtime Function: int __bid_nesd2 (_Decimal32 A, _Decimal32 B) -- Runtime Function: int __dpd_nedd2 (_Decimal64 A, _Decimal64 B) -- Runtime Function: int __bid_nedd2 (_Decimal64 A, _Decimal64 B) -- Runtime Function: int __dpd_netd2 (_Decimal128 A, _Decimal128 B) -- Runtime Function: int __bid_netd2 (_Decimal128 A, _Decimal128 B) These functions return a nonzero value if either argument is NaN, or if A and B are unequal. -- Runtime Function: int __dpd_gesd2 (_Decimal32 A, _Decimal32 B) -- Runtime Function: int __bid_gesd2 (_Decimal32 A, _Decimal32 B) -- Runtime Function: int __dpd_gedd2 (_Decimal64 A, _Decimal64 B) -- Runtime Function: int __bid_gedd2 (_Decimal64 A, _Decimal64 B) -- Runtime Function: int __dpd_getd2 (_Decimal128 A, _Decimal128 B) -- Runtime Function: int __bid_getd2 (_Decimal128 A, _Decimal128 B) These functions return a value greater than or equal to zero if neither argument is NaN, and A is greater than or equal to B. -- Runtime Function: int __dpd_ltsd2 (_Decimal32 A, _Decimal32 B) -- Runtime Function: int __bid_ltsd2 (_Decimal32 A, _Decimal32 B) -- Runtime Function: int __dpd_ltdd2 (_Decimal64 A, _Decimal64 B) -- Runtime Function: int __bid_ltdd2 (_Decimal64 A, _Decimal64 B) -- Runtime Function: int __dpd_lttd2 (_Decimal128 A, _Decimal128 B) -- Runtime Function: int __bid_lttd2 (_Decimal128 A, _Decimal128 B) These functions return a value less than zero if neither argument is NaN, and A is strictly less than B. -- Runtime Function: int __dpd_lesd2 (_Decimal32 A, _Decimal32 B) -- Runtime Function: int __bid_lesd2 (_Decimal32 A, _Decimal32 B) -- Runtime Function: int __dpd_ledd2 (_Decimal64 A, _Decimal64 B) -- Runtime Function: int __bid_ledd2 (_Decimal64 A, _Decimal64 B) -- Runtime Function: int __dpd_letd2 (_Decimal128 A, _Decimal128 B) -- Runtime Function: int __bid_letd2 (_Decimal128 A, _Decimal128 B) These functions return a value less than or equal to zero if neither argument is NaN, and A is less than or equal to B. -- Runtime Function: int __dpd_gtsd2 (_Decimal32 A, _Decimal32 B) -- Runtime Function: int __bid_gtsd2 (_Decimal32 A, _Decimal32 B) -- Runtime Function: int __dpd_gtdd2 (_Decimal64 A, _Decimal64 B) -- Runtime Function: int __bid_gtdd2 (_Decimal64 A, _Decimal64 B) -- Runtime Function: int __dpd_gttd2 (_Decimal128 A, _Decimal128 B) -- Runtime Function: int __bid_gttd2 (_Decimal128 A, _Decimal128 B) These functions return a value greater than zero if neither argument is NaN, and A is strictly greater than B.  File: gccint.info, Node: Fixed-point fractional library routines, Next: Exception handling routines, Prev: Decimal float library routines, Up: Libgcc 4.4 Routines for fixed-point fractional emulation ================================================= The software fixed-point library implements fixed-point fractional arithmetic, and is only activated on selected targets. For ease of comprehension `fract' is an alias for the `_Fract' type, `accum' an alias for `_Accum', and `sat' an alias for `_Sat'. For illustrative purposes, in this section the fixed-point fractional type `short fract' is assumed to correspond to machine mode `QQmode'; `unsigned short fract' to `UQQmode'; `fract' to `HQmode'; `unsigned fract' to `UHQmode'; `long fract' to `SQmode'; `unsigned long fract' to `USQmode'; `long long fract' to `DQmode'; and `unsigned long long fract' to `UDQmode'. Similarly the fixed-point accumulator type `short accum' corresponds to `HAmode'; `unsigned short accum' to `UHAmode'; `accum' to `SAmode'; `unsigned accum' to `USAmode'; `long accum' to `DAmode'; `unsigned long accum' to `UDAmode'; `long long accum' to `TAmode'; and `unsigned long long accum' to `UTAmode'. 4.4.1 Arithmetic functions -------------------------- -- Runtime Function: short fract __addqq3 (short fract A, short fract B) -- Runtime Function: fract __addhq3 (fract A, fract B) -- Runtime Function: long fract __addsq3 (long fract A, long fract B) -- Runtime Function: long long fract __adddq3 (long long fract A, long long fract B) -- Runtime Function: unsigned short fract __adduqq3 (unsigned short fract A, unsigned short fract B) -- Runtime Function: unsigned fract __adduhq3 (unsigned fract A, unsigned fract B) -- Runtime Function: unsigned long fract __addusq3 (unsigned long fract A, unsigned long fract B) -- Runtime Function: unsigned long long fract __addudq3 (unsigned long long fract A, unsigned long long fract B) -- Runtime Function: short accum __addha3 (short accum A, short accum B) -- Runtime Function: accum __addsa3 (accum A, accum B) -- Runtime Function: long accum __addda3 (long accum A, long accum B) -- Runtime Function: long long accum __addta3 (long long accum A, long long accum B) -- Runtime Function: unsigned short accum __adduha3 (unsigned short accum A, unsigned short accum B) -- Runtime Function: unsigned accum __addusa3 (unsigned accum A, unsigned accum B) -- Runtime Function: unsigned long accum __adduda3 (unsigned long accum A, unsigned long accum B) -- Runtime Function: unsigned long long accum __adduta3 (unsigned long long accum A, unsigned long long accum B) These functions return the sum of A and B. -- Runtime Function: short fract __ssaddqq3 (short fract A, short fract B) -- Runtime Function: fract __ssaddhq3 (fract A, fract B) -- Runtime Function: long fract __ssaddsq3 (long fract A, long fract B) -- Runtime Function: long long fract __ssadddq3 (long long fract A, long long fract B) -- Runtime Function: short accum __ssaddha3 (short accum A, short accum B) -- Runtime Function: accum __ssaddsa3 (accum A, accum B) -- Runtime Function: long accum __ssaddda3 (long accum A, long accum B) -- Runtime Function: long long accum __ssaddta3 (long long accum A, long long accum B) These functions return the sum of A and B with signed saturation. -- Runtime Function: unsigned short fract __usadduqq3 (unsigned short fract A, unsigned short fract B) -- Runtime Function: unsigned fract __usadduhq3 (unsigned fract A, unsigned fract B) -- Runtime Function: unsigned long fract __usaddusq3 (unsigned long fract A, unsigned long fract B) -- Runtime Function: unsigned long long fract __usaddudq3 (unsigned long long fract A, unsigned long long fract B) -- Runtime Function: unsigned short accum __usadduha3 (unsigned short accum A, unsigned short accum B) -- Runtime Function: unsigned accum __usaddusa3 (unsigned accum A, unsigned accum B) -- Runtime Function: unsigned long accum __usadduda3 (unsigned long accum A, unsigned long accum B) -- Runtime Function: unsigned long long accum __usadduta3 (unsigned long long accum A, unsigned long long accum B) These functions return the sum of A and B with unsigned saturation. -- Runtime Function: short fract __subqq3 (short fract A, short fract B) -- Runtime Function: fract __subhq3 (fract A, fract B) -- Runtime Function: long fract __subsq3 (long fract A, long fract B) -- Runtime Function: long long fract __subdq3 (long long fract A, long long fract B) -- Runtime Function: unsigned short fract __subuqq3 (unsigned short fract A, unsigned short fract B) -- Runtime Function: unsigned fract __subuhq3 (unsigned fract A, unsigned fract B) -- Runtime Function: unsigned long fract __subusq3 (unsigned long fract A, unsigned long fract B) -- Runtime Function: unsigned long long fract __subudq3 (unsigned long long fract A, unsigned long long fract B) -- Runtime Function: short accum __subha3 (short accum A, short accum B) -- Runtime Function: accum __subsa3 (accum A, accum B) -- Runtime Function: long accum __subda3 (long accum A, long accum B) -- Runtime Function: long long accum __subta3 (long long accum A, long long accum B) -- Runtime Function: unsigned short accum __subuha3 (unsigned short accum A, unsigned short accum B) -- Runtime Function: unsigned accum __subusa3 (unsigned accum A, unsigned accum B) -- Runtime Function: unsigned long accum __subuda3 (unsigned long accum A, unsigned long accum B) -- Runtime Function: unsigned long long accum __subuta3 (unsigned long long accum A, unsigned long long accum B) These functions return the difference of A and B; that is, `A - B'. -- Runtime Function: short fract __sssubqq3 (short fract A, short fract B) -- Runtime Function: fract __sssubhq3 (fract A, fract B) -- Runtime Function: long fract __sssubsq3 (long fract A, long fract B) -- Runtime Function: long long fract __sssubdq3 (long long fract A, long long fract B) -- Runtime Function: short accum __sssubha3 (short accum A, short accum B) -- Runtime Function: accum __sssubsa3 (accum A, accum B) -- Runtime Function: long accum __sssubda3 (long accum A, long accum B) -- Runtime Function: long long accum __sssubta3 (long long accum A, long long accum B) These functions return the difference of A and B with signed saturation; that is, `A - B'. -- Runtime Function: unsigned short fract __ussubuqq3 (unsigned short fract A, unsigned short fract B) -- Runtime Function: unsigned fract __ussubuhq3 (unsigned fract A, unsigned fract B) -- Runtime Function: unsigned long fract __ussubusq3 (unsigned long fract A, unsigned long fract B) -- Runtime Function: unsigned long long fract __ussubudq3 (unsigned long long fract A, unsigned long long fract B) -- Runtime Function: unsigned short accum __ussubuha3 (unsigned short accum A, unsigned short accum B) -- Runtime Function: unsigned accum __ussubusa3 (unsigned accum A, unsigned accum B) -- Runtime Function: unsigned long accum __ussubuda3 (unsigned long accum A, unsigned long accum B) -- Runtime Function: unsigned long long accum __ussubuta3 (unsigned long long accum A, unsigned long long accum B) These functions return the difference of A and B with unsigned saturation; that is, `A - B'. -- Runtime Function: short fract __mulqq3 (short fract A, short fract B) -- Runtime Function: fract __mulhq3 (fract A, fract B) -- Runtime Function: long fract __mulsq3 (long fract A, long fract B) -- Runtime Function: long long fract __muldq3 (long long fract A, long long fract B) -- Runtime Function: unsigned short fract __muluqq3 (unsigned short fract A, unsigned short fract B) -- Runtime Function: unsigned fract __muluhq3 (unsigned fract A, unsigned fract B) -- Runtime Function: unsigned long fract __mulusq3 (unsigned long fract A, unsigned long fract B) -- Runtime Function: unsigned long long fract __muludq3 (unsigned long long fract A, unsigned long long fract B) -- Runtime Function: short accum __mulha3 (short accum A, short accum B) -- Runtime Function: accum __mulsa3 (accum A, accum B) -- Runtime Function: long accum __mulda3 (long accum A, long accum B) -- Runtime Function: long long accum __multa3 (long long accum A, long long accum B) -- Runtime Function: unsigned short accum __muluha3 (unsigned short accum A, unsigned short accum B) -- Runtime Function: unsigned accum __mulusa3 (unsigned accum A, unsigned accum B) -- Runtime Function: unsigned long accum __muluda3 (unsigned long accum A, unsigned long accum B) -- Runtime Function: unsigned long long accum __muluta3 (unsigned long long accum A, unsigned long long accum B) These functions return the product of A and B. -- Runtime Function: short fract __ssmulqq3 (short fract A, short fract B) -- Runtime Function: fract __ssmulhq3 (fract A, fract B) -- Runtime Function: long fract __ssmulsq3 (long fract A, long fract B) -- Runtime Function: long long fract __ssmuldq3 (long long fract A, long long fract B) -- Runtime Function: short accum __ssmulha3 (short accum A, short accum B) -- Runtime Function: accum __ssmulsa3 (accum A, accum B) -- Runtime Function: long accum __ssmulda3 (long accum A, long accum B) -- Runtime Function: long long accum __ssmulta3 (long long accum A, long long accum B) These functions return the product of A and B with signed saturation. -- Runtime Function: unsigned short fract __usmuluqq3 (unsigned short fract A, unsigned short fract B) -- Runtime Function: unsigned fract __usmuluhq3 (unsigned fract A, unsigned fract B) -- Runtime Function: unsigned long fract __usmulusq3 (unsigned long fract A, unsigned long fract B) -- Runtime Function: unsigned long long fract __usmuludq3 (unsigned long long fract A, unsigned long long fract B) -- Runtime Function: unsigned short accum __usmuluha3 (unsigned short accum A, unsigned short accum B) -- Runtime Function: unsigned accum __usmulusa3 (unsigned accum A, unsigned accum B) -- Runtime Function: unsigned long accum __usmuluda3 (unsigned long accum A, unsigned long accum B) -- Runtime Function: unsigned long long accum __usmuluta3 (unsigned long long accum A, unsigned long long accum B) These functions return the product of A and B with unsigned saturation. -- Runtime Function: short fract __divqq3 (short fract A, short fract B) -- Runtime Function: fract __divhq3 (fract A, fract B) -- Runtime Function: long fract __divsq3 (long fract A, long fract B) -- Runtime Function: long long fract __divdq3 (long long fract A, long long fract B) -- Runtime Function: short accum __divha3 (short accum A, short accum B) -- Runtime Function: accum __divsa3 (accum A, accum B) -- Runtime Function: long accum __divda3 (long accum A, long accum B) -- Runtime Function: long long accum __divta3 (long long accum A, long long accum B) These functions return the quotient of the signed division of A and B. -- Runtime Function: unsigned short fract __udivuqq3 (unsigned short fract A, unsigned short fract B) -- Runtime Function: unsigned fract __udivuhq3 (unsigned fract A, unsigned fract B) -- Runtime Function: unsigned long fract __udivusq3 (unsigned long fract A, unsigned long fract B) -- Runtime Function: unsigned long long fract __udivudq3 (unsigned long long fract A, unsigned long long fract B) -- Runtime Function: unsigned short accum __udivuha3 (unsigned short accum A, unsigned short accum B) -- Runtime Function: unsigned accum __udivusa3 (unsigned accum A, unsigned accum B) -- Runtime Function: unsigned long accum __udivuda3 (uns