Skip to content

Unimplemented x86 llvm intrinsic pcmpestrm128 #1418

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

Closed
pothos opened this issue Nov 7, 2023 · 6 comments · Fixed by #1431
Closed

Unimplemented x86 llvm intrinsic pcmpestrm128 #1418

pothos opened this issue Nov 7, 2023 · 6 comments · Fixed by #1431
Labels
A-core-arch Area: Necessary for full core::arch support

Comments

@pothos
Copy link

pothos commented Nov 7, 2023

When compiling hard-xml I noticed two warnings for a missing x86 llvm intrinsic pcmpestrm128:

warning: unsupported x86 llvm intrinsic llvm.x86.sse42.pcmpestri128; replacing with trap

Edit: And of course a huge thank you for your work and congratulations for getting it into rustup!

@bjorn3 bjorn3 added the A-core-arch Area: Necessary for full core::arch support label Nov 7, 2023
@bjorn3
Copy link
Member

bjorn3 commented Nov 7, 2023

That is quite a complex intrinsic: https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpestri&ig_expand=939 I don't think I will get around implementing it in the next couple of days.

And of course a huge thank you for your work and congratulations for getting it into rustup!

❤️

@bjorn3
Copy link
Member

bjorn3 commented Nov 12, 2023

Implemented this using inline asm to directly call the original instruction over at https://github.com/rust-lang/rustc_codegen_cranelift/tree/more_simd_intrinsics

@pothos
Copy link
Author

pothos commented Nov 13, 2023

Thanks a lot, tested it and it works :)

@bjorn3
Copy link
Member

bjorn3 commented Nov 26, 2023

A fix is available on the latest nightly.

@pothos
Copy link
Author

pothos commented Nov 26, 2023

Great that you managed to merge it!

With new instruction set extensions getting published almost every year this topic never is really done, but rather a nice goal post would be to cover all instructions set extensions older than X years.
The panic unwinding is probably more generous topic in this regard and when it's done it will mostly be done (except for occasional bug reports), or?

@bjorn3
Copy link
Member

bjorn3 commented Nov 26, 2023

So far I have been implementing new vendor intrinsics as people report them actually being used. There are a lot of them that basically nobody uses. Unless I know of a user to test it with, it is hard for me to be confident that I correctly implemented a intrinsic. If you find other unimplemented intrinsics that some program or library needs, please do let me know.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-core-arch Area: Necessary for full core::arch support
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants