summaryrefslogtreecommitdiffstats
path: root/gcc/config/fp-bit.c
Commit message (Collapse)AuthorAgeFilesLines
* * config/fp-bit.c (unpack_d): Handle pair of doubles withaoliva2003-04-091-1/+5
| | | | | | | different signs correctly. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@65405 138bc75d-0d04-0410-961f-82ee72b054a4
* * real.h (EXP_BITS): Make room for...aoliva2003-04-011-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (struct real_value): ... added canonical bit. (struct real_format): Added pnan. (mips_single_format, mips_double_format, mips_extended_format, mips_quad_format): New. * real.c: Copy p to pnan in all formats. (get_canonical_qnan, get_canonical_snan): Set canonical bit. (real_nan): Use pnan to compute significand's shift. (real_identical): Disregard significand in canonical NaNs. (real_hash): Likewise. Take signalling into account. (encode_ieee_single, encode_ieee_double, encode_ieee_quad): Disregard significand bits in canonical NaNs. Set all bits of canonical NaN if !qnan_msb_set. (encode_ibm_extended, decode_ibm_extended): Likewise. Use qnan_msb_set to tell the base double format. (ibm_extended_format): Use 53 as pnan. (mips_single_format, mips_double_format, mips_extended_format, mips_quad_format): Copied from the corresponding ieee/ibm formats, with qnan_msb_set false. * config/mips/iris6.h (MIPS_TFMODE_FORMAT): Use mips_extended_format. * config/mips/linux64.h (MIPS_TFMODE_FORMAT): Use mips_quad_format. * config/mips/mips.c (override_options): Use mips_single_format and mips_double_format. Default TFmode to mips_quad_format. * config/mips/t-linux64 (tp-bit.c): Define QUIET_NAN_NEGATED. * config/mips/t-irix6: Likewise. * config/mips/t-mips (fp-bit.c, dp-bit.c): Likewise. * config/fp-bit.c (pack_d, unpack_d): Obey it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@65146 138bc75d-0d04-0410-961f-82ee72b054a4
* * fp-bit.h: Define macros for TFmode floating-point constantsaoliva2003-01-261-0/+90
| | | | | | | | | | | in IBM-extended TFmode types. (TMODES): Define if __LDBL_MANT_DIG__ has the newly-supported widths. * config/fp-bit.c (pack_d, unpack_d): Support IBM-extended TFmode type. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@61837 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/fp-bit.h: Define macros for TFmode floating-pointaoliva2003-01-261-33/+148
| | | | | | | | | | | | | | | | | | | | | | | constants in IEEE quad TFmode type. Declare functions according to L_ macros. (TMODES): Define if __LDBL_MANT_DIG__ is 113. (TFtype, TItype, UTItype): Define if TMODES is defined. (MAX_UDI_INT, MAX_DI_INT, BITS_PER_DI): Likewise. (F_T_BITOFF, D_T_BITOFF): Define. (IMPLICIT_1, IMPLICIT_2): Cast constants to types that are guaranteed to be wide enough. * config/fp-bit.c: Check for L_ macros for tf functions. (__thenan_tf): New. (nan): Adjust. (pack_d, unpack_d): Support IEEE 854 quad type. (_fpmul_parts): Support TFmode. Compute exponent adjustment from FRAC_NBITS, FRAC_BITS and NGARDS. (usi_to_float): Cast constants to be shifted to fractype instead of assuming long long is wide enough. (sf_to_tf, df_to_tf, __make_tp, tf_to_df, tf_to_sf): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@61835 138bc75d-0d04-0410-961f-82ee72b054a4
* Merge basic-improvements-branch to trunkzack2002-12-161-0/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@60174 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/fp-bit.c (EXTENDED_FLOAT_STUBS): Flush out all XF/TFmoderth2002-10-071-32/+36
| | | | | | | entry points; use void return value and argument list. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@57887 138bc75d-0d04-0410-961f-82ee72b054a4
* * builtins.def: Fix comment formatting.kazu2002-09-291-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * c-common.def: Likewise. * cfgcleanup.c: Likewise. * combine.c: Likewise. * gengtype.c: Likewise. * params.def: Likewise. * predict.def: Likewise. * rtl.def: Likewise. * stab.def: Likewise. * stor-layout.c: Likewise. * tree.def: Likewise. * config/darwin.c: Likewise. * config/darwin.h: Likewise. * config/dbxcoff.h: Likewise. * config/elfos.h: Likewise. * config/fp-bit.c: Likewise. * config/freebsd-spec.h: Likewise. * config/interix.h: Likewise. * config/libgloss.h: Likewise. * config/linux-aout.h: Likewise. * config/linux.h: Likewise. * config/lynx-ng.h: Likewise. * config/lynx.h: Likewise. * config/netbsd-aout.h: Likewise. * config/netbsd.h: Likewise. * config/netware.h: Likewise. * config/psos.h: Likewise. * config/ptx4.h: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@57624 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/fp-bit.c: Follow spelling conventions.kazu2002-09-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | * config/d30v/d30v.c: Likewise. * config/d30v/d30v.h: Likewise. * config/fr30/fr30.c: Likewise. * config/fr30/fr30.h: Likewise. * config/fr30/fr30.md: Likewise. * config/frv/frv.c: Likewise. * config/frv/frv.h: Likewise. * config/h8300/h8300.c: Likewise. * config/h8300/lib1funcs.asm: Likewise. * config/i370/i370.c: Likewise. * config/i386/i386.h: Likewise. * config/i386/i386.md: Likewise. * config/i386/pentium.md: Likewise. * config/i386/winnt.c: Likewise. * config/i960/i960.c: Likewise. * config/ia64/ia64.h: Likewise. * config/ip2k/ip2k.c: Likewise. * config/ip2k/ip2k.h: Likewise. * config/ip2k/ip2k.md: Likewise. * config/ip2k/libgcc.S: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@57303 138bc75d-0d04-0410-961f-82ee72b054a4
* * haifa-sched.c: Follow spelling conventions.kazu2002-09-141-3/+3
| | | | | | | | | | | | | | | | | | | | | * regclass.c: Likewise. * regrename.c: Likewise. * config/fp-bit.c: Likewise. * config/frv/frv.h: Likewise. * config/m88k/m88k.c: Likewise. * config/mcore/mcore.c: Likewise. * config/rs6000/darwin.h: Likewise. * config/rs6000/gnu.h: Likewise. * config/rs6000/linux.h: Likewise. * config/rs6000/linux64.h: Likewise. * config/rs6000/rs6000.c: Likewise. * config/rs6000/rs6000.h: Likewise. * config/sh/sh.c: Likewise. * config/sparc/sparc.c: Likewise. * config/sparc/ultra1_2.md: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@57143 138bc75d-0d04-0410-961f-82ee72b054a4
* New target macro DECLARE_LIBRARY_RENAMESbernds2002-07-301-0/+4
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55889 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/fp-bit.c (_fpmul_parts, _fpdiv_parts): Mark withghazi2002-06-191-2/+2
| | | | | | | attribute __always_inline__. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@54768 138bc75d-0d04-0410-961f-82ee72b054a4
* * defaults.h (LARGEST_EXPONENT_IS_NORMAL, ROUND_TOWARDS_ZERO): New.rsandifo2002-03-111-21/+48
| | | | | | | | | | | | | | | | | | | | | | | | | (MODE_HAS_NANS, MODE_HAS_INFINITIES): Evaluate to false if LARGEST_EXPONENT_IS_NORMAL for the given mode. (MODE_HAS_SIGN_DEPENDENT_ROUNDING): False when ROUND_TOWARDS_ZERO. * real.c (eadd1): Make rounding dependent on !ROUND_TOWARDS_ZERO. (ediv, emul, eldexp, esqrt): Likewise. (etoe113, etoe64, etoe53, etoe24, etodec, etoibm, etoc4x): Likewise. (e24toe): Only check NaNs & infinities if !LARGEST_EXPONENT_IS_NORMAL. (saturate): New function. (toe53, toe24): Saturate on overflow if LARGEST_EXPONENT_IS_NORMAL. (make_nan): Use a saturation value instead of a NaN if LARGEST_EXPONENT_IS_NORMAL. Warn when this happens. * fp-bit.c (pack_d): Saturate on NaN, infinite or overflowing inputs if LARGEST_EXPONENT_IS_NORMAL. Represent subnormals as zero if NO_DENORMALS. Only round to nearest if !ROUND_TOWARDS_ZERO. (unpack_d): No NaNs or infinities if LARGEST_EXPONENT_IS_NORMAL. (_fpmul_parts, _fpdiv_parts): Only round to nearest if !ROUND_TOWARDS_ZERO. * doc/tm.texi (LARGEST_EXPONENT_IS_NORMAL): Document. (ROUND_TOWARDS_ZERO): Document. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@50569 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/fp-bit.c (_unord_f2): Compile it in even ifaoliva2002-03-081-2/+2
| | | | | | | US_SOFTWARE_GOFAST is enabled. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@50423 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/fp-bit.c (pack_d): Cast to ``fractype'' for long longrth2001-12-121-1/+1
| | | | | | | shifts. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@47923 138bc75d-0d04-0410-961f-82ee72b054a4
* i * libgcc1-test.c, libgcc1.c, config/i386/perform.h: Delete file.zack2001-05-171-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * testsuite/gcc.dg/complete-port.c: New (revised version of libgcc1-test.c) * po/POTFILES.in: Remove libgcc1-test.c and libgcc1.c. * Makefile.in: Delete variables: OLDCC, CCLIBFLAGS, OLDAR, OLDAR_FLAGS, LIBGCC1, LIBGCC1_TEST, CROSS_LIBGCC1, LIB1FUNCS, and LIB1FUNCS_EXTRA. Delete rules: libgcc1-test, libgcc1-test.o. Clarify commentary now that libgcc1 no longer exists. * cross-make: Don't set LIBGCC1. * mklibgcc.in: Delete all code for building from libgcc1.c. Always honor LIB1ASMFUNCS if set. * crtstuff.c, floatlib.c, longlong.h, config/fp-bit.c, config/arc/lib1funcs.asm, config/arm/lib1funcs.asm, config/d30v/libgcc1.asm, config/fr30/lib1funcs.asm, config/h8300/lib1funcs.asm, config/i386/cygwin.asm, config/i386/uwin.asm, config/m68hc11/larith.asm, config/m68k/lb1sf68.asm, config/mcore/lib1.asm, config/mn10200/lib1funcs.asm, config/sh/lib1funcs.asm, config/sparc/lb1spc.asm, config/sparc/lb1spl.asm, config/v850/lib1funcs.asm, config/c4x/libgcc.S: Delete or update references to libgcc1 in commentary. * config/t-libc-ok, config/t-linux, config/t-linux-aout, config/t-netbsd, config/a29k/t-a29kbare, config/a29k/t-vx29k, config/alpha/t-interix, config/alpha/t-osf, config/alpha/t-vms, config/arc/t-arc, config/arm/t-arm-aout, config/arm/t-arm-coff, config/arm/t-arm-elf, config/arm/t-linux, config/arm/t-pe, config/arm/t-semi, config/arm/t-strongarm-coff, config/arm/t-strongarm-elf, config/arm/t-strongarm-pe, config/arm/t-xscale-coff, config/arm/t-xscale-elf, config/avr/t-avr, config/c4x/t-c4x, config/d30v/t-d30v, config/fr30/t-fr30, config/h8300/t-h8300, config/i386/t-beos, config/i386/t-cygwin, config/i386/t-i386elf, config/i386/t-interix, config/i386/t-netware, config/i386/t-next, config/i386/t-rtems-i386, config/i386/t-sol2, config/i960/t-960bare, config/i960/t-vxworks960, config/ia64/t-ia64, config/m32r/t-m32r, config/m68hc11/t-m68hc11-gas, config/m68k/t-lynx, config/m68k/t-m68kbare, config/m68k/t-m68kelf, config/m68k/t-mot3300-gald, config/m68k/t-mot3300-gas, config/m68k/t-next, config/m68k/t-vxworks68, config/m88k/t-bug, config/m88k/t-dgux, config/m88k/t-dgux-gas, config/m88k/t-dguxbcs, config/m88k/t-luna, config/m88k/t-luna-gas, config/m88k/t-m88k, config/m88k/t-m88k-gas, config/m88k/t-sysv4, config/mcore/t-mcore, config/mcore/t-mcore-pe, config/mips/t-bsd, config/mips/t-bsd-gas, config/mips/t-cross64, config/mips/t-ecoff, config/mips/t-elf, config/mips/t-iris6, config/mips/t-r3900, config/mips/t-svr3, config/mips/t-svr3-gas, config/mips/t-svr4, config/mips/t-svr4-gas, config/mips/t-ultrix, config/mn10200/t-mn10200, config/mn10300/t-mn10300, config/pa/t-linux, config/pa/t-linux64, config/pa/t-pa, config/pa/t-pa64, config/pa/t-pro, config/pdp11/t-pdp11, config/pj/t-pj, config/rs6000/t-aix43, config/rs6000/t-beos, config/rs6000/t-darwin, config/rs6000/t-newas, config/rs6000/t-ppccomm, config/rs6000/t-rs6000, config/sh/t-linux, config/sh/t-sh, config/sparc/t-chorus-elf, config/sparc/t-elf, config/sparc/t-sol2, config/sparc/t-sp86x, config/sparc/t-sparcbare, config/sparc/t-sparclite, config/sparc/t-splet, config/sparc/t-sunos41, config/sparc/t-vxsparc, config/sparc/t-vxsparc64, config/v850/t-v850: Don't set any of LIBGCC1, CROSS_LIBGCC1, or LIBGCC1_TEST. * config/alpha/alpha.h, config/i386/i386.h, config/i860/i860.h: Don't set FLOAT_VALUE_TYPE, FLOAT_ARG_TYPE, INTIFY, or FLOATIFY. * config/d30v/d30v.h: Don't mention LIBGCC_NEEDS_DOUBLE, FLOAT_VALUE_TYPE, FLOAT_ARG_TYPE, FLOATIFY, INTIFY, nongcc_SI_type, nongcc_word_type, or perform_* * config/i860/fx2800: Don't define perform_umodsi3 or perform_modsi3. * config/i386/386bsd.h, config/i386/beos-elf.h, config/i386/linux-aout.h, config/i386/linux-oldld.h, config/i386/linux.h, config/i386/mach.h, config/i386/netbsd.h, config/i386/openbsd.h, config/i386/osfrose.h, config/i386/rtemself.h: Don't include i386/perform.h. * config/a29k/t-a29k, config/arm/t-semiaof, config/i370/t-i370, config/i370/t-linux, config/i370/t-mvs, config/i370/t-oe, config/i386/t-djgpp, config/i386/t-i386bare, config/i386/t-vsta, config/ia64/t-hpux, config/mips/t-mips, config/mips/t-mips-gas, config/mips/t-osfrose, config/sparc/t-sp64, config/sparc/t-sunos40, config/vax/t-openbsd, config/vax/t-vax: Delete. * config.gcc: Remove references to deleted files. (arm-semi-aof): Use arm/t-semi for tmake_file. * gcc.texi, install.texi, invoke.texi, tm.texi: Delete or rewrite text which is no longer relevant now that libgcc1 no longer exists. * config/t-openbsd, config/alpha/t-interix, config/i386/t-interix: No need to set INSTALL_ASSERT_H. (Missed in previous sweep.) git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42188 138bc75d-0d04-0410-961f-82ee72b054a4
* * configure.in: Kill tm.h. Include the files in the $tm_filezack2001-03-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | list in all three of config.h, hconfig.h, tconfig.h, after the relevant set of xm_files. Put TARGET_CPU_DEFAULT in all three, include insn-codes.h in all three (#ifndef GENERATOR_FILE). * configure: Regenerate. * Makefile.in (clean): Don't delete tm.h. * system.h: If SUCCESS_EXIT_CODE and FATAL_EXIT_CODE are not defined, set them from EXIT_SUCCESS and EXIT_FAILURE. If those are not defined, set SEC and FEC to 0 and 1. * gcc.texi: Update to match. * crtstuff.c: Include tconfig.h, not auto-host.h and tm.h. * config/fp-bit.c, config/m68k/aux-crt2.asm, config/m68k/aux-crtn.asm, config/m68k/aux-mcount.c: Include tconfig.h, not tm.h. * config/xm-lynx.h, config/xm-std32.h, config/a29k/xm-a29k.h, config/a29k/xm-unix.h, config/alpha/xm-alpha.h, config/arc/xm-arc.h, config/avr/xm-avr.h, config/c4x/xm-c4x.h, config/clipper/xm-clix.h, config/convex/xm-convex.h, config/d30v/xm-d30v.h, config/dsp16xx/xm-dsp16xx.h, config/elxsi/xm-elxsi.h, config/fr30/xm-fr30.h, config/h8300/xm-h8300.h, config/i370/xm-linux.h, config/i386/xm-i386.h, config/i860/xm-i860.h, config/i960/xm-i960.h, config/ia64/xm-ia64.h, config/m32r/xm-m32r.h, config/m68hc11/xm-m68hc11.h, config/m88k/xm-m88k.h, config/mcore/xm-mcore.h, config/mips/xm-mips.h, config/mn10200/xm-mn10200.h, config/mn10300/xm-mn10300.h, config/ns32k/xm-ns32k.h, config/pa/xm-linux.h, config/pa/xm-pa.h, config/pa/xm-pa64hpux.h, config/pa/xm-pahpux.h, config/pa/xm-papro.h, config/pdp11/xm-pdp11.h, config/pj/xm-pj.h, config/romp/xm-romp.h, config/rs6000/xm-beos.h, config/rs6000/xm-rs6000.h, config/rs6000/xm-sysv4.h, config/sh/xm-sh.h, config/sparc/xm-sparc.h, config/sparc/xm-sysv4.h, config/v850/xm-v850.h, config/vax/xm-vax.h, config/we32k/xm-we32k.h: Don't include tm.h. Don't define SUCCESS_EXIT_CODE or FATAL_EXIT_CODE. * config/i370/xm-i370.h, config/i370/xm-mvs.h, config/i370/xm-oe.h: Don't include tm.h. Don't define SUCCESS_EXIT_CODE. * config/vax/xm-vms.h: Don't include tm.h. * config/xm-lynx.h, config/avr/xm-avr.h, config/fr30/xm-fr30.h, config/pdp11/xm-pdp11.h, Delete; made empty by above changes. * config/i386/xm-lynx.h, config/m68k/xm-lynx.h, config/rs6000/xm-lynx.h, config/sparc/xm-lynx.h: Don't include config/xm-lynx.h or tm.h. * config/xm-gnu.h: Don't include fcntl.h. * config/sparc/xm-lynx.h: Don't include sys/types.h and sys/wait.h. * config/clipper/xm-clix.h, config/vax/xm-vax.h: Don't define isinf. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@40199 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/fp-bit.h (MAX_USI_INT, MAX_SI_INT): Don't assumeaoliva2001-02-021-19/+19
| | | | | | | | | | | unsigned is wide enough. (BITS_PER_SI): New. * config/fp-bit.c (_fpmul_parts): Don't assume 32-bits SI. (si_to_float): Likewise. (float_to_si, float_to_usi): Use BITS_PER_SI. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39407 138bc75d-0d04-0410-961f-82ee72b054a4
* Include tm.h, not hconfig.haoliva2001-01-311-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39375 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/fp-bit.c: Include hconfig.haoliva2001-01-311-4/+5
| | | | | | | | (float_to_si): Don't assume SImode is 32-bits wide. (float_to_usi): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39373 138bc75d-0d04-0410-961f-82ee72b054a4
* * fp-bit.c (_fpmul_parts): Use USItype variables as inputsamylaar2000-12-081-8/+8
| | | | | | | for multiplies. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38130 138bc75d-0d04-0410-961f-82ee72b054a4
* Unsigned -> float conversion for fp-bit.cciceron2000-09-081-0/+32
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36274 138bc75d-0d04-0410-961f-82ee72b054a4
* * fp-bit.h: New file.ghazi2000-07-031-316/+29
| | | | | | | | | * fp-bit.c: Move common code, prototypes, etc into fp-bit.h. Comment #endif statements. (__thenan_sf, __thenan_df): Add missing braces around initializer. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34844 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/fp-bit.c (pack_d): Correct the case when a denormalgeoffk2000-03-221-3/+2
| | | | | | | is rounded up and stops being denormal. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32693 138bc75d-0d04-0410-961f-82ee72b054a4
* Introduce NO_DENORMALS in fp-bit.ccrux2000-03-161-2/+7
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32590 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix copyrightslaw2000-02-261-1/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32186 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/elfos.h (ASM_OUTPUT_LABELREF): Don't define. The defaultgeoffk2000-02-261-2/+19
| | | | | | | | | | | | | | is right for most ELF targets. * config/ns32k/ns32k.h (ASM_OUTPUT_LABELREF): Don't define. Let the default file use %U properly. * config/sh/elf.h (ASM_OUTPUT_LABELREF): Don't define. Use the default. * config/fp-bit.c (pack_d): Properly handle rounding of denormal numbers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32183 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/fp-bit.c (_unord_f2): Fix typo.cpopetz2000-01-251-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31613 138bc75d-0d04-0410-961f-82ee72b054a4
* * rtl.def: Add unordered fp comparisions.rth2000-01-241-1/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * tree.def: Likewise. * tree.h: Add ISO C 9x unordered fp comparision builtins. * builtins.c (expand_tree_builtin): New function. * c-typeck.c (build_function_call): Use it. (build_binary_op): Support unordered compares. * c-common.c (c_common_nodes_and_builtins): Add unordered compares. * combine.c (known_cond): Handle reverse_condition returning UNKNOWN. (reversible_comparison_p): Allow UNORDERED/ORDERED to be reversed. * cse.c (fold_rtx): Check FLOAT_MODE_P before reversing. (record_jump_equiv): Handle reverse_condition returning UNKNOWN. * jump.c (reverse_condition): Don't abort for UNLE etc, but return UNKNOWN. (swap_condition): Handle unordered compares. (thread_jumps): Check can_reverse before reversing. * loop.c (get_condition): Likewise. Allow UNORERED/ORDERED to be reversed for FP. * optabs.c (can_compare_p): New argument CODE. Verify branch or setcc is present before acking for cmp_optab. Update all callers. (prepare_float_lib_cmp, init_optabs): Handle UNORDERED. * expmed.c (do_cmp_and_jump): Update for can_compare_p. * expr.c (expand_expr): Likewise. Support unordered compares. (do_jump, do_store_flag): Likewise. * expr.h (enum libfunc_index): Add unordered compares. * Makefile.in (FPBIT_FUNCS): Add _unord_sf. (DPBIT_FUNCS): Add _unord_df. * config/fp-bit.c (_unord_f2): New. * fp-test.c (main): Try unordered compare builtins. * alpha-protos.h (alpha_fp_comparison_operator): Declare. * alpha.c (alpha_comparison_operator): Check mode properly. (alpha_swapped_comparison_operator): Likewise. (signed_comparison_operator): Likewise. (alpha_fp_comparison_operator): New. (alpha_emit_conditional_branch): Handle unordered compares. * alpha.h (PREDICATE_CODES): Update. * alpha.md (fp compares): Use alpha_fp_comparison_operator. (bunordered, bordered): New. * cp/call.c (build_over_call): Use expand_tree_builtin. * cp/typeck.c (build_function_call_real): Likewise. (build_binary_op_nodefault): Handle unordered compares. * gcc.c-torture/execute/ieee/fp-cmp-4.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31591 138bc75d-0d04-0410-961f-82ee72b054a4
* remove compile time warnings about uninitilaised filedsnickc1999-12-021-2/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30757 138bc75d-0d04-0410-961f-82ee72b054a4
* Move definition of 'thenan' to its own object file in order to save space.nickc1999-09-131-3/+21
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29371 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix possible aliasing problemscrux1999-08-291-27/+85
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28963 138bc75d-0d04-0410-961f-82ee72b054a4
* Warning fixes:ghazi1998-10-091-7/+5
| | | | | | | | | | | | * fp-bit.c (SFtype): Don't implicitly use int in declaration. (DFtype): Likewise. (_fpdiv_parts): Remove unused parameter `tmp', all callers changed. (divide): Remove unused variable `tmp'. (si_to_float): Cast numeric constant to (SItype) before comparing it against one. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22967 138bc75d-0d04-0410-961f-82ee72b054a4
* * fp-bit.c (pack_d): Do not clear SIGN when fraction is 0.law1998-09-191-2/+1
| | | | | | | (_fpadd_parts): Get sign right for 0. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22485 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/fp-bit.c (__gexf2, __fixxfsi, __floatsixf): Add functionvmakarov1998-07-081-0/+3
| | | | | | | stubs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@21009 138bc75d-0d04-0410-961f-82ee72b054a4
* Warning fixes:ghazi1998-06-251-13/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Makefile.in (xcoffout.o): Depend on toplev.h, output.h and dbxout.h. * config/fp-bit.c (_fpmul_parts): Move variables `x', `ylow', `yhigh' and `bit' into the scope in which they are used. (_fpdiv_parts): Remove unused variables `low', `high', `r0', `r1', `y0', `y1', `q', `remainder', `carry', `d0' and `d1'. * rs6000.c: Move include of output.h below tree.h. Include toplev.h. (any_operand): Mark unused parameters `op' and `mode' with ATTRIBUTE_UNUSED. (count_register_operand): Likewise for parameter `mode'. (fpmem_operand): Likewise. (short_cint_operand): Likewise. (u_short_cint_operand): Likewise. (non_short_cint_operand): Likewise. (got_operand): Likewise. (got_no_const_operand): Likewise. (non_add_cint_operand): Likewise. (non_logical_cint_operand): Likewise. (mask_operand): Likewise. (current_file_function_operand): Likewise. (small_data_operand): Likewise for parameters `op' and `mode' but only when !TARGET_ELF. (init_cumulative_args): Mark parameters `libname' with ATTRIBUTE_UNUSED. (function_arg_pass_by_reference): Likewise for parameters `cum', `mode' and `named'. (expand_builtin_saveregs): Likewise for parameter `args'. (load_multiple_operation): Likewise for parameter `mode'. (store_multiple_operation): Likewise. (branch_comparison_operator): Likewise. (secondary_reload_class): Likewise. (print_operand): Add parentheses around & operation. (output_prolog): Mark parameter `size' with ATTRIBUTE_UNUSED. (output_epilog): Likewise. Cast argument to fprintf to int. (rs6000_adjust_cost): Mark parameter `dep_insn' with ATTRIBUTE_UNUSED. (rs6000_valid_decl_attribute_p): Likewise for parameters `decl', `attributes', `identifier' and `args'. (rs6000_valid_type_attribute_p): Likewise for parameter `attributes'. (rs6000_comp_type_attributes): Likewise for parameters `type1' and `type2'. (rs6000_set_default_type_attributes): Likewise for parameter `type'. * rs6000.h (RTX_COSTS): Add parentheses around & operation. (toc_section, private_data_section, trap_comparison_operator): Add prototypes. * dbxout.h (dbxout_parms, dbxout_reg_parms, dbxout_syms): Add prototypes. * xcoffout.c: Include toplev.h, outout.h and dbxout.h. * xcoffout.h (stab_to_sclass, xcoffout_begin_function, xcoffout_begin_block, xcoffout_end_epilogue, xcoffout_end_function, xcoffout_end_block, xcoff_output_standard_types, xcoffout_declare_function, xcoffout_source_line): Add prototypes. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@20717 138bc75d-0d04-0410-961f-82ee72b054a4
* Allow INLINE to be defined for debuggingmeissner1998-06-191-0/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@20594 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix IEEE negative zero problemsmeissner1998-06-011-2/+8
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@20169 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/fp-bit.c (L_df_to_sf): Fix typo in last change.law1997-12-271-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@17246 138bc75d-0d04-0410-961f-82ee72b054a4
* elaw1997-12-211-18/+119
| | | | | | | | | | | | | | | | | | | * Makefile.in (FPBIT_FUNCS, DPBIT_FUNCS): Define. (libgcc2.a): Depend on $(DPBIT) and $(FPBIT). Add rules to generate more fine grained floating point emulation libraries. * config/fp-bit.c: Add protecting #ifdef to all functions so that they can be compiled separately. If !FINE_GRAINED_LIBRARIES, then compile all suitable functions. (pack_d, unpack_d, fpcmp_parts): Add declarations, define with two underscores to avoid namespace pollution. * t-mn10200 (LIB2FUNCS_EXTRA): Remove fp-bit.c (FPBIT): Define. * t-mn10300 (LIB2FUNCS_EXTRA): Remove fp-bit.c and dp-bit.c (FPBIT): Define. (DPBIT): Define. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@17164 138bc75d-0d04-0410-961f-82ee72b054a4
* (unpack_d): Check fraction not sign to distinquish QNaN.wilson1997-07-031-3/+3
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@14386 138bc75d-0d04-0410-961f-82ee72b054a4
* (float_to_usi): Move code for negative numbers before codewilson1997-07-011-3/+3
| | | | | | | for infinity. Modify infinty code to only handle positive infinities. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@14368 138bc75d-0d04-0410-961f-82ee72b054a4
* (float_to_si): Correct return value when Inf.kenner1997-06-271-4/+3
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@14328 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix minor bugs in float_to_usi and dp_to_sfian1996-10-231-3/+11
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@13000 138bc75d-0d04-0410-961f-82ee72b054a4
* Correct sign handling when dividing zero or infinity by somethingian1996-05-171-2/+4
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@12009 138bc75d-0d04-0410-961f-82ee72b054a4
* Add support for EXTENDED_FLOAT_STUBSmeissner1996-04-041-0/+44
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@11659 138bc75d-0d04-0410-961f-82ee72b054a4
* (FLO_union_type): Add words field if double precision to get at the separatekenner1995-09-151-5/+23
| | | | | | | | | | words. (FLO_union_type, pack_d, unpack_d): Use FLOAT_BIT_ORDER_MISMATCH to determine when the bitfields need to be reversed, and FLOAT_WORD_ORDER_MISMATCH when the words need to be reversed. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@10357 138bc75d-0d04-0410-961f-82ee72b054a4
* (FLO_union_type): Remove bitfields to set sign, exponent, andkenner1995-09-111-3/+30
| | | | | | | | | | | | | | | mantissa, and add value_raw field, which is an integer of the appropriate type. If _DEBUG_BITFLOAT is defined, provide little and big endian bitfields. If the macro FLOAT_BIT_ORDER_MISMATCH is defined, use explicit bitfields. (pack_d, unpack_d): Switch to use value_raw and explicit shifts and masks so that we don't have to worry about whether the target is big or little endian unless FLOAT_BIT_ORDER_MISMATCH is defined. If single precision floating point, rename to pack_f and unpack_f, so there is no confusion in the debugger. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@10313 138bc75d-0d04-0410-961f-82ee72b054a4
* (FLO_union_type): Remove bitfields to set sign, exponent, andkenner1995-09-111-32/+49
| | | | | | | | | | | | | mantissa, and add value_raw field, which is an integer of the appropriate type. If _DEBUG_BITFLOAT is defined, provide little and big endian bitfields. (pack_d, unpack_d): Switch to use value_raw and explicit shifts and masks so that we don't have to worry about whether the target is big or little endian. If single precision floating point, rename to pack_f and unpack_f, so there is no confusion in the debugger. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@10312 138bc75d-0d04-0410-961f-82ee72b054a4
* Update FSF address.kenner1995-06-151-1/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@9972 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix typos in comments.kenner1995-05-161-2/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@9711 138bc75d-0d04-0410-961f-82ee72b054a4
OpenPOWER on IntegriCloud