xref: /linux/lib/raid/xor/arm64/xor-neon-glue.c (revision 440d6635b20037bc9ad46b20817d7b61cef0fc1b)
13786f2adSChristoph Hellwig // SPDX-License-Identifier: GPL-2.0-only
23786f2adSChristoph Hellwig /*
33786f2adSChristoph Hellwig  * Authors: Jackie Liu <liuyun01@kylinos.cn>
43786f2adSChristoph Hellwig  * Copyright (C) 2018,Tianjin KYLIN Information Technology Co., Ltd.
53786f2adSChristoph Hellwig  */
63786f2adSChristoph Hellwig 
73786f2adSChristoph Hellwig #include <asm/simd.h>
8e20043b4SChristoph Hellwig #include "xor_impl.h"
9e20043b4SChristoph Hellwig #include "xor_arch.h"
10352ebd06SChristoph Hellwig #include "xor-neon.h"
113786f2adSChristoph Hellwig 
12352ebd06SChristoph Hellwig #define XOR_TEMPLATE(_name)						\
13*80dcf0a7SChristoph Hellwig static void xor_gen_##_name(void *dest, void **srcs, unsigned int src_cnt, \
14*80dcf0a7SChristoph Hellwig 		unsigned int bytes)					\
15352ebd06SChristoph Hellwig {									\
16352ebd06SChristoph Hellwig 	scoped_ksimd()							\
17*80dcf0a7SChristoph Hellwig 		xor_gen_##_name##_inner(dest, srcs, src_cnt, bytes);	\
18352ebd06SChristoph Hellwig }									\
19352ebd06SChristoph Hellwig 									\
20352ebd06SChristoph Hellwig struct xor_block_template xor_block_##_name = {				\
21352ebd06SChristoph Hellwig 	.name   	= __stringify(_name),				\
22*80dcf0a7SChristoph Hellwig 	.xor_gen	= xor_gen_##_name,				\
233786f2adSChristoph Hellwig };
24352ebd06SChristoph Hellwig 
25352ebd06SChristoph Hellwig XOR_TEMPLATE(neon);
26352ebd06SChristoph Hellwig XOR_TEMPLATE(eor3);
27