Changes between Version 26 and Version 27 of ReplacingGMPNotes


Ignore:
Timestamp:
Sep 20, 2006 5:59:03 PM (9 years ago)
Author:
guest
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ReplacingGMPNotes

    v26 v27  
    6767Note: references are relative to the main directory of the source distribution; links below are to the darcs repository at [http://darcs.haskell.org/ghc http://darcs.haskell.org/ghc].
    6868
    69  * [http://darcs.haskell.org/ghc/configure.ac configure.ac] (Modify: remove GMP related material; replace with MP library requirements)
     69 * [http://darcs.haskell.org/ghc/configure.ac configure.ac] (''Modify'': remove GMP related material; replace with MP library requirements)
    7070
    71  * [http://darcs.haskell.org/ghc/compiler/prelude/primops.txt.pp compiler/prelude/primops.txt.pp]   (Modify: Integer material)
    72  * [http://darcs.haskell.org/ghc/compiler/prelude/PrelNames.lhs compiler/prelude/PrelNames.lhs] (Reference: integerTyConName and similar)
    73  * [http://darcs.haskell.org/ghc/compiler/prelude/TysPrim.lhs compiler/prelude/TysPrim.lhs]   (Reference)
     71 * [http://darcs.haskell.org/ghc/compiler/prelude/primops.txt.pp compiler/prelude/primops.txt.pp]   (''Modify'': Integer material)
     72 * [http://darcs.haskell.org/ghc/compiler/prelude/PrelNames.lhs compiler/prelude/PrelNames.lhs] (''Reference'': integerTyConName and similar)
     73 * [http://darcs.haskell.org/ghc/compiler/prelude/TysPrim.lhs compiler/prelude/TysPrim.lhs]   (''Reference'')
    7474
    75  * [http://darcs.haskell.org/ghc/includes/Cmm.h includes/Cmm.h] (Modify: cpp test for {{{#if SIZEOF_mp_limb_t != SIZEOF_VOID_P }}})
    76  * [http://darcs.haskell.org/ghc/includes/MachRegs.h includes/MachRegs.h] (Reference: general; unrelated to GMP: may be starting point for vectorized Cmm (currently only -fvia-c allows auto-vectorization))
    77  * [http://darcs.haskell.org/ghc/includes/Regs.h includes/Regs.h] (Modify: references to MP_INT; Reference: Stg registers, etc.)
    78  * [http://darcs.haskell.org/ghc/includes/Rts.h includes/Rts.h] (Modify: reference to {{{#include "gmp.h"}}}, {{{extern}}} declarations to {{{__decodeDouble}}} and {{{__decodeFloat}}}; References to various Stg types and macros)
    79  * [http://darcs.haskell.org/ghc/includes/StgMiscClosures.h includes/StgMiscClosures.h] (Modify: references to {{{RTS_FUN(...Integer)}}} !PrimOps; Reference: Weak Pointers, other Stg closures)
     75 * [http://darcs.haskell.org/ghc/includes/Cmm.h includes/Cmm.h] (''Modify'': cpp test for {{{#if SIZEOF_mp_limb_t != SIZEOF_VOID_P }}})
     76 * [http://darcs.haskell.org/ghc/includes/MachRegs.h includes/MachRegs.h] (''Reference'': general; unrelated to GMP: may be starting point for vectorized Cmm (currently only -fvia-c allows auto-vectorization))
     77 * [http://darcs.haskell.org/ghc/includes/Regs.h includes/Regs.h] (''Modify'': references to MP_INT; Reference: Stg registers, etc.)
     78 * [http://darcs.haskell.org/ghc/includes/Rts.h includes/Rts.h] (''Modify'': reference to {{{#include "gmp.h"}}}, {{{extern}}} declarations to {{{__decodeDouble}}} and {{{__decodeFloat}}}; References to various Stg types and macros)
     79 * [http://darcs.haskell.org/ghc/includes/StgMiscClosures.h includes/StgMiscClosures.h] (''Modify'': references to {{{RTS_FUN(...Integer)}}} !PrimOps; ''Reference'': Weak Pointers, other Stg closures)
    8080
    81  * [http://darcs.haskell.org/ghc/rts/Linker.c rts/Linker.c] (Modify: {{{SymX(__gmpn...)}}} and related GMP functions)
    82  * [http://darcs.haskell.org/ghc/rts/Makefile rts/Makefile] (Modify: building GMP library)
    83  * [http://darcs.haskell.org/ghc/rts/PrimOps.cmm PrimOps.cmm] (Modify: remove GMP references; NOTE: optimisation of {{{/* ToDo: this is shockingly inefficient */}}}, see discussion below)
    84  * [http://darcs.haskell.org/ghc/rts/StgPrimFloat.c StgPrimFloat.c] (Modify: {{{__encodeDouble}}}, {{{__encodeFloat}}} and {{{decode}}} versions defined here refer to GMP; might optimise with bitwise conversion instead of union; conversion depends on whether replacement MP library uses floating point, etc.)
    85  * [http://darcs.haskell.org/ghc/rts/Storage.c rts/Storage.c] (Modify: {{{stgAllocForGMP}}}, {{{stgReallocForGMP}}} and {{{stgDeallocForGMP}}}; may use as reference for implementation if replacement MP library uses GHC-garbage collected memory)
    86  * [http://darcs.haskell.org/ghc/rts/gmp/ rts/gmp (directory)] (Modify: recommended to remove entirely, i.e., do not add conditional compilation for users who want to keep on using GMP)
     81 * [http://darcs.haskell.org/ghc/rts/Linker.c rts/Linker.c] (''Modify'': {{{SymX(__gmpn...)}}} and related GMP functions)
     82 * [http://darcs.haskell.org/ghc/rts/Makefile rts/Makefile] (''Modify'': building GMP library)
     83 * [http://darcs.haskell.org/ghc/rts/PrimOps.cmm PrimOps.cmm] (''Modify'': remove GMP references; NOTE: optimisation of {{{/* ToDo: this is shockingly inefficient */}}}, see discussion below)
     84 * [http://darcs.haskell.org/ghc/rts/StgPrimFloat.c StgPrimFloat.c] (''Modify'': {{{__encodeDouble}}}, {{{__encodeFloat}}} and {{{decode}}} versions defined here refer to GMP; might optimise with bitwise conversion instead of union; conversion depends on whether replacement MP library uses floating point, etc.)
     85 * [http://darcs.haskell.org/ghc/rts/Storage.c rts/Storage.c] (''Modify'': {{{stgAllocForGMP}}}, {{{stgReallocForGMP}}} and {{{stgDeallocForGMP}}}; may use as reference for implementation if replacement MP library uses GHC-garbage collected memory)
     86 * [http://darcs.haskell.org/ghc/rts/gmp/ rts/gmp (directory)] (''Modify'': recommended to remove entirely, i.e., do not add conditional compilation for users who want to keep on using GMP)
    8787
    8888==== Optimisation Opportunities ====
    8989
    90 The current GMP integeration...
     90
    9191
    9292=== Benchmarks for Multi-Precision Libraries ===