blob: 37d05c11d09cda74709e7936d27f86208bfcec9a [file] [log] [blame]
Thomas Gleixner1a59d1b82019-05-27 08:55:05 +02001/* SPDX-License-Identifier: GPL-2.0-or-later */
Anton Blanchardef1313d2013-10-14 21:03:58 +11002/*
Anton Blanchardef1313d2013-10-14 21:03:58 +11003 *
4 * Copyright (C) IBM Corporation, 2012
5 *
6 * Author: Anton Blanchard <anton@au.ibm.com>
7 */
8#ifndef _ASM_POWERPC_XOR_H
9#define _ASM_POWERPC_XOR_H
10
11#ifdef CONFIG_ALTIVEC
12
13#include <asm/cputable.h>
Kevin Haob92a2262016-07-23 14:42:40 +053014#include <asm/cpu_has_feature.h>
Mathieu Malaterre7cf76a62018-03-28 20:55:25 +020015#include <asm/xor_altivec.h>
Anton Blanchardef1313d2013-10-14 21:03:58 +110016
17static struct xor_block_template xor_block_altivec = {
18 .name = "altivec",
19 .do_2 = xor_altivec_2,
20 .do_3 = xor_altivec_3,
21 .do_4 = xor_altivec_4,
22 .do_5 = xor_altivec_5,
23};
24
25#define XOR_SPEED_ALTIVEC() \
26 do { \
27 if (cpu_has_feature(CPU_FTR_ALTIVEC)) \
28 xor_speed(&xor_block_altivec); \
29 } while (0)
30#else
31#define XOR_SPEED_ALTIVEC()
32#endif
33
34/* Also try the generic routines. */
Linus Torvalds1da177e2005-04-16 15:20:36 -070035#include <asm-generic/xor.h>
Anton Blanchardef1313d2013-10-14 21:03:58 +110036
37#undef XOR_TRY_TEMPLATES
38#define XOR_TRY_TEMPLATES \
39do { \
40 xor_speed(&xor_block_8regs); \
41 xor_speed(&xor_block_8regs_p); \
42 xor_speed(&xor_block_32regs); \
43 xor_speed(&xor_block_32regs_p); \
44 XOR_SPEED_ALTIVEC(); \
45} while (0)
46
47#endif /* _ASM_POWERPC_XOR_H */