# Portable SIMD 2020-10-05 Meeting
###### tags: `Portable SIMD` `Minutes`
[Last Week] | [This Week's Chat] | [Next Week]
[Last Week]: https://hackmd.io/kYH3ozJ_Q1yCwIiAHeKRBA?view
[This Week's Chat]: https://rust-lang.zulipchat.com/#narrow/stream/257879-project-portable-simd/topic/2020-10-05.20meeting/near/212343708
[Next Week]: https://hackmd.io/h5Coi4l8RZWS6T1Esw5WKQ?view
- Jubilee
- Lokathor
- Caleb Zulawski
- Oliver
- Thom Chiovoloni
## Sync
Question regarding aarch64's Neon support resolved in https://rust-lang.zulipchat.com/#narrow/stream/242906-t-compiler.2Farm/topic/Is.20aarch64.20lit.20with.20Neon.3F/near/211907057 as "yes for all known aarch64 targets and likely into the future because aarch64 is ARMv8-A and ARMv8-A is Neon-enabled."
exercise caution with simd_extract and simd_insert until this is fixed: https://github.com/rust-lang/rust/issues/77477
## Agenda
1. Testing crates
- test-case crate allows parameterized tests
- quickcheck, et alia allow testing with reducers
2. Organizing help (reports of "I want to help but I don't know what I can help with? Who is working on what?")
## Resolutions
1. Don't quickcheck yet (but proptest/hypothesis maybe later?)
- focus on edge case testing and parameterization
2. We need to lay out a welcome mat for stdsimd as well.
- a CONTRIBUTING.md
- links to Zulip, FAQ, etc.
- Lokathor has volunteered to help chunk issues
## Extra
Discussions of Julia
- well-regarded API but maybe too high level?
- maybe reference their test cases?
## Summary update
https://rust-lang.zulipchat.com/#narrow/stream/257879-project-portable-simd/topic/2020-10-05.20meeting
### Testing
- There are a lot of moving parts in a portable SIMD API we need to test. There's a bit of a state explosion to manage to make sure everything actually does work portably.
- Using property testing and fuzzing is something we'd like to do. `quickcheck` has been used in the past for sanity-checking SIMD code, but wasn't enough on its own.
- With a good set of edge-case inputs we can probably cover a lot of interesting cases without a lot of test infrastructure.
### Contributing docs
- People want to get on board and help out, but it's not totally clear how they can yet. We need some more docs and coordination of work that's up-for-grabs.
### Runtime detection
- This one comes up pretty regularly, and is currently considered out-of-scope for an initial release.
- We don't want to paint ourselves into a corner and not be able to add it, but don't want to commit to it beyond existing `#[target_feature]` support in `core::arch`.
- We need to communicate what is and isn't in-scope better.
### Julia
- Julia's [portable SIMD API](https://github.com/eschnett/SIMD.jl) is considered very good, but quite high-level. They have some interesting test cases we should look at.
### Shuffles
- We don't actually have a concrete design for shuffles yet, besides wanting to use const generics for the indexes. There's a [bug in Miri](https://github.com/rust-lang/rust/issues/77477) where invalid const indexes are UB instead of compile errors.
### Portable nomenclature
- We're feeling the need to come up with consistent and portable terms to discuss SIMD. There's a lot of vendor-specific stuff to try abstract over.