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
141141available. The Zig compiler links against them. You have to use the same
142142compiler for these libraries as you do to compile Zig.
143143
144 * LLVM, Clang, and LLD libraries == 5.x
144 * LLVM, Clang, and LLD libraries == 6.x
145145
146146### Debug / Development Build
147147
......@@ -163,11 +163,11 @@ make install
163163`ZIG_LIBC_LIB_DIR` and `ZIG_LIBC_STATIC_LIB_DIR` are unused.
164164
165165```
166brew install llvm@5
167brew outdated llvm@5 || brew upgrade llvm@5
166brew install llvm@6
167brew outdated llvm@6 || brew upgrade llvm@6
168168mkdir build
169169cd 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)
171171make install
172172./zig build --build-file ../build.zig test
173173```
c_headers/__clang_cuda_intrinsics.h+124
......@@ -92,6 +92,130 @@ __MAKE_SHUFFLES(__shfl_xor, __nvvm_shfl_bfly_i32, __nvvm_shfl_bfly_f32, 0x1f);
9292
9393#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
95219// sm_32 intrinsics: __ldg and __funnelshift_{l,lc,r,rc}.
96220
97221// Prevent the vanilla sm_32 intrinsics header from being included.
c_headers/__clang_cuda_runtime_wrapper.h+29-1
......@@ -62,7 +62,7 @@
6262#include "cuda.h"
6363#if !defined(CUDA_VERSION)
6464#error "cuda.h did not define CUDA_VERSION"
65#elif CUDA_VERSION < 7000 || CUDA_VERSION > 8000
65#elif CUDA_VERSION < 7000 || CUDA_VERSION > 9000
6666#error "Unsupported CUDA version!"
6767#endif
6868
......@@ -86,7 +86,11 @@
8686#define __COMMON_FUNCTIONS_H__
8787
8888#undef __CUDACC__
89#if CUDA_VERSION < 9000
8990#define __CUDABE__
91#else
92#define __CUDA_LIBDEVICE__
93#endif
9094// Disables definitions of device-side runtime support stubs in
9195// cuda_device_runtime_api.h
9296#include "driver_types.h"
......@@ -94,6 +98,7 @@
9498#include "host_defines.h"
9599
96100#undef __CUDABE__
101#undef __CUDA_LIBDEVICE__
97102#define __CUDACC__
98103#include "cuda_runtime.h"
99104
......@@ -105,7 +110,9 @@
105110#define __nvvm_memcpy(s, d, n, a) __builtin_memcpy(s, d, n)
106111#define __nvvm_memset(d, c, n, a) __builtin_memset(d, c, n)
107112
113#if CUDA_VERSION < 9000
108114#include "crt/device_runtime.h"
115#endif
109116#include "crt/host_runtime.h"
110117// device_runtime.h defines __cxa_* macros that will conflict with
111118// cxxabi.h.
......@@ -166,7 +173,18 @@ inline __host__ double __signbitd(double x) {
166173// __device__.
167174#pragma push_macro("__forceinline__")
168175#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
169185#include "device_functions.hpp"
186#pragma pop_macro("__float2half_rn")
187
170188
171189// math_function.hpp uses the __USE_FAST_MATH__ macro to determine whether we
172190// 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(); }
247265#pragma push_macro("__GNUC__")
248266#undef __GNUC__
249267#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
250277#include "math_functions.hpp"
278#pragma pop_macro("_GLIBCXX_MATH_H")
251279#pragma pop_macro("__GNUC__")
252280#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)
145145static __inline__ __m256i __DEFAULT_FN_ATTRS
146146_mm256_avg_epu8(__m256i __a, __m256i __b)
147147{
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);
149153}
150154
151155static __inline__ __m256i __DEFAULT_FN_ATTRS
152156_mm256_avg_epu16(__m256i __a, __m256i __b)
153157{
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);
155163}
156164
157165static __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)
706706static __inline__ __m512i __DEFAULT_FN_ATTRS
707707_mm512_avg_epu8 (__m512i __A, __m512i __B)
708708{
709 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
710 (__v64qi) __B,
711 (__v64qi) _mm512_setzero_qi(),
712 (__mmask64) -1);
709 typedef unsigned short __v64hu __attribute__((__vector_size__(128)));
710 return (__m512i)__builtin_convertvector(
711 ((__builtin_convertvector((__v64qu) __A, __v64hu) +
712 __builtin_convertvector((__v64qu) __B, __v64hu)) + 1)
713 >> 1, __v64qu);
713714}
714715
715716static __inline__ __m512i __DEFAULT_FN_ATTRS
716717_mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
717718 __m512i __B)
718719{
719 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
720 (__v64qi) __B,
721 (__v64qi) __W,
722 (__mmask64) __U);
720 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
721 (__v64qi)_mm512_avg_epu8(__A, __B),
722 (__v64qi)__W);
723723}
724724
725725static __inline__ __m512i __DEFAULT_FN_ATTRS
726726_mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
727727{
728 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
729 (__v64qi) __B,
730 (__v64qi) _mm512_setzero_qi(),
731 (__mmask64) __U);
728 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
729 (__v64qi)_mm512_avg_epu8(__A, __B),
730 (__v64qi)_mm512_setzero_qi());
732731}
733732
734733static __inline__ __m512i __DEFAULT_FN_ATTRS
735734_mm512_avg_epu16 (__m512i __A, __m512i __B)
736735{
737 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
738 (__v32hi) __B,
739 (__v32hi) _mm512_setzero_hi(),
740 (__mmask32) -1);
736 typedef unsigned int __v32su __attribute__((__vector_size__(128)));
737 return (__m512i)__builtin_convertvector(
738 ((__builtin_convertvector((__v32hu) __A, __v32su) +
739 __builtin_convertvector((__v32hu) __B, __v32su)) + 1)
740 >> 1, __v32hu);
741741}
742742
743743static __inline__ __m512i __DEFAULT_FN_ATTRS
744744_mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
745745 __m512i __B)
746746{
747 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
748 (__v32hi) __B,
749 (__v32hi) __W,
750 (__mmask32) __U);
747 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
748 (__v32hi)_mm512_avg_epu16(__A, __B),
749 (__v32hi)__W);
751750}
752751
753752static __inline__ __m512i __DEFAULT_FN_ATTRS
754753_mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
755754{
756 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
757 (__v32hi) __B,
758 (__v32hi) _mm512_setzero_hi(),
759 (__mmask32) __U);
755 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
756 (__v32hi)_mm512_avg_epu16(__A, __B),
757 (__v32hi) _mm512_setzero_hi());
760758}
761759
762760static __inline__ __m512i __DEFAULT_FN_ATTRS
......@@ -2028,18 +2026,17 @@ _mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)
20282026static __inline__ __m512i __DEFAULT_FN_ATTRS
20292027_mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A)
20302028{
2031 return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
2032 (__v64qi) __O,
2033 __M);
2029 return (__m512i) __builtin_ia32_selectb_512(__M,
2030 (__v64qi)_mm512_set1_epi8(__A),
2031 (__v64qi) __O);
20342032}
20352033
20362034static __inline__ __m512i __DEFAULT_FN_ATTRS
20372035_mm512_maskz_set1_epi8 (__mmask64 __M, char __A)
20382036{
2039 return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
2040 (__v64qi)
2041 _mm512_setzero_qi(),
2042 __M);
2037 return (__m512i) __builtin_ia32_selectb_512(__M,
2038 (__v64qi) _mm512_set1_epi8(__A),
2039 (__v64qi) _mm512_setzero_si512());
20432040}
20442041
20452042static __inline__ __mmask64 __DEFAULT_FN_ATTRS
......@@ -2219,17 +2216,17 @@ _mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A)
22192216static __inline__ __m512i __DEFAULT_FN_ATTRS
22202217_mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A)
22212218{
2222 return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
2223 (__v32hi) __O,
2224 __M);
2219 return (__m512i) __builtin_ia32_selectw_512(__M,
2220 (__v32hi) _mm512_set1_epi16(__A),
2221 (__v32hi) __O);
22252222}
22262223
22272224static __inline__ __m512i __DEFAULT_FN_ATTRS
22282225_mm512_maskz_set1_epi16 (__mmask32 __M, short __A)
22292226{
2230 return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
2231 (__v32hi) _mm512_setzero_hi(),
2232 __M);
2227 return (__m512i) __builtin_ia32_selectw_512(__M,
2228 (__v32hi) _mm512_set1_epi16(__A),
2229 (__v32hi) _mm512_setzero_si512());
22332230}
22342231
22352232static __inline__ __m512i __DEFAULT_FN_ATTRS
c_headers/avx512dqintrin.h+20-18
......@@ -973,25 +973,26 @@ _mm512_movepi64_mask (__m512i __A)
973973static __inline__ __m512 __DEFAULT_FN_ATTRS
974974_mm512_broadcast_f32x2 (__m128 __A)
975975{
976 return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
977 (__v16sf)_mm512_undefined_ps(),
978 (__mmask16) -1);
976 return (__m512)__builtin_shufflevector((__v4sf)__A,
977 (__v4sf)_mm_undefined_ps(),
978 0, 1, 0, 1, 0, 1, 0, 1,
979 0, 1, 0, 1, 0, 1, 0, 1);
979980}
980981
981982static __inline__ __m512 __DEFAULT_FN_ATTRS
982983_mm512_mask_broadcast_f32x2 (__m512 __O, __mmask16 __M, __m128 __A)
983984{
984 return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
985 (__v16sf)
986 __O, __M);
985 return (__m512)__builtin_ia32_selectps_512((__mmask16)__M,
986 (__v16sf)_mm512_broadcast_f32x2(__A),
987 (__v16sf)__O);
987988}
988989
989990static __inline__ __m512 __DEFAULT_FN_ATTRS
990991_mm512_maskz_broadcast_f32x2 (__mmask16 __M, __m128 __A)
991992{
992 return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
993 (__v16sf)_mm512_setzero_ps (),
994 __M);
993 return (__m512)__builtin_ia32_selectps_512((__mmask16)__M,
994 (__v16sf)_mm512_broadcast_f32x2(__A),
995 (__v16sf)_mm512_setzero_ps());
995996}
996997
997998static __inline__ __m512 __DEFAULT_FN_ATTRS
......@@ -1044,25 +1045,26 @@ _mm512_maskz_broadcast_f64x2(__mmask8 __M, __m128d __A)
10441045static __inline__ __m512i __DEFAULT_FN_ATTRS
10451046_mm512_broadcast_i32x2 (__m128i __A)
10461047{
1047 return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si) __A,
1048 (__v16si)_mm512_setzero_si512(),
1049 (__mmask16) -1);
1048 return (__m512i)__builtin_shufflevector((__v4si)__A,
1049 (__v4si)_mm_undefined_si128(),
1050 0, 1, 0, 1, 0, 1, 0, 1,
1051 0, 1, 0, 1, 0, 1, 0, 1);
10501052}
10511053
10521054static __inline__ __m512i __DEFAULT_FN_ATTRS
10531055_mm512_mask_broadcast_i32x2 (__m512i __O, __mmask16 __M, __m128i __A)
10541056{
1055 return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si) __A,
1056 (__v16si)
1057 __O, __M);
1057 return (__m512i)__builtin_ia32_selectd_512((__mmask16)__M,
1058 (__v16si)_mm512_broadcast_i32x2(__A),
1059 (__v16si)__O);
10581060}
10591061
10601062static __inline__ __m512i __DEFAULT_FN_ATTRS
10611063_mm512_maskz_broadcast_i32x2 (__mmask16 __M, __m128i __A)
10621064{
1063 return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si) __A,
1064 (__v16si)_mm512_setzero_si512 (),
1065 __M);
1065 return (__m512i)__builtin_ia32_selectd_512((__mmask16)__M,
1066 (__v16si)_mm512_broadcast_i32x2(__A),
1067 (__v16si)_mm512_setzero_si512());
10661068}
10671069
10681070static __inline__ __m512i __DEFAULT_FN_ATTRS
c_headers/avx512fintrin.h+25-29
......@@ -258,30 +258,6 @@ _mm512_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
258258 (__v8di) _mm512_setzero_si512());
259259}
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
286262static __inline __m512 __DEFAULT_FN_ATTRS
287263_mm512_setzero_ps(void)
......@@ -340,12 +316,30 @@ _mm512_set1_epi32(int __s)
340316 __s, __s, __s, __s, __s, __s, __s, __s };
341317}
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
343327static __inline __m512i __DEFAULT_FN_ATTRS
344328_mm512_set1_epi64(long long __d)
345329{
346330 return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };
347331}
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
349343static __inline__ __m512 __DEFAULT_FN_ATTRS
350344_mm512_broadcastss_ps(__m128 __A)
351345{
......@@ -9040,7 +9034,7 @@ _mm512_stream_si512 (__m512i * __P, __m512i __A)
90409034}
90419035
90429036static __inline__ __m512i __DEFAULT_FN_ATTRS
9043_mm512_stream_load_si512 (void *__P)
9037_mm512_stream_load_si512 (void const *__P)
90449038{
90459039 typedef __v8di __v8di_aligned __attribute__((aligned(64)));
90469040 return (__m512i) __builtin_nontemporal_load((const __v8di_aligned *)__P);
......@@ -9742,16 +9736,18 @@ _mm_cvtu64_ss (__m128 __A, unsigned long long __B)
97429736static __inline__ __m512i __DEFAULT_FN_ATTRS
97439737_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A)
97449738{
9745 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, (__v16si) __O,
9746 __M);
9739 return (__m512i) __builtin_ia32_selectd_512(__M,
9740 (__v16si) _mm512_set1_epi32(__A),
9741 (__v16si) __O);
97479742}
97489743
97499744#ifdef __x86_64__
97509745static __inline__ __m512i __DEFAULT_FN_ATTRS
97519746_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
97529747{
9753 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, (__v8di) __O,
9754 __M);
9748 return (__m512i) __builtin_ia32_selectq_512(__M,
9749 (__v8di) _mm512_set1_epi64(__A),
9750 (__v8di) __O);
97559751}
97569752#endif
97579753
c_headers/avx512vlbwintrin.h+24-26
......@@ -2660,35 +2660,33 @@ _mm256_maskz_mov_epi8 (__mmask32 __U, __m256i __A)
26602660static __inline__ __m128i __DEFAULT_FN_ATTRS
26612661_mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A)
26622662{
2663 return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A,
2664 (__v16qi) __O,
2665 __M);
2663 return (__m128i) __builtin_ia32_selectb_128(__M,
2664 (__v16qi) _mm_set1_epi8(__A),
2665 (__v16qi) __O);
26662666}
26672667
26682668static __inline__ __m128i __DEFAULT_FN_ATTRS
26692669_mm_maskz_set1_epi8 (__mmask16 __M, char __A)
26702670{
2671 return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A,
2672 (__v16qi)
2673 _mm_setzero_si128 (),
2674 __M);
2671 return (__m128i) __builtin_ia32_selectb_128(__M,
2672 (__v16qi) _mm_set1_epi8(__A),
2673 (__v16qi) _mm_setzero_si128());
26752674}
26762675
26772676static __inline__ __m256i __DEFAULT_FN_ATTRS
26782677_mm256_mask_set1_epi8 (__m256i __O, __mmask32 __M, char __A)
26792678{
2680 return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A,
2681 (__v32qi) __O,
2682 __M);
2679 return (__m256i) __builtin_ia32_selectb_256(__M,
2680 (__v32qi) _mm256_set1_epi8(__A),
2681 (__v32qi) __O);
26832682}
26842683
26852684static __inline__ __m256i __DEFAULT_FN_ATTRS
26862685_mm256_maskz_set1_epi8 (__mmask32 __M, char __A)
26872686{
2688 return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A,
2689 (__v32qi)
2690 _mm256_setzero_si256 (),
2691 __M);
2687 return (__m256i) __builtin_ia32_selectb_256(__M,
2688 (__v32qi) _mm256_set1_epi8(__A),
2689 (__v32qi) _mm256_setzero_si256());
26922690}
26932691
26942692static __inline__ __m128i __DEFAULT_FN_ATTRS
......@@ -3025,33 +3023,33 @@ _mm256_maskz_broadcastw_epi16 (__mmask16 __M, __m128i __A)
30253023static __inline__ __m256i __DEFAULT_FN_ATTRS
30263024_mm256_mask_set1_epi16 (__m256i __O, __mmask16 __M, short __A)
30273025{
3028 return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A,
3029 (__v16hi) __O,
3030 __M);
3026 return (__m256i) __builtin_ia32_selectw_256 (__M,
3027 (__v16hi) _mm256_set1_epi16(__A),
3028 (__v16hi) __O);
30313029}
30323030
30333031static __inline__ __m256i __DEFAULT_FN_ATTRS
30343032_mm256_maskz_set1_epi16 (__mmask16 __M, short __A)
30353033{
3036 return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A,
3037 (__v16hi) _mm256_setzero_si256 (),
3038 __M);
3034 return (__m256i) __builtin_ia32_selectw_256(__M,
3035 (__v16hi)_mm256_set1_epi16(__A),
3036 (__v16hi) _mm256_setzero_si256());
30393037}
30403038
30413039static __inline__ __m128i __DEFAULT_FN_ATTRS
30423040_mm_mask_set1_epi16 (__m128i __O, __mmask8 __M, short __A)
30433041{
3044 return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A,
3045 (__v8hi) __O,
3046 __M);
3042 return (__m128i) __builtin_ia32_selectw_128(__M,
3043 (__v8hi) _mm_set1_epi16(__A),
3044 (__v8hi) __O);
30473045}
30483046
30493047static __inline__ __m128i __DEFAULT_FN_ATTRS
30503048_mm_maskz_set1_epi16 (__mmask8 __M, short __A)
30513049{
3052 return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A,
3053 (__v8hi) _mm_setzero_si128 (),
3054 __M);
3050 return (__m128i) __builtin_ia32_selectw_128(__M,
3051 (__v8hi) _mm_set1_epi16(__A),
3052 (__v8hi) _mm_setzero_si128());
30553053}
30563054
30573055static __inline__ __m128i __DEFAULT_FN_ATTRS
c_headers/avx512vldqintrin.h+27-27
......@@ -978,25 +978,25 @@ _mm256_movepi64_mask (__m256i __A)
978978static __inline__ __m256 __DEFAULT_FN_ATTRS
979979_mm256_broadcast_f32x2 (__m128 __A)
980980{
981 return (__m256) __builtin_ia32_broadcastf32x2_256_mask ((__v4sf) __A,
982 (__v8sf)_mm256_undefined_ps(),
983 (__mmask8) -1);
981 return (__m256)__builtin_shufflevector((__v4sf)__A,
982 (__v4sf)_mm_undefined_ps(),
983 0, 1, 0, 1, 0, 1, 0, 1);
984984}
985985
986986static __inline__ __m256 __DEFAULT_FN_ATTRS
987987_mm256_mask_broadcast_f32x2 (__m256 __O, __mmask8 __M, __m128 __A)
988988{
989 return (__m256) __builtin_ia32_broadcastf32x2_256_mask ((__v4sf) __A,
990 (__v8sf) __O,
991 __M);
989 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
990 (__v8sf)_mm256_broadcast_f32x2(__A),
991 (__v8sf)__O);
992992}
993993
994994static __inline__ __m256 __DEFAULT_FN_ATTRS
995995_mm256_maskz_broadcast_f32x2 (__mmask8 __M, __m128 __A)
996996{
997 return (__m256) __builtin_ia32_broadcastf32x2_256_mask ((__v4sf) __A,
998 (__v8sf) _mm256_setzero_ps (),
999 __M);
997 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
998 (__v8sf)_mm256_broadcast_f32x2(__A),
999 (__v8sf)_mm256_setzero_ps());
10001000}
10011001
10021002static __inline__ __m256d __DEFAULT_FN_ATTRS
......@@ -1025,49 +1025,49 @@ _mm256_maskz_broadcast_f64x2 (__mmask8 __M, __m128d __A)
10251025static __inline__ __m128i __DEFAULT_FN_ATTRS
10261026_mm_broadcast_i32x2 (__m128i __A)
10271027{
1028 return (__m128i) __builtin_ia32_broadcasti32x2_128_mask ((__v4si) __A,
1029 (__v4si)_mm_undefined_si128(),
1030 (__mmask8) -1);
1028 return (__m128i)__builtin_shufflevector((__v4si)__A,
1029 (__v4si)_mm_undefined_si128(),
1030 0, 1, 0, 1);
10311031}
10321032
10331033static __inline__ __m128i __DEFAULT_FN_ATTRS
10341034_mm_mask_broadcast_i32x2 (__m128i __O, __mmask8 __M, __m128i __A)
10351035{
1036 return (__m128i) __builtin_ia32_broadcasti32x2_128_mask ((__v4si) __A,
1037 (__v4si) __O,
1038 __M);
1036 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
1037 (__v4si)_mm_broadcast_i32x2(__A),
1038 (__v4si)__O);
10391039}
10401040
10411041static __inline__ __m128i __DEFAULT_FN_ATTRS
10421042_mm_maskz_broadcast_i32x2 (__mmask8 __M, __m128i __A)
10431043{
1044 return (__m128i) __builtin_ia32_broadcasti32x2_128_mask ((__v4si) __A,
1045 (__v4si) _mm_setzero_si128 (),
1046 __M);
1044 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
1045 (__v4si)_mm_broadcast_i32x2(__A),
1046 (__v4si)_mm_setzero_si128());
10471047}
10481048
10491049static __inline__ __m256i __DEFAULT_FN_ATTRS
10501050_mm256_broadcast_i32x2 (__m128i __A)
10511051{
1052 return (__m256i) __builtin_ia32_broadcasti32x2_256_mask ((__v4si) __A,
1053 (__v8si)_mm256_undefined_si256(),
1054 (__mmask8) -1);
1052 return (__m256i)__builtin_shufflevector((__v4si)__A,
1053 (__v4si)_mm_undefined_si128(),
1054 0, 1, 0, 1, 0, 1, 0, 1);
10551055}
10561056
10571057static __inline__ __m256i __DEFAULT_FN_ATTRS
10581058_mm256_mask_broadcast_i32x2 (__m256i __O, __mmask8 __M, __m128i __A)
10591059{
1060 return (__m256i) __builtin_ia32_broadcasti32x2_256_mask ((__v4si) __A,
1061 (__v8si) __O,
1062 __M);
1060 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
1061 (__v8si)_mm256_broadcast_i32x2(__A),
1062 (__v8si)__O);
10631063}
10641064
10651065static __inline__ __m256i __DEFAULT_FN_ATTRS
10661066_mm256_maskz_broadcast_i32x2 (__mmask8 __M, __m128i __A)
10671067{
1068 return (__m256i) __builtin_ia32_broadcasti32x2_256_mask ((__v4si) __A,
1069 (__v8si) _mm256_setzero_si256 (),
1070 __M);
1068 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
1069 (__v8si)_mm256_broadcast_i32x2(__A),
1070 (__v8si)_mm256_setzero_si256());
10711071}
10721072
10731073static __inline__ __m256i __DEFAULT_FN_ATTRS
c_headers/avx512vlintrin.h+41-28
......@@ -5723,59 +5723,72 @@ _mm256_maskz_movedup_pd (__mmask8 __U, __m256d __A)
57235723 (__v4df)_mm256_setzero_pd());
57245724}
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__ ({ \
5728 (__m128i)__builtin_ia32_pbroadcastd128_gpr_mask((int)(A), \
5729 (__v4si)(__m128i)(O), \
5730 (__mmask8)(M)); })
5734static __inline__ __m128i __DEFAULT_FN_ATTRS
5735_mm_maskz_set1_epi32( __mmask8 __M, int __A)
5736{
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__ ({ \
5733 (__m128i)__builtin_ia32_pbroadcastd128_gpr_mask((int)(A), \
5734 (__v4si)_mm_setzero_si128(), \
5735 (__mmask8)(M)); })
5742static __inline__ __m256i __DEFAULT_FN_ATTRS
5743_mm256_mask_set1_epi32(__m256i __O, __mmask8 __M, int __A)
5744{
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__ ({ \
5738 (__m256i)__builtin_ia32_pbroadcastd256_gpr_mask((int)(A), \
5739 (__v8si)(__m256i)(O), \
5740 (__mmask8)(M)); })
5750static __inline__ __m256i __DEFAULT_FN_ATTRS
5751_mm256_maskz_set1_epi32( __mmask8 __M, int __A)
5752{
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
57475759#ifdef __x86_64__
57485760static __inline__ __m128i __DEFAULT_FN_ATTRS
57495761_mm_mask_set1_epi64 (__m128i __O, __mmask8 __M, long long __A)
57505762{
5751 return (__m128i) __builtin_ia32_pbroadcastq128_gpr_mask (__A, (__v2di) __O,
5752 __M);
5763 return (__m128i) __builtin_ia32_selectq_128(__M,
5764 (__v2di) _mm_set1_epi64x(__A),
5765 (__v2di) __O);
57535766}
57545767
57555768static __inline__ __m128i __DEFAULT_FN_ATTRS
57565769_mm_maskz_set1_epi64 (__mmask8 __M, long long __A)
57575770{
5758 return (__m128i) __builtin_ia32_pbroadcastq128_gpr_mask (__A,
5759 (__v2di)
5760 _mm_setzero_si128 (),
5761 __M);
5771 return (__m128i) __builtin_ia32_selectq_128(__M,
5772 (__v2di) _mm_set1_epi64x(__A),
5773 (__v2di) _mm_setzero_si128());
57625774}
57635775
57645776static __inline__ __m256i __DEFAULT_FN_ATTRS
57655777_mm256_mask_set1_epi64 (__m256i __O, __mmask8 __M, long long __A)
57665778{
5767 return (__m256i) __builtin_ia32_pbroadcastq256_gpr_mask (__A, (__v4di) __O,
5768 __M);
5779 return (__m256i) __builtin_ia32_selectq_256(__M,
5780 (__v4di) _mm256_set1_epi64x(__A),
5781 (__v4di) __O) ;
57695782}
57705783
57715784static __inline__ __m256i __DEFAULT_FN_ATTRS
57725785_mm256_maskz_set1_epi64 (__mmask8 __M, long long __A)
57735786{
5774 return (__m256i) __builtin_ia32_pbroadcastq256_gpr_mask (__A,
5775 (__v4di)
5776 _mm256_setzero_si256 (),
5777 __M);
5787 return (__m256i) __builtin_ia32_selectq_256(__M,
5788 (__v4di) _mm256_set1_epi64x(__A),
5789 (__v4di) _mm256_setzero_si256());
57785790}
5791
57795792#endif
57805793
57815794#define _mm_fixupimm_pd(A, B, C, imm) __extension__ ({ \
c_headers/clflushoptintrin.h+1-1
......@@ -32,7 +32,7 @@
3232#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("clflushopt")))
3333
3434static __inline__ void __DEFAULT_FN_ATTRS
35_mm_clflushopt(char * __m) {
35_mm_clflushopt(void const * __m) {
3636 __builtin_ia32_clflushopt(__m);
3737}
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 @@
2626
2727#include_next <new>
2828
29// Device overrides for placement new and delete.
3029#pragma push_macro("CUDA_NOEXCEPT")
3130#if __cplusplus >= 201103L
3231#define CUDA_NOEXCEPT noexcept
......@@ -34,6 +33,55 @@
3433#define CUDA_NOEXCEPT
3534#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.
3785__device__ inline void *operator new(__SIZE_TYPE__, void *__ptr) CUDA_NOEXCEPT {
3886 return __ptr;
3987}
......@@ -42,6 +90,7 @@ __device__ inline void *operator new[](__SIZE_TYPE__, void *__ptr) CUDA_NOEXCEPT
4290}
4391__device__ inline void operator delete(void *, void *) CUDA_NOEXCEPT {}
4492__device__ inline void operator delete[](void *, void *) CUDA_NOEXCEPT {}
93
4594#pragma pop_macro("CUDA_NOEXCEPT")
4695
4796#endif // include guard
c_headers/emmintrin.h+10-2
......@@ -2258,7 +2258,11 @@ _mm_adds_epu16(__m128i __a, __m128i __b)
22582258static __inline__ __m128i __DEFAULT_FN_ATTRS
22592259_mm_avg_epu8(__m128i __a, __m128i __b)
22602260{
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);
22622266}
22632267
22642268/// \brief Computes the rounded avarages of corresponding elements of two
......@@ -2278,7 +2282,11 @@ _mm_avg_epu8(__m128i __a, __m128i __b)
22782282static __inline__ __m128i __DEFAULT_FN_ATTRS
22792283_mm_avg_epu16(__m128i __a, __m128i __b)
22802284{
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);
22822290}
22832291
22842292/// \brief Multiplies the corresponding elements of two 128-bit signed [8 x i16]
c_headers/float.h+14
......@@ -143,4 +143,18 @@
143143# define LDBL_DECIMAL_DIG __LDBL_DECIMAL_DIG__
144144#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
146160#endif /* __FLOAT_H */
c_headers/immintrin.h+4
......@@ -58,6 +58,10 @@
5858#include <clflushoptintrin.h>
5959#endif
6060
61#if !defined(_MSC_VER) || __has_feature(modules) || defined(__CLWB__)
62#include <clwbintrin.h>
63#endif
64
6165#if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX__)
6266#include <avxintrin.h>
6367#endif
c_headers/intrin.h+5-1
......@@ -38,6 +38,10 @@
3838#include <armintr.h>
3939#endif
4040
41#if defined(_M_ARM64)
42#include <arm64intr.h>
43#endif
44
4145/* For the definition of jmp_buf. */
4246#if __STDC_HOSTED__
4347#include <setjmp.h>
......@@ -828,7 +832,7 @@ _InterlockedCompareExchange_nf(long volatile *_Destination,
828832 __ATOMIC_SEQ_CST, __ATOMIC_RELAXED);
829833 return _Comparand;
830834}
831static __inline__ short __DEFAULT_FN_ATTRS
835static __inline__ long __DEFAULT_FN_ATTRS
832836_InterlockedCompareExchange_rel(long volatile *_Destination,
833837 long _Exchange, long _Comparand) {
834838 __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);
1138111381 * For each component of a vector type,
1138211382 * result[i] = if MSB of c[i] is set ? b[i] : a[i].
1138311383 * 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.
1138411386 */
1138511387char __ovld __cnfn select(char a, char b, char c);
1138611388uchar __ovld __cnfn select(uchar a, uchar b, char c);
......@@ -11394,60 +11396,7 @@ char8 __ovld __cnfn select(char8 a, char8 b, char8 c);
1139411396uchar8 __ovld __cnfn select(uchar8 a, uchar8 b, char8 c);
1139511397char16 __ovld __cnfn select(char16 a, char16 b, char16 c);
1139611398uchar16 __ovld __cnfn select(uchar16 a, uchar16 b, char16 c);
11397short __ovld __cnfn select(short a, short b, char c);
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);
11399
1145111400short __ovld __cnfn select(short a, short b, short c);
1145211401ushort __ovld __cnfn select(ushort a, ushort b, short c);
1145311402short2 __ovld __cnfn select(short2 a, short2 b, short2 c);
......@@ -11460,60 +11409,7 @@ short8 __ovld __cnfn select(short8 a, short8 b, short8 c);
1146011409ushort8 __ovld __cnfn select(ushort8 a, ushort8 b, short8 c);
1146111410short16 __ovld __cnfn select(short16 a, short16 b, short16 c);
1146211411ushort16 __ovld __cnfn select(ushort16 a, ushort16 b, short16 c);
11463int __ovld __cnfn select(int a, int b, short c);
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);
11412
1151711413int __ovld __cnfn select(int a, int b, int c);
1151811414uint __ovld __cnfn select(uint a, uint b, int c);
1151911415int2 __ovld __cnfn select(int2 a, int2 b, int2 c);
......@@ -11526,60 +11422,13 @@ int8 __ovld __cnfn select(int8 a, int8 b, int8 c);
1152611422uint8 __ovld __cnfn select(uint8 a, uint8 b, int8 c);
1152711423int16 __ovld __cnfn select(int16 a, int16 b, int16 c);
1152811424uint16 __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);
1154111425float __ovld __cnfn select(float a, float b, int c);
1154211426float2 __ovld __cnfn select(float2 a, float2 b, int2 c);
1154311427float3 __ovld __cnfn select(float3 a, float3 b, int3 c);
1154411428float4 __ovld __cnfn select(float4 a, float4 b, int4 c);
1154511429float8 __ovld __cnfn select(float8 a, float8 b, int8 c);
1154611430float16 __ovld __cnfn select(float16 a, float16 b, int16 c);
11547char __ovld __cnfn select(char a, char b, long c);
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);
11431
1158311432long __ovld __cnfn select(long a, long b, long c);
1158411433ulong __ovld __cnfn select(ulong a, ulong b, long c);
1158511434long2 __ovld __cnfn select(long2 a, long2 b, long2 c);
......@@ -11592,12 +11441,7 @@ long8 __ovld __cnfn select(long8 a, long8 b, long8 c);
1159211441ulong8 __ovld __cnfn select(ulong8 a, ulong8 b, long8 c);
1159311442long16 __ovld __cnfn select(long16 a, long16 b, long16 c);
1159411443ulong16 __ovld __cnfn select(ulong16 a, ulong16 b, long16 c);
11595float __ovld __cnfn select(float a, float b, long c);
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);
11444
1160111445char __ovld __cnfn select(char a, char b, uchar c);
1160211446uchar __ovld __cnfn select(uchar a, uchar b, uchar c);
1160311447char2 __ovld __cnfn select(char2 a, char2 b, uchar2 c);
......@@ -11610,60 +11454,7 @@ char8 __ovld __cnfn select(char8 a, char8 b, uchar8 c);
1161011454uchar8 __ovld __cnfn select(uchar8 a, uchar8 b, uchar8 c);
1161111455char16 __ovld __cnfn select(char16 a, char16 b, uchar16 c);
1161211456uchar16 __ovld __cnfn select(uchar16 a, uchar16 b, uchar16 c);
11613short __ovld __cnfn select(short a, short b, uchar c);
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);
11457
1166711458short __ovld __cnfn select(short a, short b, ushort c);
1166811459ushort __ovld __cnfn select(ushort a, ushort b, ushort c);
1166911460short2 __ovld __cnfn select(short2 a, short2 b, ushort2 c);
......@@ -11676,60 +11467,7 @@ short8 __ovld __cnfn select(short8 a, short8 b, ushort8 c);
1167611467ushort8 __ovld __cnfn select(ushort8 a, ushort8 b, ushort8 c);
1167711468short16 __ovld __cnfn select(short16 a, short16 b, ushort16 c);
1167811469ushort16 __ovld __cnfn select(ushort16 a, ushort16 b, ushort16 c);
11679int __ovld __cnfn select(int a, int b, ushort c);
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);
11470
1173311471int __ovld __cnfn select(int a, int b, uint c);
1173411472uint __ovld __cnfn select(uint a, uint b, uint c);
1173511473int2 __ovld __cnfn select(int2 a, int2 b, uint2 c);
......@@ -11742,60 +11480,13 @@ int8 __ovld __cnfn select(int8 a, int8 b, uint8 c);
1174211480uint8 __ovld __cnfn select(uint8 a, uint8 b, uint8 c);
1174311481int16 __ovld __cnfn select(int16 a, int16 b, uint16 c);
1174411482uint16 __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);
1175711483float __ovld __cnfn select(float a, float b, uint c);
1175811484float2 __ovld __cnfn select(float2 a, float2 b, uint2 c);
1175911485float3 __ovld __cnfn select(float3 a, float3 b, uint3 c);
1176011486float4 __ovld __cnfn select(float4 a, float4 b, uint4 c);
1176111487float8 __ovld __cnfn select(float8 a, float8 b, uint8 c);
1176211488float16 __ovld __cnfn select(float16 a, float16 b, uint16 c);
11763char __ovld __cnfn select(char a, char b, ulong c);
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);
11489
1179911490long __ovld __cnfn select(long a, long b, ulong c);
1180011491ulong __ovld __cnfn select(ulong a, ulong b, ulong c);
1180111492long2 __ovld __cnfn select(long2 a, long2 b, ulong2 c);
......@@ -11808,12 +11499,7 @@ long8 __ovld __cnfn select(long8 a, long8 b, ulong8 c);
1180811499ulong8 __ovld __cnfn select(ulong8 a, ulong8 b, ulong8 c);
1180911500long16 __ovld __cnfn select(long16 a, long16 b, ulong16 c);
1181011501ulong16 __ovld __cnfn select(ulong16 a, ulong16 b, ulong16 c);
11811float __ovld __cnfn select(float a, float b, ulong c);
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);
11502
1181711503#ifdef cl_khr_fp64
1181811504double __ovld __cnfn select(double a, double b, long c);
1181911505double2 __ovld __cnfn select(double2 a, double2 b, long2 c);
......@@ -13141,13 +12827,14 @@ void __ovld __conv barrier(cl_mem_fence_flags flags);
1314112827
1314212828#if __OPENCL_C_VERSION__ >= CL_VERSION_2_0
1314312829
13144typedef enum memory_scope
13145{
13146 memory_scope_work_item,
13147 memory_scope_work_group,
13148 memory_scope_device,
13149 memory_scope_all_svm_devices,
13150 memory_scope_sub_group
12830typedef enum memory_scope {
12831 memory_scope_work_item = __OPENCL_MEMORY_SCOPE_WORK_ITEM,
12832 memory_scope_work_group = __OPENCL_MEMORY_SCOPE_WORK_GROUP,
12833 memory_scope_device = __OPENCL_MEMORY_SCOPE_DEVICE,
12834 memory_scope_all_svm_devices = __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES,
12835#if defined(cl_intel_subgroups) || defined(cl_khr_subgroups)
12836 memory_scope_sub_group = __OPENCL_MEMORY_SCOPE_SUB_GROUP
12837#endif
1315112838} memory_scope;
1315212839
1315312840void __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
1395213639// enum values aligned with what clang uses in EmitAtomicExpr()
1395313640typedef enum memory_order
1395413641{
13955 memory_order_relaxed,
13956 memory_order_acquire,
13957 memory_order_release,
13958 memory_order_acq_rel,
13959 memory_order_seq_cst
13642 memory_order_relaxed = __ATOMIC_RELAXED,
13643 memory_order_acquire = __ATOMIC_ACQUIRE,
13644 memory_order_release = __ATOMIC_RELEASE,
13645 memory_order_acq_rel = __ATOMIC_ACQ_REL,
13646 memory_order_seq_cst = __ATOMIC_SEQ_CST
1396013647} memory_order;
1396113648
1396213649// 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;
7676typedef uintptr_t _uleb128_t;
7777
7878struct _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
7983struct _Unwind_Exception;
84typedef struct _Unwind_Exception _Unwind_Exception;
85#endif
8086typedef enum {
8187 _URC_NO_REASON = 0,
8288#if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \
......@@ -109,8 +115,42 @@ typedef enum {
109115} _Unwind_Action;
110116
111117typedef void (*_Unwind_Exception_Cleanup_Fn)(_Unwind_Reason_Code,
112 struct _Unwind_Exception *);
113
118 _Unwind_Exception *);
119
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
114154struct _Unwind_Exception {
115155 _Unwind_Exception_Class exception_class;
116156 _Unwind_Exception_Cleanup_Fn exception_cleanup;
......@@ -120,23 +160,24 @@ struct _Unwind_Exception {
120160 * aligned". GCC has interpreted this to mean "use the maximum useful
121161 * alignment for the target"; so do we. */
122162} __attribute__((__aligned__));
163#endif
123164
124165typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn)(int, _Unwind_Action,
125166 _Unwind_Exception_Class,
126 struct _Unwind_Exception *,
167 _Unwind_Exception *,
127168 struct _Unwind_Context *,
128169 void *);
129170
130typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn)(
131 int, _Unwind_Action, _Unwind_Exception_Class, struct _Unwind_Exception *,
132 struct _Unwind_Context *);
171typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn)(int, _Unwind_Action,
172 _Unwind_Exception_Class,
173 _Unwind_Exception *,
174 struct _Unwind_Context *);
133175typedef _Unwind_Personality_Fn __personality_routine;
134176
135177typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn)(struct _Unwind_Context *,
136178 void *);
137179
138#if defined(__arm__) && !defined(__APPLE__)
139
180#if defined(__arm__) && !(defined(__USING_SJLJ_EXCEPTIONS__) || defined(__ARM_DWARF_EH__))
140181typedef enum {
141182 _UVRSC_CORE = 0, /* integer register */
142183 _UVRSC_VFP = 1, /* vfp */
......@@ -158,14 +199,12 @@ typedef enum {
158199 _UVRSR_FAILED = 2
159200} _Unwind_VRS_Result;
160201
161#if !defined(__USING_SJLJ_EXCEPTIONS__) && !defined(__ARM_DWARF_EH__)
162202typedef uint32_t _Unwind_State;
163203#define _US_VIRTUAL_UNWIND_FRAME ((_Unwind_State)0)
164204#define _US_UNWIND_FRAME_STARTING ((_Unwind_State)1)
165205#define _US_UNWIND_FRAME_RESUME ((_Unwind_State)2)
166206#define _US_ACTION_MASK ((_Unwind_State)3)
167207#define _US_FORCE_UNWIND ((_Unwind_State)8)
168#endif
169208
170209_Unwind_VRS_Result _Unwind_VRS_Get(struct _Unwind_Context *__context,
171210 _Unwind_VRS_RegClass __regclass,
......@@ -224,13 +263,12 @@ _Unwind_Ptr _Unwind_GetRegionStart(struct _Unwind_Context *);
224263
225264/* DWARF EH functions; currently not available on Darwin/ARM */
226265#if !defined(__APPLE__) || !defined(__arm__)
227
228_Unwind_Reason_Code _Unwind_RaiseException(struct _Unwind_Exception *);
229_Unwind_Reason_Code _Unwind_ForcedUnwind(struct _Unwind_Exception *,
230 _Unwind_Stop_Fn, void *);
231void _Unwind_DeleteException(struct _Unwind_Exception *);
232void _Unwind_Resume(struct _Unwind_Exception *);
233_Unwind_Reason_Code _Unwind_Resume_or_Rethrow(struct _Unwind_Exception *);
266_Unwind_Reason_Code _Unwind_RaiseException(_Unwind_Exception *);
267_Unwind_Reason_Code _Unwind_ForcedUnwind(_Unwind_Exception *, _Unwind_Stop_Fn,
268 void *);
269void _Unwind_DeleteException(_Unwind_Exception *);
270void _Unwind_Resume(_Unwind_Exception *);
271_Unwind_Reason_Code _Unwind_Resume_or_Rethrow(_Unwind_Exception *);
234272
235273#endif
236274
......@@ -241,11 +279,11 @@ typedef struct SjLj_Function_Context *_Unwind_FunctionContext_t;
241279
242280void _Unwind_SjLj_Register(_Unwind_FunctionContext_t);
243281void _Unwind_SjLj_Unregister(_Unwind_FunctionContext_t);
244_Unwind_Reason_Code _Unwind_SjLj_RaiseException(struct _Unwind_Exception *);
245_Unwind_Reason_Code _Unwind_SjLj_ForcedUnwind(struct _Unwind_Exception *,
282_Unwind_Reason_Code _Unwind_SjLj_RaiseException(_Unwind_Exception *);
283_Unwind_Reason_Code _Unwind_SjLj_ForcedUnwind(_Unwind_Exception *,
246284 _Unwind_Stop_Fn, void *);
247void _Unwind_SjLj_Resume(struct _Unwind_Exception *);
248_Unwind_Reason_Code _Unwind_SjLj_Resume_or_Rethrow(struct _Unwind_Exception *);
285void _Unwind_SjLj_Resume(_Unwind_Exception *);
286_Unwind_Reason_Code _Unwind_SjLj_Resume_or_Rethrow(_Unwind_Exception *);
249287
250288void *_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%"
77SET "MSYSTEM=MINGW64"
88SET "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 /b
10bash -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
1313SET "PATH=%PREVPATH%"
1414SET "MSYSTEM=%PREVMSYSTEM%"
1515SET "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
1818mkdir %ZIGBUILDDIR%
1919cd %ZIGBUILDDIR%
ci/travis_linux_install+1-1
......@@ -4,4 +4,4 @@ set -x
44
55sudo apt-get remove -y llvm-*
66sudo 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-amd64
7sudo 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)
2626else()
2727 find_path(CLANG_INCLUDE_DIRS NAMES clang/Frontend/ASTUnit.h
2828 PATHS
29 /usr/lib/llvm/5/include
30 /usr/lib/llvm-5.0/include
29 /usr/lib/llvm/6/include
30 /usr/lib/llvm-6.0/include
3131 /mingw64/include)
3232
3333 macro(FIND_AND_ADD_CLANG_LIB _libname_)
3434 string(TOUPPER ${_libname_} _prettylibname_)
3535 find_library(CLANG_${_prettylibname_}_LIB NAMES ${_libname_}
3636 PATHS
37 /usr/lib/llvm/5/lib
38 /usr/lib/llvm-5.0/lib
37 /usr/lib/llvm/6/lib
38 /usr/lib/llvm-6.0/lib
3939 /mingw64/lib
4040 /c/msys64/mingw64/lib
4141 c:\\msys64\\mingw64\\lib)
cmake/Findlld.cmake+6-5
......@@ -6,12 +6,12 @@
66# LLD_INCLUDE_DIRS
77# LLD_LIBRARIES
88
9find_path(LLD_INCLUDE_DIRS NAMES lld/Driver/Driver.h
9find_path(LLD_INCLUDE_DIRS NAMES lld/Common/Driver.h
1010 PATHS
11 /usr/lib/llvm-5.0/include
11 /usr/lib/llvm-6.0/include
1212 /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)
1515if(EXISTS ${LLD_LIBRARY})
1616 set(LLD_LIBRARIES ${LLD_LIBRARY})
1717else()
......@@ -19,7 +19,7 @@ else()
1919 string(TOUPPER ${_libname_} _prettylibname_)
2020 find_library(LLD_${_prettylibname_}_LIB NAMES ${_libname_}
2121 PATHS
22 /usr/lib/llvm-5.0/lib
22 /usr/lib/llvm-6.0/lib
2323 /mingw64/lib
2424 /c/msys64/mingw64/lib
2525 c:/msys64/mingw64/lib)
......@@ -29,13 +29,14 @@ else()
2929 endmacro(FIND_AND_ADD_LLD_LIB)
3030
3131 FIND_AND_ADD_LLD_LIB(lldDriver)
32 FIND_AND_ADD_LLD_LIB(lldMinGW)
3233 FIND_AND_ADD_LLD_LIB(lldELF)
3334 FIND_AND_ADD_LLD_LIB(lldCOFF)
3435 FIND_AND_ADD_LLD_LIB(lldMachO)
3536 FIND_AND_ADD_LLD_LIB(lldReaderWriter)
3637 FIND_AND_ADD_LLD_LIB(lldCore)
3738 FIND_AND_ADD_LLD_LIB(lldYAML)
38 FIND_AND_ADD_LLD_LIB(lldConfig)
39 FIND_AND_ADD_LLD_LIB(lldCommon)
3940endif()
4041
4142include(FindPackageHandleStandardArgs)
cmake/Findllvm.cmake+3-3
......@@ -8,12 +8,12 @@
88# LLVM_LIBDIRS
99
1010find_program(LLVM_CONFIG_EXE
11 NAMES llvm-config-5.0 llvm-config
11 NAMES llvm-config-6.0 llvm-config
1212 PATHS
1313 "/mingw64/bin"
1414 "/c/msys64/mingw64/bin"
1515 "c:/msys64/mingw64/bin"
16 "C:/Libraries/llvm-5.0.0/bin")
16 "C:/Libraries/llvm-6.0.0/bin")
1717
1818if(NOT(CMAKE_BUILD_TYPE STREQUAL "Debug"))
1919 execute_process(
......@@ -62,7 +62,7 @@ execute_process(
6262set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS})
6363
6464if(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)
6666endif()
6767
6868link_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
570570 return trans_create_node_symbol_str(c, "f64");
571571 case BuiltinType::Float128:
572572 return trans_create_node_symbol_str(c, "f128");
573 case BuiltinType::Float16:
574 return trans_create_node_symbol_str(c, "f16");
573575 case BuiltinType::LongDouble:
574576 return trans_create_node_symbol_str(c, "c_longdouble");
575577 case BuiltinType::WChar_U:
......@@ -856,6 +858,7 @@ static AstNode *trans_type(Context *c, const Type *ty, const SourceLocation &sou
856858 case Type::Pipe:
857859 case Type::ObjCTypeParam:
858860 case Type::DeducedTemplateSpecialization:
861 case Type::DependentAddressSpace:
859862 emit_warning(c, source_loc, "unsupported type: '%s'", ty->getTypeClassName());
860863 return nullptr;
861864 }
src/target.cpp+25-1
......@@ -13,6 +13,7 @@
1313#include <stdio.h>
1414
1515static const ArchType arch_list[] = {
16 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v8_3a},
1617 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v8_2a},
1718 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v8_1a},
1819 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v8},
......@@ -33,9 +34,30 @@ static const ArchType arch_list[] = {
3334 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v5te},
3435 {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
3758 {ZigLLVM_aarch64, ZigLLVM_NoSubArch},
3859 {ZigLLVM_aarch64_be, ZigLLVM_NoSubArch},
60 {ZigLLVM_arc, ZigLLVM_NoSubArch},
3961 {ZigLLVM_avr, ZigLLVM_NoSubArch},
4062 {ZigLLVM_bpfel, ZigLLVM_NoSubArch},
4163 {ZigLLVM_bpfeb, ZigLLVM_NoSubArch},
......@@ -345,6 +367,7 @@ void resolve_target_object_format(ZigTarget *target) {
345367 case ZigLLVM_amdil:
346368 case ZigLLVM_amdil64:
347369 case ZigLLVM_armeb:
370 case ZigLLVM_arc:
348371 case ZigLLVM_avr:
349372 case ZigLLVM_bpfeb:
350373 case ZigLLVM_bpfel:
......@@ -407,6 +430,7 @@ static int get_arch_pointer_bit_width(ZigLLVM_ArchType arch) {
407430 case ZigLLVM_msp430:
408431 return 16;
409432
433 case ZigLLVM_arc:
410434 case ZigLLVM_arm:
411435 case ZigLLVM_armeb:
412436 case ZigLLVM_hexagon:
src/zig_llvm.cpp+6-2
......@@ -37,7 +37,7 @@
3737#include <llvm/Transforms/IPO/AlwaysInliner.h>
3838#include <llvm/Transforms/Scalar.h>
3939
40#include <lld/Driver/Driver.h>
40#include <lld/Common/Driver.h>
4141
4242using namespace llvm;
4343
......@@ -605,11 +605,13 @@ static_assert((Triple::ArchType)ZigLLVM_LastArchType == Triple::LastArchType, ""
605605static_assert((Triple::VendorType)ZigLLVM_LastVendorType == Triple::LastVendorType, "");
606606static_assert((Triple::OSType)ZigLLVM_LastOSType == Triple::LastOSType, "");
607607static_assert((Triple::EnvironmentType)ZigLLVM_LastEnvironmentType == Triple::LastEnvironmentType, "");
608static_assert((Triple::SubArchType)ZigLLVM_KalimbaSubArch_v5 == Triple::KalimbaSubArch_v5, "");
608609
609610static_assert((Triple::ObjectFormatType)ZigLLVM_UnknownObjectFormat == Triple::UnknownObjectFormat, "");
610611static_assert((Triple::ObjectFormatType)ZigLLVM_COFF == Triple::COFF, "");
611612static_assert((Triple::ObjectFormatType)ZigLLVM_ELF == Triple::ELF, "");
612613static_assert((Triple::ObjectFormatType)ZigLLVM_MachO == Triple::MachO, "");
614static_assert((Triple::ObjectFormatType)ZigLLVM_Wasm == Triple::Wasm, "");
613615
614616const char *ZigLLVMGetArchTypeName(ZigLLVM_ArchType arch) {
615617 return (const char*)Triple::getArchTypeName((Triple::ArchType)arch).bytes_begin();
......@@ -648,6 +650,8 @@ const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch) {
648650 switch (sub_arch) {
649651 case ZigLLVM_NoSubArch:
650652 return "(none)";
653 case ZigLLVM_ARMSubArch_v8_3a:
654 return "v8_3a";
651655 case ZigLLVM_ARMSubArch_v8_2a:
652656 return "v8_2a";
653657 case ZigLLVM_ARMSubArch_v8_1a:
......@@ -775,7 +779,7 @@ bool ZigLLDLink(ZigLLVM_ObjectFormatType oformat, const char **args, size_t arg_
775779 zig_unreachable();
776780
777781 case ZigLLVM_COFF:
778 return lld::coff::link(array_ref_args);
782 return lld::coff::link(array_ref_args, false);
779783
780784 case ZigLLVM_ELF:
781785 return lld::elf::link(array_ref_args, false, diag);
src/zig_llvm.hpp+3
......@@ -177,6 +177,7 @@ enum ZigLLVM_ArchType {
177177 ZigLLVM_armeb, // ARM (big endian): armeb
178178 ZigLLVM_aarch64, // AArch64 (little endian): aarch64
179179 ZigLLVM_aarch64_be, // AArch64 (big endian): aarch64_be
180 ZigLLVM_arc, // ARC: Synopsys ARC
180181 ZigLLVM_avr, // AVR: Atmel AVR microcontroller
181182 ZigLLVM_bpfel, // eBPF or extended BPF or 64-bit BPF (little endian)
182183 ZigLLVM_bpfeb, // eBPF or extended BPF or 64-bit BPF (big endian)
......@@ -229,6 +230,7 @@ enum ZigLLVM_ArchType {
229230enum ZigLLVM_SubArchType {
230231 ZigLLVM_NoSubArch,
231232
233 ZigLLVM_ARMSubArch_v8_3a,
232234 ZigLLVM_ARMSubArch_v8_2a,
233235 ZigLLVM_ARMSubArch_v8_1a,
234236 ZigLLVM_ARMSubArch_v8,
......@@ -318,6 +320,7 @@ enum ZigLLVM_EnvironmentType {
318320 ZigLLVM_UnknownEnvironment,
319321
320322 ZigLLVM_GNU,
323 ZigLLVM_GNUABIN32,
321324 ZigLLVM_GNUABI64,
322325 ZigLLVM_GNUEABI,
323326 ZigLLVM_GNUEABIHF,
std/special/compiler_rt/index.zig+18-1
......@@ -93,7 +93,24 @@ fn isArmArch() -> bool {
9393 builtin.Arch.armv5,
9494 builtin.Arch.armv5te,
9595 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,
97114 else => false,
98115 };
99116}