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

Ensure Toolchain and Platform Checks are correct #27

Closed
6 tasks
franziskuskiefer opened this issue Feb 3, 2022 · 1 comment
Closed
6 tasks

Ensure Toolchain and Platform Checks are correct #27

franziskuskiefer opened this issue Feb 3, 2022 · 1 comment

Comments

@franziskuskiefer
Copy link
Member

franziskuskiefer commented Feb 3, 2022

The build currently replicates what the upstream configure script. But that's not always correct or complete (see for example hacl-star/hacl-star#519 (comment)).

See https://github.com/cryspen/hacl/blob/main/cpu-features.md for full CPU feature matrix.


  • Check for AES instructions
    • Lib_IntVector_Intrinsics_ni_aes_enc, Lib_IntVector_Intrinsics_ni_aes_enc_last, Lib_IntVector_Intrinsics_ni_aes_keygen_assist
    • x86: AES
  • Check for clmul instructions
    • Lib_IntVector_Intrinsics_ni_clmul
    • x86: PCLMULQDQ
  • Check for SSE2
    • Lib_IntVector_Intrinsics_vec128_xor, Lib_IntVector_Intrinsics_vec128_eq32, Lib_IntVector_Intrinsics_vec128_gt32, Lib_IntVector_Intrinsics_vec128_or, Lib_IntVector_Intrinsics_vec128_and, Lib_IntVector_Intrinsics_vec128_lognot, Lib_IntVector_Intrinsics_vec128_shift_left, Lib_IntVector_Intrinsics_vec128_shift_right, Lib_IntVector_Intrinsics_vec128_shift_left64, Lib_IntVector_Intrinsics_vec128_shift_right64, Lib_IntVector_Intrinsics_vec128_shift_left32, Lib_IntVector_Intrinsics_vec128_shift_right32, Lib_IntVector_Intrinsics_vec128_shuffle32, Lib_IntVector_Intrinsics_vec128_shuffle64, Lib_IntVector_Intrinsics_vec128_rotate_right_lanes32, Lib_IntVector_Intrinsics_vec128_rotate_right_lanes64, Lib_IntVector_Intrinsics_vec128_load32_le, Lib_IntVector_Intrinsics_vec128_load64_le, Lib_IntVector_Intrinsics_vec128_store32_le, Lib_IntVector_Intrinsics_vec128_store64_le, Lib_IntVector_Intrinsics_vec128_zero, Lib_IntVector_Intrinsics_vec128_add64, Lib_IntVector_Intrinsics_vec128_sub64, Lib_IntVector_Intrinsics_vec128_mul64, Lib_IntVector_Intrinsics_vec128_smul64, Lib_IntVector_Intrinsics_vec128_add32, Lib_IntVector_Intrinsics_vec128_sub32, Lib_IntVector_Intrinsics_vec128_load64, Lib_IntVector_Intrinsics_vec128_load64s, Lib_IntVector_Intrinsics_vec128_load32, Lib_IntVector_Intrinsics_vec128_load32s, Lib_IntVector_Intrinsics_vec128_interleave_low32, Lib_IntVector_Intrinsics_vec128_interleave_high32, Lib_IntVector_Intrinsics_vec128_interleave_low64, Lib_IntVector_Intrinsics_vec128_interleave_high64
  • Check for SSE3
    • Lib_IntVector_Intrinsics_vec128_rotate_left32_8, Lib_IntVector_Intrinsics_vec128_rotate_left32_16, Lib_IntVector_Intrinsics_vec128_rotate_left32_24, Lib_IntVector_Intrinsics_vec128_rotate_left32, Lib_IntVector_Intrinsics_vec128_rotate_right32, Lib_IntVector_Intrinsics_vec128_load_be, Lib_IntVector_Intrinsics_vec128_load32_be, Lib_IntVector_Intrinsics_vec128_load64_be, Lib_IntVector_Intrinsics_vec128_store_be, Lib_IntVector_Intrinsics_vec128_store32_be, Lib_IntVector_Intrinsics_vec128_store64_be (all also SSE2)
  • Check for SSE4.1
    • Lib_IntVector_Intrinsics_vec128_eq64, Lib_IntVector_Intrinsics_vec128_insert8, Lib_IntVector_Intrinsics_vec128_insert32, Lib_IntVector_Intrinsics_vec128_insert64, Lib_IntVector_Intrinsics_vec128_extract8, Lib_IntVector_Intrinsics_vec128_extract32, Lib_IntVector_Intrinsics_vec128_extract64, Lib_IntVector_Intrinsics_vec128_mul32, Lib_IntVector_Intrinsics_vec128_smul32 (also sse2)
  • Check for SSE4.2
    • Lib_IntVector_Intrinsics_vec128_gt64,
