Skip to content

Tracking Issue for 32-bit ARM DSP intrinsics #117237

Open
@Amanieu

Description

@Amanieu

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-SIMDArea: SIMD (Single Instruction Multiple Data)C-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCO-ArmTarget: 32-bit Arm processors (armv6, armv7, thumb...), including 64-bit Arm in AArch32 stateT-libs-apiRelevant to the library API team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions