authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-10-23 21:43:18-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-11-02 21:54:24-04:00
log94ec2190f8d8c41d19b668511bf31fae32bcd095
treec5ab9b20fbaf8f017661f9a159082d1ecaf9f943
parentabff1b688420eb30d98145d8bc48e7d08f259885

update to llvm master


30 files changed, 676 insertions(+), 553 deletions(-)

README.md+4-4
...@@ -141,7 +141,7 @@ These libraries must be installed on your system, with the development files...@@ -141,7 +141,7 @@ These libraries must be installed on your system, with the development files
141available. The Zig compiler links against them. You have to use the same141available. The Zig compiler links against them. You have to use the same
142compiler for these libraries as you do to compile Zig.142compiler for these libraries as you do to compile Zig.
143143
144 * LLVM, Clang, and LLD libraries == 5.x144 * LLVM, Clang, and LLD libraries == 6.x
145145
146### Debug / Development Build146### Debug / Development Build
147147
...@@ -163,11 +163,11 @@ make install...@@ -163,11 +163,11 @@ make install
163`ZIG_LIBC_LIB_DIR` and `ZIG_LIBC_STATIC_LIB_DIR` are unused.163`ZIG_LIBC_LIB_DIR` and `ZIG_LIBC_STATIC_LIB_DIR` are unused.
164164
165```165```
166brew install llvm@5166brew install llvm@6
167brew outdated llvm@5 || brew upgrade llvm@5167brew outdated llvm@6 || brew upgrade llvm@6
168mkdir build168mkdir build
169cd build169cd build
170cmake .. -DCMAKE_PREFIX_PATH=/usr/local/opt/llvm@5/ -DCMAKE_INSTALL_PREFIX=$(pwd)170cmake .. -DCMAKE_PREFIX_PATH=/usr/local/opt/llvm@6/ -DCMAKE_INSTALL_PREFIX=$(pwd)
171make install171make install
172./zig build --build-file ../build.zig test172./zig build --build-file ../build.zig test
173```173```
c_headers/__clang_cuda_intrinsics.h+124
...@@ -92,6 +92,130 @@ __MAKE_SHUFFLES(__shfl_xor, __nvvm_shfl_bfly_i32, __nvvm_shfl_bfly_f32, 0x1f);...@@ -92,6 +92,130 @@ __MAKE_SHUFFLES(__shfl_xor, __nvvm_shfl_bfly_i32, __nvvm_shfl_bfly_f32, 0x1f);
9292
93#endif // !defined(__CUDA_ARCH__) || __CUDA_ARCH__ >= 30093#endif // !defined(__CUDA_ARCH__) || __CUDA_ARCH__ >= 300
9494
95#if CUDA_VERSION >= 9000
96#if (!defined(__CUDA_ARCH__) || __CUDA_ARCH__ >= 300)
97// __shfl_sync_* variants available in CUDA-9
98#pragma push_macro("__MAKE_SYNC_SHUFFLES")
99#define __MAKE_SYNC_SHUFFLES(__FnName, __IntIntrinsic, __FloatIntrinsic, \
100 __Mask) \
101 inline __device__ int __FnName(unsigned int __mask, int __val, int __offset, \
102 int __width = warpSize) { \
103 return __IntIntrinsic(__mask, __val, __offset, \
104 ((warpSize - __width) << 8) | (__Mask)); \
105 } \
106 inline __device__ float __FnName(unsigned int __mask, float __val, \
107 int __offset, int __width = warpSize) { \
108 return __FloatIntrinsic(__mask, __val, __offset, \
109 ((warpSize - __width) << 8) | (__Mask)); \
110 } \
111 inline __device__ unsigned int __FnName(unsigned int __mask, \
112 unsigned int __val, int __offset, \
113 int __width = warpSize) { \
114 return static_cast<unsigned int>( \
115 ::__FnName(__mask, static_cast<int>(__val), __offset, __width)); \
116 } \
117 inline __device__ long long __FnName(unsigned int __mask, long long __val, \
118 int __offset, int __width = warpSize) { \
119 struct __Bits { \
120 int __a, __b; \
121 }; \
122 _Static_assert(sizeof(__val) == sizeof(__Bits)); \
123 _Static_assert(sizeof(__Bits) == 2 * sizeof(int)); \
124 __Bits __tmp; \
125 memcpy(&__val, &__tmp, sizeof(__val)); \
126 __tmp.__a = ::__FnName(__mask, __tmp.__a, __offset, __width); \
127 __tmp.__b = ::__FnName(__mask, __tmp.__b, __offset, __width); \
128 long long __ret; \
129 memcpy(&__ret, &__tmp, sizeof(__tmp)); \
130 return __ret; \
131 } \
132 inline __device__ unsigned long long __FnName( \
133 unsigned int __mask, unsigned long long __val, int __offset, \
134 int __width = warpSize) { \
135 return static_cast<unsigned long long>(::__FnName( \
136 __mask, static_cast<unsigned long long>(__val), __offset, __width)); \
137 } \
138 inline __device__ double __FnName(unsigned int __mask, double __val, \
139 int __offset, int __width = warpSize) { \
140 long long __tmp; \
141 _Static_assert(sizeof(__tmp) == sizeof(__val)); \
142 memcpy(&__tmp, &__val, sizeof(__val)); \
143 __tmp = ::__FnName(__mask, __tmp, __offset, __width); \
144 double __ret; \
145 memcpy(&__ret, &__tmp, sizeof(__ret)); \
146 return __ret; \
147 }
148__MAKE_SYNC_SHUFFLES(__shfl_sync, __nvvm_shfl_sync_idx_i32,
149 __nvvm_shfl_sync_idx_f32, 0x1f);
150// We use 0 rather than 31 as our mask, because shfl.up applies to lanes >=
151// maxLane.
152__MAKE_SYNC_SHUFFLES(__shfl_up_sync, __nvvm_shfl_sync_up_i32,
153 __nvvm_shfl_sync_up_f32, 0);
154__MAKE_SYNC_SHUFFLES(__shfl_down_sync, __nvvm_shfl_sync_down_i32,
155 __nvvm_shfl_sync_down_f32, 0x1f);
156__MAKE_SYNC_SHUFFLES(__shfl_xor_sync, __nvvm_shfl_sync_bfly_i32,
157 __nvvm_shfl_sync_bfly_f32, 0x1f);
158#pragma pop_macro("__MAKE_SYNC_SHUFFLES")
159
160inline __device__ void __syncwarp(unsigned int mask = 0xffffffff) {
161 return __nvvm_bar_warp_sync(mask);
162}
163
164inline __device__ void __barrier_sync(unsigned int id) {
165 __nvvm_barrier_sync(id);
166}
167
168inline __device__ void __barrier_sync_count(unsigned int id,
169 unsigned int count) {
170 __nvvm_barrier_sync_cnt(id, count);
171}
172
173inline __device__ int __all_sync(unsigned int mask, int pred) {
174 return __nvvm_vote_all_sync(mask, pred);
175}
176
177inline __device__ int __any_sync(unsigned int mask, int pred) {
178 return __nvvm_vote_any_sync(mask, pred);
179}
180
181inline __device__ int __uni_sync(unsigned int mask, int pred) {
182 return __nvvm_vote_uni_sync(mask, pred);
183}
184
185inline __device__ unsigned int __ballot_sync(unsigned int mask, int pred) {
186 return __nvvm_vote_ballot_sync(mask, pred);
187}
188
189inline __device__ unsigned int __activemask() { return __nvvm_vote_ballot(1); }
190
191#endif // !defined(__CUDA_ARCH__) || __CUDA_ARCH__ >= 300
192
193// Define __match* builtins CUDA-9 headers expect to see.
194#if !defined(__CUDA_ARCH__) || __CUDA_ARCH__ >= 700
195inline __device__ unsigned int __match32_any_sync(unsigned int mask,
196 unsigned int value) {
197 return __nvvm_match_any_sync_i32(mask, value);
198}
199
200inline __device__ unsigned long long
201__match64_any_sync(unsigned int mask, unsigned long long value) {
202 return __nvvm_match_any_sync_i64(mask, value);
203}
204
205inline __device__ unsigned int
206__match32_all_sync(unsigned int mask, unsigned int value, int *pred) {
207 return __nvvm_match_all_sync_i32p(mask, value, pred);
208}
209
210inline __device__ unsigned long long
211__match64_all_sync(unsigned int mask, unsigned long long value, int *pred) {
212 return __nvvm_match_all_sync_i64p(mask, value, pred);
213}
214#include "crt/sm_70_rt.hpp"
215
216#endif // !defined(__CUDA_ARCH__) || __CUDA_ARCH__ >= 700
217#endif // __CUDA_VERSION >= 9000
218
95// sm_32 intrinsics: __ldg and __funnelshift_{l,lc,r,rc}.219// sm_32 intrinsics: __ldg and __funnelshift_{l,lc,r,rc}.
96220
97// Prevent the vanilla sm_32 intrinsics header from being included.221// Prevent the vanilla sm_32 intrinsics header from being included.
c_headers/__clang_cuda_runtime_wrapper.h+29-1
...@@ -62,7 +62,7 @@...@@ -62,7 +62,7 @@
62#include "cuda.h"62#include "cuda.h"
63#if !defined(CUDA_VERSION)63#if !defined(CUDA_VERSION)
64#error "cuda.h did not define CUDA_VERSION"64#error "cuda.h did not define CUDA_VERSION"
65#elif CUDA_VERSION < 7000 || CUDA_VERSION > 800065#elif CUDA_VERSION < 7000 || CUDA_VERSION > 9000
66#error "Unsupported CUDA version!"66#error "Unsupported CUDA version!"
67#endif67#endif
6868
...@@ -86,7 +86,11 @@...@@ -86,7 +86,11 @@
86#define __COMMON_FUNCTIONS_H__86#define __COMMON_FUNCTIONS_H__
8787
88#undef __CUDACC__88#undef __CUDACC__
89#if CUDA_VERSION < 9000
89#define __CUDABE__90#define __CUDABE__
91#else
92#define __CUDA_LIBDEVICE__
93#endif
90// Disables definitions of device-side runtime support stubs in94// Disables definitions of device-side runtime support stubs in
91// cuda_device_runtime_api.h95// cuda_device_runtime_api.h
92#include "driver_types.h"96#include "driver_types.h"
...@@ -94,6 +98,7 @@...@@ -94,6 +98,7 @@
94#include "host_defines.h"98#include "host_defines.h"
9599
96#undef __CUDABE__100#undef __CUDABE__
101#undef __CUDA_LIBDEVICE__
97#define __CUDACC__102#define __CUDACC__
98#include "cuda_runtime.h"103#include "cuda_runtime.h"
99104
...@@ -105,7 +110,9 @@...@@ -105,7 +110,9 @@
105#define __nvvm_memcpy(s, d, n, a) __builtin_memcpy(s, d, n)110#define __nvvm_memcpy(s, d, n, a) __builtin_memcpy(s, d, n)
106#define __nvvm_memset(d, c, n, a) __builtin_memset(d, c, n)111#define __nvvm_memset(d, c, n, a) __builtin_memset(d, c, n)
107112
113#if CUDA_VERSION < 9000
108#include "crt/device_runtime.h"114#include "crt/device_runtime.h"
115#endif
109#include "crt/host_runtime.h"116#include "crt/host_runtime.h"
110// device_runtime.h defines __cxa_* macros that will conflict with117// device_runtime.h defines __cxa_* macros that will conflict with
111// cxxabi.h.118// cxxabi.h.
...@@ -166,7 +173,18 @@ inline __host__ double __signbitd(double x) {...@@ -166,7 +173,18 @@ inline __host__ double __signbitd(double x) {
166// __device__.173// __device__.
167#pragma push_macro("__forceinline__")174#pragma push_macro("__forceinline__")
168#define __forceinline__ __device__ __inline__ __attribute__((always_inline))175#define __forceinline__ __device__ __inline__ __attribute__((always_inline))
176
177#pragma push_macro("__float2half_rn")
178#if CUDA_VERSION >= 9000
179// CUDA-9 has conflicting prototypes for __float2half_rn(float f) in
180// cuda_fp16.h[pp] and device_functions.hpp. We need to get the one in
181// device_functions.hpp out of the way.
182#define __float2half_rn __float2half_rn_disabled
183#endif
184
169#include "device_functions.hpp"185#include "device_functions.hpp"
186#pragma pop_macro("__float2half_rn")
187
170188
171// math_function.hpp uses the __USE_FAST_MATH__ macro to determine whether we189// math_function.hpp uses the __USE_FAST_MATH__ macro to determine whether we
172// get the slow-but-accurate or fast-but-inaccurate versions of functions like190// get the slow-but-accurate or fast-but-inaccurate versions of functions like
...@@ -247,7 +265,17 @@ static inline __device__ void __brkpt(int __c) { __brkpt(); }...@@ -247,7 +265,17 @@ static inline __device__ void __brkpt(int __c) { __brkpt(); }
247#pragma push_macro("__GNUC__")265#pragma push_macro("__GNUC__")
248#undef __GNUC__266#undef __GNUC__
249#define signbit __ignored_cuda_signbit267#define signbit __ignored_cuda_signbit
268
269// CUDA-9 omits device-side definitions of some math functions if it sees
270// include guard from math.h wrapper from libstdc++. We have to undo the header
271// guard temporarily to get the definitions we need.
272#pragma push_macro("_GLIBCXX_MATH_H")
273#if CUDA_VERSION >= 9000
274#undef _GLIBCXX_MATH_H
275#endif
276
250#include "math_functions.hpp"277#include "math_functions.hpp"
278#pragma pop_macro("_GLIBCXX_MATH_H")
251#pragma pop_macro("__GNUC__")279#pragma pop_macro("__GNUC__")
252#pragma pop_macro("signbit")280#pragma pop_macro("signbit")
253281
c_headers/arm64intr.h created+49
...@@ -0,0 +1,49 @@
1/*===---- arm64intr.h - ARM64 Windows intrinsics -------------------------------===
2 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 * THE SOFTWARE.
20 *
21 *===-----------------------------------------------------------------------===
22 */
23
24/* Only include this if we're compiling for the windows platform. */
25#ifndef _MSC_VER
26#include_next <arm64intr.h>
27#else
28
29#ifndef __ARM64INTR_H
30#define __ARM64INTR_H
31
32typedef enum
33{
34 _ARM64_BARRIER_SY = 0xF,
35 _ARM64_BARRIER_ST = 0xE,
36 _ARM64_BARRIER_LD = 0xD,
37 _ARM64_BARRIER_ISH = 0xB,
38 _ARM64_BARRIER_ISHST = 0xA,
39 _ARM64_BARRIER_ISHLD = 0x9,
40 _ARM64_BARRIER_NSH = 0x7,
41 _ARM64_BARRIER_NSHST = 0x6,
42 _ARM64_BARRIER_NSHLD = 0x5,
43 _ARM64_BARRIER_OSH = 0x3,
44 _ARM64_BARRIER_OSHST = 0x2,
45 _ARM64_BARRIER_OSHLD = 0x1
46} _ARM64INTR_BARRIER_TYPE;
47
48#endif /* __ARM64INTR_H */
49#endif /* _MSC_VER */
c_headers/avx2intrin.h+10-2
...@@ -145,13 +145,21 @@ _mm256_andnot_si256(__m256i __a, __m256i __b)...@@ -145,13 +145,21 @@ _mm256_andnot_si256(__m256i __a, __m256i __b)
145static __inline__ __m256i __DEFAULT_FN_ATTRS145static __inline__ __m256i __DEFAULT_FN_ATTRS
146_mm256_avg_epu8(__m256i __a, __m256i __b)146_mm256_avg_epu8(__m256i __a, __m256i __b)
147{147{
148 return (__m256i)__builtin_ia32_pavgb256((__v32qi)__a, (__v32qi)__b);148 typedef unsigned short __v32hu __attribute__((__vector_size__(64)));
149 return (__m256i)__builtin_convertvector(
150 ((__builtin_convertvector((__v32qu)__a, __v32hu) +
151 __builtin_convertvector((__v32qu)__b, __v32hu)) + 1)
152 >> 1, __v32qu);
149}153}
150154
151static __inline__ __m256i __DEFAULT_FN_ATTRS155static __inline__ __m256i __DEFAULT_FN_ATTRS
152_mm256_avg_epu16(__m256i __a, __m256i __b)156_mm256_avg_epu16(__m256i __a, __m256i __b)
153{157{
154 return (__m256i)__builtin_ia32_pavgw256((__v16hi)__a, (__v16hi)__b);158 typedef unsigned int __v16su __attribute__((__vector_size__(64)));
159 return (__m256i)__builtin_convertvector(
160 ((__builtin_convertvector((__v16hu)__a, __v16su) +
161 __builtin_convertvector((__v16hu)__b, __v16su)) + 1)
162 >> 1, __v16hu);
155}163}
156164
157static __inline__ __m256i __DEFAULT_FN_ATTRS165static __inline__ __m256i __DEFAULT_FN_ATTRS
c_headers/avx512bwintrin.h+34-37
...@@ -706,57 +706,55 @@ _mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)...@@ -706,57 +706,55 @@ _mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
706static __inline__ __m512i __DEFAULT_FN_ATTRS706static __inline__ __m512i __DEFAULT_FN_ATTRS
707_mm512_avg_epu8 (__m512i __A, __m512i __B)707_mm512_avg_epu8 (__m512i __A, __m512i __B)
708{708{
709 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,709 typedef unsigned short __v64hu __attribute__((__vector_size__(128)));
710 (__v64qi) __B,710 return (__m512i)__builtin_convertvector(
711 (__v64qi) _mm512_setzero_qi(),711 ((__builtin_convertvector((__v64qu) __A, __v64hu) +
712 (__mmask64) -1);712 __builtin_convertvector((__v64qu) __B, __v64hu)) + 1)
713 >> 1, __v64qu);
713}714}
714715
715static __inline__ __m512i __DEFAULT_FN_ATTRS716static __inline__ __m512i __DEFAULT_FN_ATTRS
716_mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,717_mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
717 __m512i __B)718 __m512i __B)
718{719{
719 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,720 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
720 (__v64qi) __B,721 (__v64qi)_mm512_avg_epu8(__A, __B),
721 (__v64qi) __W,722 (__v64qi)__W);
722 (__mmask64) __U);
723}723}
724724
725static __inline__ __m512i __DEFAULT_FN_ATTRS725static __inline__ __m512i __DEFAULT_FN_ATTRS
726_mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)726_mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
727{727{
728 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,728 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
729 (__v64qi) __B,729 (__v64qi)_mm512_avg_epu8(__A, __B),
730 (__v64qi) _mm512_setzero_qi(),730 (__v64qi)_mm512_setzero_qi());
731 (__mmask64) __U);
732}731}
733732
734static __inline__ __m512i __DEFAULT_FN_ATTRS733static __inline__ __m512i __DEFAULT_FN_ATTRS
735_mm512_avg_epu16 (__m512i __A, __m512i __B)734_mm512_avg_epu16 (__m512i __A, __m512i __B)
736{735{
737 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,736 typedef unsigned int __v32su __attribute__((__vector_size__(128)));
738 (__v32hi) __B,737 return (__m512i)__builtin_convertvector(
739 (__v32hi) _mm512_setzero_hi(),738 ((__builtin_convertvector((__v32hu) __A, __v32su) +
740 (__mmask32) -1);739 __builtin_convertvector((__v32hu) __B, __v32su)) + 1)
740 >> 1, __v32hu);
741}741}
742742
743static __inline__ __m512i __DEFAULT_FN_ATTRS743static __inline__ __m512i __DEFAULT_FN_ATTRS
744_mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,744_mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
745 __m512i __B)745 __m512i __B)
746{746{
747 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,747 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
748 (__v32hi) __B,748 (__v32hi)_mm512_avg_epu16(__A, __B),
749 (__v32hi) __W,749 (__v32hi)__W);
750 (__mmask32) __U);
751}750}
752751
753static __inline__ __m512i __DEFAULT_FN_ATTRS752static __inline__ __m512i __DEFAULT_FN_ATTRS
754_mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)753_mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
755{754{
756 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,755 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
757 (__v32hi) __B,756 (__v32hi)_mm512_avg_epu16(__A, __B),
758 (__v32hi) _mm512_setzero_hi(),757 (__v32hi) _mm512_setzero_hi());
759 (__mmask32) __U);
760}758}
761759
762static __inline__ __m512i __DEFAULT_FN_ATTRS760static __inline__ __m512i __DEFAULT_FN_ATTRS
...@@ -2028,18 +2026,17 @@ _mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)...@@ -2028,18 +2026,17 @@ _mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)
2028static __inline__ __m512i __DEFAULT_FN_ATTRS2026static __inline__ __m512i __DEFAULT_FN_ATTRS
2029_mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A)2027_mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A)
2030{2028{
2031 return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,2029 return (__m512i) __builtin_ia32_selectb_512(__M,
2032 (__v64qi) __O,2030 (__v64qi)_mm512_set1_epi8(__A),
2033 __M);2031 (__v64qi) __O);
2034}2032}
20352033
2036static __inline__ __m512i __DEFAULT_FN_ATTRS2034static __inline__ __m512i __DEFAULT_FN_ATTRS
2037_mm512_maskz_set1_epi8 (__mmask64 __M, char __A)2035_mm512_maskz_set1_epi8 (__mmask64 __M, char __A)
2038{2036{
2039 return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,2037 return (__m512i) __builtin_ia32_selectb_512(__M,
2040 (__v64qi)2038 (__v64qi) _mm512_set1_epi8(__A),
2041 _mm512_setzero_qi(),2039 (__v64qi) _mm512_setzero_si512());
2042 __M);
2043}2040}
20442041
2045static __inline__ __mmask64 __DEFAULT_FN_ATTRS2042static __inline__ __mmask64 __DEFAULT_FN_ATTRS
...@@ -2219,17 +2216,17 @@ _mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A)...@@ -2219,17 +2216,17 @@ _mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A)
2219static __inline__ __m512i __DEFAULT_FN_ATTRS2216static __inline__ __m512i __DEFAULT_FN_ATTRS
2220_mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A)2217_mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A)
2221{2218{
2222 return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,2219 return (__m512i) __builtin_ia32_selectw_512(__M,
2223 (__v32hi) __O,2220 (__v32hi) _mm512_set1_epi16(__A),
2224 __M);2221 (__v32hi) __O);
2225}2222}
22262223
2227static __inline__ __m512i __DEFAULT_FN_ATTRS2224static __inline__ __m512i __DEFAULT_FN_ATTRS
2228_mm512_maskz_set1_epi16 (__mmask32 __M, short __A)2225_mm512_maskz_set1_epi16 (__mmask32 __M, short __A)
2229{2226{
2230 return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,2227 return (__m512i) __builtin_ia32_selectw_512(__M,
2231 (__v32hi) _mm512_setzero_hi(),2228 (__v32hi) _mm512_set1_epi16(__A),
2232 __M);2229 (__v32hi) _mm512_setzero_si512());
2233}2230}
22342231
2235static __inline__ __m512i __DEFAULT_FN_ATTRS2232static __inline__ __m512i __DEFAULT_FN_ATTRS
c_headers/avx512dqintrin.h+20-18
...@@ -973,25 +973,26 @@ _mm512_movepi64_mask (__m512i __A)...@@ -973,25 +973,26 @@ _mm512_movepi64_mask (__m512i __A)
973static __inline__ __m512 __DEFAULT_FN_ATTRS973static __inline__ __m512 __DEFAULT_FN_ATTRS
974_mm512_broadcast_f32x2 (__m128 __A)974_mm512_broadcast_f32x2 (__m128 __A)
975{975{
976 return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,976 return (__m512)__builtin_shufflevector((__v4sf)__A,
977 (__v16sf)_mm512_undefined_ps(),977 (__v4sf)_mm_undefined_ps(),
978 (__mmask16) -1);978 0, 1, 0, 1, 0, 1, 0, 1,
979 0, 1, 0, 1, 0, 1, 0, 1);
979}980}
980981
981static __inline__ __m512 __DEFAULT_FN_ATTRS982static __inline__ __m512 __DEFAULT_FN_ATTRS
982_mm512_mask_broadcast_f32x2 (__m512 __O, __mmask16 __M, __m128 __A)983_mm512_mask_broadcast_f32x2 (__m512 __O, __mmask16 __M, __m128 __A)
983{984{
984 return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,985 return (__m512)__builtin_ia32_selectps_512((__mmask16)__M,
985 (__v16sf)986 (__v16sf)_mm512_broadcast_f32x2(__A),
986 __O, __M);987 (__v16sf)__O);
987}988}
988989
989static __inline__ __m512 __DEFAULT_FN_ATTRS990static __inline__ __m512 __DEFAULT_FN_ATTRS
990_mm512_maskz_broadcast_f32x2 (__mmask16 __M, __m128 __A)991_mm512_maskz_broadcast_f32x2 (__mmask16 __M, __m128 __A)
991{992{
992 return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,993 return (__m512)__builtin_ia32_selectps_512((__mmask16)__M,
993 (__v16sf)_mm512_setzero_ps (),994 (__v16sf)_mm512_broadcast_f32x2(__A),
994 __M);995 (__v16sf)_mm512_setzero_ps());
995}996}
996997
997static __inline__ __m512 __DEFAULT_FN_ATTRS998static __inline__ __m512 __DEFAULT_FN_ATTRS
...@@ -1044,25 +1045,26 @@ _mm512_maskz_broadcast_f64x2(__mmask8 __M, __m128d __A)...@@ -1044,25 +1045,26 @@ _mm512_maskz_broadcast_f64x2(__mmask8 __M, __m128d __A)
1044static __inline__ __m512i __DEFAULT_FN_ATTRS1045static __inline__ __m512i __DEFAULT_FN_ATTRS
1045_mm512_broadcast_i32x2 (__m128i __A)1046_mm512_broadcast_i32x2 (__m128i __A)
1046{1047{
1047 return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si) __A,1048 return (__m512i)__builtin_shufflevector((__v4si)__A,
1048 (__v16si)_mm512_setzero_si512(),1049 (__v4si)_mm_undefined_si128(),
1049 (__mmask16) -1);1050 0, 1, 0, 1, 0, 1, 0, 1,
1051 0, 1, 0, 1, 0, 1, 0, 1);
1050}1052}
10511053
1052static __inline__ __m512i __DEFAULT_FN_ATTRS1054static __inline__ __m512i __DEFAULT_FN_ATTRS
1053_mm512_mask_broadcast_i32x2 (__m512i __O, __mmask16 __M, __m128i __A)1055_mm512_mask_broadcast_i32x2 (__m512i __O, __mmask16 __M, __m128i __A)
1054{1056{
1055 return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si) __A,1057 return (__m512i)__builtin_ia32_selectd_512((__mmask16)__M,
1056 (__v16si)1058 (__v16si)_mm512_broadcast_i32x2(__A),
1057 __O, __M);1059 (__v16si)__O);
1058}1060}
10591061
1060static __inline__ __m512i __DEFAULT_FN_ATTRS1062static __inline__ __m512i __DEFAULT_FN_ATTRS
1061_mm512_maskz_broadcast_i32x2 (__mmask16 __M, __m128i __A)1063_mm512_maskz_broadcast_i32x2 (__mmask16 __M, __m128i __A)
1062{1064{
1063 return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si) __A,1065 return (__m512i)__builtin_ia32_selectd_512((__mmask16)__M,
1064 (__v16si)_mm512_setzero_si512 (),1066 (__v16si)_mm512_broadcast_i32x2(__A),
1065 __M);1067 (__v16si)_mm512_setzero_si512());
1066}1068}
10671069
1068static __inline__ __m512i __DEFAULT_FN_ATTRS1070static __inline__ __m512i __DEFAULT_FN_ATTRS
c_headers/avx512fintrin.h+25-29
...@@ -258,30 +258,6 @@ _mm512_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)...@@ -258,30 +258,6 @@ _mm512_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
258 (__v8di) _mm512_setzero_si512());258 (__v8di) _mm512_setzero_si512());
259}259}
260260
261static __inline __m512i __DEFAULT_FN_ATTRS
262_mm512_maskz_set1_epi32(__mmask16 __M, int __A)
263{
264 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
265 (__v16si)
266 _mm512_setzero_si512 (),
267 __M);
268}
269
270static __inline __m512i __DEFAULT_FN_ATTRS
271_mm512_maskz_set1_epi64(__mmask8 __M, long long __A)
272{
273#ifdef __x86_64__
274 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
275 (__v8di)
276 _mm512_setzero_si512 (),
277 __M);
278#else
279 return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A,
280 (__v8di)
281 _mm512_setzero_si512 (),
282 __M);
283#endif
284}
285261
286static __inline __m512 __DEFAULT_FN_ATTRS262static __inline __m512 __DEFAULT_FN_ATTRS
287_mm512_setzero_ps(void)263_mm512_setzero_ps(void)
...@@ -340,12 +316,30 @@ _mm512_set1_epi32(int __s)...@@ -340,12 +316,30 @@ _mm512_set1_epi32(int __s)
340 __s, __s, __s, __s, __s, __s, __s, __s };316 __s, __s, __s, __s, __s, __s, __s, __s };
341}317}
342318
319static __inline __m512i __DEFAULT_FN_ATTRS
320_mm512_maskz_set1_epi32(__mmask16 __M, int __A)
321{
322 return (__m512i)__builtin_ia32_selectd_512(__M,
323 (__v16si)_mm512_set1_epi32(__A),
324 (__v16si)_mm512_setzero_si512());
325}
326
343static __inline __m512i __DEFAULT_FN_ATTRS327static __inline __m512i __DEFAULT_FN_ATTRS
344_mm512_set1_epi64(long long __d)328_mm512_set1_epi64(long long __d)
345{329{
346 return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };330 return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };
347}331}
348332
333#ifdef __x86_64__
334static __inline __m512i __DEFAULT_FN_ATTRS
335_mm512_maskz_set1_epi64(__mmask8 __M, long long __A)
336{
337 return (__m512i)__builtin_ia32_selectq_512(__M,
338 (__v8di)_mm512_set1_epi64(__A),
339 (__v8di)_mm512_setzero_si512());
340}
341#endif
342
349static __inline__ __m512 __DEFAULT_FN_ATTRS343static __inline__ __m512 __DEFAULT_FN_ATTRS
350_mm512_broadcastss_ps(__m128 __A)344_mm512_broadcastss_ps(__m128 __A)
351{345{
...@@ -9040,7 +9034,7 @@ _mm512_stream_si512 (__m512i * __P, __m512i __A)...@@ -9040,7 +9034,7 @@ _mm512_stream_si512 (__m512i * __P, __m512i __A)
9040}9034}
90419035
9042static __inline__ __m512i __DEFAULT_FN_ATTRS9036static __inline__ __m512i __DEFAULT_FN_ATTRS
9043_mm512_stream_load_si512 (void *__P)9037_mm512_stream_load_si512 (void const *__P)
9044{9038{
9045 typedef __v8di __v8di_aligned __attribute__((aligned(64)));9039 typedef __v8di __v8di_aligned __attribute__((aligned(64)));
9046 return (__m512i) __builtin_nontemporal_load((const __v8di_aligned *)__P);9040 return (__m512i) __builtin_nontemporal_load((const __v8di_aligned *)__P);
...@@ -9742,16 +9736,18 @@ _mm_cvtu64_ss (__m128 __A, unsigned long long __B)...@@ -9742,16 +9736,18 @@ _mm_cvtu64_ss (__m128 __A, unsigned long long __B)
9742static __inline__ __m512i __DEFAULT_FN_ATTRS9736static __inline__ __m512i __DEFAULT_FN_ATTRS
9743_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A)9737_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A)
9744{9738{
9745 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, (__v16si) __O,9739 return (__m512i) __builtin_ia32_selectd_512(__M,
9746 __M);9740 (__v16si) _mm512_set1_epi32(__A),
9741 (__v16si) __O);
9747}9742}
97489743
9749#ifdef __x86_64__9744#ifdef __x86_64__
9750static __inline__ __m512i __DEFAULT_FN_ATTRS9745static __inline__ __m512i __DEFAULT_FN_ATTRS
9751_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)9746_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
9752{9747{
9753 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, (__v8di) __O,9748 return (__m512i) __builtin_ia32_selectq_512(__M,
9754 __M);9749 (__v8di) _mm512_set1_epi64(__A),
9750 (__v8di) __O);
9755}9751}
9756#endif9752#endif
97579753
c_headers/avx512vlbwintrin.h+24-26
...@@ -2660,35 +2660,33 @@ _mm256_maskz_mov_epi8 (__mmask32 __U, __m256i __A)...@@ -2660,35 +2660,33 @@ _mm256_maskz_mov_epi8 (__mmask32 __U, __m256i __A)
2660static __inline__ __m128i __DEFAULT_FN_ATTRS2660static __inline__ __m128i __DEFAULT_FN_ATTRS
2661_mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A)2661_mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A)
2662{2662{
2663 return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A,2663 return (__m128i) __builtin_ia32_selectb_128(__M,
2664 (__v16qi) __O,2664 (__v16qi) _mm_set1_epi8(__A),
2665 __M);2665 (__v16qi) __O);
2666}2666}
26672667
2668static __inline__ __m128i __DEFAULT_FN_ATTRS2668static __inline__ __m128i __DEFAULT_FN_ATTRS
2669_mm_maskz_set1_epi8 (__mmask16 __M, char __A)2669_mm_maskz_set1_epi8 (__mmask16 __M, char __A)
2670{2670{
2671 return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A,2671 return (__m128i) __builtin_ia32_selectb_128(__M,
2672 (__v16qi)2672 (__v16qi) _mm_set1_epi8(__A),
2673 _mm_setzero_si128 (),2673 (__v16qi) _mm_setzero_si128());
2674 __M);
2675}2674}
26762675
2677static __inline__ __m256i __DEFAULT_FN_ATTRS2676static __inline__ __m256i __DEFAULT_FN_ATTRS
2678_mm256_mask_set1_epi8 (__m256i __O, __mmask32 __M, char __A)2677_mm256_mask_set1_epi8 (__m256i __O, __mmask32 __M, char __A)
2679{2678{
2680 return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A,2679 return (__m256i) __builtin_ia32_selectb_256(__M,
2681 (__v32qi) __O,2680 (__v32qi) _mm256_set1_epi8(__A),
2682 __M);2681 (__v32qi) __O);
2683}2682}
26842683
2685static __inline__ __m256i __DEFAULT_FN_ATTRS2684static __inline__ __m256i __DEFAULT_FN_ATTRS
2686_mm256_maskz_set1_epi8 (__mmask32 __M, char __A)2685_mm256_maskz_set1_epi8 (__mmask32 __M, char __A)
2687{2686{
2688 return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A,2687 return (__m256i) __builtin_ia32_selectb_256(__M,
2689 (__v32qi)2688 (__v32qi) _mm256_set1_epi8(__A),
2690 _mm256_setzero_si256 (),2689 (__v32qi) _mm256_setzero_si256());
2691 __M);
2692}2690}
26932691
2694static __inline__ __m128i __DEFAULT_FN_ATTRS2692static __inline__ __m128i __DEFAULT_FN_ATTRS
...@@ -3025,33 +3023,33 @@ _mm256_maskz_broadcastw_epi16 (__mmask16 __M, __m128i __A)...@@ -3025,33 +3023,33 @@ _mm256_maskz_broadcastw_epi16 (__mmask16 __M, __m128i __A)
3025static __inline__ __m256i __DEFAULT_FN_ATTRS3023static __inline__ __m256i __DEFAULT_FN_ATTRS
3026_mm256_mask_set1_epi16 (__m256i __O, __mmask16 __M, short __A)3024_mm256_mask_set1_epi16 (__m256i __O, __mmask16 __M, short __A)
3027{3025{
3028 return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A,3026 return (__m256i) __builtin_ia32_selectw_256 (__M,
3029 (__v16hi) __O,3027 (__v16hi) _mm256_set1_epi16(__A),
3030 __M);3028 (__v16hi) __O);
3031}3029}
30323030
3033static __inline__ __m256i __DEFAULT_FN_ATTRS3031static __inline__ __m256i __DEFAULT_FN_ATTRS
3034_mm256_maskz_set1_epi16 (__mmask16 __M, short __A)3032_mm256_maskz_set1_epi16 (__mmask16 __M, short __A)
3035{3033{
3036 return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A,3034 return (__m256i) __builtin_ia32_selectw_256(__M,
3037 (__v16hi) _mm256_setzero_si256 (),3035 (__v16hi)_mm256_set1_epi16(__A),
3038 __M);3036 (__v16hi) _mm256_setzero_si256());
3039}3037}
30403038
3041static __inline__ __m128i __DEFAULT_FN_ATTRS3039static __inline__ __m128i __DEFAULT_FN_ATTRS
3042_mm_mask_set1_epi16 (__m128i __O, __mmask8 __M, short __A)3040_mm_mask_set1_epi16 (__m128i __O, __mmask8 __M, short __A)
3043{3041{
3044 return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A,3042 return (__m128i) __builtin_ia32_selectw_128(__M,
3045 (__v8hi) __O,3043 (__v8hi) _mm_set1_epi16(__A),
3046 __M);3044 (__v8hi) __O);
3047}3045}
30483046
3049static __inline__ __m128i __DEFAULT_FN_ATTRS3047static __inline__ __m128i __DEFAULT_FN_ATTRS
3050_mm_maskz_set1_epi16 (__mmask8 __M, short __A)3048_mm_maskz_set1_epi16 (__mmask8 __M, short __A)
3051{3049{
3052 return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A,3050 return (__m128i) __builtin_ia32_selectw_128(__M,
3053 (__v8hi) _mm_setzero_si128 (),3051 (__v8hi) _mm_set1_epi16(__A),
3054 __M);3052 (__v8hi) _mm_setzero_si128());
3055}3053}
30563054
3057static __inline__ __m128i __DEFAULT_FN_ATTRS3055static __inline__ __m128i __DEFAULT_FN_ATTRS
c_headers/avx512vldqintrin.h+27-27
...@@ -978,25 +978,25 @@ _mm256_movepi64_mask (__m256i __A)...@@ -978,25 +978,25 @@ _mm256_movepi64_mask (__m256i __A)
978static __inline__ __m256 __DEFAULT_FN_ATTRS978static __inline__ __m256 __DEFAULT_FN_ATTRS
979_mm256_broadcast_f32x2 (__m128 __A)979_mm256_broadcast_f32x2 (__m128 __A)
980{980{
981 return (__m256) __builtin_ia32_broadcastf32x2_256_mask ((__v4sf) __A,981 return (__m256)__builtin_shufflevector((__v4sf)__A,
982 (__v8sf)_mm256_undefined_ps(),982 (__v4sf)_mm_undefined_ps(),
983 (__mmask8) -1);983 0, 1, 0, 1, 0, 1, 0, 1);
984}984}
985985
986static __inline__ __m256 __DEFAULT_FN_ATTRS986static __inline__ __m256 __DEFAULT_FN_ATTRS
987_mm256_mask_broadcast_f32x2 (__m256 __O, __mmask8 __M, __m128 __A)987_mm256_mask_broadcast_f32x2 (__m256 __O, __mmask8 __M, __m128 __A)
988{988{
989 return (__m256) __builtin_ia32_broadcastf32x2_256_mask ((__v4sf) __A,989 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
990 (__v8sf) __O,990 (__v8sf)_mm256_broadcast_f32x2(__A),
991 __M);991 (__v8sf)__O);
992}992}
993993
994static __inline__ __m256 __DEFAULT_FN_ATTRS994static __inline__ __m256 __DEFAULT_FN_ATTRS
995_mm256_maskz_broadcast_f32x2 (__mmask8 __M, __m128 __A)995_mm256_maskz_broadcast_f32x2 (__mmask8 __M, __m128 __A)
996{996{
997 return (__m256) __builtin_ia32_broadcastf32x2_256_mask ((__v4sf) __A,997 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
998 (__v8sf) _mm256_setzero_ps (),998 (__v8sf)_mm256_broadcast_f32x2(__A),
999 __M);999 (__v8sf)_mm256_setzero_ps());
1000}1000}
10011001
1002static __inline__ __m256d __DEFAULT_FN_ATTRS1002static __inline__ __m256d __DEFAULT_FN_ATTRS
...@@ -1025,49 +1025,49 @@ _mm256_maskz_broadcast_f64x2 (__mmask8 __M, __m128d __A)...@@ -1025,49 +1025,49 @@ _mm256_maskz_broadcast_f64x2 (__mmask8 __M, __m128d __A)
1025static __inline__ __m128i __DEFAULT_FN_ATTRS1025static __inline__ __m128i __DEFAULT_FN_ATTRS
1026_mm_broadcast_i32x2 (__m128i __A)1026_mm_broadcast_i32x2 (__m128i __A)
1027{1027{
1028 return (__m128i) __builtin_ia32_broadcasti32x2_128_mask ((__v4si) __A,1028 return (__m128i)__builtin_shufflevector((__v4si)__A,
1029 (__v4si)_mm_undefined_si128(),1029 (__v4si)_mm_undefined_si128(),
1030 (__mmask8) -1);1030 0, 1, 0, 1);
1031}1031}
10321032
1033static __inline__ __m128i __DEFAULT_FN_ATTRS1033static __inline__ __m128i __DEFAULT_FN_ATTRS
1034_mm_mask_broadcast_i32x2 (__m128i __O, __mmask8 __M, __m128i __A)1034_mm_mask_broadcast_i32x2 (__m128i __O, __mmask8 __M, __m128i __A)
1035{1035{
1036 return (__m128i) __builtin_ia32_broadcasti32x2_128_mask ((__v4si) __A,1036 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
1037 (__v4si) __O,1037 (__v4si)_mm_broadcast_i32x2(__A),
1038 __M);1038 (__v4si)__O);
1039}1039}
10401040
1041static __inline__ __m128i __DEFAULT_FN_ATTRS1041static __inline__ __m128i __DEFAULT_FN_ATTRS
1042_mm_maskz_broadcast_i32x2 (__mmask8 __M, __m128i __A)1042_mm_maskz_broadcast_i32x2 (__mmask8 __M, __m128i __A)
1043{1043{
1044 return (__m128i) __builtin_ia32_broadcasti32x2_128_mask ((__v4si) __A,1044 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
1045 (__v4si) _mm_setzero_si128 (),1045 (__v4si)_mm_broadcast_i32x2(__A),
1046 __M);1046 (__v4si)_mm_setzero_si128());
1047}1047}
10481048
1049static __inline__ __m256i __DEFAULT_FN_ATTRS1049static __inline__ __m256i __DEFAULT_FN_ATTRS
1050_mm256_broadcast_i32x2 (__m128i __A)1050_mm256_broadcast_i32x2 (__m128i __A)
1051{1051{
1052 return (__m256i) __builtin_ia32_broadcasti32x2_256_mask ((__v4si) __A,1052 return (__m256i)__builtin_shufflevector((__v4si)__A,
1053 (__v8si)_mm256_undefined_si256(),1053 (__v4si)_mm_undefined_si128(),
1054 (__mmask8) -1);1054 0, 1, 0, 1, 0, 1, 0, 1);
1055}1055}
10561056
1057static __inline__ __m256i __DEFAULT_FN_ATTRS1057static __inline__ __m256i __DEFAULT_FN_ATTRS
1058_mm256_mask_broadcast_i32x2 (__m256i __O, __mmask8 __M, __m128i __A)1058_mm256_mask_broadcast_i32x2 (__m256i __O, __mmask8 __M, __m128i __A)
1059{1059{
1060 return (__m256i) __builtin_ia32_broadcasti32x2_256_mask ((__v4si) __A,1060 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
1061 (__v8si) __O,1061 (__v8si)_mm256_broadcast_i32x2(__A),
1062 __M);1062 (__v8si)__O);
1063}1063}
10641064
1065static __inline__ __m256i __DEFAULT_FN_ATTRS1065static __inline__ __m256i __DEFAULT_FN_ATTRS
1066_mm256_maskz_broadcast_i32x2 (__mmask8 __M, __m128i __A)1066_mm256_maskz_broadcast_i32x2 (__mmask8 __M, __m128i __A)
1067{1067{
1068 return (__m256i) __builtin_ia32_broadcasti32x2_256_mask ((__v4si) __A,1068 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
1069 (__v8si) _mm256_setzero_si256 (),1069 (__v8si)_mm256_broadcast_i32x2(__A),
1070 __M);1070 (__v8si)_mm256_setzero_si256());
1071}1071}
10721072
1073static __inline__ __m256i __DEFAULT_FN_ATTRS1073static __inline__ __m256i __DEFAULT_FN_ATTRS
c_headers/avx512vlintrin.h+41-28
...@@ -5723,59 +5723,72 @@ _mm256_maskz_movedup_pd (__mmask8 __U, __m256d __A)...@@ -5723,59 +5723,72 @@ _mm256_maskz_movedup_pd (__mmask8 __U, __m256d __A)
5723 (__v4df)_mm256_setzero_pd());5723 (__v4df)_mm256_setzero_pd());
5724}5724}
57255725
5726static __inline__ __m128i __DEFAULT_FN_ATTRS
5727_mm_mask_set1_epi32(__m128i __O, __mmask8 __M, int __A)
5728{
5729 return (__m128i)__builtin_ia32_selectd_128(__M,
5730 (__v4si) _mm_set1_epi32(__A),
5731 (__v4si)__O);
5732}
57265733
5727#define _mm_mask_set1_epi32(O, M, A) __extension__ ({ \5734static __inline__ __m128i __DEFAULT_FN_ATTRS
5728 (__m128i)__builtin_ia32_pbroadcastd128_gpr_mask((int)(A), \5735_mm_maskz_set1_epi32( __mmask8 __M, int __A)
5729 (__v4si)(__m128i)(O), \5736{
5730 (__mmask8)(M)); })5737 return (__m128i)__builtin_ia32_selectd_128(__M,
5738 (__v4si) _mm_set1_epi32(__A),
5739 (__v4si)_mm_setzero_si128());
5740}
57315741
5732#define _mm_maskz_set1_epi32(M, A) __extension__ ({ \5742static __inline__ __m256i __DEFAULT_FN_ATTRS
5733 (__m128i)__builtin_ia32_pbroadcastd128_gpr_mask((int)(A), \5743_mm256_mask_set1_epi32(__m256i __O, __mmask8 __M, int __A)
5734 (__v4si)_mm_setzero_si128(), \5744{
5735 (__mmask8)(M)); })5745 return (__m256i)__builtin_ia32_selectd_256(__M,
5746 (__v8si) _mm256_set1_epi32(__A),
5747 (__v8si)__O);
5748}
57365749
5737#define _mm256_mask_set1_epi32(O, M, A) __extension__ ({ \5750static __inline__ __m256i __DEFAULT_FN_ATTRS
5738 (__m256i)__builtin_ia32_pbroadcastd256_gpr_mask((int)(A), \5751_mm256_maskz_set1_epi32( __mmask8 __M, int __A)
5739 (__v8si)(__m256i)(O), \5752{
5740 (__mmask8)(M)); })5753 return (__m256i)__builtin_ia32_selectd_256(__M,
5754 (__v8si) _mm256_set1_epi32(__A),
5755 (__v8si)_mm256_setzero_si256());
5756}
57415757
5742#define _mm256_maskz_set1_epi32(M, A) __extension__ ({ \
5743 (__m256i)__builtin_ia32_pbroadcastd256_gpr_mask((int)(A), \
5744 (__v8si)_mm256_setzero_si256(), \
5745 (__mmask8)(M)); })
57465758
5747#ifdef __x86_64__5759#ifdef __x86_64__
5748static __inline__ __m128i __DEFAULT_FN_ATTRS5760static __inline__ __m128i __DEFAULT_FN_ATTRS
5749_mm_mask_set1_epi64 (__m128i __O, __mmask8 __M, long long __A)5761_mm_mask_set1_epi64 (__m128i __O, __mmask8 __M, long long __A)
5750{5762{
5751 return (__m128i) __builtin_ia32_pbroadcastq128_gpr_mask (__A, (__v2di) __O,5763 return (__m128i) __builtin_ia32_selectq_128(__M,
5752 __M);5764 (__v2di) _mm_set1_epi64x(__A),
5765 (__v2di) __O);
5753}5766}
57545767
5755static __inline__ __m128i __DEFAULT_FN_ATTRS5768static __inline__ __m128i __DEFAULT_FN_ATTRS
5756_mm_maskz_set1_epi64 (__mmask8 __M, long long __A)5769_mm_maskz_set1_epi64 (__mmask8 __M, long long __A)
5757{5770{
5758 return (__m128i) __builtin_ia32_pbroadcastq128_gpr_mask (__A,5771 return (__m128i) __builtin_ia32_selectq_128(__M,
5759 (__v2di)5772 (__v2di) _mm_set1_epi64x(__A),
5760 _mm_setzero_si128 (),5773 (__v2di) _mm_setzero_si128());
5761 __M);
5762}5774}
57635775
5764static __inline__ __m256i __DEFAULT_FN_ATTRS5776static __inline__ __m256i __DEFAULT_FN_ATTRS
5765_mm256_mask_set1_epi64 (__m256i __O, __mmask8 __M, long long __A)5777_mm256_mask_set1_epi64 (__m256i __O, __mmask8 __M, long long __A)
5766{5778{
5767 return (__m256i) __builtin_ia32_pbroadcastq256_gpr_mask (__A, (__v4di) __O,5779 return (__m256i) __builtin_ia32_selectq_256(__M,
5768 __M);5780 (__v4di) _mm256_set1_epi64x(__A),
5781 (__v4di) __O) ;
5769}5782}
57705783
5771static __inline__ __m256i __DEFAULT_FN_ATTRS5784static __inline__ __m256i __DEFAULT_FN_ATTRS
5772_mm256_maskz_set1_epi64 (__mmask8 __M, long long __A)5785_mm256_maskz_set1_epi64 (__mmask8 __M, long long __A)
5773{5786{
5774 return (__m256i) __builtin_ia32_pbroadcastq256_gpr_mask (__A,5787 return (__m256i) __builtin_ia32_selectq_256(__M,
5775 (__v4di)5788 (__v4di) _mm256_set1_epi64x(__A),
5776 _mm256_setzero_si256 (),5789 (__v4di) _mm256_setzero_si256());
5777 __M);
5778}5790}
5791
5779#endif5792#endif
57805793
5781#define _mm_fixupimm_pd(A, B, C, imm) __extension__ ({ \5794#define _mm_fixupimm_pd(A, B, C, imm) __extension__ ({ \
c_headers/clflushoptintrin.h+1-1
...@@ -32,7 +32,7 @@...@@ -32,7 +32,7 @@
32#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("clflushopt")))32#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("clflushopt")))
3333
34static __inline__ void __DEFAULT_FN_ATTRS34static __inline__ void __DEFAULT_FN_ATTRS
35_mm_clflushopt(char * __m) {35_mm_clflushopt(void const * __m) {
36 __builtin_ia32_clflushopt(__m);36 __builtin_ia32_clflushopt(__m);
37}37}
3838
c_headers/clwbintrin.h created+52
...@@ -0,0 +1,52 @@
1/*===---- clwbintrin.h - CLWB intrinsic ------------------------------------===
2 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 * THE SOFTWARE.
20 *
21 *===-----------------------------------------------------------------------===
22 */
23
24#ifndef __IMMINTRIN_H
25#error "Never use <clwbintrin.h> directly; include <immintrin.h> instead."
26#endif
27
28#ifndef __CLWBINTRIN_H
29#define __CLWBINTRIN_H
30
31/* Define the default attributes for the functions in this file. */
32#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("clwb")))
33
34/// \brief Writes back to memory the cache line (if modified) that contains the
35/// linear address specified in \a __p from any level of the cache hierarchy in
36/// the cache coherence domain
37///
38/// \headerfile <immintrin.h>
39///
40/// This intrinsic corresponds to the <c> CLWB </c> instruction.
41///
42/// \param __p
43/// A pointer to the memory location used to identify the cache line to be
44/// written back.
45static __inline__ void __DEFAULT_FN_ATTRS
46_mm_clwb(void const *__p) {
47 __builtin_ia32_clwb(__p);
48}
49
50#undef __DEFAULT_FN_ATTRS
51
52#endif
c_headers/cuda_wrappers/new+50-1
...@@ -26,7 +26,6 @@...@@ -26,7 +26,6 @@
2626
27#include_next <new>27#include_next <new>
2828
29// Device overrides for placement new and delete.
30#pragma push_macro("CUDA_NOEXCEPT")29#pragma push_macro("CUDA_NOEXCEPT")
31#if __cplusplus >= 201103L30#if __cplusplus >= 201103L
32#define CUDA_NOEXCEPT noexcept31#define CUDA_NOEXCEPT noexcept
...@@ -34,6 +33,55 @@...@@ -34,6 +33,55 @@
34#define CUDA_NOEXCEPT33#define CUDA_NOEXCEPT
35#endif34#endif
3635
36// Device overrides for non-placement new and delete.
37__device__ inline void *operator new(__SIZE_TYPE__ size) {
38 if (size == 0) {
39 size = 1;
40 }
41 return ::malloc(size);
42}
43__device__ inline void *operator new(__SIZE_TYPE__ size,
44 const std::nothrow_t &) CUDA_NOEXCEPT {
45 return ::operator new(size);
46}
47
48__device__ inline void *operator new[](__SIZE_TYPE__ size) {
49 return ::operator new(size);
50}
51__device__ inline void *operator new[](__SIZE_TYPE__ size,
52 const std::nothrow_t &) {
53 return ::operator new(size);
54}
55
56__device__ inline void operator delete(void* ptr) CUDA_NOEXCEPT {
57 if (ptr) {
58 ::free(ptr);
59 }
60}
61__device__ inline void operator delete(void *ptr,
62 const std::nothrow_t &) CUDA_NOEXCEPT {
63 ::operator delete(ptr);
64}
65
66__device__ inline void operator delete[](void* ptr) CUDA_NOEXCEPT {
67 ::operator delete(ptr);
68}
69__device__ inline void operator delete[](void *ptr,
70 const std::nothrow_t &) CUDA_NOEXCEPT {
71 ::operator delete(ptr);
72}
73
74// Sized delete, C++14 only.
75#if __cplusplus >= 201402L
76__device__ void operator delete(void *ptr, __SIZE_TYPE__ size) CUDA_NOEXCEPT {
77 ::operator delete(ptr);
78}
79__device__ void operator delete[](void *ptr, __SIZE_TYPE__ size) CUDA_NOEXCEPT {
80 ::operator delete(ptr);
81}
82#endif
83
84// Device overrides for placement new and delete.
37__device__ inline void *operator new(__SIZE_TYPE__, void *__ptr) CUDA_NOEXCEPT {85__device__ inline void *operator new(__SIZE_TYPE__, void *__ptr) CUDA_NOEXCEPT {
38 return __ptr;86 return __ptr;
39}87}
...@@ -42,6 +90,7 @@ __device__ inline void *operator new[](__SIZE_TYPE__, void *__ptr) CUDA_NOEXCEPT...@@ -42,6 +90,7 @@ __device__ inline void *operator new[](__SIZE_TYPE__, void *__ptr) CUDA_NOEXCEPT
42}90}
43__device__ inline void operator delete(void *, void *) CUDA_NOEXCEPT {}91__device__ inline void operator delete(void *, void *) CUDA_NOEXCEPT {}
44__device__ inline void operator delete[](void *, void *) CUDA_NOEXCEPT {}92__device__ inline void operator delete[](void *, void *) CUDA_NOEXCEPT {}
93
45#pragma pop_macro("CUDA_NOEXCEPT")94#pragma pop_macro("CUDA_NOEXCEPT")
4695
47#endif // include guard96#endif // include guard
c_headers/emmintrin.h+10-2
...@@ -2258,7 +2258,11 @@ _mm_adds_epu16(__m128i __a, __m128i __b)...@@ -2258,7 +2258,11 @@ _mm_adds_epu16(__m128i __a, __m128i __b)
2258static __inline__ __m128i __DEFAULT_FN_ATTRS2258static __inline__ __m128i __DEFAULT_FN_ATTRS
2259_mm_avg_epu8(__m128i __a, __m128i __b)2259_mm_avg_epu8(__m128i __a, __m128i __b)
2260{2260{
2261 return (__m128i)__builtin_ia32_pavgb128((__v16qi)__a, (__v16qi)__b);2261 typedef unsigned short __v16hu __attribute__ ((__vector_size__ (32)));
2262 return (__m128i)__builtin_convertvector(
2263 ((__builtin_convertvector((__v16qu)__a, __v16hu) +
2264 __builtin_convertvector((__v16qu)__b, __v16hu)) + 1)
2265 >> 1, __v16qu);
2262}2266}
22632267
2264/// \brief Computes the rounded avarages of corresponding elements of two2268/// \brief Computes the rounded avarages of corresponding elements of two
...@@ -2278,7 +2282,11 @@ _mm_avg_epu8(__m128i __a, __m128i __b)...@@ -2278,7 +2282,11 @@ _mm_avg_epu8(__m128i __a, __m128i __b)
2278static __inline__ __m128i __DEFAULT_FN_ATTRS2282static __inline__ __m128i __DEFAULT_FN_ATTRS
2279_mm_avg_epu16(__m128i __a, __m128i __b)2283_mm_avg_epu16(__m128i __a, __m128i __b)
2280{2284{
2281 return (__m128i)__builtin_ia32_pavgw128((__v8hi)__a, (__v8hi)__b);2285 typedef unsigned int __v8su __attribute__ ((__vector_size__ (32)));
2286 return (__m128i)__builtin_convertvector(
2287 ((__builtin_convertvector((__v8hu)__a, __v8su) +
2288 __builtin_convertvector((__v8hu)__b, __v8su)) + 1)
2289 >> 1, __v8hu);
2282}2290}
22832291
2284/// \brief Multiplies the corresponding elements of two 128-bit signed [8 x i16]2292/// \brief Multiplies the corresponding elements of two 128-bit signed [8 x i16]
c_headers/float.h+14
...@@ -143,4 +143,18 @@...@@ -143,4 +143,18 @@
143# define LDBL_DECIMAL_DIG __LDBL_DECIMAL_DIG__143# define LDBL_DECIMAL_DIG __LDBL_DECIMAL_DIG__
144#endif144#endif
145145
146#ifdef __STDC_WANT_IEC_60559_TYPES_EXT__
147# define FLT16_MANT_DIG __FLT16_MANT_DIG__
148# define FLT16_DECIMAL_DIG __FLT16_DECIMAL_DIG__
149# define FLT16_DIG __FLT16_DIG__
150# define FLT16_MIN_EXP __FLT16_MIN_EXP__
151# define FLT16_MIN_10_EXP __FLT16_MIN_10_EXP__
152# define FLT16_MAX_EXP __FLT16_MAX_EXP__
153# define FLT16_MAX_10_EXP __FLT16_MAX_10_EXP__
154# define FLT16_MAX __FLT16_MAX__
155# define FLT16_EPSILON __FLT16_EPSILON__
156# define FLT16_MIN __FLT16_MIN__
157# define FLT16_TRUE_MIN __FLT16_TRUE_MIN__
158#endif /* __STDC_WANT_IEC_60559_TYPES_EXT__ */
159
146#endif /* __FLOAT_H */160#endif /* __FLOAT_H */
c_headers/immintrin.h+4
...@@ -58,6 +58,10 @@...@@ -58,6 +58,10 @@
58#include <clflushoptintrin.h>58#include <clflushoptintrin.h>
59#endif59#endif
6060
61#if !defined(_MSC_VER) || __has_feature(modules) || defined(__CLWB__)
62#include <clwbintrin.h>
63#endif
64
61#if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX__)65#if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX__)
62#include <avxintrin.h>66#include <avxintrin.h>
63#endif67#endif
c_headers/intrin.h+5-1
...@@ -38,6 +38,10 @@...@@ -38,6 +38,10 @@
38#include <armintr.h>38#include <armintr.h>
39#endif39#endif
4040
41#if defined(_M_ARM64)
42#include <arm64intr.h>
43#endif
44
41/* For the definition of jmp_buf. */45/* For the definition of jmp_buf. */
42#if __STDC_HOSTED__46#if __STDC_HOSTED__
43#include <setjmp.h>47#include <setjmp.h>
...@@ -828,7 +832,7 @@ _InterlockedCompareExchange_nf(long volatile *_Destination,...@@ -828,7 +832,7 @@ _InterlockedCompareExchange_nf(long volatile *_Destination,
828 __ATOMIC_SEQ_CST, __ATOMIC_RELAXED);832 __ATOMIC_SEQ_CST, __ATOMIC_RELAXED);
829 return _Comparand;833 return _Comparand;
830}834}
831static __inline__ short __DEFAULT_FN_ATTRS835static __inline__ long __DEFAULT_FN_ATTRS
832_InterlockedCompareExchange_rel(long volatile *_Destination,836_InterlockedCompareExchange_rel(long volatile *_Destination,
833 long _Exchange, long _Comparand) {837 long _Exchange, long _Comparand) {
834 __atomic_compare_exchange(_Destination, &_Comparand, &_Exchange, 0,838 __atomic_compare_exchange(_Destination, &_Comparand, &_Exchange, 0,
c_headers/opencl-c.h+23-336
...@@ -11381,6 +11381,8 @@ half16 __ovld __cnfn bitselect(half16 a, half16 b, half16 c);...@@ -11381,6 +11381,8 @@ half16 __ovld __cnfn bitselect(half16 a, half16 b, half16 c);
11381 * For each component of a vector type,11381 * For each component of a vector type,
11382 * result[i] = if MSB of c[i] is set ? b[i] : a[i].11382 * result[i] = if MSB of c[i] is set ? b[i] : a[i].
11383 * For a scalar type, result = c ? b : a.11383 * For a scalar type, result = c ? b : a.
11384 * b and a must have the same type.
11385 * c must have the same number of elements and bits as a.
11384 */11386 */
11385char __ovld __cnfn select(char a, char b, char c);11387char __ovld __cnfn select(char a, char b, char c);
11386uchar __ovld __cnfn select(uchar a, uchar b, char c);11388uchar __ovld __cnfn select(uchar a, uchar b, char c);
...@@ -11394,60 +11396,7 @@ char8 __ovld __cnfn select(char8 a, char8 b, char8 c);...@@ -11394,60 +11396,7 @@ char8 __ovld __cnfn select(char8 a, char8 b, char8 c);
11394uchar8 __ovld __cnfn select(uchar8 a, uchar8 b, char8 c);11396uchar8 __ovld __cnfn select(uchar8 a, uchar8 b, char8 c);
11395char16 __ovld __cnfn select(char16 a, char16 b, char16 c);11397char16 __ovld __cnfn select(char16 a, char16 b, char16 c);
11396uchar16 __ovld __cnfn select(uchar16 a, uchar16 b, char16 c);11398uchar16 __ovld __cnfn select(uchar16 a, uchar16 b, char16 c);
11397short __ovld __cnfn select(short a, short b, char c);11399
11398ushort __ovld __cnfn select(ushort a, ushort b, char c);
11399short2 __ovld __cnfn select(short2 a, short2 b, char2 c);
11400ushort2 __ovld __cnfn select(ushort2 a, ushort2 b, char2 c);
11401short3 __ovld __cnfn select(short3 a, short3 b, char3 c);
11402ushort3 __ovld __cnfn select(ushort3 a, ushort3 b, char3 c);
11403short4 __ovld __cnfn select(short4 a, short4 b, char4 c);
11404ushort4 __ovld __cnfn select(ushort4 a, ushort4 b, char4 c);
11405short8 __ovld __cnfn select(short8 a, short8 b, char8 c);
11406ushort8 __ovld __cnfn select(ushort8 a, ushort8 b, char8 c);
11407short16 __ovld __cnfn select(short16 a, short16 b, char16 c);
11408ushort16 __ovld __cnfn select(ushort16 a, ushort16 b, char16 c);
11409int __ovld __cnfn select(int a, int b, char c);
11410uint __ovld __cnfn select(uint a, uint b, char c);
11411int2 __ovld __cnfn select(int2 a, int2 b, char2 c);
11412uint2 __ovld __cnfn select(uint2 a, uint2 b, char2 c);
11413int3 __ovld __cnfn select(int3 a, int3 b, char3 c);
11414uint3 __ovld __cnfn select(uint3 a, uint3 b, char3 c);
11415int4 __ovld __cnfn select(int4 a, int4 b, char4 c);
11416uint4 __ovld __cnfn select(uint4 a, uint4 b, char4 c);
11417int8 __ovld __cnfn select(int8 a, int8 b, char8 c);
11418uint8 __ovld __cnfn select(uint8 a, uint8 b, char8 c);
11419int16 __ovld __cnfn select(int16 a, int16 b, char16 c);
11420uint16 __ovld __cnfn select(uint16 a, uint16 b, char16 c);
11421long __ovld __cnfn select(long a, long b, char c);
11422ulong __ovld __cnfn select(ulong a, ulong b, char c);
11423long2 __ovld __cnfn select(long2 a, long2 b, char2 c);
11424ulong2 __ovld __cnfn select(ulong2 a, ulong2 b, char2 c);
11425long3 __ovld __cnfn select(long3 a, long3 b, char3 c);
11426ulong3 __ovld __cnfn select(ulong3 a, ulong3 b, char3 c);
11427long4 __ovld __cnfn select(long4 a, long4 b, char4 c);
11428ulong4 __ovld __cnfn select(ulong4 a, ulong4 b, char4 c);
11429long8 __ovld __cnfn select(long8 a, long8 b, char8 c);
11430ulong8 __ovld __cnfn select(ulong8 a, ulong8 b, char8 c);
11431long16 __ovld __cnfn select(long16 a, long16 b, char16 c);
11432ulong16 __ovld __cnfn select(ulong16 a, ulong16 b, char16 c);
11433float __ovld __cnfn select(float a, float b, char c);
11434float2 __ovld __cnfn select(float2 a, float2 b, char2 c);
11435float3 __ovld __cnfn select(float3 a, float3 b, char3 c);
11436float4 __ovld __cnfn select(float4 a, float4 b, char4 c);
11437float8 __ovld __cnfn select(float8 a, float8 b, char8 c);
11438float16 __ovld __cnfn select(float16 a, float16 b, char16 c);
11439char __ovld __cnfn select(char a, char b, short c);
11440uchar __ovld __cnfn select(uchar a, uchar b, short c);
11441char2 __ovld __cnfn select(char2 a, char2 b, short2 c);
11442uchar2 __ovld __cnfn select(uchar2 a, uchar2 b, short2 c);
11443char3 __ovld __cnfn select(char3 a, char3 b, short3 c);
11444uchar3 __ovld __cnfn select(uchar3 a, uchar3 b, short3 c);
11445char4 __ovld __cnfn select(char4 a, char4 b, short4 c);
11446uchar4 __ovld __cnfn select(uchar4 a, uchar4 b, short4 c);
11447char8 __ovld __cnfn select(char8 a, char8 b, short8 c);
11448uchar8 __ovld __cnfn select(uchar8 a, uchar8 b, short8 c);
11449char16 __ovld __cnfn select(char16 a, char16 b, short16 c);
11450uchar16 __ovld __cnfn select(uchar16 a, uchar16 b, short16 c);
11451short __ovld __cnfn select(short a, short b, short c);11400short __ovld __cnfn select(short a, short b, short c);
11452ushort __ovld __cnfn select(ushort a, ushort b, short c);11401ushort __ovld __cnfn select(ushort a, ushort b, short c);
11453short2 __ovld __cnfn select(short2 a, short2 b, short2 c);11402short2 __ovld __cnfn select(short2 a, short2 b, short2 c);
...@@ -11460,60 +11409,7 @@ short8 __ovld __cnfn select(short8 a, short8 b, short8 c);...@@ -11460,60 +11409,7 @@ short8 __ovld __cnfn select(short8 a, short8 b, short8 c);
11460ushort8 __ovld __cnfn select(ushort8 a, ushort8 b, short8 c);11409ushort8 __ovld __cnfn select(ushort8 a, ushort8 b, short8 c);
11461short16 __ovld __cnfn select(short16 a, short16 b, short16 c);11410short16 __ovld __cnfn select(short16 a, short16 b, short16 c);
11462ushort16 __ovld __cnfn select(ushort16 a, ushort16 b, short16 c);11411ushort16 __ovld __cnfn select(ushort16 a, ushort16 b, short16 c);
11463int __ovld __cnfn select(int a, int b, short c);11412
11464uint __ovld __cnfn select(uint a, uint b, short c);
11465int2 __ovld __cnfn select(int2 a, int2 b, short2 c);
11466uint2 __ovld __cnfn select(uint2 a, uint2 b, short2 c);
11467int3 __ovld __cnfn select(int3 a, int3 b, short3 c);
11468uint3 __ovld __cnfn select(uint3 a, uint3 b, short3 c);
11469int4 __ovld __cnfn select(int4 a, int4 b, short4 c);
11470uint4 __ovld __cnfn select(uint4 a, uint4 b, short4 c);
11471int8 __ovld __cnfn select(int8 a, int8 b, short8 c);
11472uint8 __ovld __cnfn select(uint8 a, uint8 b, short8 c);
11473int16 __ovld __cnfn select(int16 a, int16 b, short16 c);
11474uint16 __ovld __cnfn select(uint16 a, uint16 b, short16 c);
11475long __ovld __cnfn select(long a, long b, short c);
11476ulong __ovld __cnfn select(ulong a, ulong b, short c);
11477long2 __ovld __cnfn select(long2 a, long2 b, short2 c);
11478ulong2 __ovld __cnfn select(ulong2 a, ulong2 b, short2 c);
11479long3 __ovld __cnfn select(long3 a, long3 b, short3 c);
11480ulong3 __ovld __cnfn select(ulong3 a, ulong3 b, short3 c);
11481long4 __ovld __cnfn select(long4 a, long4 b, short4 c);
11482ulong4 __ovld __cnfn select(ulong4 a, ulong4 b, short4 c);
11483long8 __ovld __cnfn select(long8 a, long8 b, short8 c);
11484ulong8 __ovld __cnfn select(ulong8 a, ulong8 b, short8 c);
11485long16 __ovld __cnfn select(long16 a, long16 b, short16 c);
11486ulong16 __ovld __cnfn select(ulong16 a, ulong16 b, short16 c);
11487float __ovld __cnfn select(float a, float b, short c);
11488float2 __ovld __cnfn select(float2 a, float2 b, short2 c);
11489float3 __ovld __cnfn select(float3 a, float3 b, short3 c);
11490float4 __ovld __cnfn select(float4 a, float4 b, short4 c);
11491float8 __ovld __cnfn select(float8 a, float8 b, short8 c);
11492float16 __ovld __cnfn select(float16 a, float16 b, short16 c);
11493char __ovld __cnfn select(char a, char b, int c);
11494uchar __ovld __cnfn select(uchar a, uchar b, int c);
11495char2 __ovld __cnfn select(char2 a, char2 b, int2 c);
11496uchar2 __ovld __cnfn select(uchar2 a, uchar2 b, int2 c);
11497char3 __ovld __cnfn select(char3 a, char3 b, int3 c);
11498uchar3 __ovld __cnfn select(uchar3 a, uchar3 b, int3 c);
11499char4 __ovld __cnfn select(char4 a, char4 b, int4 c);
11500uchar4 __ovld __cnfn select(uchar4 a, uchar4 b, int4 c);
11501char8 __ovld __cnfn select(char8 a, char8 b, int8 c);
11502uchar8 __ovld __cnfn select(uchar8 a, uchar8 b, int8 c);
11503char16 __ovld __cnfn select(char16 a, char16 b, int16 c);
11504uchar16 __ovld __cnfn select(uchar16 a, uchar16 b, int16 c);
11505short __ovld __cnfn select(short a, short b, int c);
11506ushort __ovld __cnfn select(ushort a, ushort b, int c);
11507short2 __ovld __cnfn select(short2 a, short2 b, int2 c);
11508ushort2 __ovld __cnfn select(ushort2 a, ushort2 b, int2 c);
11509short3 __ovld __cnfn select(short3 a, short3 b, int3 c);
11510ushort3 __ovld __cnfn select(ushort3 a, ushort3 b, int3 c);
11511short4 __ovld __cnfn select(short4 a, short4 b, int4 c);
11512ushort4 __ovld __cnfn select(ushort4 a, ushort4 b, int4 c);
11513short8 __ovld __cnfn select(short8 a, short8 b, int8 c);
11514ushort8 __ovld __cnfn select(ushort8 a, ushort8 b, int8 c);
11515short16 __ovld __cnfn select(short16 a, short16 b, int16 c);
11516ushort16 __ovld __cnfn select(ushort16 a, ushort16 b, int16 c);
11517int __ovld __cnfn select(int a, int b, int c);11413int __ovld __cnfn select(int a, int b, int c);
11518uint __ovld __cnfn select(uint a, uint b, int c);11414uint __ovld __cnfn select(uint a, uint b, int c);
11519int2 __ovld __cnfn select(int2 a, int2 b, int2 c);11415int2 __ovld __cnfn select(int2 a, int2 b, int2 c);
...@@ -11526,60 +11422,13 @@ int8 __ovld __cnfn select(int8 a, int8 b, int8 c);...@@ -11526,60 +11422,13 @@ int8 __ovld __cnfn select(int8 a, int8 b, int8 c);
11526uint8 __ovld __cnfn select(uint8 a, uint8 b, int8 c);11422uint8 __ovld __cnfn select(uint8 a, uint8 b, int8 c);
11527int16 __ovld __cnfn select(int16 a, int16 b, int16 c);11423int16 __ovld __cnfn select(int16 a, int16 b, int16 c);
11528uint16 __ovld __cnfn select(uint16 a, uint16 b, int16 c);11424uint16 __ovld __cnfn select(uint16 a, uint16 b, int16 c);
11529long __ovld __cnfn select(long a, long b, int c);
11530ulong __ovld __cnfn select(ulong a, ulong b, int c);
11531long2 __ovld __cnfn select(long2 a, long2 b, int2 c);
11532ulong2 __ovld __cnfn select(ulong2 a, ulong2 b, int2 c);
11533long3 __ovld __cnfn select(long3 a, long3 b, int3 c);
11534ulong3 __ovld __cnfn select(ulong3 a, ulong3 b, int3 c);
11535long4 __ovld __cnfn select(long4 a, long4 b, int4 c);
11536ulong4 __ovld __cnfn select(ulong4 a, ulong4 b, int4 c);
11537long8 __ovld __cnfn select(long8 a, long8 b, int8 c);
11538ulong8 __ovld __cnfn select(ulong8 a, ulong8 b, int8 c);
11539long16 __ovld __cnfn select(long16 a, long16 b, int16 c);
11540ulong16 __ovld __cnfn select(ulong16 a, ulong16 b, int16 c);
11541float __ovld __cnfn select(float a, float b, int c);11425float __ovld __cnfn select(float a, float b, int c);
11542float2 __ovld __cnfn select(float2 a, float2 b, int2 c);11426float2 __ovld __cnfn select(float2 a, float2 b, int2 c);
11543float3 __ovld __cnfn select(float3 a, float3 b, int3 c);11427float3 __ovld __cnfn select(float3 a, float3 b, int3 c);
11544float4 __ovld __cnfn select(float4 a, float4 b, int4 c);11428float4 __ovld __cnfn select(float4 a, float4 b, int4 c);
11545float8 __ovld __cnfn select(float8 a, float8 b, int8 c);11429float8 __ovld __cnfn select(float8 a, float8 b, int8 c);
11546float16 __ovld __cnfn select(float16 a, float16 b, int16 c);11430float16 __ovld __cnfn select(float16 a, float16 b, int16 c);
11547char __ovld __cnfn select(char a, char b, long c);11431
11548uchar __ovld __cnfn select(uchar a, uchar b, long c);
11549char2 __ovld __cnfn select(char2 a, char2 b, long2 c);
11550uchar2 __ovld __cnfn select(uchar2 a, uchar2 b, long2 c);
11551char3 __ovld __cnfn select(char3 a, char3 b, long3 c);
11552uchar3 __ovld __cnfn select(uchar3 a, uchar3 b, long3 c);
11553char4 __ovld __cnfn select(char4 a, char4 b, long4 c);
11554uchar4 __ovld __cnfn select(uchar4 a, uchar4 b, long4 c);
11555char8 __ovld __cnfn select(char8 a, char8 b, long8 c);
11556uchar8 __ovld __cnfn select(uchar8 a, uchar8 b, long8 c);
11557char16 __ovld __cnfn select(char16 a, char16 b, long16 c);
11558uchar16 __ovld __cnfn select(uchar16 a, uchar16 b, long16 c);
11559short __ovld __cnfn select(short a, short b, long c);
11560ushort __ovld __cnfn select(ushort a, ushort b, long c);
11561short2 __ovld __cnfn select(short2 a, short2 b, long2 c);
11562ushort2 __ovld __cnfn select(ushort2 a, ushort2 b, long2 c);
11563short3 __ovld __cnfn select(short3 a, short3 b, long3 c);
11564ushort3 __ovld __cnfn select(ushort3 a, ushort3 b, long3 c);
11565short4 __ovld __cnfn select(short4 a, short4 b, long4 c);
11566ushort4 __ovld __cnfn select(ushort4 a, ushort4 b, long4 c);
11567short8 __ovld __cnfn select(short8 a, short8 b, long8 c);
11568ushort8 __ovld __cnfn select(ushort8 a, ushort8 b, long8 c);
11569short16 __ovld __cnfn select(short16 a, short16 b, long16 c);
11570ushort16 __ovld __cnfn select(ushort16 a, ushort16 b, long16 c);
11571int __ovld __cnfn select(int a, int b, long c);
11572uint __ovld __cnfn select(uint a, uint b, long c);
11573int2 __ovld __cnfn select(int2 a, int2 b, long2 c);
11574uint2 __ovld __cnfn select(uint2 a, uint2 b, long2 c);
11575int3 __ovld __cnfn select(int3 a, int3 b, long3 c);
11576uint3 __ovld __cnfn select(uint3 a, uint3 b, long3 c);
11577int4 __ovld __cnfn select(int4 a, int4 b, long4 c);
11578uint4 __ovld __cnfn select(uint4 a, uint4 b, long4 c);
11579int8 __ovld __cnfn select(int8 a, int8 b, long8 c);
11580uint8 __ovld __cnfn select(uint8 a, uint8 b, long8 c);
11581int16 __ovld __cnfn select(int16 a, int16 b, long16 c);
11582uint16 __ovld __cnfn select(uint16 a, uint16 b, long16 c);
11583long __ovld __cnfn select(long a, long b, long c);11432long __ovld __cnfn select(long a, long b, long c);
11584ulong __ovld __cnfn select(ulong a, ulong b, long c);11433ulong __ovld __cnfn select(ulong a, ulong b, long c);
11585long2 __ovld __cnfn select(long2 a, long2 b, long2 c);11434long2 __ovld __cnfn select(long2 a, long2 b, long2 c);
...@@ -11592,12 +11441,7 @@ long8 __ovld __cnfn select(long8 a, long8 b, long8 c);...@@ -11592,12 +11441,7 @@ long8 __ovld __cnfn select(long8 a, long8 b, long8 c);
11592ulong8 __ovld __cnfn select(ulong8 a, ulong8 b, long8 c);11441ulong8 __ovld __cnfn select(ulong8 a, ulong8 b, long8 c);
11593long16 __ovld __cnfn select(long16 a, long16 b, long16 c);11442long16 __ovld __cnfn select(long16 a, long16 b, long16 c);
11594ulong16 __ovld __cnfn select(ulong16 a, ulong16 b, long16 c);11443ulong16 __ovld __cnfn select(ulong16 a, ulong16 b, long16 c);
11595float __ovld __cnfn select(float a, float b, long c);11444
11596float2 __ovld __cnfn select(float2 a, float2 b, long2 c);
11597float3 __ovld __cnfn select(float3 a, float3 b, long3 c);
11598float4 __ovld __cnfn select(float4 a, float4 b, long4 c);
11599float8 __ovld __cnfn select(float8 a, float8 b, long8 c);
11600float16 __ovld __cnfn select(float16 a, float16 b, long16 c);
11601char __ovld __cnfn select(char a, char b, uchar c);11445char __ovld __cnfn select(char a, char b, uchar c);
11602uchar __ovld __cnfn select(uchar a, uchar b, uchar c);11446uchar __ovld __cnfn select(uchar a, uchar b, uchar c);
11603char2 __ovld __cnfn select(char2 a, char2 b, uchar2 c);11447char2 __ovld __cnfn select(char2 a, char2 b, uchar2 c);
...@@ -11610,60 +11454,7 @@ char8 __ovld __cnfn select(char8 a, char8 b, uchar8 c);...@@ -11610,60 +11454,7 @@ char8 __ovld __cnfn select(char8 a, char8 b, uchar8 c);
11610uchar8 __ovld __cnfn select(uchar8 a, uchar8 b, uchar8 c);11454uchar8 __ovld __cnfn select(uchar8 a, uchar8 b, uchar8 c);
11611char16 __ovld __cnfn select(char16 a, char16 b, uchar16 c);11455char16 __ovld __cnfn select(char16 a, char16 b, uchar16 c);
11612uchar16 __ovld __cnfn select(uchar16 a, uchar16 b, uchar16 c);11456uchar16 __ovld __cnfn select(uchar16 a, uchar16 b, uchar16 c);
11613short __ovld __cnfn select(short a, short b, uchar c);11457
11614ushort __ovld __cnfn select(ushort a, ushort b, uchar c);
11615short2 __ovld __cnfn select(short2 a, short2 b, uchar2 c);
11616ushort2 __ovld __cnfn select(ushort2 a, ushort2 b, uchar2 c);
11617short3 __ovld __cnfn select(short3 a, short3 b, uchar3 c);
11618ushort3 __ovld __cnfn select(ushort3 a, ushort3 b, uchar3 c);
11619short4 __ovld __cnfn select(short4 a, short4 b, uchar4 c);
11620ushort4 __ovld __cnfn select(ushort4 a, ushort4 b, uchar4 c);
11621short8 __ovld __cnfn select(short8 a, short8 b, uchar8 c);
11622ushort8 __ovld __cnfn select(ushort8 a, ushort8 b, uchar8 c);
11623short16 __ovld __cnfn select(short16 a, short16 b, uchar16 c);
11624ushort16 __ovld __cnfn select(ushort16 a, ushort16 b, uchar16 c);
11625int __ovld __cnfn select(int a, int b, uchar c);
11626uint __ovld __cnfn select(uint a, uint b, uchar c);
11627int2 __ovld __cnfn select(int2 a, int2 b, uchar2 c);
11628uint2 __ovld __cnfn select(uint2 a, uint2 b, uchar2 c);
11629int3 __ovld __cnfn select(int3 a, int3 b, uchar3 c);
11630uint3 __ovld __cnfn select(uint3 a, uint3 b, uchar3 c);
11631int4 __ovld __cnfn select(int4 a, int4 b, uchar4 c);
11632uint4 __ovld __cnfn select(uint4 a, uint4 b, uchar4 c);
11633int8 __ovld __cnfn select(int8 a, int8 b, uchar8 c);
11634uint8 __ovld __cnfn select(uint8 a, uint8 b, uchar8 c);
11635int16 __ovld __cnfn select(int16 a, int16 b, uchar16 c);
11636uint16 __ovld __cnfn select(uint16 a, uint16 b, uchar16 c);
11637long __ovld __cnfn select(long a, long b, uchar c);
11638ulong __ovld __cnfn select(ulong a, ulong b, uchar c);
11639long2 __ovld __cnfn select(long2 a, long2 b, uchar2 c);
11640ulong2 __ovld __cnfn select(ulong2 a, ulong2 b, uchar2 c);
11641long3 __ovld __cnfn select(long3 a, long3 b, uchar3 c);
11642ulong3 __ovld __cnfn select(ulong3 a, ulong3 b, uchar3 c);
11643long4 __ovld __cnfn select(long4 a, long4 b, uchar4 c);
11644ulong4 __ovld __cnfn select(ulong4 a, ulong4 b, uchar4 c);
11645long8 __ovld __cnfn select(long8 a, long8 b, uchar8 c);
11646ulong8 __ovld __cnfn select(ulong8 a, ulong8 b, uchar8 c);
11647long16 __ovld __cnfn select(long16 a, long16 b, uchar16 c);
11648ulong16 __ovld __cnfn select(ulong16 a, ulong16 b, uchar16 c);
11649float __ovld __cnfn select(float a, float b, uchar c);
11650float2 __ovld __cnfn select(float2 a, float2 b, uchar2 c);
11651float3 __ovld __cnfn select(float3 a, float3 b, uchar3 c);
11652float4 __ovld __cnfn select(float4 a, float4 b, uchar4 c);
11653float8 __ovld __cnfn select(float8 a, float8 b, uchar8 c);
11654float16 __ovld __cnfn select(float16 a, float16 b, uchar16 c);
11655char __ovld __cnfn select(char a, char b, ushort c);
11656uchar __ovld __cnfn select(uchar a, uchar b, ushort c);
11657char2 __ovld __cnfn select(char2 a, char2 b, ushort2 c);
11658uchar2 __ovld __cnfn select(uchar2 a, uchar2 b, ushort2 c);
11659char3 __ovld __cnfn select(char3 a, char3 b, ushort3 c);
11660uchar3 __ovld __cnfn select(uchar3 a, uchar3 b, ushort3 c);
11661char4 __ovld __cnfn select(char4 a, char4 b, ushort4 c);
11662uchar4 __ovld __cnfn select(uchar4 a, uchar4 b, ushort4 c);
11663char8 __ovld __cnfn select(char8 a, char8 b, ushort8 c);
11664uchar8 __ovld __cnfn select(uchar8 a, uchar8 b, ushort8 c);
11665char16 __ovld __cnfn select(char16 a, char16 b, ushort16 c);
11666uchar16 __ovld __cnfn select(uchar16 a, uchar16 b, ushort16 c);
11667short __ovld __cnfn select(short a, short b, ushort c);11458short __ovld __cnfn select(short a, short b, ushort c);
11668ushort __ovld __cnfn select(ushort a, ushort b, ushort c);11459ushort __ovld __cnfn select(ushort a, ushort b, ushort c);
11669short2 __ovld __cnfn select(short2 a, short2 b, ushort2 c);11460short2 __ovld __cnfn select(short2 a, short2 b, ushort2 c);
...@@ -11676,60 +11467,7 @@ short8 __ovld __cnfn select(short8 a, short8 b, ushort8 c);...@@ -11676,60 +11467,7 @@ short8 __ovld __cnfn select(short8 a, short8 b, ushort8 c);
11676ushort8 __ovld __cnfn select(ushort8 a, ushort8 b, ushort8 c);11467ushort8 __ovld __cnfn select(ushort8 a, ushort8 b, ushort8 c);
11677short16 __ovld __cnfn select(short16 a, short16 b, ushort16 c);11468short16 __ovld __cnfn select(short16 a, short16 b, ushort16 c);
11678ushort16 __ovld __cnfn select(ushort16 a, ushort16 b, ushort16 c);11469ushort16 __ovld __cnfn select(ushort16 a, ushort16 b, ushort16 c);
11679int __ovld __cnfn select(int a, int b, ushort c);11470
11680uint __ovld __cnfn select(uint a, uint b, ushort c);
11681int2 __ovld __cnfn select(int2 a, int2 b, ushort2 c);
11682uint2 __ovld __cnfn select(uint2 a, uint2 b, ushort2 c);
11683int3 __ovld __cnfn select(int3 a, int3 b, ushort3 c);
11684uint3 __ovld __cnfn select(uint3 a, uint3 b, ushort3 c);
11685int4 __ovld __cnfn select(int4 a, int4 b, ushort4 c);
11686uint4 __ovld __cnfn select(uint4 a, uint4 b, ushort4 c);
11687int8 __ovld __cnfn select(int8 a, int8 b, ushort8 c);
11688uint8 __ovld __cnfn select(uint8 a, uint8 b, ushort8 c);
11689int16 __ovld __cnfn select(int16 a, int16 b, ushort16 c);
11690uint16 __ovld __cnfn select(uint16 a, uint16 b, ushort16 c);
11691long __ovld __cnfn select(long a, long b, ushort c);
11692ulong __ovld __cnfn select(ulong a, ulong b, ushort c);
11693long2 __ovld __cnfn select(long2 a, long2 b, ushort2 c);
11694ulong2 __ovld __cnfn select(ulong2 a, ulong2 b, ushort2 c);
11695long3 __ovld __cnfn select(long3 a, long3 b, ushort3 c);
11696ulong3 __ovld __cnfn select(ulong3 a, ulong3 b, ushort3 c);
11697long4 __ovld __cnfn select(long4 a, long4 b, ushort4 c);
11698ulong4 __ovld __cnfn select(ulong4 a, ulong4 b, ushort4 c);
11699long8 __ovld __cnfn select(long8 a, long8 b, ushort8 c);
11700ulong8 __ovld __cnfn select(ulong8 a, ulong8 b, ushort8 c);
11701long16 __ovld __cnfn select(long16 a, long16 b, ushort16 c);
11702ulong16 __ovld __cnfn select(ulong16 a, ulong16 b, ushort16 c);
11703float __ovld __cnfn select(float a, float b, ushort c);
11704float2 __ovld __cnfn select(float2 a, float2 b, ushort2 c);
11705float3 __ovld __cnfn select(float3 a, float3 b, ushort3 c);
11706float4 __ovld __cnfn select(float4 a, float4 b, ushort4 c);
11707float8 __ovld __cnfn select(float8 a, float8 b, ushort8 c);
11708float16 __ovld __cnfn select(float16 a, float16 b, ushort16 c);
11709char __ovld __cnfn select(char a, char b, uint c);
11710uchar __ovld __cnfn select(uchar a, uchar b, uint c);
11711char2 __ovld __cnfn select(char2 a, char2 b, uint2 c);
11712uchar2 __ovld __cnfn select(uchar2 a, uchar2 b, uint2 c);
11713char3 __ovld __cnfn select(char3 a, char3 b, uint3 c);
11714uchar3 __ovld __cnfn select(uchar3 a, uchar3 b, uint3 c);
11715char4 __ovld __cnfn select(char4 a, char4 b, uint4 c);
11716uchar4 __ovld __cnfn select(uchar4 a, uchar4 b, uint4 c);
11717char8 __ovld __cnfn select(char8 a, char8 b, uint8 c);
11718uchar8 __ovld __cnfn select(uchar8 a, uchar8 b, uint8 c);
11719char16 __ovld __cnfn select(char16 a, char16 b, uint16 c);
11720uchar16 __ovld __cnfn select(uchar16 a, uchar16 b, uint16 c);
11721short __ovld __cnfn select(short a, short b, uint c);
11722ushort __ovld __cnfn select(ushort a, ushort b, uint c);
11723short2 __ovld __cnfn select(short2 a, short2 b, uint2 c);
11724ushort2 __ovld __cnfn select(ushort2 a, ushort2 b, uint2 c);
11725short3 __ovld __cnfn select(short3 a, short3 b, uint3 c);
11726ushort3 __ovld __cnfn select(ushort3 a, ushort3 b, uint3 c);
11727short4 __ovld __cnfn select(short4 a, short4 b, uint4 c);
11728ushort4 __ovld __cnfn select(ushort4 a, ushort4 b, uint4 c);
11729short8 __ovld __cnfn select(short8 a, short8 b, uint8 c);
11730ushort8 __ovld __cnfn select(ushort8 a, ushort8 b, uint8 c);
11731short16 __ovld __cnfn select(short16 a, short16 b, uint16 c);
11732ushort16 __ovld __cnfn select(ushort16 a, ushort16 b, uint16 c);
11733int __ovld __cnfn select(int a, int b, uint c);11471int __ovld __cnfn select(int a, int b, uint c);
11734uint __ovld __cnfn select(uint a, uint b, uint c);11472uint __ovld __cnfn select(uint a, uint b, uint c);
11735int2 __ovld __cnfn select(int2 a, int2 b, uint2 c);11473int2 __ovld __cnfn select(int2 a, int2 b, uint2 c);
...@@ -11742,60 +11480,13 @@ int8 __ovld __cnfn select(int8 a, int8 b, uint8 c);...@@ -11742,60 +11480,13 @@ int8 __ovld __cnfn select(int8 a, int8 b, uint8 c);
11742uint8 __ovld __cnfn select(uint8 a, uint8 b, uint8 c);11480uint8 __ovld __cnfn select(uint8 a, uint8 b, uint8 c);
11743int16 __ovld __cnfn select(int16 a, int16 b, uint16 c);11481int16 __ovld __cnfn select(int16 a, int16 b, uint16 c);
11744uint16 __ovld __cnfn select(uint16 a, uint16 b, uint16 c);11482uint16 __ovld __cnfn select(uint16 a, uint16 b, uint16 c);
11745long __ovld __cnfn select(long a, long b, uint c);
11746ulong __ovld __cnfn select(ulong a, ulong b, uint c);
11747long2 __ovld __cnfn select(long2 a, long2 b, uint2 c);
11748ulong2 __ovld __cnfn select(ulong2 a, ulong2 b, uint2 c);
11749long3 __ovld __cnfn select(long3 a, long3 b, uint3 c);
11750ulong3 __ovld __cnfn select(ulong3 a, ulong3 b, uint3 c);
11751long4 __ovld __cnfn select(long4 a, long4 b, uint4 c);
11752ulong4 __ovld __cnfn select(ulong4 a, ulong4 b, uint4 c);
11753long8 __ovld __cnfn select(long8 a, long8 b, uint8 c);
11754ulong8 __ovld __cnfn select(ulong8 a, ulong8 b, uint8 c);
11755long16 __ovld __cnfn select(long16 a, long16 b, uint16 c);
11756ulong16 __ovld __cnfn select(ulong16 a, ulong16 b, uint16 c);
11757float __ovld __cnfn select(float a, float b, uint c);11483float __ovld __cnfn select(float a, float b, uint c);
11758float2 __ovld __cnfn select(float2 a, float2 b, uint2 c);11484float2 __ovld __cnfn select(float2 a, float2 b, uint2 c);
11759float3 __ovld __cnfn select(float3 a, float3 b, uint3 c);11485float3 __ovld __cnfn select(float3 a, float3 b, uint3 c);
11760float4 __ovld __cnfn select(float4 a, float4 b, uint4 c);11486float4 __ovld __cnfn select(float4 a, float4 b, uint4 c);
11761float8 __ovld __cnfn select(float8 a, float8 b, uint8 c);11487float8 __ovld __cnfn select(float8 a, float8 b, uint8 c);
11762float16 __ovld __cnfn select(float16 a, float16 b, uint16 c);11488float16 __ovld __cnfn select(float16 a, float16 b, uint16 c);
11763char __ovld __cnfn select(char a, char b, ulong c);11489
11764uchar __ovld __cnfn select(uchar a, uchar b, ulong c);
11765char2 __ovld __cnfn select(char2 a, char2 b, ulong2 c);
11766uchar2 __ovld __cnfn select(uchar2 a, uchar2 b, ulong2 c);
11767char3 __ovld __cnfn select(char3 a, char3 b, ulong3 c);
11768uchar3 __ovld __cnfn select(uchar3 a, uchar3 b, ulong3 c);
11769char4 __ovld __cnfn select(char4 a, char4 b, ulong4 c);
11770uchar4 __ovld __cnfn select(uchar4 a, uchar4 b, ulong4 c);
11771char8 __ovld __cnfn select(char8 a, char8 b, ulong8 c);
11772uchar8 __ovld __cnfn select(uchar8 a, uchar8 b, ulong8 c);
11773char16 __ovld __cnfn select(char16 a, char16 b, ulong16 c);
11774uchar16 __ovld __cnfn select(uchar16 a, uchar16 b, ulong16 c);
11775short __ovld __cnfn select(short a, short b, ulong c);
11776ushort __ovld __cnfn select(ushort a, ushort b, ulong c);
11777short2 __ovld __cnfn select(short2 a, short2 b, ulong2 c);
11778ushort2 __ovld __cnfn select(ushort2 a, ushort2 b, ulong2 c);
11779short3 __ovld __cnfn select(short3 a, short3 b, ulong3 c);
11780ushort3 __ovld __cnfn select(ushort3 a, ushort3 b, ulong3 c);
11781short4 __ovld __cnfn select(short4 a, short4 b, ulong4 c);
11782ushort4 __ovld __cnfn select(ushort4 a, ushort4 b, ulong4 c);
11783short8 __ovld __cnfn select(short8 a, short8 b, ulong8 c);
11784ushort8 __ovld __cnfn select(ushort8 a, ushort8 b, ulong8 c);
11785short16 __ovld __cnfn select(short16 a, short16 b, ulong16 c);
11786ushort16 __ovld __cnfn select(ushort16 a, ushort16 b, ulong16 c);
11787int __ovld __cnfn select(int a, int b, ulong c);
11788uint __ovld __cnfn select(uint a, uint b, ulong c);
11789int2 __ovld __cnfn select(int2 a, int2 b, ulong2 c);
11790uint2 __ovld __cnfn select(uint2 a, uint2 b, ulong2 c);
11791int3 __ovld __cnfn select(int3 a, int3 b, ulong3 c);
11792uint3 __ovld __cnfn select(uint3 a, uint3 b, ulong3 c);
11793int4 __ovld __cnfn select(int4 a, int4 b, ulong4 c);
11794uint4 __ovld __cnfn select(uint4 a, uint4 b, ulong4 c);
11795int8 __ovld __cnfn select(int8 a, int8 b, ulong8 c);
11796uint8 __ovld __cnfn select(uint8 a, uint8 b, ulong8 c);
11797int16 __ovld __cnfn select(int16 a, int16 b, ulong16 c);
11798uint16 __ovld __cnfn select(uint16 a, uint16 b, ulong16 c);
11799long __ovld __cnfn select(long a, long b, ulong c);11490long __ovld __cnfn select(long a, long b, ulong c);
11800ulong __ovld __cnfn select(ulong a, ulong b, ulong c);11491ulong __ovld __cnfn select(ulong a, ulong b, ulong c);
11801long2 __ovld __cnfn select(long2 a, long2 b, ulong2 c);11492long2 __ovld __cnfn select(long2 a, long2 b, ulong2 c);
...@@ -11808,12 +11499,7 @@ long8 __ovld __cnfn select(long8 a, long8 b, ulong8 c);...@@ -11808,12 +11499,7 @@ long8 __ovld __cnfn select(long8 a, long8 b, ulong8 c);
11808ulong8 __ovld __cnfn select(ulong8 a, ulong8 b, ulong8 c);11499ulong8 __ovld __cnfn select(ulong8 a, ulong8 b, ulong8 c);
11809long16 __ovld __cnfn select(long16 a, long16 b, ulong16 c);11500long16 __ovld __cnfn select(long16 a, long16 b, ulong16 c);
11810ulong16 __ovld __cnfn select(ulong16 a, ulong16 b, ulong16 c);11501ulong16 __ovld __cnfn select(ulong16 a, ulong16 b, ulong16 c);
11811float __ovld __cnfn select(float a, float b, ulong c);11502
11812float2 __ovld __cnfn select(float2 a, float2 b, ulong2 c);
11813float3 __ovld __cnfn select(float3 a, float3 b, ulong3 c);
11814float4 __ovld __cnfn select(float4 a, float4 b, ulong4 c);
11815float8 __ovld __cnfn select(float8 a, float8 b, ulong8 c);
11816float16 __ovld __cnfn select(float16 a, float16 b, ulong16 c);
11817#ifdef cl_khr_fp6411503#ifdef cl_khr_fp64
11818double __ovld __cnfn select(double a, double b, long c);11504double __ovld __cnfn select(double a, double b, long c);
11819double2 __ovld __cnfn select(double2 a, double2 b, long2 c);11505double2 __ovld __cnfn select(double2 a, double2 b, long2 c);
...@@ -13141,13 +12827,14 @@ void __ovld __conv barrier(cl_mem_fence_flags flags);...@@ -13141,13 +12827,14 @@ void __ovld __conv barrier(cl_mem_fence_flags flags);
1314112827
13142#if __OPENCL_C_VERSION__ >= CL_VERSION_2_012828#if __OPENCL_C_VERSION__ >= CL_VERSION_2_0
1314312829
13144typedef enum memory_scope12830typedef enum memory_scope {
13145{12831 memory_scope_work_item = __OPENCL_MEMORY_SCOPE_WORK_ITEM,
13146 memory_scope_work_item,12832 memory_scope_work_group = __OPENCL_MEMORY_SCOPE_WORK_GROUP,
13147 memory_scope_work_group,12833 memory_scope_device = __OPENCL_MEMORY_SCOPE_DEVICE,
13148 memory_scope_device,12834 memory_scope_all_svm_devices = __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES,
13149 memory_scope_all_svm_devices,12835#if defined(cl_intel_subgroups) || defined(cl_khr_subgroups)
13150 memory_scope_sub_group12836 memory_scope_sub_group = __OPENCL_MEMORY_SCOPE_SUB_GROUP
12837#endif
13151} memory_scope;12838} memory_scope;
1315212839
13153void __ovld __conv work_group_barrier(cl_mem_fence_flags flags, memory_scope scope);12840void __ovld __conv work_group_barrier(cl_mem_fence_flags flags, memory_scope scope);
...@@ -13952,11 +13639,11 @@ unsigned long __ovld atom_xor(volatile __local unsigned long *p, unsigned long v...@@ -13952,11 +13639,11 @@ unsigned long __ovld atom_xor(volatile __local unsigned long *p, unsigned long v
13952// enum values aligned with what clang uses in EmitAtomicExpr()13639// enum values aligned with what clang uses in EmitAtomicExpr()
13953typedef enum memory_order13640typedef enum memory_order
13954{13641{
13955 memory_order_relaxed,13642 memory_order_relaxed = __ATOMIC_RELAXED,
13956 memory_order_acquire,13643 memory_order_acquire = __ATOMIC_ACQUIRE,
13957 memory_order_release,13644 memory_order_release = __ATOMIC_RELEASE,
13958 memory_order_acq_rel,13645 memory_order_acq_rel = __ATOMIC_ACQ_REL,
13959 memory_order_seq_cst13646 memory_order_seq_cst = __ATOMIC_SEQ_CST
13960} memory_order;13647} memory_order;
1396113648
13962// double atomics support requires extensions cl_khr_int64_base_atomics and cl_khr_int64_extended_atomics13649// double atomics support requires extensions cl_khr_int64_base_atomics and cl_khr_int64_extended_atomics
c_headers/unwind.h+59-21
...@@ -76,7 +76,13 @@ typedef intptr_t _sleb128_t;...@@ -76,7 +76,13 @@ typedef intptr_t _sleb128_t;
76typedef uintptr_t _uleb128_t;76typedef uintptr_t _uleb128_t;
7777
78struct _Unwind_Context;78struct _Unwind_Context;
79#if defined(__arm__) && !(defined(__USING_SJLJ_EXCEPTIONS__) || defined(__ARM_DWARF_EH__))
80struct _Unwind_Control_Block;
81typedef struct _Unwind_Control_Block _Unwind_Exception; /* Alias */
82#else
79struct _Unwind_Exception;83struct _Unwind_Exception;
84typedef struct _Unwind_Exception _Unwind_Exception;
85#endif
80typedef enum {86typedef enum {
81 _URC_NO_REASON = 0,87 _URC_NO_REASON = 0,
82#if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \88#if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \
...@@ -109,8 +115,42 @@ typedef enum {...@@ -109,8 +115,42 @@ typedef enum {
109} _Unwind_Action;115} _Unwind_Action;
110116
111typedef void (*_Unwind_Exception_Cleanup_Fn)(_Unwind_Reason_Code,117typedef void (*_Unwind_Exception_Cleanup_Fn)(_Unwind_Reason_Code,
112 struct _Unwind_Exception *);118 _Unwind_Exception *);
113119
120#if defined(__arm__) && !(defined(__USING_SJLJ_EXCEPTIONS__) || defined(__ARM_DWARF_EH__))
121typedef struct _Unwind_Control_Block _Unwind_Control_Block;
122typedef uint32_t _Unwind_EHT_Header;
123
124struct _Unwind_Control_Block {
125 uint64_t exception_class;
126 void (*exception_cleanup)(_Unwind_Reason_Code, _Unwind_Control_Block *);
127 /* unwinder cache (private fields for the unwinder's use) */
128 struct {
129 uint32_t reserved1; /* forced unwind stop function, 0 if not forced */
130 uint32_t reserved2; /* personality routine */
131 uint32_t reserved3; /* callsite */
132 uint32_t reserved4; /* forced unwind stop argument */
133 uint32_t reserved5;
134 } unwinder_cache;
135 /* propagation barrier cache (valid after phase 1) */
136 struct {
137 uint32_t sp;
138 uint32_t bitpattern[5];
139 } barrier_cache;
140 /* cleanup cache (preserved over cleanup) */
141 struct {
142 uint32_t bitpattern[4];
143 } cleanup_cache;
144 /* personality cache (for personality's benefit) */
145 struct {
146 uint32_t fnstart; /* function start address */
147 _Unwind_EHT_Header *ehtp; /* pointer to EHT entry header word */
148 uint32_t additional; /* additional data */
149 uint32_t reserved1;
150 } pr_cache;
151 long long int : 0; /* force alignment of next item to 8-byte boundary */
152} __attribute__((__aligned__(8)));
153#else
114struct _Unwind_Exception {154struct _Unwind_Exception {
115 _Unwind_Exception_Class exception_class;155 _Unwind_Exception_Class exception_class;
116 _Unwind_Exception_Cleanup_Fn exception_cleanup;156 _Unwind_Exception_Cleanup_Fn exception_cleanup;
...@@ -120,23 +160,24 @@ struct _Unwind_Exception {...@@ -120,23 +160,24 @@ struct _Unwind_Exception {
120 * aligned". GCC has interpreted this to mean "use the maximum useful160 * aligned". GCC has interpreted this to mean "use the maximum useful
121 * alignment for the target"; so do we. */161 * alignment for the target"; so do we. */
122} __attribute__((__aligned__));162} __attribute__((__aligned__));
163#endif
123164
124typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn)(int, _Unwind_Action,165typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn)(int, _Unwind_Action,
125 _Unwind_Exception_Class,166 _Unwind_Exception_Class,
126 struct _Unwind_Exception *,167 _Unwind_Exception *,
127 struct _Unwind_Context *,168 struct _Unwind_Context *,
128 void *);169 void *);
129170
130typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn)(171typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn)(int, _Unwind_Action,
131 int, _Unwind_Action, _Unwind_Exception_Class, struct _Unwind_Exception *,172 _Unwind_Exception_Class,
132 struct _Unwind_Context *);173 _Unwind_Exception *,
174 struct _Unwind_Context *);
133typedef _Unwind_Personality_Fn __personality_routine;175typedef _Unwind_Personality_Fn __personality_routine;
134176
135typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn)(struct _Unwind_Context *,177typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn)(struct _Unwind_Context *,
136 void *);178 void *);
137179
138#if defined(__arm__) && !defined(__APPLE__)180#if defined(__arm__) && !(defined(__USING_SJLJ_EXCEPTIONS__) || defined(__ARM_DWARF_EH__))
139
140typedef enum {181typedef enum {
141 _UVRSC_CORE = 0, /* integer register */182 _UVRSC_CORE = 0, /* integer register */
142 _UVRSC_VFP = 1, /* vfp */183 _UVRSC_VFP = 1, /* vfp */
...@@ -158,14 +199,12 @@ typedef enum {...@@ -158,14 +199,12 @@ typedef enum {
158 _UVRSR_FAILED = 2199 _UVRSR_FAILED = 2
159} _Unwind_VRS_Result;200} _Unwind_VRS_Result;
160201
161#if !defined(__USING_SJLJ_EXCEPTIONS__) && !defined(__ARM_DWARF_EH__)
162typedef uint32_t _Unwind_State;202typedef uint32_t _Unwind_State;
163#define _US_VIRTUAL_UNWIND_FRAME ((_Unwind_State)0)203#define _US_VIRTUAL_UNWIND_FRAME ((_Unwind_State)0)
164#define _US_UNWIND_FRAME_STARTING ((_Unwind_State)1)204#define _US_UNWIND_FRAME_STARTING ((_Unwind_State)1)
165#define _US_UNWIND_FRAME_RESUME ((_Unwind_State)2)205#define _US_UNWIND_FRAME_RESUME ((_Unwind_State)2)
166#define _US_ACTION_MASK ((_Unwind_State)3)206#define _US_ACTION_MASK ((_Unwind_State)3)
167#define _US_FORCE_UNWIND ((_Unwind_State)8)207#define _US_FORCE_UNWIND ((_Unwind_State)8)
168#endif
169208
170_Unwind_VRS_Result _Unwind_VRS_Get(struct _Unwind_Context *__context,209_Unwind_VRS_Result _Unwind_VRS_Get(struct _Unwind_Context *__context,
171 _Unwind_VRS_RegClass __regclass,210 _Unwind_VRS_RegClass __regclass,
...@@ -224,13 +263,12 @@ _Unwind_Ptr _Unwind_GetRegionStart(struct _Unwind_Context *);...@@ -224,13 +263,12 @@ _Unwind_Ptr _Unwind_GetRegionStart(struct _Unwind_Context *);
224263
225/* DWARF EH functions; currently not available on Darwin/ARM */264/* DWARF EH functions; currently not available on Darwin/ARM */
226#if !defined(__APPLE__) || !defined(__arm__)265#if !defined(__APPLE__) || !defined(__arm__)
227266_Unwind_Reason_Code _Unwind_RaiseException(_Unwind_Exception *);
228_Unwind_Reason_Code _Unwind_RaiseException(struct _Unwind_Exception *);267_Unwind_Reason_Code _Unwind_ForcedUnwind(_Unwind_Exception *, _Unwind_Stop_Fn,
229_Unwind_Reason_Code _Unwind_ForcedUnwind(struct _Unwind_Exception *,268 void *);
230 _Unwind_Stop_Fn, void *);269void _Unwind_DeleteException(_Unwind_Exception *);
231void _Unwind_DeleteException(struct _Unwind_Exception *);270void _Unwind_Resume(_Unwind_Exception *);
232void _Unwind_Resume(struct _Unwind_Exception *);271_Unwind_Reason_Code _Unwind_Resume_or_Rethrow(_Unwind_Exception *);
233_Unwind_Reason_Code _Unwind_Resume_or_Rethrow(struct _Unwind_Exception *);
234272
235#endif273#endif
236274
...@@ -241,11 +279,11 @@ typedef struct SjLj_Function_Context *_Unwind_FunctionContext_t;...@@ -241,11 +279,11 @@ typedef struct SjLj_Function_Context *_Unwind_FunctionContext_t;
241279
242void _Unwind_SjLj_Register(_Unwind_FunctionContext_t);280void _Unwind_SjLj_Register(_Unwind_FunctionContext_t);
243void _Unwind_SjLj_Unregister(_Unwind_FunctionContext_t);281void _Unwind_SjLj_Unregister(_Unwind_FunctionContext_t);
244_Unwind_Reason_Code _Unwind_SjLj_RaiseException(struct _Unwind_Exception *);282_Unwind_Reason_Code _Unwind_SjLj_RaiseException(_Unwind_Exception *);
245_Unwind_Reason_Code _Unwind_SjLj_ForcedUnwind(struct _Unwind_Exception *,283_Unwind_Reason_Code _Unwind_SjLj_ForcedUnwind(_Unwind_Exception *,
246 _Unwind_Stop_Fn, void *);284 _Unwind_Stop_Fn, void *);
247void _Unwind_SjLj_Resume(struct _Unwind_Exception *);285void _Unwind_SjLj_Resume(_Unwind_Exception *);
248_Unwind_Reason_Code _Unwind_SjLj_Resume_or_Rethrow(struct _Unwind_Exception *);286_Unwind_Reason_Code _Unwind_SjLj_Resume_or_Rethrow(_Unwind_Exception *);
249287
250void *_Unwind_FindEnclosingFunction(void *);288void *_Unwind_FindEnclosingFunction(void *);
251289
ci/appveyor/build_script.bat+2-2
...@@ -7,13 +7,13 @@ SET "PATH=C:\msys64\mingw64\bin;C:\msys64\usr\bin;%PATH%"...@@ -7,13 +7,13 @@ SET "PATH=C:\msys64\mingw64\bin;C:\msys64\usr\bin;%PATH%"
7SET "MSYSTEM=MINGW64"7SET "MSYSTEM=MINGW64"
8SET "APPVEYOR_CACHE_ENTRY_ZIP_ARGS=-m0=Copy"8SET "APPVEYOR_CACHE_ENTRY_ZIP_ARGS=-m0=Copy"
99
10bash -lc "cd ${APPVEYOR_BUILD_FOLDER} && if [ -s ""llvm+clang-5.0.0-win64-msvc-release.tar.xz"" ]; then echo 'skipping LLVM download'; else wget 'https://s3.amazonaws.com/superjoe/temp/llvm%%2bclang-5.0.0-win64-msvc-release.tar.xz'; fi && tar xf llvm+clang-5.0.0-win64-msvc-release.tar.xz" || exit /b10bash -lc "cd ${APPVEYOR_BUILD_FOLDER} && if [ -s ""llvm+clang-6.0.0-win64-msvc-release.tar.xz"" ]; then echo 'skipping LLVM download'; else wget 'https://s3.amazonaws.com/superjoe/temp/llvm%%2bclang-6.0.0-win64-msvc-release.tar.xz'; fi && tar xf llvm+clang-6.0.0-win64-msvc-release.tar.xz" || exit /b
1111
1212
13SET "PATH=%PREVPATH%"13SET "PATH=%PREVPATH%"
14SET "MSYSTEM=%PREVMSYSTEM%"14SET "MSYSTEM=%PREVMSYSTEM%"
15SET "ZIGBUILDDIR=%APPVEYOR_BUILD_FOLDER%\build-msvc-release"15SET "ZIGBUILDDIR=%APPVEYOR_BUILD_FOLDER%\build-msvc-release"
16SET "ZIGPREFIXPATH=%APPVEYOR_BUILD_FOLDER%\llvm+clang-5.0.0-win64-msvc-release"16SET "ZIGPREFIXPATH=%APPVEYOR_BUILD_FOLDER%\llvm+clang-6.0.0-win64-msvc-release"
1717
18mkdir %ZIGBUILDDIR%18mkdir %ZIGBUILDDIR%
19cd %ZIGBUILDDIR%19cd %ZIGBUILDDIR%
ci/travis_linux_install+1-1
...@@ -4,4 +4,4 @@ set -x...@@ -4,4 +4,4 @@ set -x
44
5sudo apt-get remove -y llvm-*5sudo apt-get remove -y llvm-*
6sudo rm -rf /usr/local/*6sudo rm -rf /usr/local/*
7sudo apt-get install -y clang-5.0 libclang-5.0 libclang-5.0-dev llvm-5.0 llvm-5.0-dev liblld-5.0 liblld-5.0-dev cmake wine1.6-amd647sudo apt-get install -y clang-6.0 libclang-6.0 libclang-6.0-dev llvm-6.0 llvm-6.0-dev liblld-6.0 liblld-6.0-dev cmake wine1.6-amd64
cmake/Findclang.cmake+4-4
...@@ -26,16 +26,16 @@ if(MSVC)...@@ -26,16 +26,16 @@ if(MSVC)
26else()26else()
27 find_path(CLANG_INCLUDE_DIRS NAMES clang/Frontend/ASTUnit.h27 find_path(CLANG_INCLUDE_DIRS NAMES clang/Frontend/ASTUnit.h
28 PATHS28 PATHS
29 /usr/lib/llvm/5/include29 /usr/lib/llvm/6/include
30 /usr/lib/llvm-5.0/include30 /usr/lib/llvm-6.0/include
31 /mingw64/include)31 /mingw64/include)
3232
33 macro(FIND_AND_ADD_CLANG_LIB _libname_)33 macro(FIND_AND_ADD_CLANG_LIB _libname_)
34 string(TOUPPER ${_libname_} _prettylibname_)34 string(TOUPPER ${_libname_} _prettylibname_)
35 find_library(CLANG_${_prettylibname_}_LIB NAMES ${_libname_}35 find_library(CLANG_${_prettylibname_}_LIB NAMES ${_libname_}
36 PATHS36 PATHS
37 /usr/lib/llvm/5/lib37 /usr/lib/llvm/6/lib
38 /usr/lib/llvm-5.0/lib38 /usr/lib/llvm-6.0/lib
39 /mingw64/lib39 /mingw64/lib
40 /c/msys64/mingw64/lib40 /c/msys64/mingw64/lib
41 c:\\msys64\\mingw64\\lib)41 c:\\msys64\\mingw64\\lib)
cmake/Findlld.cmake+6-5
...@@ -6,12 +6,12 @@...@@ -6,12 +6,12 @@
6# LLD_INCLUDE_DIRS6# LLD_INCLUDE_DIRS
7# LLD_LIBRARIES7# LLD_LIBRARIES
88
9find_path(LLD_INCLUDE_DIRS NAMES lld/Driver/Driver.h9find_path(LLD_INCLUDE_DIRS NAMES lld/Common/Driver.h
10 PATHS10 PATHS
11 /usr/lib/llvm-5.0/include11 /usr/lib/llvm-6.0/include
12 /mingw64/include)12 /mingw64/include)
1313
14find_library(LLD_LIBRARY NAMES lld-5.0 lld PATHS /usr/lib/llvm-5.0/lib)14find_library(LLD_LIBRARY NAMES lld-6.0 lld PATHS /usr/lib/llvm-6.0/lib)
15if(EXISTS ${LLD_LIBRARY})15if(EXISTS ${LLD_LIBRARY})
16 set(LLD_LIBRARIES ${LLD_LIBRARY})16 set(LLD_LIBRARIES ${LLD_LIBRARY})
17else()17else()
...@@ -19,7 +19,7 @@ else()...@@ -19,7 +19,7 @@ else()
19 string(TOUPPER ${_libname_} _prettylibname_)19 string(TOUPPER ${_libname_} _prettylibname_)
20 find_library(LLD_${_prettylibname_}_LIB NAMES ${_libname_}20 find_library(LLD_${_prettylibname_}_LIB NAMES ${_libname_}
21 PATHS21 PATHS
22 /usr/lib/llvm-5.0/lib22 /usr/lib/llvm-6.0/lib
23 /mingw64/lib23 /mingw64/lib
24 /c/msys64/mingw64/lib24 /c/msys64/mingw64/lib
25 c:/msys64/mingw64/lib)25 c:/msys64/mingw64/lib)
...@@ -29,13 +29,14 @@ else()...@@ -29,13 +29,14 @@ else()
29 endmacro(FIND_AND_ADD_LLD_LIB)29 endmacro(FIND_AND_ADD_LLD_LIB)
3030
31 FIND_AND_ADD_LLD_LIB(lldDriver)31 FIND_AND_ADD_LLD_LIB(lldDriver)
32 FIND_AND_ADD_LLD_LIB(lldMinGW)
32 FIND_AND_ADD_LLD_LIB(lldELF)33 FIND_AND_ADD_LLD_LIB(lldELF)
33 FIND_AND_ADD_LLD_LIB(lldCOFF)34 FIND_AND_ADD_LLD_LIB(lldCOFF)
34 FIND_AND_ADD_LLD_LIB(lldMachO)35 FIND_AND_ADD_LLD_LIB(lldMachO)
35 FIND_AND_ADD_LLD_LIB(lldReaderWriter)36 FIND_AND_ADD_LLD_LIB(lldReaderWriter)
36 FIND_AND_ADD_LLD_LIB(lldCore)37 FIND_AND_ADD_LLD_LIB(lldCore)
37 FIND_AND_ADD_LLD_LIB(lldYAML)38 FIND_AND_ADD_LLD_LIB(lldYAML)
38 FIND_AND_ADD_LLD_LIB(lldConfig)39 FIND_AND_ADD_LLD_LIB(lldCommon)
39endif()40endif()
4041
41include(FindPackageHandleStandardArgs)42include(FindPackageHandleStandardArgs)
cmake/Findllvm.cmake+3-3
...@@ -8,12 +8,12 @@...@@ -8,12 +8,12 @@
8# LLVM_LIBDIRS8# LLVM_LIBDIRS
99
10find_program(LLVM_CONFIG_EXE10find_program(LLVM_CONFIG_EXE
11 NAMES llvm-config-5.0 llvm-config11 NAMES llvm-config-6.0 llvm-config
12 PATHS12 PATHS
13 "/mingw64/bin"13 "/mingw64/bin"
14 "/c/msys64/mingw64/bin"14 "/c/msys64/mingw64/bin"
15 "c:/msys64/mingw64/bin"15 "c:/msys64/mingw64/bin"
16 "C:/Libraries/llvm-5.0.0/bin")16 "C:/Libraries/llvm-6.0.0/bin")
1717
18if(NOT(CMAKE_BUILD_TYPE STREQUAL "Debug"))18if(NOT(CMAKE_BUILD_TYPE STREQUAL "Debug"))
19 execute_process(19 execute_process(
...@@ -62,7 +62,7 @@ execute_process(...@@ -62,7 +62,7 @@ execute_process(
62set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS})62set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS})
6363
64if(NOT LLVM_LIBRARIES)64if(NOT LLVM_LIBRARIES)
65 find_library(LLVM_LIBRARIES NAMES LLVM LLVM-5.0 LLVM-5)65 find_library(LLVM_LIBRARIES NAMES LLVM LLVM-6.0 LLVM-6)
66endif()66endif()
6767
68link_directories("${CMAKE_PREFIX_PATH}/lib")68link_directories("${CMAKE_PREFIX_PATH}/lib")
src/parsec.cpp+3
...@@ -570,6 +570,8 @@ static AstNode *trans_type(Context *c, const Type *ty, const SourceLocation &sou...@@ -570,6 +570,8 @@ static AstNode *trans_type(Context *c, const Type *ty, const SourceLocation &sou
570 return trans_create_node_symbol_str(c, "f64");570 return trans_create_node_symbol_str(c, "f64");
571 case BuiltinType::Float128:571 case BuiltinType::Float128:
572 return trans_create_node_symbol_str(c, "f128");572 return trans_create_node_symbol_str(c, "f128");
573 case BuiltinType::Float16:
574 return trans_create_node_symbol_str(c, "f16");
573 case BuiltinType::LongDouble:575 case BuiltinType::LongDouble:
574 return trans_create_node_symbol_str(c, "c_longdouble");576 return trans_create_node_symbol_str(c, "c_longdouble");
575 case BuiltinType::WChar_U:577 case BuiltinType::WChar_U:
...@@ -856,6 +858,7 @@ static AstNode *trans_type(Context *c, const Type *ty, const SourceLocation &sou...@@ -856,6 +858,7 @@ static AstNode *trans_type(Context *c, const Type *ty, const SourceLocation &sou
856 case Type::Pipe:858 case Type::Pipe:
857 case Type::ObjCTypeParam:859 case Type::ObjCTypeParam:
858 case Type::DeducedTemplateSpecialization:860 case Type::DeducedTemplateSpecialization:
861 case Type::DependentAddressSpace:
859 emit_warning(c, source_loc, "unsupported type: '%s'", ty->getTypeClassName());862 emit_warning(c, source_loc, "unsupported type: '%s'", ty->getTypeClassName());
860 return nullptr;863 return nullptr;
861 }864 }
src/target.cpp+25-1
...@@ -13,6 +13,7 @@...@@ -13,6 +13,7 @@
13#include <stdio.h>13#include <stdio.h>
1414
15static const ArchType arch_list[] = {15static const ArchType arch_list[] = {
16 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v8_3a},
16 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v8_2a},17 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v8_2a},
17 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v8_1a},18 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v8_1a},
18 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v8},19 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v8},
...@@ -33,9 +34,30 @@ static const ArchType arch_list[] = {...@@ -33,9 +34,30 @@ static const ArchType arch_list[] = {
33 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v5te},34 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v5te},
34 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v4t},35 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v4t},
3536
36 {ZigLLVM_armeb, ZigLLVM_NoSubArch},37 {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v8_3a},
38 {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v8_2a},
39 {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v8_1a},
40 {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v8},
41 {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v8r},
42 {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v8m_baseline},
43 {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v8m_mainline},
44 {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v7},
45 {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v7em},
46 {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v7m},
47 {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v7s},
48 {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v7k},
49 {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v7ve},
50 {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v6},
51 {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v6m},
52 {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v6k},
53 {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v6t2},
54 {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v5},
55 {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v5te},
56 {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v4t},
57
37 {ZigLLVM_aarch64, ZigLLVM_NoSubArch},58 {ZigLLVM_aarch64, ZigLLVM_NoSubArch},
38 {ZigLLVM_aarch64_be, ZigLLVM_NoSubArch},59 {ZigLLVM_aarch64_be, ZigLLVM_NoSubArch},
60 {ZigLLVM_arc, ZigLLVM_NoSubArch},
39 {ZigLLVM_avr, ZigLLVM_NoSubArch},61 {ZigLLVM_avr, ZigLLVM_NoSubArch},
40 {ZigLLVM_bpfel, ZigLLVM_NoSubArch},62 {ZigLLVM_bpfel, ZigLLVM_NoSubArch},
41 {ZigLLVM_bpfeb, ZigLLVM_NoSubArch},63 {ZigLLVM_bpfeb, ZigLLVM_NoSubArch},
...@@ -345,6 +367,7 @@ void resolve_target_object_format(ZigTarget *target) {...@@ -345,6 +367,7 @@ void resolve_target_object_format(ZigTarget *target) {
345 case ZigLLVM_amdil:367 case ZigLLVM_amdil:
346 case ZigLLVM_amdil64:368 case ZigLLVM_amdil64:
347 case ZigLLVM_armeb:369 case ZigLLVM_armeb:
370 case ZigLLVM_arc:
348 case ZigLLVM_avr:371 case ZigLLVM_avr:
349 case ZigLLVM_bpfeb:372 case ZigLLVM_bpfeb:
350 case ZigLLVM_bpfel:373 case ZigLLVM_bpfel:
...@@ -407,6 +430,7 @@ static int get_arch_pointer_bit_width(ZigLLVM_ArchType arch) {...@@ -407,6 +430,7 @@ static int get_arch_pointer_bit_width(ZigLLVM_ArchType arch) {
407 case ZigLLVM_msp430:430 case ZigLLVM_msp430:
408 return 16;431 return 16;
409432
433 case ZigLLVM_arc:
410 case ZigLLVM_arm:434 case ZigLLVM_arm:
411 case ZigLLVM_armeb:435 case ZigLLVM_armeb:
412 case ZigLLVM_hexagon:436 case ZigLLVM_hexagon:
src/zig_llvm.cpp+6-2
...@@ -37,7 +37,7 @@...@@ -37,7 +37,7 @@
37#include <llvm/Transforms/IPO/AlwaysInliner.h>37#include <llvm/Transforms/IPO/AlwaysInliner.h>
38#include <llvm/Transforms/Scalar.h>38#include <llvm/Transforms/Scalar.h>
3939
40#include <lld/Driver/Driver.h>40#include <lld/Common/Driver.h>
4141
42using namespace llvm;42using namespace llvm;
4343
...@@ -605,11 +605,13 @@ static_assert((Triple::ArchType)ZigLLVM_LastArchType == Triple::LastArchType, ""...@@ -605,11 +605,13 @@ static_assert((Triple::ArchType)ZigLLVM_LastArchType == Triple::LastArchType, ""
605static_assert((Triple::VendorType)ZigLLVM_LastVendorType == Triple::LastVendorType, "");605static_assert((Triple::VendorType)ZigLLVM_LastVendorType == Triple::LastVendorType, "");
606static_assert((Triple::OSType)ZigLLVM_LastOSType == Triple::LastOSType, "");606static_assert((Triple::OSType)ZigLLVM_LastOSType == Triple::LastOSType, "");
607static_assert((Triple::EnvironmentType)ZigLLVM_LastEnvironmentType == Triple::LastEnvironmentType, "");607static_assert((Triple::EnvironmentType)ZigLLVM_LastEnvironmentType == Triple::LastEnvironmentType, "");
608static_assert((Triple::SubArchType)ZigLLVM_KalimbaSubArch_v5 == Triple::KalimbaSubArch_v5, "");
608609
609static_assert((Triple::ObjectFormatType)ZigLLVM_UnknownObjectFormat == Triple::UnknownObjectFormat, "");610static_assert((Triple::ObjectFormatType)ZigLLVM_UnknownObjectFormat == Triple::UnknownObjectFormat, "");
610static_assert((Triple::ObjectFormatType)ZigLLVM_COFF == Triple::COFF, "");611static_assert((Triple::ObjectFormatType)ZigLLVM_COFF == Triple::COFF, "");
611static_assert((Triple::ObjectFormatType)ZigLLVM_ELF == Triple::ELF, "");612static_assert((Triple::ObjectFormatType)ZigLLVM_ELF == Triple::ELF, "");
612static_assert((Triple::ObjectFormatType)ZigLLVM_MachO == Triple::MachO, "");613static_assert((Triple::ObjectFormatType)ZigLLVM_MachO == Triple::MachO, "");
614static_assert((Triple::ObjectFormatType)ZigLLVM_Wasm == Triple::Wasm, "");
613615
614const char *ZigLLVMGetArchTypeName(ZigLLVM_ArchType arch) {616const char *ZigLLVMGetArchTypeName(ZigLLVM_ArchType arch) {
615 return (const char*)Triple::getArchTypeName((Triple::ArchType)arch).bytes_begin();617 return (const char*)Triple::getArchTypeName((Triple::ArchType)arch).bytes_begin();
...@@ -648,6 +650,8 @@ const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch) {...@@ -648,6 +650,8 @@ const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch) {
648 switch (sub_arch) {650 switch (sub_arch) {
649 case ZigLLVM_NoSubArch:651 case ZigLLVM_NoSubArch:
650 return "(none)";652 return "(none)";
653 case ZigLLVM_ARMSubArch_v8_3a:
654 return "v8_3a";
651 case ZigLLVM_ARMSubArch_v8_2a:655 case ZigLLVM_ARMSubArch_v8_2a:
652 return "v8_2a";656 return "v8_2a";
653 case ZigLLVM_ARMSubArch_v8_1a:657 case ZigLLVM_ARMSubArch_v8_1a:
...@@ -775,7 +779,7 @@ bool ZigLLDLink(ZigLLVM_ObjectFormatType oformat, const char **args, size_t arg_...@@ -775,7 +779,7 @@ bool ZigLLDLink(ZigLLVM_ObjectFormatType oformat, const char **args, size_t arg_
775 zig_unreachable();779 zig_unreachable();
776780
777 case ZigLLVM_COFF:781 case ZigLLVM_COFF:
778 return lld::coff::link(array_ref_args);782 return lld::coff::link(array_ref_args, false);
779783
780 case ZigLLVM_ELF:784 case ZigLLVM_ELF:
781 return lld::elf::link(array_ref_args, false, diag);785 return lld::elf::link(array_ref_args, false, diag);
src/zig_llvm.hpp+3
...@@ -177,6 +177,7 @@ enum ZigLLVM_ArchType {...@@ -177,6 +177,7 @@ enum ZigLLVM_ArchType {
177 ZigLLVM_armeb, // ARM (big endian): armeb177 ZigLLVM_armeb, // ARM (big endian): armeb
178 ZigLLVM_aarch64, // AArch64 (little endian): aarch64178 ZigLLVM_aarch64, // AArch64 (little endian): aarch64
179 ZigLLVM_aarch64_be, // AArch64 (big endian): aarch64_be179 ZigLLVM_aarch64_be, // AArch64 (big endian): aarch64_be
180 ZigLLVM_arc, // ARC: Synopsys ARC
180 ZigLLVM_avr, // AVR: Atmel AVR microcontroller181 ZigLLVM_avr, // AVR: Atmel AVR microcontroller
181 ZigLLVM_bpfel, // eBPF or extended BPF or 64-bit BPF (little endian)182 ZigLLVM_bpfel, // eBPF or extended BPF or 64-bit BPF (little endian)
182 ZigLLVM_bpfeb, // eBPF or extended BPF or 64-bit BPF (big endian)183 ZigLLVM_bpfeb, // eBPF or extended BPF or 64-bit BPF (big endian)
...@@ -229,6 +230,7 @@ enum ZigLLVM_ArchType {...@@ -229,6 +230,7 @@ enum ZigLLVM_ArchType {
229enum ZigLLVM_SubArchType {230enum ZigLLVM_SubArchType {
230 ZigLLVM_NoSubArch,231 ZigLLVM_NoSubArch,
231232
233 ZigLLVM_ARMSubArch_v8_3a,
232 ZigLLVM_ARMSubArch_v8_2a,234 ZigLLVM_ARMSubArch_v8_2a,
233 ZigLLVM_ARMSubArch_v8_1a,235 ZigLLVM_ARMSubArch_v8_1a,
234 ZigLLVM_ARMSubArch_v8,236 ZigLLVM_ARMSubArch_v8,
...@@ -318,6 +320,7 @@ enum ZigLLVM_EnvironmentType {...@@ -318,6 +320,7 @@ enum ZigLLVM_EnvironmentType {
318 ZigLLVM_UnknownEnvironment,320 ZigLLVM_UnknownEnvironment,
319321
320 ZigLLVM_GNU,322 ZigLLVM_GNU,
323 ZigLLVM_GNUABIN32,
321 ZigLLVM_GNUABI64,324 ZigLLVM_GNUABI64,
322 ZigLLVM_GNUEABI,325 ZigLLVM_GNUEABI,
323 ZigLLVM_GNUEABIHF,326 ZigLLVM_GNUEABIHF,
std/special/compiler_rt/index.zig+18-1
...@@ -93,7 +93,24 @@ fn isArmArch() -> bool {...@@ -93,7 +93,24 @@ fn isArmArch() -> bool {
93 builtin.Arch.armv5,93 builtin.Arch.armv5,
94 builtin.Arch.armv5te,94 builtin.Arch.armv5te,
95 builtin.Arch.armv4t,95 builtin.Arch.armv4t,
96 builtin.Arch.armeb => true,96 builtin.Arch.armebv8_2a,
97 builtin.Arch.armebv8_1a,
98 builtin.Arch.armebv8,
99 builtin.Arch.armebv8r,
100 builtin.Arch.armebv8m_baseline,
101 builtin.Arch.armebv8m_mainline,
102 builtin.Arch.armebv7,
103 builtin.Arch.armebv7em,
104 builtin.Arch.armebv7m,
105 builtin.Arch.armebv7s,
106 builtin.Arch.armebv7k,
107 builtin.Arch.armebv6,
108 builtin.Arch.armebv6m,
109 builtin.Arch.armebv6k,
110 builtin.Arch.armebv6t2,
111 builtin.Arch.armebv5,
112 builtin.Arch.armebv5te,
113 builtin.Arch.armebv4t => true,
97 else => false,114 else => false,
98 };115 };
99}116}