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 AVX512 intrinsics #111137

Open
2 tasks
Amanieu opened this issue May 3, 2023 · 12 comments
Open
2 tasks

Tracking Issue for AVX512 intrinsics #111137

Amanieu opened this issue May 3, 2023 · 12 comments
Labels
C-tracking-issue Category: A tracking issue for an RFC or an unstable feature. O-x86_32 Target: x86 processors, 32 bit (like i686-*) O-x86_64 Target: x86-64 processors (like x86_64-*) 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 May 3, 2023

Feature gate: #![feature(stdarch_x86_avx512)]

This is a tracking issue for the AVX-512 (and related extensions) intrinsics in core::arch.

Public API

This feature covers all of the intrinsics from the following features:

  • avx512bf16
  • avx512bitalg
  • avx512bw
  • avx512cd
  • avx512f
  • avx512ifma
  • avx512vbmi
  • avx512vbmi2
  • avx512vnni
  • avx512vpopcntdq
  • gfni
  • vaes
  • vpclmulqdq

Steps / History

  • Final comment period (FCP)1
  • Stabilization PR

Unresolved Questions

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 May 3, 2023
@Jules-Bertholet
Copy link
Contributor

@rustbot label O-x86

@rustbot rustbot added the O-x86 label May 4, 2023
@IceTDrinker
Copy link

Hello, what are the guidelines to potentially contribute intrinsics?

Cheers

@Nilstrieb Nilstrieb added O-x86_64 Target: x86-64 processors (like x86_64-*) O-x86_32 Target: x86 processors, 32 bit (like i686-*) and removed O-x86-all labels Oct 25, 2023
@Amanieu
Copy link
Member Author

Amanieu commented Nov 3, 2023

Currently the main blocker for stabilizing AVX-512 intrinsics is that we are still missing some. See these files for the list of missing intrinsics:

There may also be missing intrinsics for some of the other AVX512 subsets, this should be double-checked.

@tgross35
Copy link
Contributor

It seems like most of the intrinsics that are not yet implemented are labeled not in LLVM. Is stabilization blocked on those, or just the ones labeled need i1?

@Amanieu
Copy link
Member Author

Amanieu commented Nov 18, 2023

The documents were made quite a few years ago, and should be checked against the equivalent intrinsics in the latest version of Clang.

Regarding the "not in llvm", we can skip these since they are supported by neither Clang nor GCC. It seems these are only supported by icc for Xeon Phi targets.

@tarcieri
Copy link
Contributor

tarcieri commented Feb 9, 2024

Not sure if this is a good place to ask, but I'm curious if there are any blockers for stabilizing avx512_target_feature, or it just needs a stabilization PR.

I previously asked here without a reply: #44839 (comment)

@Amanieu
Copy link
Member Author

Amanieu commented Feb 11, 2024

Not sure if this is a good place to ask, but I'm curious if there are any blockers for stabilizing avx512_target_feature, or it just needs a stabilization PR.

Yes, this is the right place to ask: essentially this is blocked on the AVX512 baseline intrinsics still being incomplete, see my comment above.

@IceTDrinker
Copy link

what is considered baseline ?

I see that e.g. _mm512_cvtt_roundpd_epi64 from AVX512DQ is not available today and I don't see an axv512dq.md file in the core arch dir

@Amanieu
Copy link
Member Author

Amanieu commented Feb 12, 2024

I would consider F + VL/DQ/BW as the baseline for initial stabilization of AVX512 intrinsics. The MD files may be somewhat out of date and need someone to double-check against the full list of intrinsics.

@RalfJung
Copy link
Member

We should resolve rust-lang/stdarch#1533 before stabilizing these intrinsics.

@nikic
Copy link
Contributor

nikic commented Feb 17, 2024

We also need to consider how this interacts with AVX10 now. In #121088 I made all the +avx512 target features imply +evex512 to restore the status quo, but this means that there is currently no way to support AVX10.N/256. We'll presumably want to figure out some way to support that before avx512 support is stabilized. Possibly by explicitly adding +evex512 to all avx512 intrinsics that use 512-vectors (and having the same requirement for user code).

@AlexanderSchuetz97
Copy link

A dumb question, since this appears to be blocked on some cpu instructions not having a corresponding wrapper function due to downstream compilers not supporting them yet, why not stabilize it peacemeal? The instructions that are already implemented (provided that they do work as advertised) would already help me out a lot. I dont really see the need why all avx512 instruction wrappers need to be stabilized at the same time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-tracking-issue Category: A tracking issue for an RFC or an unstable feature. O-x86_32 Target: x86 processors, 32 bit (like i686-*) O-x86_64 Target: x86-64 processors (like x86_64-*) 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

10 participants