rust-lang / rust-lang/stdarch

p64 load/store intrinsics not properly inlined on arm

Open
#1,236 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
694
Forks
336
Avg merge
5d 14h
Merged PRs (30d)
9

Description

The following tests fail the inlining check on arm (but pass on aarch64):

    core_arch::arm_shared::neon::generated::assert_vld1_p64_x2_vld1
    core_arch::arm_shared::neon::generated::assert_vld1_p64_x3_nop
    core_arch::arm_shared::neon::generated::assert_vld1_p64_x4_nop
    core_arch::arm_shared::neon::generated::assert_vld1q_p64_x2_nop
    core_arch::arm_shared::neon::generated::assert_vld1q_p64_x3_nop
    core_arch::arm_shared::neon::generated::assert_vld1q_p64_x4_nop
    core_arch::arm_shared::neon::generated::assert_vld2_dup_p64_nop
    core_arch::arm_shared::neon::generated::assert_vld2_p64_nop
    core_arch::arm_shared::neon::generated::assert_vld3_dup_p64_nop
    core_arch::arm_shared::neon::generated::assert_vld3_p64_nop
    core_arch::arm_shared::neon::generated::assert_vld4_dup_p64_nop
    core_arch::arm_shared::neon::generated::assert_vld4_p64_nop
    core_arch::arm_shared::neon::generated::assert_vst1_p64_x2_vst1
    core_arch::arm_shared::neon::generated::assert_vst1_p64_x3_nop
    core_arch::arm_shared::neon::generated::assert_vst1_p64_x4_nop
    core_arch::arm_shared::neon::generated::assert_vst1q_p64_x2_nop
    core_arch::arm_shared::neon::generated::assert_vst1q_p64_x3_nop
    core_arch::arm_shared::neon::generated::assert_vst1q_p64_x4_nop
    core_arch::arm_shared::neon::generated::assert_vst2_p64_nop
    core_arch::arm_shared::neon::generated::assert_vst3_p64_nop
    core_arch::arm_shared::neon::generated::assert_vst4_p64_nop

Apparently we need an extra version of the load/store intrinsics we delegate those intrinsics to with matching feature flags, see https://godbolt.org/z/WxozeEPav

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the generated ARM NEON definitions and the inlining checks named in the issue. Compare the failing arm checks with their passing aarch64 counterparts and inspect how the delegated load/store intrinsics are selected. Done means the listed arm checks pass without regressing the existing aarch64 checks.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
performance
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.