neon-compat.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. /*
  2. * Copyright (C) 2020, D. R. Commander. All Rights Reserved.
  3. * Copyright (C) 2020-2021, Arm Limited. All Rights Reserved.
  4. *
  5. * This software is provided 'as-is', without any express or implied
  6. * warranty. In no event will the authors be held liable for any damages
  7. * arising from the use of this software.
  8. *
  9. * Permission is granted to anyone to use this software for any purpose,
  10. * including commercial applications, and to alter it and redistribute it
  11. * freely, subject to the following restrictions:
  12. *
  13. * 1. The origin of this software must not be misrepresented; you must not
  14. * claim that you wrote the original software. If you use this software
  15. * in a product, an acknowledgment in the product documentation would be
  16. * appreciated but is not required.
  17. * 2. Altered source versions must be plainly marked as such, and must not be
  18. * misrepresented as being the original software.
  19. * 3. This notice may not be removed or altered from any source distribution.
  20. */
  21. // #cmakedefine HAVE_VLD1_S16_X3
  22. // #cmakedefine HAVE_VLD1_U16_X2
  23. // #cmakedefine HAVE_VLD1Q_U8_X4
  24. /* Define compiler-independent count-leading-zeros and byte-swap macros */
  25. #if defined(_MSC_VER) && !defined(__clang__)
  26. #define BUILTIN_CLZ(x) _CountLeadingZeros(x)
  27. #define BUILTIN_CLZLL(x) _CountLeadingZeros64(x)
  28. #define BUILTIN_BSWAP64(x) _byteswap_uint64(x)
  29. #elif defined(__clang__) || defined(__GNUC__)
  30. #define BUILTIN_CLZ(x) __builtin_clz(x)
  31. #define BUILTIN_CLZLL(x) __builtin_clzll(x)
  32. #define BUILTIN_BSWAP64(x) __builtin_bswap64(x)
  33. #else
  34. #error "Unknown compiler"
  35. #endif