Module Name: src Committed By: riastradh Date: Sun Aug 9 02:48:38 UTC 2020
Modified Files: src/sys/crypto/aes/arch/arm: aes_neon_subr.c arm_neon.h src/sys/crypto/chacha/arch/arm: arm_neon.h Log Message: Use vshlq_n_s32 rather than vsliq_n_s32 with zero destination. Not sure why I reached for vsliq_n_s32 at first -- probably so I wouldn't have to deal with a new intrinsic in arm_neon.h! To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/crypto/aes/arch/arm/aes_neon_subr.c cvs rdiff -u -r1.8 -r1.9 src/sys/crypto/aes/arch/arm/arm_neon.h cvs rdiff -u -r1.4 -r1.5 src/sys/crypto/chacha/arch/arm/arm_neon.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/crypto/aes/arch/arm/aes_neon_subr.c diff -u src/sys/crypto/aes/arch/arm/aes_neon_subr.c:1.6 src/sys/crypto/aes/arch/arm/aes_neon_subr.c:1.7 --- src/sys/crypto/aes/arch/arm/aes_neon_subr.c:1.6 Sun Aug 9 02:00:57 2020 +++ src/sys/crypto/aes/arch/arm/aes_neon_subr.c Sun Aug 9 02:48:38 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: aes_neon_subr.c,v 1.6 2020/08/09 02:00:57 riastradh Exp $ */ +/* $NetBSD: aes_neon_subr.c,v 1.7 2020/08/09 02:48:38 riastradh Exp $ */ /*- * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: aes_neon_subr.c,v 1.6 2020/08/09 02:00:57 riastradh Exp $"); +__KERNEL_RCSID(1, "$NetBSD: aes_neon_subr.c,v 1.7 2020/08/09 02:48:38 riastradh Exp $"); #ifdef _KERNEL #include <sys/systm.h> @@ -151,7 +151,7 @@ aes_neon_xts_update(uint8x16_t t8) t = vreinterpretq_s32_u8(t8); mask = vcltq_s32(t, zero); /* -1 if high bit set else 0 */ mask = vextq_u32(mask, mask, 3); /* rotate quarters */ - t_ = vsliq_n_s32(zero, t, 1); /* shift */ + t_ = vshlq_n_s32(t, 1); /* shift */ t_ ^= carry & mask; return vreinterpretq_u8_s32(t_); Index: src/sys/crypto/aes/arch/arm/arm_neon.h diff -u src/sys/crypto/aes/arch/arm/arm_neon.h:1.8 src/sys/crypto/aes/arch/arm/arm_neon.h:1.9 --- src/sys/crypto/aes/arch/arm/arm_neon.h:1.8 Sat Aug 8 14:47:01 2020 +++ src/sys/crypto/aes/arch/arm/arm_neon.h Sun Aug 9 02:48:38 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: arm_neon.h,v 1.8 2020/08/08 14:47:01 riastradh Exp $ */ +/* $NetBSD: arm_neon.h,v 1.9 2020/08/09 02:48:38 riastradh Exp $ */ /*- * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -466,6 +466,22 @@ vsetq_lane_u64(uint64_t __x, uint64x2_t #if defined(__GNUC__) && !defined(__clang__) _INTRINSATTR +static __inline int32x4_t +vshlq_n_s32(int32x4_t __v, uint8_t __bits) +{ +#ifdef __aarch64__ + return (int32x4_t)__builtin_aarch64_ashlv4si(__v, __bits); +#else + return (int32x4_t)__builtin_neon_vshl_nv4si(__v, __bits); +#endif +} +#elif defined(__clang__) +#define vshlq_n_s32(__v, __bits) \ + (int32x4_t)__builtin_neon_vshlq_n_v((int32x4_t)(__v), (__bits), 34) +#endif + +#if defined(__GNUC__) && !defined(__clang__) +_INTRINSATTR static __inline uint32x4_t vshlq_n_u32(uint32x4_t __v, uint8_t __bits) { Index: src/sys/crypto/chacha/arch/arm/arm_neon.h diff -u src/sys/crypto/chacha/arch/arm/arm_neon.h:1.4 src/sys/crypto/chacha/arch/arm/arm_neon.h:1.5 --- src/sys/crypto/chacha/arch/arm/arm_neon.h:1.4 Sat Aug 8 14:47:01 2020 +++ src/sys/crypto/chacha/arch/arm/arm_neon.h Sun Aug 9 02:48:38 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: arm_neon.h,v 1.4 2020/08/08 14:47:01 riastradh Exp $ */ +/* $NetBSD: arm_neon.h,v 1.5 2020/08/09 02:48:38 riastradh Exp $ */ /*- * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -466,6 +466,22 @@ vsetq_lane_u64(uint64_t __x, uint64x2_t #if defined(__GNUC__) && !defined(__clang__) _INTRINSATTR +static __inline int32x4_t +vshlq_n_s32(int32x4_t __v, uint8_t __bits) +{ +#ifdef __aarch64__ + return (int32x4_t)__builtin_aarch64_ashlv4si(__v, __bits); +#else + return (int32x4_t)__builtin_neon_vshl_nv4si(__v, __bits); +#endif +} +#elif defined(__clang__) +#define vshlq_n_s32(__v, __bits) \ + (int32x4_t)__builtin_neon_vshlq_n_v((int32x4_t)(__v), (__bits), 34) +#endif + +#if defined(__GNUC__) && !defined(__clang__) +_INTRINSATTR static __inline uint32x4_t vshlq_n_u32(uint32x4_t __v, uint8_t __bits) {