Conversation
Owner
Author
|
One more thing that could be done here: We have macros in each of the architectures to make it easier for the butterflies to load big chunks of data, with different strides etc, and they're all identical, so they could be combined too. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Closes #188
SseNum, NeonNum, etc are gone. SseVector, NeonVector, etc have been merged into SimdVector, so now it's just the one trait (with one minor exception).
SSE and Neon went smoothly. When I converted wasm simd and fcma, I found that they bounced too freely between the wrapped types and the bare metal types, and it made it difficult to apply simple find and replace type operations. I ended up converting them both to use the wrapper in all places. That was quite painful, but hopefully it will pay off in the form of reduced tech debt.
I also eliminated the per-architecture array traits, and replaced them with a generic trait called
SimdComplexArrayandSimdComplexArrayMut. I redid some of the naming conventions while I was in here, mainly to reduce wordiness of common operations.I ended up keeping the
FcmaVectortrait, but it only has therotate_and_addetc methods that are unique to fcma. There's one more thing to resolve here, which is that I putunimplemented!()on the fcmaapply_rotate90andnmaddmethods. They're only used by butterflies and will never be used by generic code, so I'm questioning whether they belong in the SimdVector trait at all. In the case of fcma, the reason i paid attention to it is because if you callapply_rotate90you're probably leaving performance on the table and should probably be calling something that leads to fcma instructions and applying the rotations that way.It would be fine to just check it in how it is as a little tech debt thing, but I'll sleep on it and see if I come up with a decision for how to handle it.