Function | ARM | Intel | IBM z | PowerPC64 | Uses |
---|---|---|---|---|---|
high32 | NEON - A7, A32, A64 | SSE2 | Hacl_Chacha20_Vec256.c, Hacl_SHA2_Vec256.c, Hacl_SHA2_Vec128.c, Hacl_Chacha20_Vec128.c | ||
Lib_IntVector_Intrinsics_vec128_add32 | NEON - A7, A32, A64 | SSE2 | Hacl_Hash_Blake2s_128.c, Hacl_SHA2_Vec128.c, Hacl_Chacha20_Vec128.c | ||
Lib_IntVector_Intrinsics_vec128_add64 | NEON - A7, A32, A64 | SSE2 | Hacl_Poly1305_128.c, Hacl_Chacha20Poly1305_128.c | ||
Lib_IntVector_Intrinsics_vec128_and | NEON - A7, A32, A64 | SSE2 | Hacl_Poly1305_128.c, Hacl_Chacha20Poly1305_128.c, Hacl_SHA2_Vec128.c | ||
Lib_IntVector_Intrinsics_vec128_eq32 | NEON - A7, A32, A64 | SSE2 | |||
Lib_IntVector_Intrinsics_vec128_eq64 | NEON - A7, A32, A64 | SSE4.1 | Hacl_Poly1305_128.c | ||
Lib_IntVector_Intrinsics_vec128_extract32 | NEON - A7, A32, A64 | SSE4.1 | |||
Lib_IntVector_Intrinsics_vec128_extract64 | NEON - A7, A32, A64 | SSE4.1 | Hacl_Poly1305_128.c | ||
Lib_IntVector_Intrinsics_vec128_extract8 | NEON - A7, A32, A64 | SSE4.1 | |||
Lib_IntVector_Intrinsics_vec128_gt32 | NEON - A7, A32, A64 | SSE2 | |||
Lib_IntVector_Intrinsics_vec128_gt64 | NEON - A7, A32, A64 | SSE4.2 | Hacl_Poly1305_128.c | ||
Lib_IntVector_Intrinsics_vec128_insert32 | NEON - A7, A32, A64 | SSE4.1 | |||
Lib_IntVector_Intrinsics_vec128_insert64 | NEON - A7, A32, A64 | SSE4.1 | Hacl_Poly1305_128.c | ||
Lib_IntVector_Intrinsics_vec128_insert8 | NEON - A7, A32, A64 | SSE4.1 | |||
Lib_IntVector_Intrinsics_vec128_interleave_high32 | NEON - A64 | SSE2 | Hacl_SHA2_Vec128.c, Hacl_Chacha20_Vec128.c | ||
Lib_IntVector_Intrinsics_vec128_interleave_high64 | NEON - A64 | SSE2 | Hacl_Poly1305_128.c, Hacl_Chacha20Poly1305_128.c, Hacl_SHA2_Vec128.c, Hacl_Chacha20_Vec128.c | ||
Lib_IntVector_Intrinsics_vec128_interleave_low32 | NEON - A64 | SSE2 | Hacl_SHA2_Vec128.c, Hacl_Chacha20_Vec128.c | ||
Lib_IntVector_Intrinsics_vec128_interleave_low64 | NEON - A64 | SSE2 | Hacl_Poly1305_128.c, Hacl_Chacha20Poly1305_128.c,Hacl_SHA2_Vec128.c, Hacl_Chacha20_Vec128.c | ||
Lib_IntVector_Intrinsics_vec128_load_be | - | SSE3 | |||
Lib_IntVector_Intrinsics_vec128_load128 | NEON - A7, A32, A64 | - | |||
Lib_IntVector_Intrinsics_vec128_load32 | NEON - A7, A32, A64 | SSE2 | Hacl_Hash_Blake2s_128.c, Hacl_SHA2_Vec128.c, Hacl_Chacha20_Vec128.c, Hacl_HMAC_Blake2s_128.c | ||
Lib_IntVector_Intrinsics_vec128_load32_be | NEON - A7, A32, A64 | SSE3 | Hacl_SHA2_Vec128.c | ||
Lib_IntVector_Intrinsics_vec128_load32_le | NEON - A7, A32, A64 | SSE2 | Hacl_Chacha20_Vec128.c | ||
Lib_IntVector_Intrinsics_vec128_load32s | NEON - A7, A32, A64 | SSE2 | Hacl_Hash_Blake2s_128.c, Hacl_Chacha20_Vec128.c, Hacl_HMAC_Blake2s_128.c | ||
Lib_IntVector_Intrinsics_vec128_load64 | NEON - A7, A32, A64 | SSE2 | Hacl_Poly1305_128.c, Hacl_Chacha20Poly1305_128.c | ||
Lib_IntVector_Intrinsics_vec128_load64_be | NEON - A7, A32, A64 | SSE3 | |||
Lib_IntVector_Intrinsics_vec128_load64_le | NEON - A7, A32, A64 | SSE2 | Hacl_Poly1305_128.c, Hacl_Chacha20Poly1305_128.c | ||
Lib_IntVector_Intrinsics_vec128_load64s | NEON - A7, A32, A64 | SSE2 | |||
Lib_IntVector_Intrinsics_vec128_lognot | NEON - A7, A32, A64 | SSE2 | Hacl_Poly1305_128.c, Hacl_SHA2_Vec128.c | ||
Lib_IntVector_Intrinsics_vec128_mul32 | NEON - A7, A32, A64 | SSE4.1 | |||
Lib_IntVector_Intrinsics_vec128_mul64 | NEON - A7, A32, A64 | SSE2 | Hacl_Poly1305_128.c, Hacl_Chacha20Poly1305_128.c | ||
Lib_IntVector_Intrinsics_vec128_or | NEON - A7, A32, A64 | SSE2 | Hacl_Poly1305_128.c, Hacl_Chacha20Poly1305_128.c | ||
Lib_IntVector_Intrinsics_vec128_rotate_left32 | NEON - A7, A32, A64 | SSE3 | Hacl_Chacha20_Vec128.c | ||
Lib_IntVector_Intrinsics_vec128_rotate_left32_16 | NEON - A7, A32, A64 | SSE3 | |||
Lib_IntVector_Intrinsics_vec128_rotate_left32_24 | - | SSE3 | |||
Lib_IntVector_Intrinsics_vec128_rotate_left32_8 | - | SSE3 | |||
Lib_IntVector_Intrinsics_vec128_rotate_right_lanes32 | NEON - A7, A32, A64 | SSE2 | Hacl_Hash_Blake2s_128.c | ||
Lib_IntVector_Intrinsics_vec128_rotate_right_lanes64 | NEON - A7, A32, A64 | SSE2 | |||
Lib_IntVector_Intrinsics_vec128_rotate_right32 | NEON - A7, A32, A64 | SSE3 | Hacl_Hash_Blake2s_128.c, Hacl_SHA2_Vec128.c | ||
Lib_IntVector_Intrinsics_vec128_rotate_right32_16 | NEON - A7, A32, A64 | - | |||
Lib_IntVector_Intrinsics_vec128_shift_left | NEON - A7, A32, A64 | SSE2 | Hacl_Poly1305_128.c, Hacl_Chacha20Poly1305_128.c | ||
Lib_IntVector_Intrinsics_vec128_shift_left32 | NEON - A7, A32, A64 | SSE2 | |||
Lib_IntVector_Intrinsics_vec128_shift_left64 | NEON - A7, A32, A64 | SSE2 | Hacl_Poly1305_128.c, Hacl_Chacha20Poly1305_128.c | ||
Lib_IntVector_Intrinsics_vec128_shift_right | NEON - A7, A32, A64 | SSE2 | Hacl_Poly1305_128.c, Hacl_Chacha20Poly1305_128.c, Hacl_SHA2_Vec128.c | ||
Lib_IntVector_Intrinsics_vec128_shift_right32 | NEON - A7, A32, A64 | SSE2 | Hacl_SHA2_Vec128.c | ||
Lib_IntVector_Intrinsics_vec128_shift_right64 | NEON - A7, A32, A64 | SSE2 | Hacl_Poly1305_128.c, Hacl_Chacha20Poly1305_128.c | ||
Lib_IntVector_Intrinsics_vec128_shuffle32 | - | SSE2 | |||
Lib_IntVector_Intrinsics_vec128_shuffle64 | - | SSE2 | |||
Lib_IntVector_Intrinsics_vec128_smul32 | NEON - A7, A32, A64 | SSE4.1 | |||
Lib_IntVector_Intrinsics_vec128_smul64 | NEON - A7, A32, A64 | SSE2 | Hacl_Poly1305_128.c | ||
Lib_IntVector_Intrinsics_vec128_store_be | - | SSE3 | |||
Lib_IntVector_Intrinsics_vec128_store32_be | NEON - A7, A32, A64 | SSE3 | Hacl_SHA2_Vec128.c | ||
Lib_IntVector_Intrinsics_vec128_store32_le | NEON - A7, A32, A64 | SSE2 | Hacl_Hash_Blake2s_128.c, Hacl_Chacha20_Vec128.c | ||
Lib_IntVector_Intrinsics_vec128_store64_be | NEON - A7, A32, A64 | SSE3 | |||
Lib_IntVector_Intrinsics_vec128_store64_le | NEON - A7, A32, A64 | SSE2 | |||
Lib_IntVector_Intrinsics_vec128_sub32 | NEON - A7, A32, A64 | SSE2 | |||
Lib_IntVector_Intrinsics_vec128_sub64 | NEON - A7, A32, A64 | SSE2 | Hacl_Poly1305_128.c | ||
Lib_IntVector_Intrinsics_vec128_xor | NEON - A7, A32, A64 | SSE2 | Hacl_Hash_Blake2s_128.c, Hacl_SHA2_Vec128.c, Hacl_Chacha20_Vec128.c | ||
Lib_IntVector_Intrinsics_vec128_zero | NEON - A7, A32, A64 | SSE2 | Hacl_Hash_Blake2s_128.c Hacl_Poly1305_128.c Hacl_Streaming_Blake2s_128.c Hacl_Chacha20Poly1305_128.c Hacl_SHA2_Vec128.c Hacl_Chacha20_Vec128.c Hacl_HMAC_Blake2s_128.c Hacl_Streaming_Poly1305_128.c | ||
low32 | NEON - A7, A32, A64 | - | Hacl_Chacha20_Vec256.c, Hacl_SHA2_Vec256.c, Hacl_SHA2_Vec128.c, Hacl_Chacha20_Vec128.c |
Note that for SSE only the highest version is mentions. We have to check for all lower versions.
Function | ARM | Intel | IBM z | PowerPC64 | Uses |
---|---|---|---|---|---|
Lib_IntVector_Intrinsics_vec256_add32 | AVX2 | Hacl_Chacha20_Vec256.c, Hacl_SHA2_Vec256.c, libintvector.h | |||
Lib_IntVector_Intrinsics_vec256_add64 | AVX2 | Hacl_SHA2_Vec256.c, Hacl_Poly1305_256.c, Hacl_Hash_Blake2b_256.c, Hacl_Chacha20Poly1305_256.c | |||
Lib_IntVector_Intrinsics_vec256_and | AVX2 | Hacl_SHA2_Vec256.c, Hacl_Poly1305_256.c, Hacl_Chacha20Poly1305_256.c | |||
Lib_IntVector_Intrinsics_vec256_eq32 | AVX2 | ||||
Lib_IntVector_Intrinsics_vec256_extract8 | AVX2 | ||||
Lib_IntVector_Intrinsics_vec256_gt32 | AVX2 | ||||
Lib_IntVector_Intrinsics_vec256_gt64 | AVX2 | Hacl_Poly1305_256.c | |||
Lib_IntVector_Intrinsics_vec256_interleave_high128 | AVX2 | Hacl_Chacha20_Vec256.c, Hacl_SHA2_Vec256.c, Hacl_Poly1305_256.c, Hacl_Chacha20Poly1305_256.c | |||
Lib_IntVector_Intrinsics_vec256_interleave_high32 | AVX2 | Hacl_Chacha20_Vec256.c, Hacl_SHA2_Vec256.c | |||
Lib_IntVector_Intrinsics_vec256_interleave_high64 | AVX2 | Hacl_Chacha20_Vec256.c, Hacl_SHA2_Vec256.c, Hacl_Poly1305_256.c, Hacl_Chacha20Poly1305_256.c | |||
Lib_IntVector_Intrinsics_vec256_interleave_low128 | AVX2 | Hacl_Chacha20_Vec256.c, Hacl_SHA2_Vec256.c, Hacl_Poly1305_256.c, Hacl_Chacha20Poly1305_256.c | |||
Lib_IntVector_Intrinsics_vec256_interleave_low32 | AVX2 | Hacl_Chacha20_Vec256.c, Hacl_SHA2_Vec256.c | |||
Lib_IntVector_Intrinsics_vec256_interleave_low64 | AVX2 | Hacl_Chacha20_Vec256.c, Hacl_SHA2_Vec256.c, Hacl_Poly1305_256.c, Hacl_Chacha20Poly1305_256.c | |||
Lib_IntVector_Intrinsics_vec256_mul32 | AVX2 | ||||
Lib_IntVector_Intrinsics_vec256_mul64 | AVX2 | Hacl_Poly1305_256.c, Hacl_Chacha20Poly1305_256.c | |||
Lib_IntVector_Intrinsics_vec256_or | AVX2 | Hacl_Poly1305_256.c, Hacl_Chacha20Poly1305_256.c | |||
Lib_IntVector_Intrinsics_vec256_rotate_left32 | AVX2 | Hacl_Chacha20_Vec256.c | |||
Lib_IntVector_Intrinsics_vec256_rotate_left32_16 | AVX2 | ||||
Lib_IntVector_Intrinsics_vec256_rotate_left32_24 | AVX2 | ||||
Lib_IntVector_Intrinsics_vec256_rotate_left32_8 | AVX2 | ||||
Lib_IntVector_Intrinsics_vec256_rotate_left64 | AVX2 | ||||
Lib_IntVector_Intrinsics_vec256_rotate_right_lanes32 | AVX2 | ||||
Lib_IntVector_Intrinsics_vec256_rotate_right_lanes64 | AVX2 | Hacl_Hash_Blake2b_256.c | |||
Lib_IntVector_Intrinsics_vec256_rotate_right32 | AVX2 | Hacl_SHA2_Vec256.c | |||
Lib_IntVector_Intrinsics_vec256_rotate_right64 | AVX2 | Hacl_SHA2_Vec256.c, Hacl_Hash_Blake2b_256.c | |||
Lib_IntVector_Intrinsics_vec256_rotate_right64_16 | AVX2 | ||||
Lib_IntVector_Intrinsics_vec256_rotate_right64_24 | AVX2 | ||||
Lib_IntVector_Intrinsics_vec256_rotate_right64_32 | AVX2 | ||||
Lib_IntVector_Intrinsics_vec256_rotate_right64_40 | AVX2 | ||||
Lib_IntVector_Intrinsics_vec256_rotate_right64_48 | AVX2 | ||||
Lib_IntVector_Intrinsics_vec256_rotate_right64_56 | AVX2 | ||||
Lib_IntVector_Intrinsics_vec256_rotate_right64_8 | AVX2 | ||||
Lib_IntVector_Intrinsics_vec256_shift_left | AVX2 | Hacl_Poly1305_256.c, Hacl_Chacha20Poly1305_256.c | |||
Lib_IntVector_Intrinsics_vec256_shift_left32 | AVX2 | ||||
Lib_IntVector_Intrinsics_vec256_shift_left64 | AVX2 | Hacl_Poly1305_256.c, Hacl_Chacha20Poly1305_256.c | |||
Lib_IntVector_Intrinsics_vec256_shift_right | AVX2 | Hacl_SHA2_Vec256.c, Hacl_Poly1305_256.c, Hacl_Chacha20Poly1305_256.c | |||
Lib_IntVector_Intrinsics_vec256_shift_right32 | AVX2 | Hacl_SHA2_Vec256.c | |||
Lib_IntVector_Intrinsics_vec256_shift_right64 | AVX2 | Hacl_SHA2_Vec256.c, Hacl_Poly1305_256.c, Hacl_Chacha20Poly1305_256.c | |||
Lib_IntVector_Intrinsics_vec256_shuffle32 | AVX2 | ||||
Lib_IntVector_Intrinsics_vec256_shuffle64 | AVX2 | ||||
Lib_IntVector_Intrinsics_vec256_smul64 | AVX2 | Hacl_Poly1305_256.c | |||
Lib_IntVector_Intrinsics_vec256_sub32 | AVX2 | ||||
Lib_IntVector_Intrinsics_vec256_sub64 | AVX2 | Hacl_Poly1305_256.c | |||
Lib_IntVector_Intrinsics_vec256_xor | AVX2 | Hacl_Chacha20_Vec256.c, Hacl_SHA2_Vec256.c, Hacl_Hash_Blake2b_256.c | |||
Lib_IntVector_Intrinsics_vec256_eq64 | AVX2 | Hacl_Poly1305_256.c | |||
Lib_IntVector_Intrinsics_vec256_load32_be | AVX2 | Hacl_SHA2_Vec256.c | |||
Lib_IntVector_Intrinsics_vec256_load64_be | AVX2 | Hacl_SHA2_Vec256.c | |||
Lib_IntVector_Intrinsics_vec256_lognot | AVX2 | Hacl_SHA2_Vec256.c, Hacl_Poly1305_256.c | |||
Lib_IntVector_Intrinsics_vec256_smul32 | AVX2 | ||||
Lib_IntVector_Intrinsics_vec256_store32_be | AVX2 | Hacl_SHA2_Vec256.c | |||
Lib_IntVector_Intrinsics_vec256_store64_be | AVX2 | Hacl_SHA2_Vec256.c | |||
Lib_IntVector_Intrinsics_vec256_extract32 | AVX | ||||
Lib_IntVector_Intrinsics_vec256_extract64 | AVX | Hacl_Poly1305_256.c | |||
Lib_IntVector_Intrinsics_vec256_insert32 | AVX | ||||
Lib_IntVector_Intrinsics_vec256_insert64 | AVX | Hacl_Poly1305_256.c | |||
Lib_IntVector_Intrinsics_vec256_insert8 | AVX | ||||
Lib_IntVector_Intrinsics_vec256_load128 | AVX | ||||
Lib_IntVector_Intrinsics_vec256_load128s | AVX | ||||
Lib_IntVector_Intrinsics_vec256_load32 | AVX | Hacl_Chacha20_Vec256.c, Hacl_SHA2_Vec256.c | |||
Lib_IntVector_Intrinsics_vec256_load32_le | AVX | Hacl_Chacha20_Vec256.c | |||
Lib_IntVector_Intrinsics_vec256_load32s | AVX | Hacl_Chacha20_Vec256.c | |||
Lib_IntVector_Intrinsics_vec256_load64 | AVX | Hacl_SHA2_Vec256.c, Hacl_Poly1305_256.c, Hacl_Hash_Blake2b_256.c, Hacl_Chacha20Poly1305_256.c, Hacl_HMAC_Blake2b_256.c | |||
Lib_IntVector_Intrinsics_vec256_load64_le | AVX | Hacl_Poly1305_256.c, Hacl_Chacha20Poly1305_256.c | |||
Lib_IntVector_Intrinsics_vec256_load64s | AVX | Hacl_Hash_Blake2b_256.c, Hacl_HMAC_Blake2b_256.c | |||
Lib_IntVector_Intrinsics_vec256_store32_le | AVX | Hacl_Chacha20_Vec256.c | |||
Lib_IntVector_Intrinsics_vec256_store64_le | AVX | Hacl_Hash_Blake2b_256.c | |||
Lib_IntVector_Intrinsics_vec256_zero | AVX | Hacl_Streaming_Poly1305_256.c, Hacl_Chacha20_Vec256.c, Hacl_SHA2_Vec256.c, Hacl_Poly1305_256.c, Hacl_Hash_Blake2b_256.c, Hacl_Chacha20Poly1305_256.c, Hacl_HMAC_Blake2b_256.c, Hacl_Streaming_Blake2b_256.c |
AVX2 requires AVX as well.