On Mon, Aug 19, 2019 at 05:15:00PM +0300, Ard Biesheuvel wrote: > 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: Nathan Chancellor <natechancellor@xxxxxxxxx> > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx> I am not familiar enough with vectors and such to confidently give a review but I can say this fixes the warning and doesn't introduce any new ones. Thank you for the fix! Tested-by: Nathan Chancellor <natechancellor@xxxxxxxxx>