Workaround for vshl/vshr on aarch64 GCC (#1882)
Workaround for vshl/vshr on aarch64 GCC (#1882)

Summary:
related: https://github.com/facebookresearch/faiss/issues/1815,  https://github.com/facebookresearch/faiss/issues/1880

`vshl` / `vshr` of ARM NEON requires immediate (compiletime constant) value as shift parameter.
However, the implementations of those intrinsics on GCC can receive runtime value.
Current faiss implementation depends on this, so some correct-behavioring compilers like Clang can't build faiss for aarch64.
This PR fix this issue; thus faiss applied this PR can be built with Clang for aarch64 machines like M1 Mac.

Pull Request resolved: https://github.com/facebookresearch/faiss/pull/1882

Reviewed By: beauby

Differential Revision: D28465563

Pulled By: mdouze

fbshipit-source-id: e431dfb3b27c9728072f50b4bf9445a3f4a5ac43

facebookresearch/faiss,facebookresearch/faiss,facebookresearch/faiss,facebookresearch/faiss