|
|
1.1 ! root 1: /* US Software GOFAST floating point library support. ! 2: Copyright (C) 1994 Free Software Foundation, Inc. ! 3: ! 4: This file is part of GNU CC. ! 5: ! 6: GNU CC is free software; you can redistribute it and/or modify ! 7: it under the terms of the GNU General Public License as published by ! 8: the Free Software Foundation; either version 2, or (at your option) ! 9: any later version. ! 10: ! 11: GNU CC is distributed in the hope that it will be useful, ! 12: but WITHOUT ANY WARRANTY; without even the implied warranty of ! 13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! 14: GNU General Public License for more details. ! 15: ! 16: You should have received a copy of the GNU General Public License ! 17: along with GNU CC; see the file COPYING. If not, write to ! 18: the Free Software Foundation, 59 Temple Place - Suite 330, ! 19: Boston, MA 02111-1307, USA. */ ! 20: ! 21: /* This is used by fp-bit.c. */ ! 22: #define US_SOFTWARE_GOFAST ! 23: ! 24: /* The US Software GOFAST library requires special optabs support. ! 25: There is no negation libcall, and several others have names different ! 26: from gcc. This file consolidates the support in one place. ! 27: ! 28: The basic plan is to leave gcc proper alone and via some hook fix things ! 29: after the optabs have been set up. Our main entry point is ! 30: INIT_GOFAST_OPTABS. */ ! 31: ! 32: #define INIT_GOFAST_OPTABS \ ! 33: do { \ ! 34: GOFAST_CLEAR_NEG_FLOAT_OPTAB; \ ! 35: GOFAST_RENAME_LIBCALLS; \ ! 36: } while (0) ! 37: ! 38: #define GOFAST_CLEAR_NEG_FLOAT_OPTAB \ ! 39: do { \ ! 40: int mode; \ ! 41: for (mode = SFmode; (int) mode <= (int) TFmode; \ ! 42: mode = (enum machine_mode) ((int) mode + 1)) \ ! 43: neg_optab->handlers[(int) mode].libfunc = NULL_RTX; \ ! 44: } while (0) ! 45: ! 46: #define GOFAST_RENAME_LIBCALLS \ ! 47: add_optab->handlers[(int) SFmode].libfunc = gen_rtx (SYMBOL_REF, Pmode, "fpadd"); \ ! 48: add_optab->handlers[(int) DFmode].libfunc = gen_rtx (SYMBOL_REF, Pmode, "dpadd"); \ ! 49: sub_optab->handlers[(int) SFmode].libfunc = gen_rtx (SYMBOL_REF, Pmode, "fpsub"); \ ! 50: sub_optab->handlers[(int) DFmode].libfunc = gen_rtx (SYMBOL_REF, Pmode, "dpsub"); \ ! 51: smul_optab->handlers[(int) SFmode].libfunc = gen_rtx (SYMBOL_REF, Pmode, "fpmul"); \ ! 52: smul_optab->handlers[(int) DFmode].libfunc = gen_rtx (SYMBOL_REF, Pmode, "dpmul"); \ ! 53: flodiv_optab->handlers[(int) SFmode].libfunc = gen_rtx (SYMBOL_REF, Pmode, "fpdiv"); \ ! 54: flodiv_optab->handlers[(int) DFmode].libfunc = gen_rtx (SYMBOL_REF, Pmode, "dpdiv"); \ ! 55: cmp_optab->handlers[(int) SFmode].libfunc = gen_rtx (SYMBOL_REF, Pmode, "fpcmp"); \ ! 56: cmp_optab->handlers[(int) DFmode].libfunc = gen_rtx (SYMBOL_REF, Pmode, "dpcmp"); \ ! 57: \ ! 58: extendsfdf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "fptodp"); \ ! 59: truncdfsf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "dptofp"); \ ! 60: \ ! 61: eqsf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "fpcmp"); \ ! 62: nesf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "fpcmp"); \ ! 63: gtsf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "fpcmp"); \ ! 64: gesf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "fpcmp"); \ ! 65: ltsf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "fpcmp"); \ ! 66: lesf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "fpcmp"); \ ! 67: \ ! 68: eqdf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "dpcmp"); \ ! 69: nedf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "dpcmp"); \ ! 70: gtdf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "dpcmp"); \ ! 71: gedf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "dpcmp"); \ ! 72: ltdf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "dpcmp"); \ ! 73: ledf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "dpcmp"); \ ! 74: \ ! 75: eqxf2_libfunc = NULL_RTX; \ ! 76: nexf2_libfunc = NULL_RTX; \ ! 77: gtxf2_libfunc = NULL_RTX; \ ! 78: gexf2_libfunc = NULL_RTX; \ ! 79: ltxf2_libfunc = NULL_RTX; \ ! 80: lexf2_libfunc = NULL_RTX; \ ! 81: \ ! 82: eqtf2_libfunc = NULL_RTX; \ ! 83: netf2_libfunc = NULL_RTX; \ ! 84: gttf2_libfunc = NULL_RTX; \ ! 85: getf2_libfunc = NULL_RTX; \ ! 86: lttf2_libfunc = NULL_RTX; \ ! 87: letf2_libfunc = NULL_RTX; \ ! 88: \ ! 89: floatsisf_libfunc = gen_rtx (SYMBOL_REF, Pmode, "sitofp"); \ ! 90: floatsidf_libfunc = gen_rtx (SYMBOL_REF, Pmode, "litodp"); \ ! 91: fixsfsi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "fptosi"); \ ! 92: fixdfsi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "dptoli"); \ ! 93: fixunssfsi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "fptoui"); \ ! 94: fixunsdfsi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "dptoul"); \ ! 95: ! 96: /* End of GOFAST_RENAME_LIBCALLS */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.