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
-
Remove the dead code; or
-
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.