Skip to content
Permalink
Branch: ghc-lwc2
Commits on Sep 28, 2013
Commits on Sep 27, 2013
  1. Removes tabs

    kayceesrk committed Sep 27, 2013
  2. Merging master

    kayceesrk committed Sep 27, 2013
  3. Update library refs

    kayceesrk committed Sep 27, 2013
  4. Pulling changes from head

    kayceesrk committed Sep 27, 2013
  5. Make typeRep_RDR use typeRep# instead of typeRep

    thoughtpolice committed Sep 26, 2013
    Authored-by: Edward Kmett <ekmett@gmail.com>
    Authored-by: Austin Seipp <austin@well-typed.com>
    Signed-off-by: Austin Seipp <austin@well-typed.com>
  6. Implement an unlifted Proxy type, Proxy#

    thoughtpolice committed Sep 25, 2013
    A value of type 'Proxy# a' can only be created through the new,
    primitive witness 'proxy# :: Proxy# a' - a Proxy# has no runtime
    representation and is thus free.
    
    This lets us clean up the internals of TypeRep, as well as Adam's future
    work concerning records (by using a zero-width primitive type.)
    
    Authored-by: Edward Kmett <ekmett@gmail.com>
    Authored-by: Austin Seipp <austin@well-typed.com>
    Signed-off-by: Austin Seipp <austin@well-typed.com>
Commits on Sep 26, 2013
  1. Update `primitive` and `vector` packages

    hvr committed Sep 26, 2013
     - `primitive` is updated to upstream's HEAD which is essentially
       `primitive-0.5.1.0`, plus a core-lint-error workaround for #8355 and
       some minor cleanups.
    
     - `vector` is updated to upstreams `vector-0.10.9.1` release
    
    Note: The upstream repo location has changed to GitHub,
          hence the update in the `packages` file
    
    Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
Commits on Sep 24, 2013
  1. Fix user guide documentation about unboxed values

    Tarrasch authored and ggreif committed Sep 24, 2013
    Signed-off-by: Arash Rouhani <rarash@student.chalmers.se>
  2. Typo in comment

    ggreif committed Sep 23, 2013
  3. Add a type-function for subtraction.

    yav committed Sep 24, 2013
    This is used in the definition of `ToNat1` in the `base` library
    (module GHC.TypeLits).
