xor_simd.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. /* SPDX-License-Identifier: GPL-2.0-or-later */
  2. /*
  3. * Simple interface to link xor_simd.c and xor_simd_glue.c
  4. *
  5. * Separating these files ensures that no SIMD instructions are run outside of
  6. * the kfpu critical section.
  7. */
  8. #ifndef __LOONGARCH_LIB_XOR_SIMD_H
  9. #define __LOONGARCH_LIB_XOR_SIMD_H
  10. #ifdef CONFIG_CPU_HAS_LSX
  11. void __xor_lsx_2(unsigned long bytes, unsigned long * __restrict p1,
  12. const unsigned long * __restrict p2);
  13. void __xor_lsx_3(unsigned long bytes, unsigned long * __restrict p1,
  14. const unsigned long * __restrict p2, const unsigned long * __restrict p3);
  15. void __xor_lsx_4(unsigned long bytes, unsigned long * __restrict p1,
  16. const unsigned long * __restrict p2, const unsigned long * __restrict p3,
  17. const unsigned long * __restrict p4);
  18. void __xor_lsx_5(unsigned long bytes, unsigned long * __restrict p1,
  19. const unsigned long * __restrict p2, const unsigned long * __restrict p3,
  20. const unsigned long * __restrict p4, const unsigned long * __restrict p5);
  21. #endif /* CONFIG_CPU_HAS_LSX */
  22. #ifdef CONFIG_CPU_HAS_LASX
  23. void __xor_lasx_2(unsigned long bytes, unsigned long * __restrict p1,
  24. const unsigned long * __restrict p2);
  25. void __xor_lasx_3(unsigned long bytes, unsigned long * __restrict p1,
  26. const unsigned long * __restrict p2, const unsigned long * __restrict p3);
  27. void __xor_lasx_4(unsigned long bytes, unsigned long * __restrict p1,
  28. const unsigned long * __restrict p2, const unsigned long * __restrict p3,
  29. const unsigned long * __restrict p4);
  30. void __xor_lasx_5(unsigned long bytes, unsigned long * __restrict p1,
  31. const unsigned long * __restrict p2, const unsigned long * __restrict p3,
  32. const unsigned long * __restrict p4, const unsigned long * __restrict p5);
  33. #endif /* CONFIG_CPU_HAS_LASX */
  34. #endif /* __LOONGARCH_LIB_XOR_SIMD_H */