ghci script search path wibble
native: the curated pass set spec will now auto-vectorise for us
update maintainer email address
better code generation support for intrinsic math functions

* This implements a mapping from the standard C math library function name, to some intrinsic backend-specific implementation of that function. If no such mapping is present, the C function is called instead.
* For the native code generator, this gives the LLVM optimiser more information. For example, the 'sqrt' C function call will not be vectorized, but the corresponding 'llvm.sqrt.f64' intrinsic will be.
* For external backends such as PTX, calls to the corresponding intrinsic implemented in the 'libdevice' library can be inserted directly, rather than via an indirection.
codegen optimisation for log2 and log10
add missing cabal dependency
first version of map skeleton using llvm-general-quote
first working prototype of map Skeleton
first version of fold skeleton, untested
first working skeleton for fold
inner loop compiles
codegen: generalise arguments of indexToInt, intToIndex to Rvalue
simplify the single threaded resource

This just returns anything on its local work queue. This fits into the 'runParIO' setup which initialises the thread queues with a single equally sized chunk each.
native: add an unbalancedParIO Executable method

Each thread executes an equally sized chunk, and does not attempt use splitting/stealing.
stuff
wibbles
add method do duplicate an array
native: add forward permutation

* Write combining is implemented by means of lock on each element of the output array. Threads spin attempting to acquire the lock. Once they do, they read the array value, combine the old and new values, write the result and release the lock.

* The spin lock method will not be good for highly contended locks. However, the code does loop reading without trying to write anything until the value changes. Because of MESI caching protocols, this (should) cause the cache line for the lock to become Shared; then there will be _no_ bus traffic while the CPU waits for the lock. This should be effective for all CPU architectures that have a cache per CPU.

* Since the critical section covers the entire combination function, rather than each primitive element individually, it does correctly handle tuple updates AccelerateHS/accelerate#137.
simplify slightly the spin lock operation

* This elides a 'lock' instruction and uses a 'xchg' rather than 'cmpxchg' instruction to take the lock.
fold1 and generate