@franziskuskiefer
Copy link
Member Author

  • Check for avx
    Lib_IntVector_Intrinsics_vec256_extract32,
    Lib_IntVector_Intrinsics_vec256_extract64,
    Lib_IntVector_Intrinsics_vec256_insert32,
    Lib_IntVector_Intrinsics_vec256_insert64,
    Lib_IntVector_Intrinsics_vec256_insert8,
    Lib_IntVector_Intrinsics_vec256_load128,
    Lib_IntVector_Intrinsics_vec256_load128s,
    Lib_IntVector_Intrinsics_vec256_load32,
    Lib_IntVector_Intrinsics_vec256_load32_le,
    Lib_IntVector_Intrinsics_vec256_load32s,
    Lib_IntVector_Intrinsics_vec256_load64,
    Lib_IntVector_Intrinsics_vec256_load64_le,
    Lib_IntVector_Intrinsics_vec256_load64s,
    Lib_IntVector_Intrinsics_vec256_store32_le,
    Lib_IntVector_Intrinsics_vec256_store64_le,
    Lib_IntVector_Intrinsics_vec256_zero

  • Check for avx and avx2
    Lib_IntVector_Intrinsics_vec256_load32_be
    Lib_IntVector_Intrinsics_vec256_load64_be
    Lib_IntVector_Intrinsics_vec256_lognot
    Lib_IntVector_Intrinsics_vec256_smul32
    Lib_IntVector_Intrinsics_vec256_store32_be
    Lib_IntVector_Intrinsics_vec256_store64_be

  • Check for avx2
    Lib_IntVector_Intrinsics_vec256_add32,
    Lib_IntVector_Intrinsics_vec256_add64,
    Lib_IntVector_Intrinsics_vec256_and,
    Lib_IntVector_Intrinsics_vec256_eq32,
    Lib_IntVector_Intrinsics_vec256_extract8,
    Lib_IntVector_Intrinsics_vec256_gt32,
    Lib_IntVector_Intrinsics_vec256_gt64,
    Lib_IntVector_Intrinsics_vec256_interleave_high128,
    Lib_IntVector_Intrinsics_vec256_interleave_high32,
    Lib_IntVector_Intrinsics_vec256_interleave_high64,
    Lib_IntVector_Intrinsics_vec256_interleave_low128,
    Lib_IntVector_Intrinsics_vec256_interleave_low32,
    Lib_IntVector_Intrinsics_vec256_interleave_low64,
    Lib_IntVector_Intrinsics_vec256_mul32,
    Lib_IntVector_Intrinsics_vec256_mul64,
    Lib_IntVector_Intrinsics_vec256_or,
    Lib_IntVector_Intrinsics_vec256_rotate_left32,
    Lib_IntVector_Intrinsics_vec256_rotate_left32_16,
    Lib_IntVector_Intrinsics_vec256_rotate_left32_24,
    Lib_IntVector_Intrinsics_vec256_rotate_left32_8,
    Lib_IntVector_Intrinsics_vec256_rotate_left64,
    Lib_IntVector_Intrinsics_vec256_rotate_right_lanes32,
    Lib_IntVector_Intrinsics_vec256_rotate_right_lanes64,
    Lib_IntVector_Intrinsics_vec256_rotate_right32,
    Lib_IntVector_Intrinsics_vec256_rotate_right64,
    Lib_IntVector_Intrinsics_vec256_rotate_right64_16,
    Lib_IntVector_Intrinsics_vec256_rotate_right64_24,
    Lib_IntVector_Intrinsics_vec256_rotate_right64_32,
    Lib_IntVector_Intrinsics_vec256_rotate_right64_40,
    Lib_IntVector_Intrinsics_vec256_rotate_right64_48,
    Lib_IntVector_Intrinsics_vec256_rotate_right64_56,
    Lib_IntVector_Intrinsics_vec256_rotate_right64_8,
    Lib_IntVector_Intrinsics_vec256_shift_left,
    Lib_IntVector_Intrinsics_vec256_shift_left32,
    Lib_IntVector_Intrinsics_vec256_shift_left64,
    Lib_IntVector_Intrinsics_vec256_shift_right,
    Lib_IntVector_Intrinsics_vec256_shift_right32,
    Lib_IntVector_Intrinsics_vec256_shift_right64,
    Lib_IntVector_Intrinsics_vec256_shuffle32,
    Lib_IntVector_Intrinsics_vec256_shuffle64,
    Lib_IntVector_Intrinsics_vec256_smul64,
    Lib_IntVector_Intrinsics_vec256_sub32,
    Lib_IntVector_Intrinsics_vec256_sub64,
    Lib_IntVector_Intrinsics_vec256_xor,
    Lib_IntVector_Intrinsics_vec256_eq64,

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

No branches or pull requests

1 participant