From 798c2ac0ef1ba9ee9711275a964af7a2575c4d52 Mon Sep 17 00:00:00 2001 From: simonm Date: Fri, 5 Jun 1998 14:37:58 +0000 Subject: [PATCH] [project @ 1998-06-05 14:37:58 by simonm] Import GMP 2.0.2 --- ghc/rts/gmp/mpn/x86/pentium/README | 26 ++++++++++++++++++++++++++ ghc/rts/gmp/mpn/z8000/gmp-mparam.h | 27 +++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 ghc/rts/gmp/mpn/x86/pentium/README create mode 100644 ghc/rts/gmp/mpn/z8000/gmp-mparam.h diff --git a/ghc/rts/gmp/mpn/x86/pentium/README b/ghc/rts/gmp/mpn/x86/pentium/README new file mode 100644 index 0000000..d73b082 --- /dev/null +++ b/ghc/rts/gmp/mpn/x86/pentium/README @@ -0,0 +1,26 @@ +This directory contains mpn functions optimized for Intel Pentium +processors. + +RELEVANT OPTIMIZATION ISSUES + +1. Pentium doesn't allocate cache lines on writes, unlike most other modern +processors. Since the functions in the mpn class do array writes, we have to +handle allocating the destination cache lines by reading a word from it in the +loops, to achieve the best performance. + +2. Pairing of memory operations requires that the two issued operations refer +to different cache banks. The simplest way to insure this is to read/write +two words from the same object. If we make operations on different objects, +they might or might not be to the same cache bank. + +STATUS + +1. mpn_lshift and mpn_rshift run at about 6 cycles/limb, but the Pentium +documentation indicates that they should take only 43/8 = 5.375 cycles/limb, +or 5 cycles/limb asymptotically. + +2. mpn_add_n and mpn_sub_n run at asymptotically 2 cycles/limb. Due to loop +overhead and other delays (cache refill?), they run at or near 2.5 cycles/limb. + +3. mpn_mul_1, mpn_addmul_1, mpn_submul_1 all run 1 cycle faster than they +should... diff --git a/ghc/rts/gmp/mpn/z8000/gmp-mparam.h b/ghc/rts/gmp/mpn/z8000/gmp-mparam.h new file mode 100644 index 0000000..e0a303e --- /dev/null +++ b/ghc/rts/gmp/mpn/z8000/gmp-mparam.h @@ -0,0 +1,27 @@ +/* gmp-mparam.h -- Compiler/machine parameter header file. + +Copyright (C) 1991, 1993, 1994 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of the GNU Library General Public License as published by +the Free Software Foundation; either version 2 of the License, or (at your +option) any later version. + +The GNU MP Library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public +License for more details. + +You should have received a copy of the GNU Library General Public License +along with the GNU MP Library; see the file COPYING.LIB. If not, write to +the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, +MA 02111-1307, USA. */ + +#define BITS_PER_MP_LIMB 16 +#define BYTES_PER_MP_LIMB 2 +#define BITS_PER_LONGINT 32 +#define BITS_PER_INT 16 +#define BITS_PER_SHORTINT 16 +#define BITS_PER_CHAR 8 -- 1.7.10.4