Current Status
As of 26 June 2017
Tickets
Status: closed (2 matches)
|
|
|
|
|
||||||
---|---|---|---|---|---|---|---|---|---|---|
|
#8033 (closed) |
|
|
|
add AVX register support to llvm calling convention
|
|
|
|
|
|
|
#10286 (closed) |
|
|
|
native code generator: GHC crash at GHC.Prim SIMD vector
|
|
|
|
|
|
Status: new (5 matches)
|
||||||||||
|
|
|
|
|
||||||
|
#3557 |
|
|
|
CPU Vector instructions in GHC.Prim
|
|
|
|
|
|
|
#7741 |
|
|
|
Add SIMD support to x86/x86_64 NCG
|
|
|
|
|
|
|
#10648 |
|
|
|
Some 64-vector SIMD primitives are absolutely useless
|
|
|
|
|
|
|
#13852 |
|
|
|
Can we have more SIMD primops, corresponding to the untapped AVX etc. instructions?
|
|
|
|
|
|
|
#12412 (closed) |
|
|
|
SIMD things introduce a metric ton of known key things
|
|
|
|
|
Vector typesVectors of the following types are implemented: Fixed and variable sized vectorsFor each type, currently only one vector width is implemented, namely the width that is appropriate for SSE2. This means that vectors are currently all 16 bytes in size. Code generatorsOnly the LLVM code generator (i.e. Cmm layerOur See cmm/CmmMachOp.hs for the new vector MachOps. Core layerThe implementation differs from the proposal in its naming scheme. We wanted to avoid overloading the term "vector," so, e.g., a 4-wide SIMD vector of See compiler/prelude/primops.txt.pp for the new primops. Not everything in the proposal is implemented, but we do have a useful subset. Native vector sizesThis is unimplemented. Instead we define a higher-level ABIs and calling conventionsIntegrating variable-sized vectors with GHC's calling convention is a challenge. How many new registers do we add? Do we add registers for each vector type? The correct approach is unclear, so the current implementation passes all SIMD vectors on the stack. Memory alignment for vectorsThe implementation does not attempt to align memory containing SIMD vectors. SIMD vector loads and stores do not assume alignment. Other resources of interest
|