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

update list of fully implemented instruction sets #1152

Merged
merged 1 commit into from
Mar 21, 2024
Merged

Conversation

mr-c
Copy link
Collaborator

@mr-c mr-c commented Mar 21, 2024

No description provided.

@mr-c mr-c merged commit b568fcd into master Mar 21, 2024
39 of 97 checks passed
@mr-c mr-c deleted the mr-c-patch-1 branch March 21, 2024 08:54
@Torinde
Copy link
Contributor

Torinde commented Mar 26, 2024

"SSE4.1 List including CRC32" - I think the CRC32 instructions are some of the "non-SIMD" SSE4.2, not SSE4.1.

Related question is if SIMDe implements the non-SIMD instructions of MMX, SSE, SSE2, SSE3? From a cursory search I did it seems the answer is no.

Also, would you like to have Issues raised for:

  • SSE4a, VPCLMULQDQ, VAES; FMA4 - those are the (still missing?) SIMD extensions for which I didn't see an Issue
  • Bit manipulation instructions (BMI1, BMI2; ADX; ABM; TBM) - using VEX/XOP prefixes
  • x87 (instructions list: current, obsolete Intel/IIT/Cyrix, obsolete NEC: part1, part2)
    • code is available in SoftFloat (QEMU, Berkeley)
    • useful even on x86, because x87 may get removed in a future x86 CPU (already deprecated in Windows, unsupported in MSVC)
    • POWER9, z, RISC-V Q/L support 128-bit precision, which may speedup emulating the 80-bit x87
    • relevant for DOS/Win9x/WinXP emulators

@mr-c
Copy link
Collaborator Author

mr-c commented Mar 26, 2024

Good catch, I'll split out CRC32 separately since our SSE4.2 support is incomplete.

And https://github.com/simd-everywhere/implementation-status/blob/main/x86.md#vpclmulqdq is implemented, so I'll add it to the list

Happy to have new issues for AVX512-VAES, SSE4a, FMA4 and others, sure. Please double check https://github.com/simd-everywhere/implementation-status/blob/main/x86.md in case it is already done, but not documented.

If you or your collaborators are interested in implementing some of these, we can have a video call where I can walk you through adding a new intrinsic implementation.

@Torinde
Copy link
Contributor

Torinde commented Mar 26, 2024

OK, created a few Issues.

Looking at implementation status/x86.md:

  • SSE Implemented: 239 of 241 (99.17%), but listed on the main page as complete
  • AVX Implemented: 296 of 298 (99.33%), but listed on the main page as complete
  • CLMUL - only 1 of 5 instructions is implemented, but x86.md lists only that one (PCLMULQDQ) so it shows 100%
  • XOP - not listed in x86.md
  • SVML - some instructions are listed in x86.md under AVX, SSE, etc. (probably as expected since SVML isn't an "instruction set" per se?)
  • WebAssembly SIMD128 - no .md file in implementation status
  • BMI1 is partially listed, but non not fully and also not BMI2 and ADX (although both are present in Intel Intrinsics Guide); SSE3 non-SIMD is partially listed (MONITOR, MWAIT); POPCNT is listed; In general I'm not sure how to check if the following are implemented/if I should raise Issues for the following?
    • non-SIMD instructions related to
      • MMX (FXSAVE(64), FXRSTOR(64), RDPMC),
      • SSE (PREFETCHNTA, PREFETCHT, SFENCE),
      • SSE2 (LFENCE, MFENCE, MOVNTI, PAUSE, CLFSH),
      • SSE3 (MONITOR(X), MWAIT(X), FISTTP),
      • SSE4a/4.2 (POPCNT, LZCNT, which are the same as ABM)
    • MMX instructions introduced with
      • SSE,
      • SSE2,
      • SSSE3
    • Bit manipulating extensions
      • BMI1,
      • BMI2;
      • ADX;
      • TBM

Readme file has a section about hardware architectures tested in CI, but in ci.yml I see more - should the following be specified in the README.md?

@mr-c
Copy link
Collaborator Author

mr-c commented Mar 27, 2024

  • SSE Implemented: 239 of 241 (99.17%), but listed on the main page as complete
  • AVX Implemented: 296 of 298 (99.33%), but listed on the main page as complete

See https://github.com/simd-everywhere/simde?tab=readme-ov-file#caveats

Please create issues or PRs for the others, thanks!

@Torinde Torinde mentioned this pull request Mar 28, 2024
60 tasks
Torinde added a commit to Torinde/simde that referenced this pull request Mar 28, 2024
Per simd-everywhere#1152 (comment)

Should the following two architectures also be added?
- ARMv8 SVE - it's in [simde-features.h](https://github.com/simd-everywhere/simde/blob/b88a66de3a7de7a16099ab28019bc566e4468b82/simde/simde-features.h), but I couldn't find it in ci.yml
- z/Architecture *ZVECTOR* - it's in simde-features.h, but ci.yml just lists s390x, so unclear if ZVECTOR extensions are utilized
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants