Skip to content

Is SIMD vector code dead?

Some time ago, we removed the vectoriser from GHC, as it was dead code. But I still see an awful lot of vector stuff floating about. (For example, in RuntimeRep, PrimRep, PrimOpVecCat, primops, etc.) Is all this dead? I was trying to figure out where these vectors are finally consumed (generated into code). The closest I found was vecElemInjectCast and vecElemProjectCast. However, these seem to be triggered by primops like VecBroadcastOp... but I don't see where a VecBroadcastOp comes from.

I'm poking around in areas I don't know at all, so I may be very wrong, and I'd love to learn more about this all.

However, if this code is dead, I propose we either

  1. Remove the dead code; or

  2. Document this carefully, with a Note. The Note should say why we haven't removed the dead code (presumably, because we wish to resurrect it later), a plausible route to reviving the code from the dead (I wouldn't ask for a timeline, just a plausible story), and should be referred to from every place that's dead. (There are a lot of them!)

I'm happy to do either of these tasks.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information