Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tracking Issue for 32-bit ARM DSP intrinsics #117237

Open
3 tasks
Amanieu opened this issue Oct 26, 2023 · 1 comment
Open
3 tasks

Tracking Issue for 32-bit ARM DSP intrinsics #117237

Amanieu opened this issue Oct 26, 2023 · 1 comment
Labels
A-SIMD Area: SIMD (Single Instruction Multiple Data) C-tracking-issue Category: A tracking issue for an RFC or an unstable feature. O-Arm Target: 32-bit Arm processors (armv6, armv7, thumb...), including 64-bit Arm in AArch32 state T-libs-api Relevant to the library API team, which will review and decide on the PR/issue.

Comments

@Amanieu
Copy link
Member

Amanieu commented Oct 26, 2023

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.

Footnotes

  1. https://std-dev-guide.rust-lang.org/feature-lifecycle/stabilization.html

@Amanieu Amanieu added T-libs-api Relevant to the library API team, which will review and decide on the PR/issue. C-tracking-issue Category: A tracking issue for an RFC or an unstable feature. labels Oct 26, 2023
@Jules-Bertholet
Copy link
Contributor

Jules-Bertholet commented Oct 26, 2023

@rustbot label O-arm A-simd

@rustbot rustbot added O-Arm Target: 32-bit Arm processors (armv6, armv7, thumb...), including 64-bit Arm in AArch32 state A-SIMD Area: SIMD (Single Instruction Multiple Data) labels Oct 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-SIMD Area: SIMD (Single Instruction Multiple Data) C-tracking-issue Category: A tracking issue for an RFC or an unstable feature. O-Arm Target: 32-bit Arm processors (armv6, armv7, thumb...), including 64-bit Arm in AArch32 state T-libs-api Relevant to the library API team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests

3 participants