10d64a24eSChristoph Hellwig // SPDX-License-Identifier: GPL-2.0-only 20d64a24eSChristoph Hellwig /* 30d64a24eSChristoph Hellwig * Copyright (C) 2013 Linaro Ltd <ard.biesheuvel@linaro.org> 40d64a24eSChristoph Hellwig */ 50d64a24eSChristoph Hellwig 6e20043b4SChristoph Hellwig #include "xor_impl.h" 7*80dcf0a7SChristoph Hellwig #include "xor_arch.h" 80d64a24eSChristoph Hellwig 90d64a24eSChristoph Hellwig #ifndef __ARM_NEON__ 100d64a24eSChristoph Hellwig #error You should compile this file with '-march=armv7-a -mfloat-abi=softfp -mfpu=neon' 110d64a24eSChristoph Hellwig #endif 120d64a24eSChristoph Hellwig 130d64a24eSChristoph Hellwig /* 140d64a24eSChristoph Hellwig * Pull in the reference implementations while instructing GCC (through 150d64a24eSChristoph Hellwig * -ftree-vectorize) to attempt to exploit implicit parallelism and emit 160d64a24eSChristoph Hellwig * NEON instructions. Clang does this by default at O2 so no pragma is 170d64a24eSChristoph Hellwig * needed. 180d64a24eSChristoph Hellwig */ 190d64a24eSChristoph Hellwig #ifdef CONFIG_CC_IS_GCC 200d64a24eSChristoph Hellwig #pragma GCC optimize "tree-vectorize" 210d64a24eSChristoph Hellwig #endif 220d64a24eSChristoph Hellwig 230d64a24eSChristoph Hellwig #define NO_TEMPLATE 240d64a24eSChristoph Hellwig #include "../xor-8regs.c" 250d64a24eSChristoph Hellwig 26*80dcf0a7SChristoph Hellwig __DO_XOR_BLOCKS(neon_inner, xor_8regs_2, xor_8regs_3, xor_8regs_4, xor_8regs_5); 27