acle_intrins.h 703 B

1234567891011121314151617181920212223242526272829303132333435
  1. #ifndef ARM_ACLE_INTRINS_H
  2. #define ARM_ACLE_INTRINS_H
  3. #include <stdint.h>
  4. #ifdef _MSC_VER
  5. # include <intrin.h>
  6. #elif defined(HAVE_ARM_ACLE_H)
  7. # include <arm_acle.h>
  8. #endif
  9. #ifdef ARM_ACLE
  10. #if defined(__aarch64__)
  11. # define Z_TARGET_CRC Z_TARGET("+crc")
  12. #else
  13. # define Z_TARGET_CRC
  14. #endif
  15. #endif
  16. #ifdef ARM_SIMD
  17. #ifdef _MSC_VER
  18. typedef uint32_t uint16x2_t;
  19. #define __uqsub16 _arm_uqsub16
  20. #elif !defined(ARM_SIMD_INTRIN)
  21. typedef uint32_t uint16x2_t;
  22. static inline uint16x2_t __uqsub16(uint16x2_t __a, uint16x2_t __b) {
  23. uint16x2_t __c;
  24. __asm__ __volatile__("uqsub16 %0, %1, %2" : "=r" (__c) : "r"(__a), "r"(__b));
  25. return __c;
  26. }
  27. #endif
  28. #endif
  29. #endif // include guard ARM_ACLE_INTRINS_H