[PATCH v10 7/9] powerpc64: Add optimized chacha20
Paul E Murphy
murphyp@linux.ibm.com
Fri Jul 15 19:48:45 GMT 2022
On 7/14/22 6:28 AM, Adhemerval Zanella via Libc-alpha wrote:
> From: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>
> +++ b/sysdeps/powerpc/powerpc64/be/multiarch/chacha20_arch.h
> @@ -0,0 +1,42 @@
> +/* PowerPC optimization for ChaCha20.
> + Copyright (C) 2022 Free Software Foundation, Inc.
> + This file is part of the GNU C Library.
> +
> + The GNU C Library is free software; you can redistribute it and/or
> + modify it under the terms of the GNU Lesser General Public
> + License as published by the Free Software Foundation; either
> + version 2.1 of the License, or (at your option) any later version.
> +
> + The GNU C Library is distributed in the hope that it will be useful,
> + but WITHOUT ANY WARRANTY; without even the implied warranty of
> + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + Lesser General Public License for more details.
> +
> + You should have received a copy of the GNU Lesser General Public
> + License along with the GNU C Library; if not, see
> + <http://www.gnu.org/licenses/>. */
> +
> +#include <stdbool.h>
> +#include <ldsodefs.h>
> +
> +unsigned int __chacha20_power8_blocks4 (uint32_t *state, uint8_t *dst,
> + const uint8_t *src, size_t nblks)
> + attribute_hidden;
> +
> +static void
> +chacha20_crypt (uint32_t *state, uint8_t *dst,
> + const uint8_t *src, size_t bytes)
> +{
> + _Static_assert (CHACHA20_BUFSIZE % 4 == 0,
> + "CHACHA20_BUFSIZE not multiple of 4");
> + _Static_assert (CHACHA20_BUFSIZE >= CHACHA20_BLOCK_SIZE * 4,
> + "CHACHA20_BUFSIZE < CHACHA20_BLOCK_SIZE * 4");
> +
> + unsigned long int hwcap = GLRO(dl_hwcap);
> + unsigned long int hwcap2 = GLRO(dl_hwcap2);
> + if (hwcap2 & PPC_FEATURE2_ARCH_2_07 && hwcap & PPC_FEATURE_HAS_ALTIVEC)
> + __chacha20_power8_blocks4 (state, dst, src,
> + CHACHA20_BUFSIZE / CHACHA20_BLOCK_SIZE);
> + else
> + chacha20_crypt_generic (state, dst, src, bytes);
> +}
I wonder if using libc_ifunc_hidden and such might simplify this a
little. I don't feel strongly about this. I think this patch is OK as
is. LGTM.
Reviewed-by: Paul E. Murphy <murphyp@linux.ibm.com>
More information about the Libc-alpha
mailing list