/linux/Documentation/arch/arm/ |
H A D | kernel_mode_neon.rst | 2 Kernel mode NEON 7 * Use only NEON instructions, or VFP instructions that don't rely on support 9 * Isolate your NEON code in a separate compilation unit, and compile it with 10 '-march=armv7-a -mfpu=neon -mfloat-abi=softfp' 12 NEON code 13 * Don't sleep in your NEON code, and be aware that it will be executed with 19 It is possible to use NEON instructions (and in some cases, VFP instructions) in 20 code that runs in kernel mode. However, for performance reasons, the NEON/VFP 24 may call schedule()], as NEON or VFP instructions will be executed in a 30 The NEON/VFP register file is managed using lazy preserve (on UP systems) and [all …]
|
/linux/arch/arm/crypto/ |
H A D | Makefile | 9 obj-$(CONFIG_CRYPTO_SHA1_ARM_NEON) += sha1-arm-neon.o 13 obj-$(CONFIG_CRYPTO_BLAKE2B_NEON) += blake2b-neon.o 14 obj-$(CONFIG_CRYPTO_CHACHA20_NEON) += chacha-neon.o 16 obj-$(CONFIG_CRYPTO_NHPOLY1305_NEON) += nhpoly1305-neon.o 17 obj-$(CONFIG_CRYPTO_CURVE25519_NEON) += curve25519-neon.o 29 sha1-arm-neon-y := sha1-armv7-neon.o sha1_neon_glue.o 30 sha256-arm-neon-$(CONFIG_KERNEL_MODE_NEON) := sha256_neon_glue.o 31 sha256-arm-y := sha256-core.o sha256_glue.o $(sha256-arm-neon-y) 32 sha512-arm-neon-$(CONFIG_KERNEL_MODE_NEON) := sha512-neon-glue.o 33 sha512-arm-y := sha512-core.o sha512-glue.o $(sha512-arm-neon-y) [all …]
|
H A D | Kconfig | 6 tristate "Public key crypto: Curve25519 (NEON)" 14 - NEON (Advanced SIMD) extensions 17 tristate "Hash functions: GHASH (PMULL/NEON/ARMv8 Crypto Extensions)" 29 - NEON (Advanced SIMD) extensions 35 uses the vmull.p8 instruction that is part of the basic NEON ISA. 38 tristate "Hash functions: NHPoly1305 (NEON)" 45 - NEON (Advanced SIMD) extensions 48 tristate "Hash functions: Poly1305 (NEON)" 55 - NEON (Advanced SIMD) extensions 66 BLAKE2b, but slower than the NEON implementation of BLAKE2b. [all …]
|
H A D | blake2b-neon-glue.c | 3 * BLAKE2b digest algorithm, NEON accelerated 15 #include <asm/neon.h> 71 BLAKE2B_ALG("blake2b-160", "blake2b-160-neon", BLAKE2B_160_HASH_SIZE), 72 BLAKE2B_ALG("blake2b-256", "blake2b-256-neon", BLAKE2B_256_HASH_SIZE), 73 BLAKE2B_ALG("blake2b-384", "blake2b-384-neon", BLAKE2B_384_HASH_SIZE), 74 BLAKE2B_ALG("blake2b-512", "blake2b-512-neon", BLAKE2B_512_HASH_SIZE), 95 MODULE_DESCRIPTION("BLAKE2b digest algorithm, NEON accelerated"); 99 MODULE_ALIAS_CRYPTO("blake2b-160-neon"); 101 MODULE_ALIAS_CRYPTO("blake2b-256-neon"); 103 MODULE_ALIAS_CRYPTO("blake2b-384-neon"); [all …]
|
H A D | chacha-glue.c | 3 * ARM NEON accelerated ChaCha and XChaCha stream ciphers, 20 #include <asm/neon.h> 111 bool neon) in chacha_stream_xor() argument 127 if (!IS_ENABLED(CONFIG_KERNEL_MODE_NEON) || !neon) { in chacha_stream_xor() 143 static int do_chacha(struct skcipher_request *req, bool neon) in do_chacha() argument 148 return chacha_stream_xor(req, ctx, req->iv, neon); in do_chacha() 161 static int do_xchacha(struct skcipher_request *req, bool neon) in do_xchacha() argument 171 if (!IS_ENABLED(CONFIG_KERNEL_MODE_NEON) || !neon) { in do_xchacha() 182 return chacha_stream_xor(req, &subctx, real_iv, neon); in do_xchacha() 247 .base.cra_driver_name = "chacha20-neon", [all …]
|
H A D | sha512-neon-glue.c | 3 * sha512-neon-glue.c - accelerated SHA-384/512 for ARM NEON 16 #include <asm/neon.h> 20 MODULE_ALIAS_CRYPTO("sha384-neon"); 21 MODULE_ALIAS_CRYPTO("sha512-neon"); 72 .cra_driver_name = "sha384-neon", 87 .cra_driver_name = "sha512-neon",
|
H A D | nhpoly1305-neon-glue.c | 4 * (NEON accelerated version) 9 #include <asm/neon.h> 47 .base.cra_driver_name = "nhpoly1305-neon", 76 MODULE_DESCRIPTION("NHPoly1305 ε-almost-∆-universal hash function (NEON-accelerated)"); 80 MODULE_ALIAS_CRYPTO("nhpoly1305-neon");
|
H A D | sha256_neon_glue.c | 4 * using NEON instructions. 20 #include <asm/neon.h> 73 .cra_driver_name = "sha256-neon", 87 .cra_driver_name = "sha224-neon",
|
H A D | sha1_neon_glue.c | 4 * ARM NEON instructions. 24 #include <asm/neon.h> 77 .cra_driver_name = "sha1-neon", 101 MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm, NEON accelerated");
|
H A D | curve25519-glue.c | 11 #include <asm/neon.h> 104 .base.cra_driver_name = "curve25519-neon", 135 MODULE_ALIAS_CRYPTO("curve25519-neon"); 136 MODULE_DESCRIPTION("Public key crypto: Curve25519 (NEON-accelerated)");
|
H A D | crct10dif-ce-glue.c | 3 * Accelerated CRC-T10DIF using ARM NEON and Crypto Extensions instructions 17 #include <asm/neon.h> 87 MODULE_DESCRIPTION("Accelerated CRC-T10DIF using ARM NEON and Crypto Extensions");
|
/linux/arch/arm64/crypto/ |
H A D | Makefile | 20 obj-$(CONFIG_CRYPTO_SM3_NEON) += sm3-neon.o 21 sm3-neon-y := sm3-neon-glue.o sm3-neon-core.o 38 obj-$(CONFIG_CRYPTO_SM4_ARM64_NEON_BLK) += sm4-neon.o 39 sm4-neon-y := sm4-neon-glue.o sm4-neon-core.o 59 obj-$(CONFIG_CRYPTO_AES_ARM64_NEON_BLK) += aes-neon-blk.o 60 aes-neon-blk-y := aes-glue-neon.o aes-neon.o 68 obj-$(CONFIG_CRYPTO_CHACHA20_NEON) += chacha-neon.o 69 chacha-neon-y := chacha-neon-core.o chacha-neon-glue.o 71 obj-$(CONFIG_CRYPTO_POLY1305_NEON) += poly1305-neon.o 72 poly1305-neon-y := poly1305-core.o poly1305-glue.o [all …]
|
H A D | Kconfig | 19 tristate "Hash functions: NHPoly1305 (NEON)" 26 - NEON (Advanced SIMD) extensions 29 tristate "Hash functions: Poly1305 (NEON)" 37 - NEON (Advanced SIMD) extensions 100 tristate "Hash functions: SM3 (NEON)" 108 - NEON (Advanced SIMD) extensions 172 tristate "Ciphers: AES, modes: ECB/CBC/CTR/XTS (NEON)" 186 - NEON (Advanced SIMD) extensions 189 tristate "Ciphers: ChaCha (NEON)" 199 - NEON (Advanced SIMD) extensions [all …]
|
H A D | chacha-neon-glue.c | 2 * ARM NEON and scalar accelerated ChaCha and XChaCha stream ciphers, 31 #include <asm/neon.h> 166 .base.cra_driver_name = "chacha20-neon", 182 .base.cra_driver_name = "xchacha20-neon", 198 .base.cra_driver_name = "xchacha12-neon", 235 MODULE_DESCRIPTION("ChaCha and XChaCha stream ciphers (NEON accelerated)"); 239 MODULE_ALIAS_CRYPTO("chacha20-neon"); 241 MODULE_ALIAS_CRYPTO("xchacha20-neon"); 243 MODULE_ALIAS_CRYPTO("xchacha12-neon");
|
H A D | nhpoly1305-neon-glue.c | 4 * (ARM64 NEON accelerated version) 9 #include <asm/neon.h> 47 .base.cra_driver_name = "nhpoly1305-neon", 76 MODULE_DESCRIPTION("NHPoly1305 ε-almost-∆-universal hash function (NEON-accelerated)"); 80 MODULE_ALIAS_CRYPTO("nhpoly1305-neon");
|
H A D | sm3-neon-glue.c | 3 * sm3-neon-glue.c - SM3 secure hash using NEON instructions 8 #include <asm/neon.h> 81 .base.cra_driver_name = "sm3-neon", 100 MODULE_DESCRIPTION("SM3 secure hash using NEON instructions");
|
H A D | sm4-neon-glue.c | 3 * SM4 Cipher Algorithm, using ARMv8 NEON 15 #include <asm/neon.h> 192 .cra_driver_name = "ecb-sm4-neon", 206 .cra_driver_name = "cbc-sm4-neon", 221 .cra_driver_name = "ctr-sm4-neon", 250 MODULE_DESCRIPTION("SM4 ECB/CBC/CTR using ARMv8 NEON"); 251 MODULE_ALIAS_CRYPTO("sm4-neon");
|
H A D | crct10dif-ce-glue.c | 3 * Accelerated CRC-T10DIF using arm64 NEON and Crypto Extensions instructions 18 #include <asm/neon.h> 100 .base.cra_driver_name = "crct10dif-arm64-neon", 141 MODULE_DESCRIPTION("CRC-T10DIF using arm64 NEON and Crypto Extensions");
|
/linux/arch/arm/include/asm/ |
H A D | neon.h | 3 * linux/arch/arm/include/asm/neon.h 16 * using NEON code /and/ calling the kernel_neon_begin() function from the same 18 * generating(1) NEON instructions outside of these begin/end functions, the 19 * only supported way of using NEON code in the kernel is by isolating it in a 23 * (1) Current GCC (4.7) might generate NEON instructions at O3 level if 24 * -mpfu=neon is set. 28 BUILD_BUG_ON_MSG(1, "kernel_neon_begin() called from NEON code")
|
/linux/lib/raid6/ |
H A D | neon.c | 3 * linux/lib/raid6/neon.c - RAID6 syndrome calculation using ARM NEON intrinsics 11 #include <asm/neon.h> 20 * from the actual implementations in neonN.c (generated from neon.uc by 22 * - the actual implementations use NEON intrinsics, and the GCC support header 24 * - the neonN.c files are compiled with -mfpu=neon and optimization enabled, 25 * and we have to make sure that we never use *any* NEON/VFP instructions
|
H A D | Makefile | 10 raid6_pq-$(CONFIG_KERNEL_MODE_NEON) += neon.o neon1.o neon2.o neon4.o neon8.o recov_neon.o recov_neon_inner.o 70 $(obj)/neon%.c: $(src)/neon.uc $(src)/unroll.awk FORCE
|
H A D | neon.uc | 3 * neon.uc - RAID-6 syndrome calculation using ARM NEON instructions 20 * neon$#.c 22 * $#-way unrolled NEON intrinsics math RAID-6 instruction set 28 #include "neon.h"
|
/linux/lib/raid6/test/ |
H A D | Makefile | 30 CFLAGS += -I../../../arch/arm/include -mfpu=neon 61 OBJS += neon.o neon1.o neon2.o neon4.o neon8.o recov_neon.o recov_neon_inner.o 90 neon1.c: neon.uc ../unroll.awk 91 $(AWK) ../unroll.awk -vN=1 < neon.uc > $@ 93 neon2.c: neon.uc ../unroll.awk 94 $(AWK) ../unroll.awk -vN=2 < neon.uc > $@ 96 neon4.c: neon.uc ../unroll.awk 97 $(AWK) ../unroll.awk -vN=4 < neon.uc > $@ 99 neon8.c: neon.uc ../unroll.awk 100 $(AWK) ../unroll.awk -vN=8 < neon.uc > $@ [all …]
|
/linux/arch/arm/lib/ |
H A D | xor-neon.c | 3 * linux/arch/arm/lib/xor-neon.c 11 MODULE_DESCRIPTION("NEON accelerated XOR implementation"); 15 #error You should compile this file with '-march=armv7-a -mfloat-abi=softfp -mfpu=neon' 21 * NEON instructions. Clang does this by default at O2 so no pragma is
|
/linux/crypto/ |
H A D | Makefile | 105 CFLAGS_aegis128-neon-inner.o += -ffreestanding -march=armv8-a -mfloat-abi=softfp 106 CFLAGS_aegis128-neon-inner.o += -mfpu=crypto-neon-fp-armv8 107 aegis128-$(CONFIG_CRYPTO_AEGIS128_SIMD) += aegis128-neon.o aegis128-neon-inner.o 117 CFLAGS_aegis128-neon-inner.o += $(aegis128-cflags-y) 118 CFLAGS_REMOVE_aegis128-neon-inner.o += -mgeneral-regs-only 119 aegis128-$(CONFIG_CRYPTO_AEGIS128_SIMD) += aegis128-neon.o aegis128-neon-inner.o 122 CFLAGS_aegis128-neon-inner.o += -isystem $(shell $(CC) -print-file-name=include)
|