Tracking Issue for 32-bit ARM DSP intrinsics
Open
Nobody has claimed this yet.
A-SIMD
C-tracking-issue
O-Arm
T-libs
- Dominant language
- Rust
- Stars
- 119k
- Forks
- 16.2k
- PR merge metrics
- PR metrics pending
Description
Feature gate: #![feature(stdarch_arm_dsp)]
This is a tracking issue for 32-bit ARM DSP and SIMD32 intrinsics.
Public API
// core::arch::arm
pub struct int8x4_t(i8, i8, i8, i8);
pub struct uint8x4_t(u8, u8, u8, u8);
pub unsafe fn __qadd8(a: int8x4_t, b: int8x4_t) -> int8x4_t;
pub unsafe fn __qsub8(a: int8x4_t, b: int8x4_t) -> int8x4_t;
pub unsafe fn __qsub16(a: int16x2_t, b: int16x2_t) -> int16x2_t;
pub unsafe fn __qadd16(a: int16x2_t, b: int16x2_t) -> int16x2_t;
pub unsafe fn __qasx(a: int16x2_t, b: int16x2_t) -> int16x2_t;
pub unsafe fn __qsax(a: int16x2_t, b: int16x2_t) -> int16x2_t;
pub unsafe fn __sadd16(a: int16x2_t, b: int16x2_t) -> int16x2_t;
pub unsafe fn __sadd8(a: int8x4_t, b: int8x4_t) -> int8x4_t;
pub unsafe fn __smlad(a: int16x2_t, b: int16x2_t, c: i32) -> i32;
pub unsafe fn __smlsd(a: int16x2_t, b: int16x2_t, c: i32) -> i32;
pub unsafe fn __sasx(a: int16x2_t, b: int16x2_t) -> int16x2_t;
pub unsafe fn __sel(a: int8x4_t, b: int8x4_t) -> int8x4_t;
pub unsafe fn __shadd8(a: int8x4_t, b: int8x4_t) -> int8x4_t;
pub unsafe fn __shadd16(a: int16x2_t, b: int16x2_t) -> int16x2_t;
pub unsafe fn __shsub8(a: int8x4_t, b: int8x4_t) -> int8x4_t;
pub unsafe fn __usub8(a: uint8x4_t, b: uint8x4_t) -> uint8x4_t;
pub unsafe fn __ssub8(a: int8x4_t, b: int8x4_t) -> int8x4_t;
pub unsafe fn __shsub16(a: int16x2_t, b: int16x2_t) -> int16x2_t;
pub unsafe fn __smuad(a: int16x2_t, b: int16x2_t) -> i32;
pub unsafe fn __smuadx(a: int16x2_t, b: int16x2_t) -> i32;
pub unsafe fn __smusd(a: int16x2_t, b: int16x2_t) -> i32;
pub unsafe fn __smusdx(a: int16x2_t, b: int16x2_t) -> i32;
pub unsafe fn __usad8(a: int8x4_t, b: int8x4_t) -> u32;
pub unsafe fn __usada8(a: int8x4_t, b: int8x4_t, c: u32) -> u32;
pub struct int16x2_t(i16, i16);
pub struct uint16x2_t(u16, u16);
pub unsafe fn __smulbb(a: int16x2_t, b: int16x2_t) -> i32;
pub unsafe fn __smultb(a: int16x2_t, b: int16x2_t) -> i32;
pub unsafe fn __smulbt(a: int16x2_t, b: int16x2_t) -> i32;
pub unsafe fn __smultt(a: int16x2_t, b: int16x2_t) -> i32;
pub unsafe fn __smulwb(a: int16x2_t, b: i32) -> i32;
pub unsafe fn __smulwt(a: int16x2_t, b: i32) -> i32;
pub unsafe fn __qadd(a: i32, b: i32) -> i32;
pub unsafe fn __qsub(a: i32, b: i32) -> i32;
pub unsafe fn __qdbl(a: i32) -> i32;
pub unsafe fn __smlabb(a: int16x2_t, b: int16x2_t, c: i32) -> i32;
pub unsafe fn __smlabt(a: int16x2_t, b: int16x2_t, c: i32) -> i32;
pub unsafe fn __smlatb(a: int16x2_t, b: int16x2_t, c: i32) -> i32;
pub unsafe fn __smlatt(a: int16x2_t, b: int16x2_t, c: i32) -> i32;
pub unsafe fn __smlawb(a: i32, b: int16x2_t, c: i32) -> i32;
pub unsafe fn __smlawt(a: i32, b: int16x2_t, c: i32) -> i32;
Steps / History
- Implementation: #...
- Final comment period (FCP)^1
- Stabilization PR
Unresolved Questions
- None yet.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the stdarch_arm_dsp feature gate and the listed core::arch::arm public API. The issue names no implementation files or tests, so locate the relevant Rust standard-library architecture-intrinsics entry points before proceeding. Done requires an implementation PR, completion of the final comment period, and a stabilization PR.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100