Commits on Sep 23, 2013
  1. Fix build when PROF_SPIN is unset

    Patrick Palka
    Patrick Palka committed Jun 29, 2013
    whitehole_spin is only defined when PROF_SPIN is set.
  2. Fix the definition of cas() on x86 (#8219)

    Patrick Palka
    Patrick Palka committed Sep 21, 2013
    *p is both read and written to by the cmpxchg instruction, and therefore
    should be given the '+' constraint modifier.
    
    (In GCC's extended ASM language, '+' means that the operand is both read
    and written to whereas '=' means that it is only written to.)
    
    Otherwise, the compiler is allowed to rewrite something like
    
    SpinLock lock;
    initSpinLock(&lock);       /* sets lock = 1 */
    ACQUIRE_SPIN_LOCK(&lock);
    
    into
    
    SpinLock lock;
    ACQUIRE_SPIN_LOCK(&lock);
    
    because according to the asm statement, the previous value of 'lock' is
    not important.
  3. Remove fglasgow-exts from ghci --help

    monoidal committed Sep 23, 2013
    It has been deprecated for long and already removed from ghc --help
  4. Fix linker_unload now that we are running constructors in the linker …

    simonmar committed Sep 22, 2013
    …(#8291)
    
    See also #5435.
    
    Now we have to remember the the StablePtrs that get created by the
    module initializer so that we can free them again in unloadObj().
  5. Discard unreachable code in the register allocator (#7574)

    simonmar committed Sep 21, 2013
    The problem with unreachable code is that it might refer to undefined
    registers.  This happens accidentally: a block can be orphaned by an
    optimisation, for example when the result of a comparsion becomes
    known.
    
    The register allocator panics when it finds an undefined register,
    because they shouldn't occur in generated code.  So we need to also
    discard unreachable code to prevent this panic being triggered by
    optimisations.
    
    The register alloator already does a strongly-connected component
    analysis, so it ought to be easy to make it discard unreachable code
    as part of that traversal.  It turns out that we need a different
    variant of the scc algorithm to do that (see Digraph), however the new
    variant also generates slightly better code by putting the blocks
    within a loop in a better order for register allocation.
  6. Typos

    monoidal committed Sep 23, 2013
  7. Catch potential garbage after -msse.

    Geoffrey Mainland
    Geoffrey Mainland committed Sep 23, 2013
  8. Merge branch 'wip/simd'

    Geoffrey Mainland
    Geoffrey Mainland committed Sep 23, 2013
    This merge revises and extends the current SIMD support in GHC. Notable
    features:
    
     * Support for AVX, AVX2, and AVX-512. Support for AVX-512 is untested.
    
     * SIMD primops are currently LLVM-only and documented in
       compiler/prelude/primops.txt.pp.
    
     * By default only 128-bit wide SIMD vectors are passed in registers, and then
       only on the X86_64 architecture. There is a "hidden" flag,
       -fllvm-pass-vectors-in-regs, that causes GHC to generate LLVM code that
       assumes all vectors are passed in registers by LLVM. This can be used with a
       suitably patched version of LLVM, and if we get LLVM 3.4 patched, we can
       consider turning it on by default for LLVM 3.4+. This would mean that we
       couldn't mix LLVM <3.4-compiled object files with LLVM >=3.4-compiled object
       files, but I don't see that as much of a problem.
    
     * utils/genprimcode has been hacked up to allow us to write vector operations
       once and have them instantiated at multiple vector types. I'm not thrilled
       with this solution, but after discussing with Simon PJ, what I've implemented
       seems to be the minimal reasonable solution to the problem of exploding
       primop boilerplate. The changes are documented in
       compiler/prelude/primops.txt.pp.
    
     * Error handling is sub-optimal. My patch checks to make sure that vector
       primops can be compiled efficiently based on the current set of dynamic
       flags. For example, if -mavx is not specified and the user tries to use a
       primop that adds together two 256-bit wide vectors of double-precision
       elements, the user will see an error message like:
    
         ghc-stage2: sorry! (unimplemented feature or known bug)
           (GHC version 7.7.20130916 for x86_64-unknown-linux):
    	 256-bit wide floating point SIMD vector instructions require at least -mavx.
  9. Check that SIMD vector instructions are compatible with current set o…

    Geoffrey Mainland
    Geoffrey Mainland committed Sep 16, 2013
    …f dynamic flags.
    
    SIMD vector instructions currently require the LLVM back-end. The set of
    available instructions also depends on the set of architecture flags specified
    on the command line.
  10. Enable -msse to be specified by itself.

    Geoffrey Mainland
    Geoffrey Mainland committed Sep 16, 2013
    This sets the SSE "version" to 1.0.
  11. By default, only pass 128-bit SIMD vectors in registers on X86-64.

    Geoffrey Mainland
    Geoffrey Mainland committed Sep 16, 2013
    LLVM's GHC calling convention only allows 128-bit SIMD vectors to be passed in
    machine registers on X86-64. This may change in LLVM 3.4; the hidden flag
    -fllvm-pass-vectors-in-regs causes all SIMD vector widths to be passed in
    registers on both X86-64 and on X86-32.
  12. Add 512-bit-wide SIMD primitives.

    Geoffrey Mainland
    Geoffrey Mainland committed Sep 16, 2013
  13. Pass 512-bit-wide vectors in registers.

    Geoffrey Mainland
    Geoffrey Mainland committed Sep 16, 2013
  14. Add support for 512-bit-wide vectors.

    Geoffrey Mainland
    Geoffrey Mainland committed Sep 15, 2013
  15. Add Cmm support for 512-bit-wide values.

    Geoffrey Mainland
    Geoffrey Mainland committed Sep 15, 2013
  16. Add support for -mavx512* flags.

    Geoffrey Mainland
    Geoffrey Mainland committed Sep 15, 2013
  17. Add 256-bit-wide SIMD primitives.

    Geoffrey Mainland
    Geoffrey Mainland committed Aug 22, 2013
  18. Pass 256-bit-wide vectors in registers.

    Geoffrey Mainland
    Geoffrey Mainland committed Feb 14, 2013
Older
You can’t perform that action at this time.