• Ard Biesheuvel's avatar
    crypto: arm64/aegis128 - use explicit vector load for permute vectors · 389139b3
    Ard Biesheuvel authored
    
    
    When building the new aegis128 NEON code in big endian mode, Clang
    complains about the const uint8x16_t permute vectors in the following
    way:
    
      crypto/aegis128-neon-inner.c:58:40: warning: vector initializers are not
          compatible with NEON intrinsics in big endian mode
          [-Wnonportable-vector-initialization]
                    static const uint8x16_t shift_rows = {
                                                         ^
      crypto/aegis128-neon-inner.c:58:40: note: consider using vld1q_u8() to
          initialize a vector from memory, or vcombine_u8(vcreate_u8(), vcreate_u8())
          to initialize from integer constants
    
    Since the same issue applies to the uint8x16x4_t loads of the AES Sbox,
    update those references as well. However, since GCC does not implement
    the vld1q_u8_x4() intrinsic, switch from IS_ENABLED() to a preprocessor
    conditional to conditionally include this code.
    Reported-by: default avatarNathan Chancellor <natechancellor@gmail.com>
    ...
    389139b3
aegis128-neon-inner.c 5.12 KB