Parametrize NumOps
by element type instead of SIMD type
#631
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Make the generic argument to
NumOps
independent of the SIMD ISA. For example<Avx2Isa as Isa>::f32
now returns animpl NumOps<f32>
instead ofimpl NumOps<float32x4_t>
. This in turn will make it possible to add generic methods to get theNumOps
impl for a given element type, enabling writingSimdOp
s that are generic over the element type.The downside is that a single struct can no longer implement
NumOps
for two different SIMD vectors with the same element type. This would prevent eg.Avx2Isa
from implementingNumOps
for both 256 and 128-bit f32 vectors. So far the need to half or quarter-width vectors has been avoided by defining operations in a way that avoids this.