-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Description
We now have:
Vector<T>Vector64<T>Vector128<T>Vector256<T>- Each of the low-level intrinsics namespaces, e.g. Avx2
As part of shipping .NET 7 which includes several of these systems a new, it will be important to provide clear guidance on which should be used when. Should a developer start with Vector<T> and only fall back to other things if there are operations required it can't support? If not, why not? If a developer is using Vector128<T>, when should they also add a "duplicated" path for Vector256<T>? When should they also add a "duplicated" path for Vector64<T>? What are the most likely cases where VectorN<T> are insufficient and a developer will want to target the individual instruction set namespaces directly? Are there situations where they might be used together, e.g. a Vector128<T> path and then separate paths for the individual instruction sets? Etc.