Home GnuPG

ppc: avoid using vec_vsx_ld/vec_vsx_st for 2x64-bit vectors

Description

ppc: avoid using vec_vsx_ld/vec_vsx_st for 2x64-bit vectors

* cipher/crc-ppc.c (CRC_VEC_U64_LOAD, CRC_VEC_U64_LOAD_LE)
(CRC_VEC_U64_LOAD_BE): Remove vec_vsx_ld usage.
(asm_vec_u64_load, asm_vec_u64_load_le): New.
* cipher/sha512-ppc.c (vec_vshasigma_u64): Use '__asm__' instead of
'asm' for assembly block.
(vec_u64_load, vec_u64_store): New.
(_gcry_sha512_transform_ppc8): Use vec_u64_load/store instead of
vec_vsx_ld/vec_vsx_st.
* configure.ac (gcy_cv_cc_ppc_altivec)
(gcy_cv_cc_ppc_altivec_cflags): Add check for vec_vsx_ld with
'unsigned int *' pointer type.

GCC 7.5 and clang 8.0 do not support vec_vsx_ld with 'unsigned long long *'
pointer type. Switch code to use inline assembly instead. As vec_vsx_ld
is still used with 'unsigned int *' pointers, add new check for this in
configure.ac.

  • GnuPG-bug-id: T4906
  • Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>

Details

Provenance
jukiviliAuthored on Apr 4 2020, 10:06 AM
Parents
rC89b3ded8df96: asm-poly1305-aarch64: fix building with clang
Branches
Unknown
Tags
Unknown
Tasks
T4906: error: call to 'vec_vsx_ld' is ambiguous