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 
22 #if defined(__clang__) || defined(_MSC_VER)
23 #define HAVE_VLD1_S16_X3
24 #define HAVE_VLD1_U16_X2
25 #define HAVE_VLD1Q_U8_X4
26 #endif
27 
28 /* Define compiler-independent count-leading-zeros and byte-swap macros */
29 #if defined(_MSC_VER) && !defined(__clang__)
30 #define BUILTIN_CLZ(x)  _CountLeadingZeros(x)
31 #define BUILTIN_CLZLL(x)  _CountLeadingZeros64(x)
32 #define BUILTIN_BSWAP32(x)  _byteswap_ulong(x)
33 #define BUILTIN_BSWAP64(x)  _byteswap_uint64(x)
34 #elif defined(__clang__) || defined(__GNUC__)
35 #define BUILTIN_CLZ(x)  __builtin_clz(x)
36 #define BUILTIN_CLZLL(x)  __builtin_clzll(x)
37 #define BUILTIN_BSWAP32(x)  __builtin_bswap32(x)
38 #define BUILTIN_BSWAP64(x)  __builtin_bswap64(x)
39 #else
40 #error "Unknown compiler"
41 #endif
42