mirror of
https://github.com/python/cpython.git
synced 2025-12-08 06:10:17 +00:00
[3.14] gh-135755: rename undocumented HACL_CAN_COMPILE_SIMD{128,256} macros (GH-135847) (#136045)
Rename undocumented `HACL_CAN_COMPILE_SIMD{128,256}` macros
to `_Py_HACL_CAN_COMPILE_VEC{128,256}`. These macros are private.
(cherry picked from commit 1e975aee28)
This commit is contained in:
parent
eff347ccc3
commit
70280953d2
6 changed files with 67 additions and 60 deletions
|
|
@ -43,12 +43,11 @@
|
|||
|
||||
// SIMD256 can't be compiled on macOS ARM64, and performance of SIMD128 isn't
|
||||
// great; but when compiling a universal2 binary, autoconf will set
|
||||
// HACL_CAN_COMPILE_SIMD128 and HACL_CAN_COMPILE_SIMD256 because they *can* be
|
||||
// compiled on x86_64. If we're on macOS ARM64, disable these preprocessor
|
||||
// symbols.
|
||||
// _Py_HACL_CAN_COMPILE_VEC{128,256} because they *can* be compiled on x86_64.
|
||||
// If we're on macOS ARM64, we however disable these preprocessor symbols.
|
||||
#if defined(__APPLE__) && defined(__arm64__)
|
||||
# undef HACL_CAN_COMPILE_SIMD128
|
||||
# undef HACL_CAN_COMPILE_SIMD256
|
||||
# undef _Py_HACL_CAN_COMPILE_VEC128
|
||||
# undef _Py_HACL_CAN_COMPILE_VEC256
|
||||
#endif
|
||||
|
||||
// ECX
|
||||
|
|
@ -114,31 +113,32 @@ void detect_cpu_features(cpu_flags *flags) {
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef HACL_CAN_COMPILE_SIMD128
|
||||
#if _Py_HACL_CAN_COMPILE_VEC128
|
||||
static inline bool has_simd128(cpu_flags *flags) {
|
||||
// For now this is Intel-only, could conceivably be #ifdef'd to something
|
||||
// For now this is Intel-only, could conceivably be if'd to something
|
||||
// else.
|
||||
return flags->sse && flags->sse2 && flags->sse3 && flags->sse41 && flags->sse42 && flags->cmov;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HACL_CAN_COMPILE_SIMD256
|
||||
#if _Py_HACL_CAN_COMPILE_VEC256
|
||||
static inline bool has_simd256(cpu_flags *flags) {
|
||||
return flags->avx && flags->avx2;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Small mismatch between the variable names Python defines as part of configure
|
||||
// at the ones HACL* expects to be set in order to enable those headers.
|
||||
#define HACL_CAN_COMPILE_VEC128 HACL_CAN_COMPILE_SIMD128
|
||||
#define HACL_CAN_COMPILE_VEC256 HACL_CAN_COMPILE_SIMD256
|
||||
// HACL* expects HACL_CAN_COMPILE_VEC* macros to be set in order to enable
|
||||
// the corresponding SIMD instructions so we need to "forward" the values
|
||||
// we just deduced above.
|
||||
#define HACL_CAN_COMPILE_VEC128 _Py_HACL_CAN_COMPILE_VEC128
|
||||
#define HACL_CAN_COMPILE_VEC256 _Py_HACL_CAN_COMPILE_VEC256
|
||||
|
||||
#include "_hacl/Hacl_Hash_Blake2b.h"
|
||||
#include "_hacl/Hacl_Hash_Blake2s.h"
|
||||
#if HACL_CAN_COMPILE_SIMD256
|
||||
#if _Py_HACL_CAN_COMPILE_VEC256
|
||||
#include "_hacl/Hacl_Hash_Blake2b_Simd256.h"
|
||||
#endif
|
||||
#if HACL_CAN_COMPILE_SIMD128
|
||||
#if _Py_HACL_CAN_COMPILE_VEC128
|
||||
#include "_hacl/Hacl_Hash_Blake2s_Simd128.h"
|
||||
#endif
|
||||
|
||||
|
|
@ -165,7 +165,7 @@ blake2_get_state(PyObject *module)
|
|||
return (Blake2State *)state;
|
||||
}
|
||||
|
||||
#if defined(HACL_CAN_COMPILE_SIMD128) || defined(HACL_CAN_COMPILE_SIMD256)
|
||||
#if defined(_Py_HACL_CAN_COMPILE_VEC128) || defined(_Py_HACL_CAN_COMPILE_VEC256)
|
||||
static inline Blake2State*
|
||||
blake2_get_state_from_type(PyTypeObject *module)
|
||||
{
|
||||
|
|
@ -329,18 +329,18 @@ static inline bool is_blake2s(blake2_impl impl) {
|
|||
}
|
||||
|
||||
static inline blake2_impl type_to_impl(PyTypeObject *type) {
|
||||
#if defined(HACL_CAN_COMPILE_SIMD128) || defined(HACL_CAN_COMPILE_SIMD256)
|
||||
#if defined(_Py_HACL_CAN_COMPILE_VEC128) || defined(_Py_HACL_CAN_COMPILE_VEC256)
|
||||
Blake2State* st = blake2_get_state_from_type(type);
|
||||
#endif
|
||||
if (!strcmp(type->tp_name, blake2b_type_spec.name)) {
|
||||
#ifdef HACL_CAN_COMPILE_SIMD256
|
||||
#if _Py_HACL_CAN_COMPILE_VEC256
|
||||
if (has_simd256(&st->flags))
|
||||
return Blake2b_256;
|
||||
else
|
||||
#endif
|
||||
return Blake2b;
|
||||
} else if (!strcmp(type->tp_name, blake2s_type_spec.name)) {
|
||||
#ifdef HACL_CAN_COMPILE_SIMD128
|
||||
#if _Py_HACL_CAN_COMPILE_VEC128
|
||||
if (has_simd128(&st->flags))
|
||||
return Blake2s_128;
|
||||
else
|
||||
|
|
@ -356,10 +356,10 @@ typedef struct {
|
|||
union {
|
||||
Hacl_Hash_Blake2s_state_t *blake2s_state;
|
||||
Hacl_Hash_Blake2b_state_t *blake2b_state;
|
||||
#ifdef HACL_CAN_COMPILE_SIMD128
|
||||
#if _Py_HACL_CAN_COMPILE_VEC128
|
||||
Hacl_Hash_Blake2s_Simd128_state_t *blake2s_128_state;
|
||||
#endif
|
||||
#ifdef HACL_CAN_COMPILE_SIMD256
|
||||
#if _Py_HACL_CAN_COMPILE_VEC256
|
||||
Hacl_Hash_Blake2b_Simd256_state_t *blake2b_256_state;
|
||||
#endif
|
||||
};
|
||||
|
|
@ -425,14 +425,14 @@ static void
|
|||
update(Blake2Object *self, uint8_t *buf, Py_ssize_t len)
|
||||
{
|
||||
switch (self->impl) {
|
||||
// These need to be ifdef'd out otherwise it's an unresolved symbol at
|
||||
// link-time.
|
||||
#ifdef HACL_CAN_COMPILE_SIMD256
|
||||
// blake2b_256_state and blake2s_128_state must be if'd since
|
||||
// otherwise this results in an unresolved symbol at link-time.
|
||||
#if _Py_HACL_CAN_COMPILE_VEC256
|
||||
case Blake2b_256:
|
||||
HACL_UPDATE(Hacl_Hash_Blake2b_Simd256_update,self->blake2b_256_state, buf, len);
|
||||
return;
|
||||
#endif
|
||||
#ifdef HACL_CAN_COMPILE_SIMD128
|
||||
#if _Py_HACL_CAN_COMPILE_VEC128
|
||||
case Blake2s_128:
|
||||
HACL_UPDATE(Hacl_Hash_Blake2s_Simd128_update,self->blake2s_128_state, buf, len);
|
||||
return;
|
||||
|
|
@ -468,12 +468,12 @@ py_blake2b_or_s_new(PyTypeObject *type, PyObject *data, int digest_size,
|
|||
// Ensure that the states are NULL-initialized in case of an error.
|
||||
// See: py_blake2_clear() for more details.
|
||||
switch (self->impl) {
|
||||
#if HACL_CAN_COMPILE_SIMD256
|
||||
#if _Py_HACL_CAN_COMPILE_VEC256
|
||||
case Blake2b_256:
|
||||
self->blake2b_256_state = NULL;
|
||||
break;
|
||||
#endif
|
||||
#if HACL_CAN_COMPILE_SIMD128
|
||||
#if _Py_HACL_CAN_COMPILE_VEC128
|
||||
case Blake2s_128:
|
||||
self->blake2s_128_state = NULL;
|
||||
break;
|
||||
|
|
@ -591,7 +591,7 @@ py_blake2b_or_s_new(PyTypeObject *type, PyObject *data, int digest_size,
|
|||
};
|
||||
|
||||
switch (self->impl) {
|
||||
#if HACL_CAN_COMPILE_SIMD256
|
||||
#if _Py_HACL_CAN_COMPILE_VEC256
|
||||
case Blake2b_256: {
|
||||
self->blake2b_256_state = Hacl_Hash_Blake2b_Simd256_malloc_with_params_and_key(¶ms, last_node, key->buf);
|
||||
if (self->blake2b_256_state == NULL) {
|
||||
|
|
@ -601,7 +601,7 @@ py_blake2b_or_s_new(PyTypeObject *type, PyObject *data, int digest_size,
|
|||
break;
|
||||
}
|
||||
#endif
|
||||
#if HACL_CAN_COMPILE_SIMD128
|
||||
#if _Py_HACL_CAN_COMPILE_VEC128
|
||||
case Blake2s_128: {
|
||||
self->blake2s_128_state = Hacl_Hash_Blake2s_Simd128_malloc_with_params_and_key(¶ms, last_node, key->buf);
|
||||
if (self->blake2s_128_state == NULL) {
|
||||
|
|
@ -733,7 +733,7 @@ blake2_blake2b_copy_locked(Blake2Object *self, Blake2Object *cpy)
|
|||
{
|
||||
assert(cpy != NULL);
|
||||
switch (self->impl) {
|
||||
#if HACL_CAN_COMPILE_SIMD256
|
||||
#if _Py_HACL_CAN_COMPILE_VEC256
|
||||
case Blake2b_256: {
|
||||
cpy->blake2b_256_state = Hacl_Hash_Blake2b_Simd256_copy(self->blake2b_256_state);
|
||||
if (cpy->blake2b_256_state == NULL) {
|
||||
|
|
@ -742,7 +742,7 @@ blake2_blake2b_copy_locked(Blake2Object *self, Blake2Object *cpy)
|
|||
break;
|
||||
}
|
||||
#endif
|
||||
#if HACL_CAN_COMPILE_SIMD128
|
||||
#if _Py_HACL_CAN_COMPILE_VEC128
|
||||
case Blake2s_128: {
|
||||
cpy->blake2s_128_state = Hacl_Hash_Blake2s_Simd128_copy(self->blake2s_128_state);
|
||||
if (cpy->blake2s_128_state == NULL) {
|
||||
|
|
@ -853,12 +853,12 @@ _blake2_blake2b_digest_impl(Blake2Object *self)
|
|||
ENTER_HASHLIB(self);
|
||||
uint8_t digest_length = 0;
|
||||
switch (self->impl) {
|
||||
#if HACL_CAN_COMPILE_SIMD256
|
||||
#if _Py_HACL_CAN_COMPILE_VEC256
|
||||
case Blake2b_256:
|
||||
digest_length = Hacl_Hash_Blake2b_Simd256_digest(self->blake2b_256_state, digest);
|
||||
break;
|
||||
#endif
|
||||
#if HACL_CAN_COMPILE_SIMD128
|
||||
#if _Py_HACL_CAN_COMPILE_VEC128
|
||||
case Blake2s_128:
|
||||
digest_length = Hacl_Hash_Blake2s_Simd128_digest(self->blake2s_128_state, digest);
|
||||
break;
|
||||
|
|
@ -891,12 +891,12 @@ _blake2_blake2b_hexdigest_impl(Blake2Object *self)
|
|||
ENTER_HASHLIB(self);
|
||||
uint8_t digest_length = 0;
|
||||
switch (self->impl) {
|
||||
#if HACL_CAN_COMPILE_SIMD256
|
||||
#if _Py_HACL_CAN_COMPILE_VEC256
|
||||
case Blake2b_256:
|
||||
digest_length = Hacl_Hash_Blake2b_Simd256_digest(self->blake2b_256_state, digest);
|
||||
break;
|
||||
#endif
|
||||
#if HACL_CAN_COMPILE_SIMD128
|
||||
#if _Py_HACL_CAN_COMPILE_VEC128
|
||||
case Blake2s_128:
|
||||
digest_length = Hacl_Hash_Blake2s_Simd128_digest(self->blake2s_128_state, digest);
|
||||
break;
|
||||
|
|
@ -947,11 +947,11 @@ py_blake2b_get_digest_size(PyObject *op, void *Py_UNUSED(closure))
|
|||
{
|
||||
Blake2Object *self = _Blake2Object_CAST(op);
|
||||
switch (self->impl) {
|
||||
#if HACL_CAN_COMPILE_SIMD256
|
||||
#if _Py_HACL_CAN_COMPILE_VEC256
|
||||
case Blake2b_256:
|
||||
return PyLong_FromLong(Hacl_Hash_Blake2b_Simd256_info(self->blake2b_256_state).digest_length);
|
||||
#endif
|
||||
#if HACL_CAN_COMPILE_SIMD128
|
||||
#if _Py_HACL_CAN_COMPILE_VEC128
|
||||
case Blake2s_128:
|
||||
return PyLong_FromLong(Hacl_Hash_Blake2s_Simd128_info(self->blake2s_128_state).digest_length);
|
||||
#endif
|
||||
|
|
@ -982,7 +982,7 @@ py_blake2_clear(PyObject *op)
|
|||
// it. If an error occurs in the constructor, we should only free
|
||||
// states that were allocated (i.e. that are not NULL).
|
||||
switch (self->impl) {
|
||||
#if HACL_CAN_COMPILE_SIMD256
|
||||
#if _Py_HACL_CAN_COMPILE_VEC256
|
||||
case Blake2b_256:
|
||||
if (self->blake2b_256_state != NULL) {
|
||||
Hacl_Hash_Blake2b_Simd256_free(self->blake2b_256_state);
|
||||
|
|
@ -990,7 +990,7 @@ py_blake2_clear(PyObject *op)
|
|||
}
|
||||
break;
|
||||
#endif
|
||||
#if HACL_CAN_COMPILE_SIMD128
|
||||
#if _Py_HACL_CAN_COMPILE_VEC128
|
||||
case Blake2s_128:
|
||||
if (self->blake2s_128_state != NULL) {
|
||||
Hacl_Hash_Blake2s_Simd128_free(self->blake2s_128_state);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue