Rewrite __builtin_shufflevector check with __has_builtin macro
Rewrite __builtin_shufflevector check with __has_builtin macro

Both clang and gcc-10 support "__has_builtin", which evaluates the
existence of specified builtin function. __builtin_shufflevector might
be implemented in newer gcc releases, and this patch attempts to take
a flexible approach to detect its presence.

More about "__has_builtin":
  https://clang.llvm.org/docs/LanguageExtensions.html
GCC 10 provides "__hash_builtin" preprocessor operator:
  https://gcc.gnu.org/gcc-10/changes.html

DLTcollab/sse2neon,DLTcollab/sse2neon,DLTcollab/sse2neon