Skip to content

Don't require AVX512 for 128/256-bit GFNI & VPCLMULQDQ intrinsics - #1349

Merged
Amanieu merged 2 commits into
rust-lang:masterfrom
Amanieu:gfni
Oct 30, 2022
Merged

Don't require AVX512 for 128/256-bit GFNI & VPCLMULQDQ intrinsics#1349
Amanieu merged 2 commits into
rust-lang:masterfrom
Amanieu:gfni

Conversation

@Amanieu

@Amanieu Amanieu commented Oct 29, 2022

Copy link
Copy Markdown
Member

Fixes #1325

@rust-highfive

Copy link
Copy Markdown

@Amanieu: no appropriate reviewer found, use r? to override

@calebzulawski

calebzulawski commented Oct 29, 2022

Copy link
Copy Markdown
Member

I think this requires a bit more changes to each individual intrinsic, including the EVEX ones. For example, from the Software Developer's Manual:
Screen Shot 2022-10-29 at 2 58 31 PM

Note that the 512-bit EVEX-encoded instructions only require AVX512F, but the smaller width EVEX instructions require AVX512VL (and neither require AVX512BW, which is what the intrinsics currently require). VAES and VPCLMULQDQ have similar requirements.

@Amanieu

Amanieu commented Oct 29, 2022

Copy link
Copy Markdown
Member Author

I left the EVEX-encoded 128/256-bit variant as they were ("avx512gfni,avx512bw,avx512vl").

The AVX512BW requirement comes from LLVM, which will refuse to emit the correct instruction if we don't add that target feature.

@calebzulawski

Copy link
Copy Markdown
Member

That's unfortunate, sure enough I see the same issue. I actually see an ICE when removing it. Do you know if there's an issue reported to LLVM?

@calebzulawski

Copy link
Copy Markdown
Member

I opened llvm/llvm-project#58687

@Amanieu
Amanieu merged commit 676ca68 into rust-lang:master Oct 30, 2022
@Amanieu
Amanieu deleted the gfni branch October 30, 2022 00:56
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.

avx512gfni and avx512vaes feature names might be misleading

3 participants