Primitive GHC-specific features
All strictly GHC-specific functionality is contained in GHC.*
module. The GHC.Exts
module is of particular interest. The GHC.Prim
module (re-exported by GHC.Exts
) exports core primitives in GHC.
For a while now, GHC has shipped with primitives for SIMD processor instructions. These are available when compiling via the LLVM backend (-fllvm
).
SIMD stands for Single Instruction, Multiple Data. It basically means performing the same operation on a whole vector of machine numbers at the cost of performing that operation on just one number. SIMD vector types can be found in the GHC.Prim
module. The specialized vectors are named like Int8X16#
, which stands for an Int8
vector of length 16
. DoubleX8#
stands for a vector of eight double precision values:
data Int8X16# data DoubleX8#
These types are primitive and there are no exposed constructors.
To create vectors that can be used with SIMD instructions, we have two basic options. The first one is to use one of the broadcast...