Sorting with SIMD
If you are exclusively moving numbers around in an array, SIMD sorting sounds great.But when you want to actually sort things, it's different.  You have objects in an array, the objects will have one member which is a Key that you will sort the objects on.In order to create a sorted permutation of the list, you either need to rearrange the list of object pointers (fast), rearrange the memory of the objects (slow), or you simply output a list of array indexes that represents what the sort order should be (fast).Code that doesn't physically move the object memory around creates indirection.  Indirection makes any SIMD sorting depend on scatter-gather in order to get data in.  Scatter-Gather causes random memory accesses which don't cache as well as sequential access.