11a59d1b8SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 2ef1313deSAnton Blanchard /* 3ef1313deSAnton Blanchard * 4ef1313deSAnton Blanchard * Copyright (C) IBM Corporation, 2012 5ef1313deSAnton Blanchard * 6ef1313deSAnton Blanchard * Author: Anton Blanchard <anton@au.ibm.com> 7ef1313deSAnton Blanchard */ 8ef1313deSAnton Blanchard #ifndef _ASM_POWERPC_XOR_H 9ef1313deSAnton Blanchard #define _ASM_POWERPC_XOR_H 10ef1313deSAnton Blanchard 11ef1313deSAnton Blanchard #ifdef CONFIG_ALTIVEC 12ef1313deSAnton Blanchard 13ef1313deSAnton Blanchard #include <asm/cputable.h> 14b92a226eSKevin Hao #include <asm/cpu_has_feature.h> 157cf76a68SMathieu Malaterre #include <asm/xor_altivec.h> 16ef1313deSAnton Blanchard 17ef1313deSAnton Blanchard static struct xor_block_template xor_block_altivec = { 18ef1313deSAnton Blanchard .name = "altivec", 19ef1313deSAnton Blanchard .do_2 = xor_altivec_2, 20ef1313deSAnton Blanchard .do_3 = xor_altivec_3, 21ef1313deSAnton Blanchard .do_4 = xor_altivec_4, 22ef1313deSAnton Blanchard .do_5 = xor_altivec_5, 23ef1313deSAnton Blanchard }; 24ef1313deSAnton Blanchard 25ef1313deSAnton Blanchard #define XOR_SPEED_ALTIVEC() \ 26ef1313deSAnton Blanchard do { \ 27ef1313deSAnton Blanchard if (cpu_has_feature(CPU_FTR_ALTIVEC)) \ 28ef1313deSAnton Blanchard xor_speed(&xor_block_altivec); \ 29ef1313deSAnton Blanchard } while (0) 30ef1313deSAnton Blanchard #else 31ef1313deSAnton Blanchard #define XOR_SPEED_ALTIVEC() 32ef1313deSAnton Blanchard #endif 33ef1313deSAnton Blanchard 34ef1313deSAnton Blanchard /* Also try the generic routines. */ 35b8b572e1SStephen Rothwell #include <asm-generic/xor.h> 36ef1313deSAnton Blanchard 37ef1313deSAnton Blanchard #undef XOR_TRY_TEMPLATES 38ef1313deSAnton Blanchard #define XOR_TRY_TEMPLATES \ 39ef1313deSAnton Blanchard do { \ 40ef1313deSAnton Blanchard xor_speed(&xor_block_8regs); \ 41ef1313deSAnton Blanchard xor_speed(&xor_block_8regs_p); \ 42ef1313deSAnton Blanchard xor_speed(&xor_block_32regs); \ 43ef1313deSAnton Blanchard xor_speed(&xor_block_32regs_p); \ 44ef1313deSAnton Blanchard XOR_SPEED_ALTIVEC(); \ 45ef1313deSAnton Blanchard } while (0) 46ef1313deSAnton Blanchard 47ef1313deSAnton Blanchard #endif /* _ASM_POWERPC_XOR_H */ 48