1 /*===---- __clang_cuda_device_functions.h - CUDA runtime support -----------===
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 __CLANG_CUDA_DEVICE_FUNCTIONS_H__
25 #define __CLANG_CUDA_DEVICE_FUNCTIONS_H__
26 
27 #if CUDA_VERSION < 9000
28 #error This file is intended to be used with CUDA-9+ only.
29 #endif
30 
31 // __DEVICE__ is a helper macro with common set of attributes for the wrappers
32 // we implement in this file. We need static in order to avoid emitting unused
33 // functions and __forceinline__ helps inlining these wrappers at -O1.
34 #pragma push_macro("__DEVICE__")
35 #define __DEVICE__ static __device__ __forceinline__
36 
37 // libdevice provides fast low precision and slow full-recision implementations
38 // for some functions. Which one gets selected depends on
39 // __CLANG_CUDA_APPROX_TRANSCENDENTALS__ which gets defined by clang if
40 // -ffast-math or -fcuda-approx-transcendentals are in effect.
41 #pragma push_macro("__FAST_OR_SLOW")
42 #if defined(__CLANG_CUDA_APPROX_TRANSCENDENTALS__)
43 #define __FAST_OR_SLOW(fast, slow) fast
44 #else
45 #define __FAST_OR_SLOW(fast, slow) slow
46 #endif
47 
__all(int __a)48 __DEVICE__ int __all(int __a) { return __nvvm_vote_all(__a); }
__any(int __a)49 __DEVICE__ int __any(int __a) { return __nvvm_vote_any(__a); }
__ballot(int __a)50 __DEVICE__ unsigned int __ballot(int __a) { return __nvvm_vote_ballot(__a); }
__brev(unsigned int __a)51 __DEVICE__ unsigned int __brev(unsigned int __a) { return __nv_brev(__a); }
__brevll(unsigned long long __a)52 __DEVICE__ unsigned long long __brevll(unsigned long long __a) {
53   return __nv_brevll(__a);
54 }
__brkpt()55 __DEVICE__ void __brkpt() { asm volatile("brkpt;"); }
__brkpt(int __a)56 __DEVICE__ void __brkpt(int __a) { __brkpt(); }
__byte_perm(unsigned int __a,unsigned int __b,unsigned int __c)57 __DEVICE__ unsigned int __byte_perm(unsigned int __a, unsigned int __b,
58                                     unsigned int __c) {
59   return __nv_byte_perm(__a, __b, __c);
60 }
__clz(int __a)61 __DEVICE__ int __clz(int __a) { return __nv_clz(__a); }
__clzll(long long __a)62 __DEVICE__ int __clzll(long long __a) { return __nv_clzll(__a); }
__cosf(float __a)63 __DEVICE__ float __cosf(float __a) { return __nv_fast_cosf(__a); }
__dAtomicAdd(double * __p,double __v)64 __DEVICE__ double __dAtomicAdd(double *__p, double __v) {
65   return __nvvm_atom_add_gen_d(__p, __v);
66 }
__dAtomicAdd_block(double * __p,double __v)67 __DEVICE__ double __dAtomicAdd_block(double *__p, double __v) {
68   return __nvvm_atom_cta_add_gen_d(__p, __v);
69 }
__dAtomicAdd_system(double * __p,double __v)70 __DEVICE__ double __dAtomicAdd_system(double *__p, double __v) {
71   return __nvvm_atom_sys_add_gen_d(__p, __v);
72 }
__dadd_rd(double __a,double __b)73 __DEVICE__ double __dadd_rd(double __a, double __b) {
74   return __nv_dadd_rd(__a, __b);
75 }
__dadd_rn(double __a,double __b)76 __DEVICE__ double __dadd_rn(double __a, double __b) {
77   return __nv_dadd_rn(__a, __b);
78 }
__dadd_ru(double __a,double __b)79 __DEVICE__ double __dadd_ru(double __a, double __b) {
80   return __nv_dadd_ru(__a, __b);
81 }
__dadd_rz(double __a,double __b)82 __DEVICE__ double __dadd_rz(double __a, double __b) {
83   return __nv_dadd_rz(__a, __b);
84 }
__ddiv_rd(double __a,double __b)85 __DEVICE__ double __ddiv_rd(double __a, double __b) {
86   return __nv_ddiv_rd(__a, __b);
87 }
__ddiv_rn(double __a,double __b)88 __DEVICE__ double __ddiv_rn(double __a, double __b) {
89   return __nv_ddiv_rn(__a, __b);
90 }
__ddiv_ru(double __a,double __b)91 __DEVICE__ double __ddiv_ru(double __a, double __b) {
92   return __nv_ddiv_ru(__a, __b);
93 }
__ddiv_rz(double __a,double __b)94 __DEVICE__ double __ddiv_rz(double __a, double __b) {
95   return __nv_ddiv_rz(__a, __b);
96 }
__dmul_rd(double __a,double __b)97 __DEVICE__ double __dmul_rd(double __a, double __b) {
98   return __nv_dmul_rd(__a, __b);
99 }
__dmul_rn(double __a,double __b)100 __DEVICE__ double __dmul_rn(double __a, double __b) {
101   return __nv_dmul_rn(__a, __b);
102 }
__dmul_ru(double __a,double __b)103 __DEVICE__ double __dmul_ru(double __a, double __b) {
104   return __nv_dmul_ru(__a, __b);
105 }
__dmul_rz(double __a,double __b)106 __DEVICE__ double __dmul_rz(double __a, double __b) {
107   return __nv_dmul_rz(__a, __b);
108 }
__double2float_rd(double __a)109 __DEVICE__ float __double2float_rd(double __a) {
110   return __nv_double2float_rd(__a);
111 }
__double2float_rn(double __a)112 __DEVICE__ float __double2float_rn(double __a) {
113   return __nv_double2float_rn(__a);
114 }
__double2float_ru(double __a)115 __DEVICE__ float __double2float_ru(double __a) {
116   return __nv_double2float_ru(__a);
117 }
__double2float_rz(double __a)118 __DEVICE__ float __double2float_rz(double __a) {
119   return __nv_double2float_rz(__a);
120 }
__double2hiint(double __a)121 __DEVICE__ int __double2hiint(double __a) { return __nv_double2hiint(__a); }
__double2int_rd(double __a)122 __DEVICE__ int __double2int_rd(double __a) { return __nv_double2int_rd(__a); }
__double2int_rn(double __a)123 __DEVICE__ int __double2int_rn(double __a) { return __nv_double2int_rn(__a); }
__double2int_ru(double __a)124 __DEVICE__ int __double2int_ru(double __a) { return __nv_double2int_ru(__a); }
__double2int_rz(double __a)125 __DEVICE__ int __double2int_rz(double __a) { return __nv_double2int_rz(__a); }
__double2ll_rd(double __a)126 __DEVICE__ long long __double2ll_rd(double __a) {
127   return __nv_double2ll_rd(__a);
128 }
__double2ll_rn(double __a)129 __DEVICE__ long long __double2ll_rn(double __a) {
130   return __nv_double2ll_rn(__a);
131 }
__double2ll_ru(double __a)132 __DEVICE__ long long __double2ll_ru(double __a) {
133   return __nv_double2ll_ru(__a);
134 }
__double2ll_rz(double __a)135 __DEVICE__ long long __double2ll_rz(double __a) {
136   return __nv_double2ll_rz(__a);
137 }
__double2loint(double __a)138 __DEVICE__ int __double2loint(double __a) { return __nv_double2loint(__a); }
__double2uint_rd(double __a)139 __DEVICE__ unsigned int __double2uint_rd(double __a) {
140   return __nv_double2uint_rd(__a);
141 }
__double2uint_rn(double __a)142 __DEVICE__ unsigned int __double2uint_rn(double __a) {
143   return __nv_double2uint_rn(__a);
144 }
__double2uint_ru(double __a)145 __DEVICE__ unsigned int __double2uint_ru(double __a) {
146   return __nv_double2uint_ru(__a);
147 }
__double2uint_rz(double __a)148 __DEVICE__ unsigned int __double2uint_rz(double __a) {
149   return __nv_double2uint_rz(__a);
150 }
__double2ull_rd(double __a)151 __DEVICE__ unsigned long long __double2ull_rd(double __a) {
152   return __nv_double2ull_rd(__a);
153 }
__double2ull_rn(double __a)154 __DEVICE__ unsigned long long __double2ull_rn(double __a) {
155   return __nv_double2ull_rn(__a);
156 }
__double2ull_ru(double __a)157 __DEVICE__ unsigned long long __double2ull_ru(double __a) {
158   return __nv_double2ull_ru(__a);
159 }
__double2ull_rz(double __a)160 __DEVICE__ unsigned long long __double2ull_rz(double __a) {
161   return __nv_double2ull_rz(__a);
162 }
__double_as_longlong(double __a)163 __DEVICE__ long long __double_as_longlong(double __a) {
164   return __nv_double_as_longlong(__a);
165 }
__drcp_rd(double __a)166 __DEVICE__ double __drcp_rd(double __a) { return __nv_drcp_rd(__a); }
__drcp_rn(double __a)167 __DEVICE__ double __drcp_rn(double __a) { return __nv_drcp_rn(__a); }
__drcp_ru(double __a)168 __DEVICE__ double __drcp_ru(double __a) { return __nv_drcp_ru(__a); }
__drcp_rz(double __a)169 __DEVICE__ double __drcp_rz(double __a) { return __nv_drcp_rz(__a); }
__dsqrt_rd(double __a)170 __DEVICE__ double __dsqrt_rd(double __a) { return __nv_dsqrt_rd(__a); }
__dsqrt_rn(double __a)171 __DEVICE__ double __dsqrt_rn(double __a) { return __nv_dsqrt_rn(__a); }
__dsqrt_ru(double __a)172 __DEVICE__ double __dsqrt_ru(double __a) { return __nv_dsqrt_ru(__a); }
__dsqrt_rz(double __a)173 __DEVICE__ double __dsqrt_rz(double __a) { return __nv_dsqrt_rz(__a); }
__dsub_rd(double __a,double __b)174 __DEVICE__ double __dsub_rd(double __a, double __b) {
175   return __nv_dsub_rd(__a, __b);
176 }
__dsub_rn(double __a,double __b)177 __DEVICE__ double __dsub_rn(double __a, double __b) {
178   return __nv_dsub_rn(__a, __b);
179 }
__dsub_ru(double __a,double __b)180 __DEVICE__ double __dsub_ru(double __a, double __b) {
181   return __nv_dsub_ru(__a, __b);
182 }
__dsub_rz(double __a,double __b)183 __DEVICE__ double __dsub_rz(double __a, double __b) {
184   return __nv_dsub_rz(__a, __b);
185 }
__exp10f(float __a)186 __DEVICE__ float __exp10f(float __a) { return __nv_fast_exp10f(__a); }
__expf(float __a)187 __DEVICE__ float __expf(float __a) { return __nv_fast_expf(__a); }
__fAtomicAdd(float * __p,float __v)188 __DEVICE__ float __fAtomicAdd(float *__p, float __v) {
189   return __nvvm_atom_add_gen_f(__p, __v);
190 }
__fAtomicAdd_block(float * __p,float __v)191 __DEVICE__ float __fAtomicAdd_block(float *__p, float __v) {
192   return __nvvm_atom_cta_add_gen_f(__p, __v);
193 }
__fAtomicAdd_system(float * __p,float __v)194 __DEVICE__ float __fAtomicAdd_system(float *__p, float __v) {
195   return __nvvm_atom_sys_add_gen_f(__p, __v);
196 }
__fAtomicExch(float * __p,float __v)197 __DEVICE__ float __fAtomicExch(float *__p, float __v) {
198   return __nv_int_as_float(
199       __nvvm_atom_xchg_gen_i((int *)__p, __nv_float_as_int(__v)));
200 }
__fAtomicExch_block(float * __p,float __v)201 __DEVICE__ float __fAtomicExch_block(float *__p, float __v) {
202   return __nv_int_as_float(
203       __nvvm_atom_cta_xchg_gen_i((int *)__p, __nv_float_as_int(__v)));
204 }
__fAtomicExch_system(float * __p,float __v)205 __DEVICE__ float __fAtomicExch_system(float *__p, float __v) {
206   return __nv_int_as_float(
207       __nvvm_atom_sys_xchg_gen_i((int *)__p, __nv_float_as_int(__v)));
208 }
__fadd_rd(float __a,float __b)209 __DEVICE__ float __fadd_rd(float __a, float __b) {
210   return __nv_fadd_rd(__a, __b);
211 }
__fadd_rn(float __a,float __b)212 __DEVICE__ float __fadd_rn(float __a, float __b) {
213   return __nv_fadd_rn(__a, __b);
214 }
__fadd_ru(float __a,float __b)215 __DEVICE__ float __fadd_ru(float __a, float __b) {
216   return __nv_fadd_ru(__a, __b);
217 }
__fadd_rz(float __a,float __b)218 __DEVICE__ float __fadd_rz(float __a, float __b) {
219   return __nv_fadd_rz(__a, __b);
220 }
__fdiv_rd(float __a,float __b)221 __DEVICE__ float __fdiv_rd(float __a, float __b) {
222   return __nv_fdiv_rd(__a, __b);
223 }
__fdiv_rn(float __a,float __b)224 __DEVICE__ float __fdiv_rn(float __a, float __b) {
225   return __nv_fdiv_rn(__a, __b);
226 }
__fdiv_ru(float __a,float __b)227 __DEVICE__ float __fdiv_ru(float __a, float __b) {
228   return __nv_fdiv_ru(__a, __b);
229 }
__fdiv_rz(float __a,float __b)230 __DEVICE__ float __fdiv_rz(float __a, float __b) {
231   return __nv_fdiv_rz(__a, __b);
232 }
__fdividef(float __a,float __b)233 __DEVICE__ float __fdividef(float __a, float __b) {
234   return __nv_fast_fdividef(__a, __b);
235 }
__ffs(int __a)236 __DEVICE__ int __ffs(int __a) { return __nv_ffs(__a); }
__ffsll(long long __a)237 __DEVICE__ int __ffsll(long long __a) { return __nv_ffsll(__a); }
__finite(double __a)238 __DEVICE__ int __finite(double __a) { return __nv_isfinited(__a); }
__finitef(float __a)239 __DEVICE__ int __finitef(float __a) { return __nv_finitef(__a); }
__float2int_rd(float __a)240 __DEVICE__ int __float2int_rd(float __a) { return __nv_float2int_rd(__a); }
__float2int_rn(float __a)241 __DEVICE__ int __float2int_rn(float __a) { return __nv_float2int_rn(__a); }
__float2int_ru(float __a)242 __DEVICE__ int __float2int_ru(float __a) { return __nv_float2int_ru(__a); }
__float2int_rz(float __a)243 __DEVICE__ int __float2int_rz(float __a) { return __nv_float2int_rz(__a); }
__float2ll_rd(float __a)244 __DEVICE__ long long __float2ll_rd(float __a) { return __nv_float2ll_rd(__a); }
__float2ll_rn(float __a)245 __DEVICE__ long long __float2ll_rn(float __a) { return __nv_float2ll_rn(__a); }
__float2ll_ru(float __a)246 __DEVICE__ long long __float2ll_ru(float __a) { return __nv_float2ll_ru(__a); }
__float2ll_rz(float __a)247 __DEVICE__ long long __float2ll_rz(float __a) { return __nv_float2ll_rz(__a); }
__float2uint_rd(float __a)248 __DEVICE__ unsigned int __float2uint_rd(float __a) {
249   return __nv_float2uint_rd(__a);
250 }
__float2uint_rn(float __a)251 __DEVICE__ unsigned int __float2uint_rn(float __a) {
252   return __nv_float2uint_rn(__a);
253 }
__float2uint_ru(float __a)254 __DEVICE__ unsigned int __float2uint_ru(float __a) {
255   return __nv_float2uint_ru(__a);
256 }
__float2uint_rz(float __a)257 __DEVICE__ unsigned int __float2uint_rz(float __a) {
258   return __nv_float2uint_rz(__a);
259 }
__float2ull_rd(float __a)260 __DEVICE__ unsigned long long __float2ull_rd(float __a) {
261   return __nv_float2ull_rd(__a);
262 }
__float2ull_rn(float __a)263 __DEVICE__ unsigned long long __float2ull_rn(float __a) {
264   return __nv_float2ull_rn(__a);
265 }
__float2ull_ru(float __a)266 __DEVICE__ unsigned long long __float2ull_ru(float __a) {
267   return __nv_float2ull_ru(__a);
268 }
__float2ull_rz(float __a)269 __DEVICE__ unsigned long long __float2ull_rz(float __a) {
270   return __nv_float2ull_rz(__a);
271 }
__float_as_int(float __a)272 __DEVICE__ int __float_as_int(float __a) { return __nv_float_as_int(__a); }
__float_as_uint(float __a)273 __DEVICE__ unsigned int __float_as_uint(float __a) {
274   return __nv_float_as_uint(__a);
275 }
__fma_rd(double __a,double __b,double __c)276 __DEVICE__ double __fma_rd(double __a, double __b, double __c) {
277   return __nv_fma_rd(__a, __b, __c);
278 }
__fma_rn(double __a,double __b,double __c)279 __DEVICE__ double __fma_rn(double __a, double __b, double __c) {
280   return __nv_fma_rn(__a, __b, __c);
281 }
__fma_ru(double __a,double __b,double __c)282 __DEVICE__ double __fma_ru(double __a, double __b, double __c) {
283   return __nv_fma_ru(__a, __b, __c);
284 }
__fma_rz(double __a,double __b,double __c)285 __DEVICE__ double __fma_rz(double __a, double __b, double __c) {
286   return __nv_fma_rz(__a, __b, __c);
287 }
__fmaf_ieee_rd(float __a,float __b,float __c)288 __DEVICE__ float __fmaf_ieee_rd(float __a, float __b, float __c) {
289   return __nv_fmaf_ieee_rd(__a, __b, __c);
290 }
__fmaf_ieee_rn(float __a,float __b,float __c)291 __DEVICE__ float __fmaf_ieee_rn(float __a, float __b, float __c) {
292   return __nv_fmaf_ieee_rn(__a, __b, __c);
293 }
__fmaf_ieee_ru(float __a,float __b,float __c)294 __DEVICE__ float __fmaf_ieee_ru(float __a, float __b, float __c) {
295   return __nv_fmaf_ieee_ru(__a, __b, __c);
296 }
__fmaf_ieee_rz(float __a,float __b,float __c)297 __DEVICE__ float __fmaf_ieee_rz(float __a, float __b, float __c) {
298   return __nv_fmaf_ieee_rz(__a, __b, __c);
299 }
__fmaf_rd(float __a,float __b,float __c)300 __DEVICE__ float __fmaf_rd(float __a, float __b, float __c) {
301   return __nv_fmaf_rd(__a, __b, __c);
302 }
__fmaf_rn(float __a,float __b,float __c)303 __DEVICE__ float __fmaf_rn(float __a, float __b, float __c) {
304   return __nv_fmaf_rn(__a, __b, __c);
305 }
__fmaf_ru(float __a,float __b,float __c)306 __DEVICE__ float __fmaf_ru(float __a, float __b, float __c) {
307   return __nv_fmaf_ru(__a, __b, __c);
308 }
__fmaf_rz(float __a,float __b,float __c)309 __DEVICE__ float __fmaf_rz(float __a, float __b, float __c) {
310   return __nv_fmaf_rz(__a, __b, __c);
311 }
__fmul_rd(float __a,float __b)312 __DEVICE__ float __fmul_rd(float __a, float __b) {
313   return __nv_fmul_rd(__a, __b);
314 }
__fmul_rn(float __a,float __b)315 __DEVICE__ float __fmul_rn(float __a, float __b) {
316   return __nv_fmul_rn(__a, __b);
317 }
__fmul_ru(float __a,float __b)318 __DEVICE__ float __fmul_ru(float __a, float __b) {
319   return __nv_fmul_ru(__a, __b);
320 }
__fmul_rz(float __a,float __b)321 __DEVICE__ float __fmul_rz(float __a, float __b) {
322   return __nv_fmul_rz(__a, __b);
323 }
__frcp_rd(float __a)324 __DEVICE__ float __frcp_rd(float __a) { return __nv_frcp_rd(__a); }
__frcp_rn(float __a)325 __DEVICE__ float __frcp_rn(float __a) { return __nv_frcp_rn(__a); }
__frcp_ru(float __a)326 __DEVICE__ float __frcp_ru(float __a) { return __nv_frcp_ru(__a); }
__frcp_rz(float __a)327 __DEVICE__ float __frcp_rz(float __a) { return __nv_frcp_rz(__a); }
__frsqrt_rn(float __a)328 __DEVICE__ float __frsqrt_rn(float __a) { return __nv_frsqrt_rn(__a); }
__fsqrt_rd(float __a)329 __DEVICE__ float __fsqrt_rd(float __a) { return __nv_fsqrt_rd(__a); }
__fsqrt_rn(float __a)330 __DEVICE__ float __fsqrt_rn(float __a) { return __nv_fsqrt_rn(__a); }
__fsqrt_ru(float __a)331 __DEVICE__ float __fsqrt_ru(float __a) { return __nv_fsqrt_ru(__a); }
__fsqrt_rz(float __a)332 __DEVICE__ float __fsqrt_rz(float __a) { return __nv_fsqrt_rz(__a); }
__fsub_rd(float __a,float __b)333 __DEVICE__ float __fsub_rd(float __a, float __b) {
334   return __nv_fsub_rd(__a, __b);
335 }
__fsub_rn(float __a,float __b)336 __DEVICE__ float __fsub_rn(float __a, float __b) {
337   return __nv_fsub_rn(__a, __b);
338 }
__fsub_ru(float __a,float __b)339 __DEVICE__ float __fsub_ru(float __a, float __b) {
340   return __nv_fsub_ru(__a, __b);
341 }
__fsub_rz(float __a,float __b)342 __DEVICE__ float __fsub_rz(float __a, float __b) {
343   return __nv_fsub_rz(__a, __b);
344 }
__hadd(int __a,int __b)345 __DEVICE__ int __hadd(int __a, int __b) { return __nv_hadd(__a, __b); }
__hiloint2double(int __a,int __b)346 __DEVICE__ double __hiloint2double(int __a, int __b) {
347   return __nv_hiloint2double(__a, __b);
348 }
__iAtomicAdd(int * __p,int __v)349 __DEVICE__ int __iAtomicAdd(int *__p, int __v) {
350   return __nvvm_atom_add_gen_i(__p, __v);
351 }
__iAtomicAdd_block(int * __p,int __v)352 __DEVICE__ int __iAtomicAdd_block(int *__p, int __v) {
353   __nvvm_atom_cta_add_gen_i(__p, __v);
354 }
__iAtomicAdd_system(int * __p,int __v)355 __DEVICE__ int __iAtomicAdd_system(int *__p, int __v) {
356   __nvvm_atom_sys_add_gen_i(__p, __v);
357 }
__iAtomicAnd(int * __p,int __v)358 __DEVICE__ int __iAtomicAnd(int *__p, int __v) {
359   return __nvvm_atom_and_gen_i(__p, __v);
360 }
__iAtomicAnd_block(int * __p,int __v)361 __DEVICE__ int __iAtomicAnd_block(int *__p, int __v) {
362   return __nvvm_atom_cta_and_gen_i(__p, __v);
363 }
__iAtomicAnd_system(int * __p,int __v)364 __DEVICE__ int __iAtomicAnd_system(int *__p, int __v) {
365   return __nvvm_atom_sys_and_gen_i(__p, __v);
366 }
__iAtomicCAS(int * __p,int __cmp,int __v)367 __DEVICE__ int __iAtomicCAS(int *__p, int __cmp, int __v) {
368   return __nvvm_atom_cas_gen_i(__p, __cmp, __v);
369 }
__iAtomicCAS_block(int * __p,int __cmp,int __v)370 __DEVICE__ int __iAtomicCAS_block(int *__p, int __cmp, int __v) {
371   return __nvvm_atom_cta_cas_gen_i(__p, __cmp, __v);
372 }
__iAtomicCAS_system(int * __p,int __cmp,int __v)373 __DEVICE__ int __iAtomicCAS_system(int *__p, int __cmp, int __v) {
374   return __nvvm_atom_sys_cas_gen_i(__p, __cmp, __v);
375 }
__iAtomicExch(int * __p,int __v)376 __DEVICE__ int __iAtomicExch(int *__p, int __v) {
377   return __nvvm_atom_xchg_gen_i(__p, __v);
378 }
__iAtomicExch_block(int * __p,int __v)379 __DEVICE__ int __iAtomicExch_block(int *__p, int __v) {
380   return __nvvm_atom_cta_xchg_gen_i(__p, __v);
381 }
__iAtomicExch_system(int * __p,int __v)382 __DEVICE__ int __iAtomicExch_system(int *__p, int __v) {
383   return __nvvm_atom_sys_xchg_gen_i(__p, __v);
384 }
__iAtomicMax(int * __p,int __v)385 __DEVICE__ int __iAtomicMax(int *__p, int __v) {
386   return __nvvm_atom_max_gen_i(__p, __v);
387 }
__iAtomicMax_block(int * __p,int __v)388 __DEVICE__ int __iAtomicMax_block(int *__p, int __v) {
389   return __nvvm_atom_cta_max_gen_i(__p, __v);
390 }
__iAtomicMax_system(int * __p,int __v)391 __DEVICE__ int __iAtomicMax_system(int *__p, int __v) {
392   return __nvvm_atom_sys_max_gen_i(__p, __v);
393 }
__iAtomicMin(int * __p,int __v)394 __DEVICE__ int __iAtomicMin(int *__p, int __v) {
395   return __nvvm_atom_min_gen_i(__p, __v);
396 }
__iAtomicMin_block(int * __p,int __v)397 __DEVICE__ int __iAtomicMin_block(int *__p, int __v) {
398   return __nvvm_atom_cta_min_gen_i(__p, __v);
399 }
__iAtomicMin_system(int * __p,int __v)400 __DEVICE__ int __iAtomicMin_system(int *__p, int __v) {
401   return __nvvm_atom_sys_min_gen_i(__p, __v);
402 }
__iAtomicOr(int * __p,int __v)403 __DEVICE__ int __iAtomicOr(int *__p, int __v) {
404   return __nvvm_atom_or_gen_i(__p, __v);
405 }
__iAtomicOr_block(int * __p,int __v)406 __DEVICE__ int __iAtomicOr_block(int *__p, int __v) {
407   return __nvvm_atom_cta_or_gen_i(__p, __v);
408 }
__iAtomicOr_system(int * __p,int __v)409 __DEVICE__ int __iAtomicOr_system(int *__p, int __v) {
410   return __nvvm_atom_sys_or_gen_i(__p, __v);
411 }
__iAtomicXor(int * __p,int __v)412 __DEVICE__ int __iAtomicXor(int *__p, int __v) {
413   return __nvvm_atom_xor_gen_i(__p, __v);
414 }
__iAtomicXor_block(int * __p,int __v)415 __DEVICE__ int __iAtomicXor_block(int *__p, int __v) {
416   return __nvvm_atom_cta_xor_gen_i(__p, __v);
417 }
__iAtomicXor_system(int * __p,int __v)418 __DEVICE__ int __iAtomicXor_system(int *__p, int __v) {
419   return __nvvm_atom_sys_xor_gen_i(__p, __v);
420 }
__illAtomicMax(long long * __p,long long __v)421 __DEVICE__ long long __illAtomicMax(long long *__p, long long __v) {
422   return __nvvm_atom_max_gen_ll(__p, __v);
423 }
__illAtomicMax_block(long long * __p,long long __v)424 __DEVICE__ long long __illAtomicMax_block(long long *__p, long long __v) {
425   return __nvvm_atom_cta_max_gen_ll(__p, __v);
426 }
__illAtomicMax_system(long long * __p,long long __v)427 __DEVICE__ long long __illAtomicMax_system(long long *__p, long long __v) {
428   return __nvvm_atom_sys_max_gen_ll(__p, __v);
429 }
__illAtomicMin(long long * __p,long long __v)430 __DEVICE__ long long __illAtomicMin(long long *__p, long long __v) {
431   return __nvvm_atom_min_gen_ll(__p, __v);
432 }
__illAtomicMin_block(long long * __p,long long __v)433 __DEVICE__ long long __illAtomicMin_block(long long *__p, long long __v) {
434   return __nvvm_atom_cta_min_gen_ll(__p, __v);
435 }
__illAtomicMin_system(long long * __p,long long __v)436 __DEVICE__ long long __illAtomicMin_system(long long *__p, long long __v) {
437   return __nvvm_atom_sys_min_gen_ll(__p, __v);
438 }
__int2double_rn(int __a)439 __DEVICE__ double __int2double_rn(int __a) { return __nv_int2double_rn(__a); }
__int2float_rd(int __a)440 __DEVICE__ float __int2float_rd(int __a) { return __nv_int2float_rd(__a); }
__int2float_rn(int __a)441 __DEVICE__ float __int2float_rn(int __a) { return __nv_int2float_rn(__a); }
__int2float_ru(int __a)442 __DEVICE__ float __int2float_ru(int __a) { return __nv_int2float_ru(__a); }
__int2float_rz(int __a)443 __DEVICE__ float __int2float_rz(int __a) { return __nv_int2float_rz(__a); }
__int_as_float(int __a)444 __DEVICE__ float __int_as_float(int __a) { return __nv_int_as_float(__a); }
__isfinited(double __a)445 __DEVICE__ int __isfinited(double __a) { return __nv_isfinited(__a); }
__isinf(double __a)446 __DEVICE__ int __isinf(double __a) { return __nv_isinfd(__a); }
__isinff(float __a)447 __DEVICE__ int __isinff(float __a) { return __nv_isinff(__a); }
__isnan(double __a)448 __DEVICE__ int __isnan(double __a) { return __nv_isnand(__a); }
__isnanf(float __a)449 __DEVICE__ int __isnanf(float __a) { return __nv_isnanf(__a); }
__ll2double_rd(long long __a)450 __DEVICE__ double __ll2double_rd(long long __a) {
451   return __nv_ll2double_rd(__a);
452 }
__ll2double_rn(long long __a)453 __DEVICE__ double __ll2double_rn(long long __a) {
454   return __nv_ll2double_rn(__a);
455 }
__ll2double_ru(long long __a)456 __DEVICE__ double __ll2double_ru(long long __a) {
457   return __nv_ll2double_ru(__a);
458 }
__ll2double_rz(long long __a)459 __DEVICE__ double __ll2double_rz(long long __a) {
460   return __nv_ll2double_rz(__a);
461 }
__ll2float_rd(long long __a)462 __DEVICE__ float __ll2float_rd(long long __a) { return __nv_ll2float_rd(__a); }
__ll2float_rn(long long __a)463 __DEVICE__ float __ll2float_rn(long long __a) { return __nv_ll2float_rn(__a); }
__ll2float_ru(long long __a)464 __DEVICE__ float __ll2float_ru(long long __a) { return __nv_ll2float_ru(__a); }
__ll2float_rz(long long __a)465 __DEVICE__ float __ll2float_rz(long long __a) { return __nv_ll2float_rz(__a); }
__llAtomicAnd(long long * __p,long long __v)466 __DEVICE__ long long __llAtomicAnd(long long *__p, long long __v) {
467   return __nvvm_atom_and_gen_ll(__p, __v);
468 }
__llAtomicAnd_block(long long * __p,long long __v)469 __DEVICE__ long long __llAtomicAnd_block(long long *__p, long long __v) {
470   return __nvvm_atom_cta_and_gen_ll(__p, __v);
471 }
__llAtomicAnd_system(long long * __p,long long __v)472 __DEVICE__ long long __llAtomicAnd_system(long long *__p, long long __v) {
473   return __nvvm_atom_sys_and_gen_ll(__p, __v);
474 }
__llAtomicOr(long long * __p,long long __v)475 __DEVICE__ long long __llAtomicOr(long long *__p, long long __v) {
476   return __nvvm_atom_or_gen_ll(__p, __v);
477 }
__llAtomicOr_block(long long * __p,long long __v)478 __DEVICE__ long long __llAtomicOr_block(long long *__p, long long __v) {
479   return __nvvm_atom_cta_or_gen_ll(__p, __v);
480 }
__llAtomicOr_system(long long * __p,long long __v)481 __DEVICE__ long long __llAtomicOr_system(long long *__p, long long __v) {
482   return __nvvm_atom_sys_or_gen_ll(__p, __v);
483 }
__llAtomicXor(long long * __p,long long __v)484 __DEVICE__ long long __llAtomicXor(long long *__p, long long __v) {
485   return __nvvm_atom_xor_gen_ll(__p, __v);
486 }
__llAtomicXor_block(long long * __p,long long __v)487 __DEVICE__ long long __llAtomicXor_block(long long *__p, long long __v) {
488   return __nvvm_atom_cta_xor_gen_ll(__p, __v);
489 }
__llAtomicXor_system(long long * __p,long long __v)490 __DEVICE__ long long __llAtomicXor_system(long long *__p, long long __v) {
491   return __nvvm_atom_sys_xor_gen_ll(__p, __v);
492 }
__log10f(float __a)493 __DEVICE__ float __log10f(float __a) { return __nv_fast_log10f(__a); }
__log2f(float __a)494 __DEVICE__ float __log2f(float __a) { return __nv_fast_log2f(__a); }
__logf(float __a)495 __DEVICE__ float __logf(float __a) { return __nv_fast_logf(__a); }
__longlong_as_double(long long __a)496 __DEVICE__ double __longlong_as_double(long long __a) {
497   return __nv_longlong_as_double(__a);
498 }
__mul24(int __a,int __b)499 __DEVICE__ int __mul24(int __a, int __b) { return __nv_mul24(__a, __b); }
__mul64hi(long long __a,long long __b)500 __DEVICE__ long long __mul64hi(long long __a, long long __b) {
501   return __nv_mul64hi(__a, __b);
502 }
__mulhi(int __a,int __b)503 __DEVICE__ int __mulhi(int __a, int __b) { return __nv_mulhi(__a, __b); }
__pm0(void)504 __DEVICE__ unsigned int __pm0(void) { return __nvvm_read_ptx_sreg_pm0(); }
__pm1(void)505 __DEVICE__ unsigned int __pm1(void) { return __nvvm_read_ptx_sreg_pm1(); }
__pm2(void)506 __DEVICE__ unsigned int __pm2(void) { return __nvvm_read_ptx_sreg_pm2(); }
__pm3(void)507 __DEVICE__ unsigned int __pm3(void) { return __nvvm_read_ptx_sreg_pm3(); }
__popc(int __a)508 __DEVICE__ int __popc(int __a) { return __nv_popc(__a); }
__popcll(long long __a)509 __DEVICE__ int __popcll(long long __a) { return __nv_popcll(__a); }
__powf(float __a,float __b)510 __DEVICE__ float __powf(float __a, float __b) {
511   return __nv_fast_powf(__a, __b);
512 }
513 
514 // Parameter must have a known integer value.
515 #define __prof_trigger(__a) asm __volatile__("pmevent \t%0;" ::"i"(__a))
__rhadd(int __a,int __b)516 __DEVICE__ int __rhadd(int __a, int __b) { return __nv_rhadd(__a, __b); }
__sad(int __a,int __b,unsigned int __c)517 __DEVICE__ unsigned int __sad(int __a, int __b, unsigned int __c) {
518   return __nv_sad(__a, __b, __c);
519 }
__saturatef(float __a)520 __DEVICE__ float __saturatef(float __a) { return __nv_saturatef(__a); }
__signbitd(double __a)521 __DEVICE__ int __signbitd(double __a) { return __nv_signbitd(__a); }
__signbitf(float __a)522 __DEVICE__ int __signbitf(float __a) { return __nv_signbitf(__a); }
__sincosf(float __a,float * __sptr,float * __cptr)523 __DEVICE__ void __sincosf(float __a, float *__sptr, float *__cptr) {
524   return __nv_fast_sincosf(__a, __sptr, __cptr);
525 }
__sinf(float __a)526 __DEVICE__ float __sinf(float __a) { return __nv_fast_sinf(__a); }
__syncthreads_and(int __a)527 __DEVICE__ int __syncthreads_and(int __a) { return __nvvm_bar0_and(__a); }
__syncthreads_count(int __a)528 __DEVICE__ int __syncthreads_count(int __a) { return __nvvm_bar0_popc(__a); }
__syncthreads_or(int __a)529 __DEVICE__ int __syncthreads_or(int __a) { return __nvvm_bar0_or(__a); }
__tanf(float __a)530 __DEVICE__ float __tanf(float __a) { return __nv_fast_tanf(__a); }
__threadfence(void)531 __DEVICE__ void __threadfence(void) { __nvvm_membar_gl(); }
__threadfence_block(void)532 __DEVICE__ void __threadfence_block(void) { __nvvm_membar_cta(); };
__threadfence_system(void)533 __DEVICE__ void __threadfence_system(void) { __nvvm_membar_sys(); };
__trap(void)534 __DEVICE__ void __trap(void) { asm volatile("trap;"); }
__uAtomicAdd(unsigned int * __p,unsigned int __v)535 __DEVICE__ unsigned int __uAtomicAdd(unsigned int *__p, unsigned int __v) {
536   return __nvvm_atom_add_gen_i((int *)__p, __v);
537 }
__uAtomicAdd_block(unsigned int * __p,unsigned int __v)538 __DEVICE__ unsigned int __uAtomicAdd_block(unsigned int *__p,
539                                            unsigned int __v) {
540   return __nvvm_atom_cta_add_gen_i((int *)__p, __v);
541 }
__uAtomicAdd_system(unsigned int * __p,unsigned int __v)542 __DEVICE__ unsigned int __uAtomicAdd_system(unsigned int *__p,
543                                             unsigned int __v) {
544   return __nvvm_atom_sys_add_gen_i((int *)__p, __v);
545 }
__uAtomicAnd(unsigned int * __p,unsigned int __v)546 __DEVICE__ unsigned int __uAtomicAnd(unsigned int *__p, unsigned int __v) {
547   return __nvvm_atom_and_gen_i((int *)__p, __v);
548 }
__uAtomicAnd_block(unsigned int * __p,unsigned int __v)549 __DEVICE__ unsigned int __uAtomicAnd_block(unsigned int *__p,
550                                            unsigned int __v) {
551   return __nvvm_atom_cta_and_gen_i((int *)__p, __v);
552 }
__uAtomicAnd_system(unsigned int * __p,unsigned int __v)553 __DEVICE__ unsigned int __uAtomicAnd_system(unsigned int *__p,
554                                             unsigned int __v) {
555   return __nvvm_atom_sys_and_gen_i((int *)__p, __v);
556 }
__uAtomicCAS(unsigned int * __p,unsigned int __cmp,unsigned int __v)557 __DEVICE__ unsigned int __uAtomicCAS(unsigned int *__p, unsigned int __cmp,
558                                      unsigned int __v) {
559   return __nvvm_atom_cas_gen_i((int *)__p, __cmp, __v);
560 }
561 __DEVICE__ unsigned int
__uAtomicCAS_block(unsigned int * __p,unsigned int __cmp,unsigned int __v)562 __uAtomicCAS_block(unsigned int *__p, unsigned int __cmp, unsigned int __v) {
563   return __nvvm_atom_cta_cas_gen_i((int *)__p, __cmp, __v);
564 }
565 __DEVICE__ unsigned int
__uAtomicCAS_system(unsigned int * __p,unsigned int __cmp,unsigned int __v)566 __uAtomicCAS_system(unsigned int *__p, unsigned int __cmp, unsigned int __v) {
567   return __nvvm_atom_sys_cas_gen_i((int *)__p, __cmp, __v);
568 }
__uAtomicDec(unsigned int * __p,unsigned int __v)569 __DEVICE__ unsigned int __uAtomicDec(unsigned int *__p, unsigned int __v) {
570   return __nvvm_atom_dec_gen_ui(__p, __v);
571 }
__uAtomicDec_block(unsigned int * __p,unsigned int __v)572 __DEVICE__ unsigned int __uAtomicDec_block(unsigned int *__p,
573                                            unsigned int __v) {
574   return __nvvm_atom_cta_dec_gen_ui(__p, __v);
575 }
__uAtomicDec_system(unsigned int * __p,unsigned int __v)576 __DEVICE__ unsigned int __uAtomicDec_system(unsigned int *__p,
577                                             unsigned int __v) {
578   return __nvvm_atom_sys_dec_gen_ui(__p, __v);
579 }
__uAtomicExch(unsigned int * __p,unsigned int __v)580 __DEVICE__ unsigned int __uAtomicExch(unsigned int *__p, unsigned int __v) {
581   return __nvvm_atom_xchg_gen_i((int *)__p, __v);
582 }
__uAtomicExch_block(unsigned int * __p,unsigned int __v)583 __DEVICE__ unsigned int __uAtomicExch_block(unsigned int *__p,
584                                             unsigned int __v) {
585   return __nvvm_atom_cta_xchg_gen_i((int *)__p, __v);
586 }
__uAtomicExch_system(unsigned int * __p,unsigned int __v)587 __DEVICE__ unsigned int __uAtomicExch_system(unsigned int *__p,
588                                              unsigned int __v) {
589   return __nvvm_atom_sys_xchg_gen_i((int *)__p, __v);
590 }
__uAtomicInc(unsigned int * __p,unsigned int __v)591 __DEVICE__ unsigned int __uAtomicInc(unsigned int *__p, unsigned int __v) {
592   return __nvvm_atom_inc_gen_ui(__p, __v);
593 }
__uAtomicInc_block(unsigned int * __p,unsigned int __v)594 __DEVICE__ unsigned int __uAtomicInc_block(unsigned int *__p,
595                                            unsigned int __v) {
596   return __nvvm_atom_cta_inc_gen_ui(__p, __v);
597 }
__uAtomicInc_system(unsigned int * __p,unsigned int __v)598 __DEVICE__ unsigned int __uAtomicInc_system(unsigned int *__p,
599                                             unsigned int __v) {
600   return __nvvm_atom_sys_inc_gen_ui(__p, __v);
601 }
__uAtomicMax(unsigned int * __p,unsigned int __v)602 __DEVICE__ unsigned int __uAtomicMax(unsigned int *__p, unsigned int __v) {
603   return __nvvm_atom_max_gen_ui(__p, __v);
604 }
__uAtomicMax_block(unsigned int * __p,unsigned int __v)605 __DEVICE__ unsigned int __uAtomicMax_block(unsigned int *__p,
606                                            unsigned int __v) {
607   return __nvvm_atom_cta_max_gen_ui(__p, __v);
608 }
__uAtomicMax_system(unsigned int * __p,unsigned int __v)609 __DEVICE__ unsigned int __uAtomicMax_system(unsigned int *__p,
610                                             unsigned int __v) {
611   return __nvvm_atom_sys_max_gen_ui(__p, __v);
612 }
__uAtomicMin(unsigned int * __p,unsigned int __v)613 __DEVICE__ unsigned int __uAtomicMin(unsigned int *__p, unsigned int __v) {
614   return __nvvm_atom_min_gen_ui(__p, __v);
615 }
__uAtomicMin_block(unsigned int * __p,unsigned int __v)616 __DEVICE__ unsigned int __uAtomicMin_block(unsigned int *__p,
617                                            unsigned int __v) {
618   return __nvvm_atom_cta_min_gen_ui(__p, __v);
619 }
__uAtomicMin_system(unsigned int * __p,unsigned int __v)620 __DEVICE__ unsigned int __uAtomicMin_system(unsigned int *__p,
621                                             unsigned int __v) {
622   return __nvvm_atom_sys_min_gen_ui(__p, __v);
623 }
__uAtomicOr(unsigned int * __p,unsigned int __v)624 __DEVICE__ unsigned int __uAtomicOr(unsigned int *__p, unsigned int __v) {
625   return __nvvm_atom_or_gen_i((int *)__p, __v);
626 }
__uAtomicOr_block(unsigned int * __p,unsigned int __v)627 __DEVICE__ unsigned int __uAtomicOr_block(unsigned int *__p, unsigned int __v) {
628   return __nvvm_atom_cta_or_gen_i((int *)__p, __v);
629 }
__uAtomicOr_system(unsigned int * __p,unsigned int __v)630 __DEVICE__ unsigned int __uAtomicOr_system(unsigned int *__p,
631                                            unsigned int __v) {
632   return __nvvm_atom_sys_or_gen_i((int *)__p, __v);
633 }
__uAtomicXor(unsigned int * __p,unsigned int __v)634 __DEVICE__ unsigned int __uAtomicXor(unsigned int *__p, unsigned int __v) {
635   return __nvvm_atom_xor_gen_i((int *)__p, __v);
636 }
__uAtomicXor_block(unsigned int * __p,unsigned int __v)637 __DEVICE__ unsigned int __uAtomicXor_block(unsigned int *__p,
638                                            unsigned int __v) {
639   return __nvvm_atom_cta_xor_gen_i((int *)__p, __v);
640 }
__uAtomicXor_system(unsigned int * __p,unsigned int __v)641 __DEVICE__ unsigned int __uAtomicXor_system(unsigned int *__p,
642                                             unsigned int __v) {
643   return __nvvm_atom_sys_xor_gen_i((int *)__p, __v);
644 }
__uhadd(unsigned int __a,unsigned int __b)645 __DEVICE__ unsigned int __uhadd(unsigned int __a, unsigned int __b) {
646   return __nv_uhadd(__a, __b);
647 }
__uint2double_rn(unsigned int __a)648 __DEVICE__ double __uint2double_rn(unsigned int __a) {
649   return __nv_uint2double_rn(__a);
650 }
__uint2float_rd(unsigned int __a)651 __DEVICE__ float __uint2float_rd(unsigned int __a) {
652   return __nv_uint2float_rd(__a);
653 }
__uint2float_rn(unsigned int __a)654 __DEVICE__ float __uint2float_rn(unsigned int __a) {
655   return __nv_uint2float_rn(__a);
656 }
__uint2float_ru(unsigned int __a)657 __DEVICE__ float __uint2float_ru(unsigned int __a) {
658   return __nv_uint2float_ru(__a);
659 }
__uint2float_rz(unsigned int __a)660 __DEVICE__ float __uint2float_rz(unsigned int __a) {
661   return __nv_uint2float_rz(__a);
662 }
__uint_as_float(unsigned int __a)663 __DEVICE__ float __uint_as_float(unsigned int __a) {
664   return __nv_uint_as_float(__a);
665 } //
__ull2double_rd(unsigned long long __a)666 __DEVICE__ double __ull2double_rd(unsigned long long __a) {
667   return __nv_ull2double_rd(__a);
668 }
__ull2double_rn(unsigned long long __a)669 __DEVICE__ double __ull2double_rn(unsigned long long __a) {
670   return __nv_ull2double_rn(__a);
671 }
__ull2double_ru(unsigned long long __a)672 __DEVICE__ double __ull2double_ru(unsigned long long __a) {
673   return __nv_ull2double_ru(__a);
674 }
__ull2double_rz(unsigned long long __a)675 __DEVICE__ double __ull2double_rz(unsigned long long __a) {
676   return __nv_ull2double_rz(__a);
677 }
__ull2float_rd(unsigned long long __a)678 __DEVICE__ float __ull2float_rd(unsigned long long __a) {
679   return __nv_ull2float_rd(__a);
680 }
__ull2float_rn(unsigned long long __a)681 __DEVICE__ float __ull2float_rn(unsigned long long __a) {
682   return __nv_ull2float_rn(__a);
683 }
__ull2float_ru(unsigned long long __a)684 __DEVICE__ float __ull2float_ru(unsigned long long __a) {
685   return __nv_ull2float_ru(__a);
686 }
__ull2float_rz(unsigned long long __a)687 __DEVICE__ float __ull2float_rz(unsigned long long __a) {
688   return __nv_ull2float_rz(__a);
689 }
__ullAtomicAdd(unsigned long long * __p,unsigned long long __v)690 __DEVICE__ unsigned long long __ullAtomicAdd(unsigned long long *__p,
691                                              unsigned long long __v) {
692   return __nvvm_atom_add_gen_ll((long long *)__p, __v);
693 }
__ullAtomicAdd_block(unsigned long long * __p,unsigned long long __v)694 __DEVICE__ unsigned long long __ullAtomicAdd_block(unsigned long long *__p,
695                                                    unsigned long long __v) {
696   return __nvvm_atom_cta_add_gen_ll((long long *)__p, __v);
697 }
__ullAtomicAdd_system(unsigned long long * __p,unsigned long long __v)698 __DEVICE__ unsigned long long __ullAtomicAdd_system(unsigned long long *__p,
699                                                     unsigned long long __v) {
700   return __nvvm_atom_sys_add_gen_ll((long long *)__p, __v);
701 }
__ullAtomicAnd(unsigned long long * __p,unsigned long long __v)702 __DEVICE__ unsigned long long __ullAtomicAnd(unsigned long long *__p,
703                                              unsigned long long __v) {
704   return __nvvm_atom_and_gen_ll((long long *)__p, __v);
705 }
__ullAtomicAnd_block(unsigned long long * __p,unsigned long long __v)706 __DEVICE__ unsigned long long __ullAtomicAnd_block(unsigned long long *__p,
707                                                    unsigned long long __v) {
708   return __nvvm_atom_cta_and_gen_ll((long long *)__p, __v);
709 }
__ullAtomicAnd_system(unsigned long long * __p,unsigned long long __v)710 __DEVICE__ unsigned long long __ullAtomicAnd_system(unsigned long long *__p,
711                                                     unsigned long long __v) {
712   return __nvvm_atom_sys_and_gen_ll((long long *)__p, __v);
713 }
__ullAtomicCAS(unsigned long long * __p,unsigned long long __cmp,unsigned long long __v)714 __DEVICE__ unsigned long long __ullAtomicCAS(unsigned long long *__p,
715                                              unsigned long long __cmp,
716                                              unsigned long long __v) {
717   return __nvvm_atom_cas_gen_ll((long long *)__p, __cmp, __v);
718 }
__ullAtomicCAS_block(unsigned long long * __p,unsigned long long __cmp,unsigned long long __v)719 __DEVICE__ unsigned long long __ullAtomicCAS_block(unsigned long long *__p,
720                                                    unsigned long long __cmp,
721                                                    unsigned long long __v) {
722   return __nvvm_atom_cta_cas_gen_ll((long long *)__p, __cmp, __v);
723 }
__ullAtomicCAS_system(unsigned long long * __p,unsigned long long __cmp,unsigned long long __v)724 __DEVICE__ unsigned long long __ullAtomicCAS_system(unsigned long long *__p,
725                                                     unsigned long long __cmp,
726                                                     unsigned long long __v) {
727   return __nvvm_atom_sys_cas_gen_ll((long long *)__p, __cmp, __v);
728 }
__ullAtomicExch(unsigned long long * __p,unsigned long long __v)729 __DEVICE__ unsigned long long __ullAtomicExch(unsigned long long *__p,
730                                               unsigned long long __v) {
731   return __nvvm_atom_xchg_gen_ll((long long *)__p, __v);
732 }
__ullAtomicExch_block(unsigned long long * __p,unsigned long long __v)733 __DEVICE__ unsigned long long __ullAtomicExch_block(unsigned long long *__p,
734                                                     unsigned long long __v) {
735   return __nvvm_atom_cta_xchg_gen_ll((long long *)__p, __v);
736 }
__ullAtomicExch_system(unsigned long long * __p,unsigned long long __v)737 __DEVICE__ unsigned long long __ullAtomicExch_system(unsigned long long *__p,
738                                                      unsigned long long __v) {
739   return __nvvm_atom_sys_xchg_gen_ll((long long *)__p, __v);
740 }
__ullAtomicMax(unsigned long long * __p,unsigned long long __v)741 __DEVICE__ unsigned long long __ullAtomicMax(unsigned long long *__p,
742                                              unsigned long long __v) {
743   return __nvvm_atom_max_gen_ull(__p, __v);
744 }
__ullAtomicMax_block(unsigned long long * __p,unsigned long long __v)745 __DEVICE__ unsigned long long __ullAtomicMax_block(unsigned long long *__p,
746                                                    unsigned long long __v) {
747   return __nvvm_atom_cta_max_gen_ull(__p, __v);
748 }
__ullAtomicMax_system(unsigned long long * __p,unsigned long long __v)749 __DEVICE__ unsigned long long __ullAtomicMax_system(unsigned long long *__p,
750                                                     unsigned long long __v) {
751   return __nvvm_atom_sys_max_gen_ull(__p, __v);
752 }
__ullAtomicMin(unsigned long long * __p,unsigned long long __v)753 __DEVICE__ unsigned long long __ullAtomicMin(unsigned long long *__p,
754                                              unsigned long long __v) {
755   return __nvvm_atom_min_gen_ull(__p, __v);
756 }
__ullAtomicMin_block(unsigned long long * __p,unsigned long long __v)757 __DEVICE__ unsigned long long __ullAtomicMin_block(unsigned long long *__p,
758                                                    unsigned long long __v) {
759   return __nvvm_atom_cta_min_gen_ull(__p, __v);
760 }
__ullAtomicMin_system(unsigned long long * __p,unsigned long long __v)761 __DEVICE__ unsigned long long __ullAtomicMin_system(unsigned long long *__p,
762                                                     unsigned long long __v) {
763   return __nvvm_atom_sys_min_gen_ull(__p, __v);
764 }
__ullAtomicOr(unsigned long long * __p,unsigned long long __v)765 __DEVICE__ unsigned long long __ullAtomicOr(unsigned long long *__p,
766                                             unsigned long long __v) {
767   return __nvvm_atom_or_gen_ll((long long *)__p, __v);
768 }
__ullAtomicOr_block(unsigned long long * __p,unsigned long long __v)769 __DEVICE__ unsigned long long __ullAtomicOr_block(unsigned long long *__p,
770                                                   unsigned long long __v) {
771   return __nvvm_atom_cta_or_gen_ll((long long *)__p, __v);
772 }
__ullAtomicOr_system(unsigned long long * __p,unsigned long long __v)773 __DEVICE__ unsigned long long __ullAtomicOr_system(unsigned long long *__p,
774                                                    unsigned long long __v) {
775   return __nvvm_atom_sys_or_gen_ll((long long *)__p, __v);
776 }
__ullAtomicXor(unsigned long long * __p,unsigned long long __v)777 __DEVICE__ unsigned long long __ullAtomicXor(unsigned long long *__p,
778                                              unsigned long long __v) {
779   return __nvvm_atom_xor_gen_ll((long long *)__p, __v);
780 }
__ullAtomicXor_block(unsigned long long * __p,unsigned long long __v)781 __DEVICE__ unsigned long long __ullAtomicXor_block(unsigned long long *__p,
782                                                    unsigned long long __v) {
783   return __nvvm_atom_cta_xor_gen_ll((long long *)__p, __v);
784 }
__ullAtomicXor_system(unsigned long long * __p,unsigned long long __v)785 __DEVICE__ unsigned long long __ullAtomicXor_system(unsigned long long *__p,
786                                                     unsigned long long __v) {
787   return __nvvm_atom_sys_xor_gen_ll((long long *)__p, __v);
788 }
__umul24(unsigned int __a,unsigned int __b)789 __DEVICE__ unsigned int __umul24(unsigned int __a, unsigned int __b) {
790   return __nv_umul24(__a, __b);
791 }
__umul64hi(unsigned long long __a,unsigned long long __b)792 __DEVICE__ unsigned long long __umul64hi(unsigned long long __a,
793                                          unsigned long long __b) {
794   return __nv_umul64hi(__a, __b);
795 }
__umulhi(unsigned int __a,unsigned int __b)796 __DEVICE__ unsigned int __umulhi(unsigned int __a, unsigned int __b) {
797   return __nv_umulhi(__a, __b);
798 }
__urhadd(unsigned int __a,unsigned int __b)799 __DEVICE__ unsigned int __urhadd(unsigned int __a, unsigned int __b) {
800   return __nv_urhadd(__a, __b);
801 }
__usad(unsigned int __a,unsigned int __b,unsigned int __c)802 __DEVICE__ unsigned int __usad(unsigned int __a, unsigned int __b,
803                                unsigned int __c) {
804   return __nv_usad(__a, __b, __c);
805 }
806 
807 #if CUDA_VERSION >= 9000 && CUDA_VERSION < 9020
__vabs2(unsigned int __a)808 __DEVICE__ unsigned int __vabs2(unsigned int __a) { return __nv_vabs2(__a); }
__vabs4(unsigned int __a)809 __DEVICE__ unsigned int __vabs4(unsigned int __a) { return __nv_vabs4(__a); }
__vabsdiffs2(unsigned int __a,unsigned int __b)810 __DEVICE__ unsigned int __vabsdiffs2(unsigned int __a, unsigned int __b) {
811   return __nv_vabsdiffs2(__a, __b);
812 }
__vabsdiffs4(unsigned int __a,unsigned int __b)813 __DEVICE__ unsigned int __vabsdiffs4(unsigned int __a, unsigned int __b) {
814   return __nv_vabsdiffs4(__a, __b);
815 }
__vabsdiffu2(unsigned int __a,unsigned int __b)816 __DEVICE__ unsigned int __vabsdiffu2(unsigned int __a, unsigned int __b) {
817   return __nv_vabsdiffu2(__a, __b);
818 }
__vabsdiffu4(unsigned int __a,unsigned int __b)819 __DEVICE__ unsigned int __vabsdiffu4(unsigned int __a, unsigned int __b) {
820   return __nv_vabsdiffu4(__a, __b);
821 }
__vabsss2(unsigned int __a)822 __DEVICE__ unsigned int __vabsss2(unsigned int __a) {
823   return __nv_vabsss2(__a);
824 }
__vabsss4(unsigned int __a)825 __DEVICE__ unsigned int __vabsss4(unsigned int __a) {
826   return __nv_vabsss4(__a);
827 }
__vadd2(unsigned int __a,unsigned int __b)828 __DEVICE__ unsigned int __vadd2(unsigned int __a, unsigned int __b) {
829   return __nv_vadd2(__a, __b);
830 }
__vadd4(unsigned int __a,unsigned int __b)831 __DEVICE__ unsigned int __vadd4(unsigned int __a, unsigned int __b) {
832   return __nv_vadd4(__a, __b);
833 }
__vaddss2(unsigned int __a,unsigned int __b)834 __DEVICE__ unsigned int __vaddss2(unsigned int __a, unsigned int __b) {
835   return __nv_vaddss2(__a, __b);
836 }
__vaddss4(unsigned int __a,unsigned int __b)837 __DEVICE__ unsigned int __vaddss4(unsigned int __a, unsigned int __b) {
838   return __nv_vaddss4(__a, __b);
839 }
__vaddus2(unsigned int __a,unsigned int __b)840 __DEVICE__ unsigned int __vaddus2(unsigned int __a, unsigned int __b) {
841   return __nv_vaddus2(__a, __b);
842 }
__vaddus4(unsigned int __a,unsigned int __b)843 __DEVICE__ unsigned int __vaddus4(unsigned int __a, unsigned int __b) {
844   return __nv_vaddus4(__a, __b);
845 }
__vavgs2(unsigned int __a,unsigned int __b)846 __DEVICE__ unsigned int __vavgs2(unsigned int __a, unsigned int __b) {
847   return __nv_vavgs2(__a, __b);
848 }
__vavgs4(unsigned int __a,unsigned int __b)849 __DEVICE__ unsigned int __vavgs4(unsigned int __a, unsigned int __b) {
850   return __nv_vavgs4(__a, __b);
851 }
__vavgu2(unsigned int __a,unsigned int __b)852 __DEVICE__ unsigned int __vavgu2(unsigned int __a, unsigned int __b) {
853   return __nv_vavgu2(__a, __b);
854 }
__vavgu4(unsigned int __a,unsigned int __b)855 __DEVICE__ unsigned int __vavgu4(unsigned int __a, unsigned int __b) {
856   return __nv_vavgu4(__a, __b);
857 }
__vcmpeq2(unsigned int __a,unsigned int __b)858 __DEVICE__ unsigned int __vcmpeq2(unsigned int __a, unsigned int __b) {
859   return __nv_vcmpeq2(__a, __b);
860 }
__vcmpeq4(unsigned int __a,unsigned int __b)861 __DEVICE__ unsigned int __vcmpeq4(unsigned int __a, unsigned int __b) {
862   return __nv_vcmpeq4(__a, __b);
863 }
__vcmpges2(unsigned int __a,unsigned int __b)864 __DEVICE__ unsigned int __vcmpges2(unsigned int __a, unsigned int __b) {
865   return __nv_vcmpges2(__a, __b);
866 }
__vcmpges4(unsigned int __a,unsigned int __b)867 __DEVICE__ unsigned int __vcmpges4(unsigned int __a, unsigned int __b) {
868   return __nv_vcmpges4(__a, __b);
869 }
__vcmpgeu2(unsigned int __a,unsigned int __b)870 __DEVICE__ unsigned int __vcmpgeu2(unsigned int __a, unsigned int __b) {
871   return __nv_vcmpgeu2(__a, __b);
872 }
__vcmpgeu4(unsigned int __a,unsigned int __b)873 __DEVICE__ unsigned int __vcmpgeu4(unsigned int __a, unsigned int __b) {
874   return __nv_vcmpgeu4(__a, __b);
875 }
__vcmpgts2(unsigned int __a,unsigned int __b)876 __DEVICE__ unsigned int __vcmpgts2(unsigned int __a, unsigned int __b) {
877   return __nv_vcmpgts2(__a, __b);
878 }
__vcmpgts4(unsigned int __a,unsigned int __b)879 __DEVICE__ unsigned int __vcmpgts4(unsigned int __a, unsigned int __b) {
880   return __nv_vcmpgts4(__a, __b);
881 }
__vcmpgtu2(unsigned int __a,unsigned int __b)882 __DEVICE__ unsigned int __vcmpgtu2(unsigned int __a, unsigned int __b) {
883   return __nv_vcmpgtu2(__a, __b);
884 }
__vcmpgtu4(unsigned int __a,unsigned int __b)885 __DEVICE__ unsigned int __vcmpgtu4(unsigned int __a, unsigned int __b) {
886   return __nv_vcmpgtu4(__a, __b);
887 }
__vcmples2(unsigned int __a,unsigned int __b)888 __DEVICE__ unsigned int __vcmples2(unsigned int __a, unsigned int __b) {
889   return __nv_vcmples2(__a, __b);
890 }
__vcmples4(unsigned int __a,unsigned int __b)891 __DEVICE__ unsigned int __vcmples4(unsigned int __a, unsigned int __b) {
892   return __nv_vcmples4(__a, __b);
893 }
__vcmpleu2(unsigned int __a,unsigned int __b)894 __DEVICE__ unsigned int __vcmpleu2(unsigned int __a, unsigned int __b) {
895   return __nv_vcmpleu2(__a, __b);
896 }
__vcmpleu4(unsigned int __a,unsigned int __b)897 __DEVICE__ unsigned int __vcmpleu4(unsigned int __a, unsigned int __b) {
898   return __nv_vcmpleu4(__a, __b);
899 }
__vcmplts2(unsigned int __a,unsigned int __b)900 __DEVICE__ unsigned int __vcmplts2(unsigned int __a, unsigned int __b) {
901   return __nv_vcmplts2(__a, __b);
902 }
__vcmplts4(unsigned int __a,unsigned int __b)903 __DEVICE__ unsigned int __vcmplts4(unsigned int __a, unsigned int __b) {
904   return __nv_vcmplts4(__a, __b);
905 }
__vcmpltu2(unsigned int __a,unsigned int __b)906 __DEVICE__ unsigned int __vcmpltu2(unsigned int __a, unsigned int __b) {
907   return __nv_vcmpltu2(__a, __b);
908 }
__vcmpltu4(unsigned int __a,unsigned int __b)909 __DEVICE__ unsigned int __vcmpltu4(unsigned int __a, unsigned int __b) {
910   return __nv_vcmpltu4(__a, __b);
911 }
__vcmpne2(unsigned int __a,unsigned int __b)912 __DEVICE__ unsigned int __vcmpne2(unsigned int __a, unsigned int __b) {
913   return __nv_vcmpne2(__a, __b);
914 }
__vcmpne4(unsigned int __a,unsigned int __b)915 __DEVICE__ unsigned int __vcmpne4(unsigned int __a, unsigned int __b) {
916   return __nv_vcmpne4(__a, __b);
917 }
__vhaddu2(unsigned int __a,unsigned int __b)918 __DEVICE__ unsigned int __vhaddu2(unsigned int __a, unsigned int __b) {
919   return __nv_vhaddu2(__a, __b);
920 }
__vhaddu4(unsigned int __a,unsigned int __b)921 __DEVICE__ unsigned int __vhaddu4(unsigned int __a, unsigned int __b) {
922   return __nv_vhaddu4(__a, __b);
923 }
__vmaxs2(unsigned int __a,unsigned int __b)924 __DEVICE__ unsigned int __vmaxs2(unsigned int __a, unsigned int __b) {
925   return __nv_vmaxs2(__a, __b);
926 }
__vmaxs4(unsigned int __a,unsigned int __b)927 __DEVICE__ unsigned int __vmaxs4(unsigned int __a, unsigned int __b) {
928   return __nv_vmaxs4(__a, __b);
929 }
__vmaxu2(unsigned int __a,unsigned int __b)930 __DEVICE__ unsigned int __vmaxu2(unsigned int __a, unsigned int __b) {
931   return __nv_vmaxu2(__a, __b);
932 }
__vmaxu4(unsigned int __a,unsigned int __b)933 __DEVICE__ unsigned int __vmaxu4(unsigned int __a, unsigned int __b) {
934   return __nv_vmaxu4(__a, __b);
935 }
__vmins2(unsigned int __a,unsigned int __b)936 __DEVICE__ unsigned int __vmins2(unsigned int __a, unsigned int __b) {
937   return __nv_vmins2(__a, __b);
938 }
__vmins4(unsigned int __a,unsigned int __b)939 __DEVICE__ unsigned int __vmins4(unsigned int __a, unsigned int __b) {
940   return __nv_vmins4(__a, __b);
941 }
__vminu2(unsigned int __a,unsigned int __b)942 __DEVICE__ unsigned int __vminu2(unsigned int __a, unsigned int __b) {
943   return __nv_vminu2(__a, __b);
944 }
__vminu4(unsigned int __a,unsigned int __b)945 __DEVICE__ unsigned int __vminu4(unsigned int __a, unsigned int __b) {
946   return __nv_vminu4(__a, __b);
947 }
__vneg2(unsigned int __a)948 __DEVICE__ unsigned int __vneg2(unsigned int __a) { return __nv_vneg2(__a); }
__vneg4(unsigned int __a)949 __DEVICE__ unsigned int __vneg4(unsigned int __a) { return __nv_vneg4(__a); }
__vnegss2(unsigned int __a)950 __DEVICE__ unsigned int __vnegss2(unsigned int __a) {
951   return __nv_vnegss2(__a);
952 }
__vnegss4(unsigned int __a)953 __DEVICE__ unsigned int __vnegss4(unsigned int __a) {
954   return __nv_vnegss4(__a);
955 }
__vsads2(unsigned int __a,unsigned int __b)956 __DEVICE__ unsigned int __vsads2(unsigned int __a, unsigned int __b) {
957   return __nv_vsads2(__a, __b);
958 }
__vsads4(unsigned int __a,unsigned int __b)959 __DEVICE__ unsigned int __vsads4(unsigned int __a, unsigned int __b) {
960   return __nv_vsads4(__a, __b);
961 }
__vsadu2(unsigned int __a,unsigned int __b)962 __DEVICE__ unsigned int __vsadu2(unsigned int __a, unsigned int __b) {
963   return __nv_vsadu2(__a, __b);
964 }
__vsadu4(unsigned int __a,unsigned int __b)965 __DEVICE__ unsigned int __vsadu4(unsigned int __a, unsigned int __b) {
966   return __nv_vsadu4(__a, __b);
967 }
__vseteq2(unsigned int __a,unsigned int __b)968 __DEVICE__ unsigned int __vseteq2(unsigned int __a, unsigned int __b) {
969   return __nv_vseteq2(__a, __b);
970 }
__vseteq4(unsigned int __a,unsigned int __b)971 __DEVICE__ unsigned int __vseteq4(unsigned int __a, unsigned int __b) {
972   return __nv_vseteq4(__a, __b);
973 }
__vsetges2(unsigned int __a,unsigned int __b)974 __DEVICE__ unsigned int __vsetges2(unsigned int __a, unsigned int __b) {
975   return __nv_vsetges2(__a, __b);
976 }
__vsetges4(unsigned int __a,unsigned int __b)977 __DEVICE__ unsigned int __vsetges4(unsigned int __a, unsigned int __b) {
978   return __nv_vsetges4(__a, __b);
979 }
__vsetgeu2(unsigned int __a,unsigned int __b)980 __DEVICE__ unsigned int __vsetgeu2(unsigned int __a, unsigned int __b) {
981   return __nv_vsetgeu2(__a, __b);
982 }
__vsetgeu4(unsigned int __a,unsigned int __b)983 __DEVICE__ unsigned int __vsetgeu4(unsigned int __a, unsigned int __b) {
984   return __nv_vsetgeu4(__a, __b);
985 }
__vsetgts2(unsigned int __a,unsigned int __b)986 __DEVICE__ unsigned int __vsetgts2(unsigned int __a, unsigned int __b) {
987   return __nv_vsetgts2(__a, __b);
988 }
__vsetgts4(unsigned int __a,unsigned int __b)989 __DEVICE__ unsigned int __vsetgts4(unsigned int __a, unsigned int __b) {
990   return __nv_vsetgts4(__a, __b);
991 }
__vsetgtu2(unsigned int __a,unsigned int __b)992 __DEVICE__ unsigned int __vsetgtu2(unsigned int __a, unsigned int __b) {
993   return __nv_vsetgtu2(__a, __b);
994 }
__vsetgtu4(unsigned int __a,unsigned int __b)995 __DEVICE__ unsigned int __vsetgtu4(unsigned int __a, unsigned int __b) {
996   return __nv_vsetgtu4(__a, __b);
997 }
__vsetles2(unsigned int __a,unsigned int __b)998 __DEVICE__ unsigned int __vsetles2(unsigned int __a, unsigned int __b) {
999   return __nv_vsetles2(__a, __b);
1000 }
__vsetles4(unsigned int __a,unsigned int __b)1001 __DEVICE__ unsigned int __vsetles4(unsigned int __a, unsigned int __b) {
1002   return __nv_vsetles4(__a, __b);
1003 }
__vsetleu2(unsigned int __a,unsigned int __b)1004 __DEVICE__ unsigned int __vsetleu2(unsigned int __a, unsigned int __b) {
1005   return __nv_vsetleu2(__a, __b);
1006 }
__vsetleu4(unsigned int __a,unsigned int __b)1007 __DEVICE__ unsigned int __vsetleu4(unsigned int __a, unsigned int __b) {
1008   return __nv_vsetleu4(__a, __b);
1009 }
__vsetlts2(unsigned int __a,unsigned int __b)1010 __DEVICE__ unsigned int __vsetlts2(unsigned int __a, unsigned int __b) {
1011   return __nv_vsetlts2(__a, __b);
1012 }
__vsetlts4(unsigned int __a,unsigned int __b)1013 __DEVICE__ unsigned int __vsetlts4(unsigned int __a, unsigned int __b) {
1014   return __nv_vsetlts4(__a, __b);
1015 }
__vsetltu2(unsigned int __a,unsigned int __b)1016 __DEVICE__ unsigned int __vsetltu2(unsigned int __a, unsigned int __b) {
1017   return __nv_vsetltu2(__a, __b);
1018 }
__vsetltu4(unsigned int __a,unsigned int __b)1019 __DEVICE__ unsigned int __vsetltu4(unsigned int __a, unsigned int __b) {
1020   return __nv_vsetltu4(__a, __b);
1021 }
__vsetne2(unsigned int __a,unsigned int __b)1022 __DEVICE__ unsigned int __vsetne2(unsigned int __a, unsigned int __b) {
1023   return __nv_vsetne2(__a, __b);
1024 }
__vsetne4(unsigned int __a,unsigned int __b)1025 __DEVICE__ unsigned int __vsetne4(unsigned int __a, unsigned int __b) {
1026   return __nv_vsetne4(__a, __b);
1027 }
__vsub2(unsigned int __a,unsigned int __b)1028 __DEVICE__ unsigned int __vsub2(unsigned int __a, unsigned int __b) {
1029   return __nv_vsub2(__a, __b);
1030 }
__vsub4(unsigned int __a,unsigned int __b)1031 __DEVICE__ unsigned int __vsub4(unsigned int __a, unsigned int __b) {
1032   return __nv_vsub4(__a, __b);
1033 }
__vsubss2(unsigned int __a,unsigned int __b)1034 __DEVICE__ unsigned int __vsubss2(unsigned int __a, unsigned int __b) {
1035   return __nv_vsubss2(__a, __b);
1036 }
__vsubss4(unsigned int __a,unsigned int __b)1037 __DEVICE__ unsigned int __vsubss4(unsigned int __a, unsigned int __b) {
1038   return __nv_vsubss4(__a, __b);
1039 }
__vsubus2(unsigned int __a,unsigned int __b)1040 __DEVICE__ unsigned int __vsubus2(unsigned int __a, unsigned int __b) {
1041   return __nv_vsubus2(__a, __b);
1042 }
__vsubus4(unsigned int __a,unsigned int __b)1043 __DEVICE__ unsigned int __vsubus4(unsigned int __a, unsigned int __b) {
1044   return __nv_vsubus4(__a, __b);
1045 }
1046 #else // CUDA_VERSION >= 9020
1047 // CUDA no longer provides inline assembly (or bitcode) implementation of these
1048 // functions, so we have to reimplment them. The implementation is naive and is
1049 // not optimized for performance.
1050 
1051 // Helper function to convert N-bit boolean subfields into all-0 or all-1.
1052 // E.g. __bool2mask(0x01000100,8) -> 0xff00ff00
1053 //      __bool2mask(0x00010000,16) -> 0xffff0000
__bool2mask(unsigned int __a,int shift)1054 __DEVICE__ unsigned int __bool2mask(unsigned int __a, int shift) {
1055   return (__a << shift) - __a;
1056 }
__vabs2(unsigned int __a)1057 __DEVICE__ unsigned int __vabs2(unsigned int __a) {
1058   unsigned int r;
1059   asm("vabsdiff2.s32.s32.s32 %0,%1,%2,%3;"
1060       : "=r"(r)
1061       : "r"(__a), "r"(0), "r"(0));
1062   return r;
1063 }
__vabs4(unsigned int __a)1064 __DEVICE__ unsigned int __vabs4(unsigned int __a) {
1065   unsigned int r;
1066   asm("vabsdiff4.s32.s32.s32 %0,%1,%2,%3;"
1067       : "=r"(r)
1068       : "r"(__a), "r"(0), "r"(0));
1069   return r;
1070 }
__vabsdiffs2(unsigned int __a,unsigned int __b)1071 __DEVICE__ unsigned int __vabsdiffs2(unsigned int __a, unsigned int __b) {
1072   unsigned int r;
1073   asm("vabsdiff2.s32.s32.s32 %0,%1,%2,%3;"
1074       : "=r"(r)
1075       : "r"(__a), "r"(__b), "r"(0));
1076   return r;
1077 }
1078 
__vabsdiffs4(unsigned int __a,unsigned int __b)1079 __DEVICE__ unsigned int __vabsdiffs4(unsigned int __a, unsigned int __b) {
1080   unsigned int r;
1081   asm("vabsdiff4.s32.s32.s32 %0,%1,%2,%3;"
1082       : "=r"(r)
1083       : "r"(__a), "r"(__b), "r"(0));
1084   return r;
1085 }
__vabsdiffu2(unsigned int __a,unsigned int __b)1086 __DEVICE__ unsigned int __vabsdiffu2(unsigned int __a, unsigned int __b) {
1087   unsigned int r;
1088   asm("vabsdiff2.u32.u32.u32 %0,%1,%2,%3;"
1089       : "=r"(r)
1090       : "r"(__a), "r"(__b), "r"(0));
1091   return r;
1092 }
__vabsdiffu4(unsigned int __a,unsigned int __b)1093 __DEVICE__ unsigned int __vabsdiffu4(unsigned int __a, unsigned int __b) {
1094   unsigned int r;
1095   asm("vabsdiff4.u32.u32.u32 %0,%1,%2,%3;"
1096       : "=r"(r)
1097       : "r"(__a), "r"(__b), "r"(0));
1098   return r;
1099 }
__vabsss2(unsigned int __a)1100 __DEVICE__ unsigned int __vabsss2(unsigned int __a) {
1101   unsigned int r;
1102   asm("vabsdiff2.s32.s32.s32.sat %0,%1,%2,%3;"
1103       : "=r"(r)
1104       : "r"(__a), "r"(0), "r"(0));
1105   return r;
1106 }
__vabsss4(unsigned int __a)1107 __DEVICE__ unsigned int __vabsss4(unsigned int __a) {
1108   unsigned int r;
1109   asm("vabsdiff4.s32.s32.s32.sat %0,%1,%2,%3;"
1110       : "=r"(r)
1111       : "r"(__a), "r"(0), "r"(0));
1112   return r;
1113 }
__vadd2(unsigned int __a,unsigned int __b)1114 __DEVICE__ unsigned int __vadd2(unsigned int __a, unsigned int __b) {
1115   unsigned int r;
1116   asm("vadd2.u32.u32.u32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1117   return r;
1118 }
__vadd4(unsigned int __a,unsigned int __b)1119 __DEVICE__ unsigned int __vadd4(unsigned int __a, unsigned int __b) {
1120   unsigned int r;
1121   asm("vadd4.u32.u32.u32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1122   return r;
1123 }
__vaddss2(unsigned int __a,unsigned int __b)1124 __DEVICE__ unsigned int __vaddss2(unsigned int __a, unsigned int __b) {
1125   unsigned int r;
1126   asm("vadd2.s32.s32.s32.sat %0,%1,%2,%3;"
1127       : "=r"(r)
1128       : "r"(__a), "r"(__b), "r"(0));
1129   return r;
1130 }
__vaddss4(unsigned int __a,unsigned int __b)1131 __DEVICE__ unsigned int __vaddss4(unsigned int __a, unsigned int __b) {
1132   unsigned int r;
1133   asm("vadd4.s32.s32.s32.sat %0,%1,%2,%3;"
1134       : "=r"(r)
1135       : "r"(__a), "r"(__b), "r"(0));
1136   return r;
1137 }
__vaddus2(unsigned int __a,unsigned int __b)1138 __DEVICE__ unsigned int __vaddus2(unsigned int __a, unsigned int __b) {
1139   unsigned int r;
1140   asm("vadd2.u32.u32.u32.sat %0,%1,%2,%3;"
1141       : "=r"(r)
1142       : "r"(__a), "r"(__b), "r"(0));
1143   return r;
1144 }
__vaddus4(unsigned int __a,unsigned int __b)1145 __DEVICE__ unsigned int __vaddus4(unsigned int __a, unsigned int __b) {
1146   unsigned int r;
1147   asm("vadd4.u32.u32.u32.sat %0,%1,%2,%3;"
1148       : "=r"(r)
1149       : "r"(__a), "r"(__b), "r"(0));
1150   return r;
1151 }
__vavgs2(unsigned int __a,unsigned int __b)1152 __DEVICE__ unsigned int __vavgs2(unsigned int __a, unsigned int __b) {
1153   unsigned int r;
1154   asm("vavrg2.s32.s32.s32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1155   return r;
1156 }
__vavgs4(unsigned int __a,unsigned int __b)1157 __DEVICE__ unsigned int __vavgs4(unsigned int __a, unsigned int __b) {
1158   unsigned int r;
1159   asm("vavrg4.s32.s32.s32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1160   return r;
1161 }
__vavgu2(unsigned int __a,unsigned int __b)1162 __DEVICE__ unsigned int __vavgu2(unsigned int __a, unsigned int __b) {
1163   unsigned int r;
1164   asm("vavrg2.u32.u32.u32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1165   return r;
1166 }
__vavgu4(unsigned int __a,unsigned int __b)1167 __DEVICE__ unsigned int __vavgu4(unsigned int __a, unsigned int __b) {
1168   unsigned int r;
1169   asm("vavrg4.u32.u32.u32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1170   return r;
1171 }
__vseteq2(unsigned int __a,unsigned int __b)1172 __DEVICE__ unsigned int __vseteq2(unsigned int __a, unsigned int __b) {
1173   unsigned int r;
1174   asm("vset2.u32.u32.eq %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1175   return r;
1176 }
__vcmpeq2(unsigned int __a,unsigned int __b)1177 __DEVICE__ unsigned int __vcmpeq2(unsigned int __a, unsigned int __b) {
1178   return __bool2mask(__vseteq2(__a, __b), 16);
1179 }
__vseteq4(unsigned int __a,unsigned int __b)1180 __DEVICE__ unsigned int __vseteq4(unsigned int __a, unsigned int __b) {
1181   unsigned int r;
1182   asm("vset4.u32.u32.eq %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1183   return r;
1184 }
__vcmpeq4(unsigned int __a,unsigned int __b)1185 __DEVICE__ unsigned int __vcmpeq4(unsigned int __a, unsigned int __b) {
1186   return __bool2mask(__vseteq4(__a, __b), 8);
1187 }
__vsetges2(unsigned int __a,unsigned int __b)1188 __DEVICE__ unsigned int __vsetges2(unsigned int __a, unsigned int __b) {
1189   unsigned int r;
1190   asm("vset2.s32.s32.ge %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1191   return r;
1192 }
__vcmpges2(unsigned int __a,unsigned int __b)1193 __DEVICE__ unsigned int __vcmpges2(unsigned int __a, unsigned int __b) {
1194   return __bool2mask(__vsetges2(__a, __b), 16);
1195 }
__vsetges4(unsigned int __a,unsigned int __b)1196 __DEVICE__ unsigned int __vsetges4(unsigned int __a, unsigned int __b) {
1197   unsigned int r;
1198   asm("vset4.s32.s32.ge %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1199   return r;
1200 }
__vcmpges4(unsigned int __a,unsigned int __b)1201 __DEVICE__ unsigned int __vcmpges4(unsigned int __a, unsigned int __b) {
1202   return __bool2mask(__vsetges4(__a, __b), 8);
1203 }
__vsetgeu2(unsigned int __a,unsigned int __b)1204 __DEVICE__ unsigned int __vsetgeu2(unsigned int __a, unsigned int __b) {
1205   unsigned int r;
1206   asm("vset2.u32.u32.ge %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1207   return r;
1208 }
__vcmpgeu2(unsigned int __a,unsigned int __b)1209 __DEVICE__ unsigned int __vcmpgeu2(unsigned int __a, unsigned int __b) {
1210   return __bool2mask(__vsetgeu2(__a, __b), 16);
1211 }
__vsetgeu4(unsigned int __a,unsigned int __b)1212 __DEVICE__ unsigned int __vsetgeu4(unsigned int __a, unsigned int __b) {
1213   unsigned int r;
1214   asm("vset4.u32.u32.ge %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1215   return r;
1216 }
__vcmpgeu4(unsigned int __a,unsigned int __b)1217 __DEVICE__ unsigned int __vcmpgeu4(unsigned int __a, unsigned int __b) {
1218   return __bool2mask(__vsetgeu4(__a, __b), 8);
1219 }
__vsetgts2(unsigned int __a,unsigned int __b)1220 __DEVICE__ unsigned int __vsetgts2(unsigned int __a, unsigned int __b) {
1221   unsigned int r;
1222   asm("vset2.s32.s32.gt %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1223   return r;
1224 }
__vcmpgts2(unsigned int __a,unsigned int __b)1225 __DEVICE__ unsigned int __vcmpgts2(unsigned int __a, unsigned int __b) {
1226   return __bool2mask(__vsetgts2(__a, __b), 16);
1227 }
__vsetgts4(unsigned int __a,unsigned int __b)1228 __DEVICE__ unsigned int __vsetgts4(unsigned int __a, unsigned int __b) {
1229   unsigned int r;
1230   asm("vset4.s32.s32.gt %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1231   return r;
1232 }
__vcmpgts4(unsigned int __a,unsigned int __b)1233 __DEVICE__ unsigned int __vcmpgts4(unsigned int __a, unsigned int __b) {
1234   return __bool2mask(__vsetgts4(__a, __b), 8);
1235 }
__vsetgtu2(unsigned int __a,unsigned int __b)1236 __DEVICE__ unsigned int __vsetgtu2(unsigned int __a, unsigned int __b) {
1237   unsigned int r;
1238   asm("vset2.u32.u32.gt %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1239   return r;
1240 }
__vcmpgtu2(unsigned int __a,unsigned int __b)1241 __DEVICE__ unsigned int __vcmpgtu2(unsigned int __a, unsigned int __b) {
1242   return __bool2mask(__vsetgtu2(__a, __b), 16);
1243 }
__vsetgtu4(unsigned int __a,unsigned int __b)1244 __DEVICE__ unsigned int __vsetgtu4(unsigned int __a, unsigned int __b) {
1245   unsigned int r;
1246   asm("vset4.u32.u32.gt %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1247   return r;
1248 }
__vcmpgtu4(unsigned int __a,unsigned int __b)1249 __DEVICE__ unsigned int __vcmpgtu4(unsigned int __a, unsigned int __b) {
1250   return __bool2mask(__vsetgtu4(__a, __b), 8);
1251 }
__vsetles2(unsigned int __a,unsigned int __b)1252 __DEVICE__ unsigned int __vsetles2(unsigned int __a, unsigned int __b) {
1253   unsigned int r;
1254   asm("vset2.s32.s32.le %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1255   return r;
1256 }
__vcmples2(unsigned int __a,unsigned int __b)1257 __DEVICE__ unsigned int __vcmples2(unsigned int __a, unsigned int __b) {
1258   return __bool2mask(__vsetles2(__a, __b), 16);
1259 }
__vsetles4(unsigned int __a,unsigned int __b)1260 __DEVICE__ unsigned int __vsetles4(unsigned int __a, unsigned int __b) {
1261   unsigned int r;
1262   asm("vset4.s32.s32.le %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1263   return r;
1264 }
__vcmples4(unsigned int __a,unsigned int __b)1265 __DEVICE__ unsigned int __vcmples4(unsigned int __a, unsigned int __b) {
1266   return __bool2mask(__vsetles4(__a, __b), 8);
1267 }
__vsetleu2(unsigned int __a,unsigned int __b)1268 __DEVICE__ unsigned int __vsetleu2(unsigned int __a, unsigned int __b) {
1269   unsigned int r;
1270   asm("vset2.u32.u32.le %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1271   return r;
1272 }
__vcmpleu2(unsigned int __a,unsigned int __b)1273 __DEVICE__ unsigned int __vcmpleu2(unsigned int __a, unsigned int __b) {
1274   return __bool2mask(__vsetleu2(__a, __b), 16);
1275 }
__vsetleu4(unsigned int __a,unsigned int __b)1276 __DEVICE__ unsigned int __vsetleu4(unsigned int __a, unsigned int __b) {
1277   unsigned int r;
1278   asm("vset4.u32.u32.le %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1279   return r;
1280 }
__vcmpleu4(unsigned int __a,unsigned int __b)1281 __DEVICE__ unsigned int __vcmpleu4(unsigned int __a, unsigned int __b) {
1282   return __bool2mask(__vsetleu4(__a, __b), 8);
1283 }
__vsetlts2(unsigned int __a,unsigned int __b)1284 __DEVICE__ unsigned int __vsetlts2(unsigned int __a, unsigned int __b) {
1285   unsigned int r;
1286   asm("vset2.s32.s32.lt %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1287   return r;
1288 }
__vcmplts2(unsigned int __a,unsigned int __b)1289 __DEVICE__ unsigned int __vcmplts2(unsigned int __a, unsigned int __b) {
1290   return __bool2mask(__vsetlts2(__a, __b), 16);
1291 }
__vsetlts4(unsigned int __a,unsigned int __b)1292 __DEVICE__ unsigned int __vsetlts4(unsigned int __a, unsigned int __b) {
1293   unsigned int r;
1294   asm("vset4.s32.s32.lt %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1295   return r;
1296 }
__vcmplts4(unsigned int __a,unsigned int __b)1297 __DEVICE__ unsigned int __vcmplts4(unsigned int __a, unsigned int __b) {
1298   return __bool2mask(__vsetlts4(__a, __b), 8);
1299 }
__vsetltu2(unsigned int __a,unsigned int __b)1300 __DEVICE__ unsigned int __vsetltu2(unsigned int __a, unsigned int __b) {
1301   unsigned int r;
1302   asm("vset2.u32.u32.lt %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1303   return r;
1304 }
__vcmpltu2(unsigned int __a,unsigned int __b)1305 __DEVICE__ unsigned int __vcmpltu2(unsigned int __a, unsigned int __b) {
1306   return __bool2mask(__vsetltu2(__a, __b), 16);
1307 }
__vsetltu4(unsigned int __a,unsigned int __b)1308 __DEVICE__ unsigned int __vsetltu4(unsigned int __a, unsigned int __b) {
1309   unsigned int r;
1310   asm("vset4.u32.u32.lt %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1311   return r;
1312 }
__vcmpltu4(unsigned int __a,unsigned int __b)1313 __DEVICE__ unsigned int __vcmpltu4(unsigned int __a, unsigned int __b) {
1314   return __bool2mask(__vsetltu4(__a, __b), 8);
1315 }
__vsetne2(unsigned int __a,unsigned int __b)1316 __DEVICE__ unsigned int __vsetne2(unsigned int __a, unsigned int __b) {
1317   unsigned int r;
1318   asm("vset2.u32.u32.ne %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1319   return r;
1320 }
__vcmpne2(unsigned int __a,unsigned int __b)1321 __DEVICE__ unsigned int __vcmpne2(unsigned int __a, unsigned int __b) {
1322   return __bool2mask(__vsetne2(__a, __b), 16);
1323 }
__vsetne4(unsigned int __a,unsigned int __b)1324 __DEVICE__ unsigned int __vsetne4(unsigned int __a, unsigned int __b) {
1325   unsigned int r;
1326   asm("vset4.u32.u32.ne %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1327   return r;
1328 }
__vcmpne4(unsigned int __a,unsigned int __b)1329 __DEVICE__ unsigned int __vcmpne4(unsigned int __a, unsigned int __b) {
1330   return __bool2mask(__vsetne4(__a, __b), 8);
1331 }
1332 
1333 // Based on ITEM 23 in AIM-239: http://dspace.mit.edu/handle/1721.1/6086
1334 // (a & b) + (a | b) = a + b = (a ^ b) + 2 * (a & b) =>
1335 // (a + b) / 2 = ((a ^ b) >> 1) + (a & b)
1336 // To operate on multiple sub-elements we need to make sure to mask out bits
1337 // that crossed over into adjacent elements during the shift.
__vhaddu2(unsigned int __a,unsigned int __b)1338 __DEVICE__ unsigned int __vhaddu2(unsigned int __a, unsigned int __b) {
1339   return (((__a ^ __b) >> 1) & ~0x80008000u) + (__a & __b);
1340 }
__vhaddu4(unsigned int __a,unsigned int __b)1341 __DEVICE__ unsigned int __vhaddu4(unsigned int __a, unsigned int __b) {
1342   return (((__a ^ __b) >> 1) & ~0x80808080u) + (__a & __b);
1343 }
1344 
__vmaxs2(unsigned int __a,unsigned int __b)1345 __DEVICE__ unsigned int __vmaxs2(unsigned int __a, unsigned int __b) {
1346   unsigned int r;
1347   if ((__a & 0x8000) && (__b & 0x8000)) {
1348     // Work around a bug in ptxas which produces invalid result if low element
1349     // is negative.
1350     unsigned mask = __vcmpgts2(__a, __b);
1351     r = (__a & mask) | (__b & ~mask);
1352   } else {
1353     asm("vmax2.s32.s32.s32 %0,%1,%2,%3;"
1354         : "=r"(r)
1355         : "r"(__a), "r"(__b), "r"(0));
1356   }
1357   return r;
1358 }
__vmaxs4(unsigned int __a,unsigned int __b)1359 __DEVICE__ unsigned int __vmaxs4(unsigned int __a, unsigned int __b) {
1360   unsigned int r;
1361   asm("vmax4.s32.s32.s32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1362   return r;
1363 }
__vmaxu2(unsigned int __a,unsigned int __b)1364 __DEVICE__ unsigned int __vmaxu2(unsigned int __a, unsigned int __b) {
1365   unsigned int r;
1366   asm("vmax2.u32.u32.u32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1367   return r;
1368 }
__vmaxu4(unsigned int __a,unsigned int __b)1369 __DEVICE__ unsigned int __vmaxu4(unsigned int __a, unsigned int __b) {
1370   unsigned int r;
1371   asm("vmax4.u32.u32.u32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1372   return r;
1373 }
__vmins2(unsigned int __a,unsigned int __b)1374 __DEVICE__ unsigned int __vmins2(unsigned int __a, unsigned int __b) {
1375   unsigned int r;
1376   asm("vmin2.s32.s32.s32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1377   return r;
1378 }
__vmins4(unsigned int __a,unsigned int __b)1379 __DEVICE__ unsigned int __vmins4(unsigned int __a, unsigned int __b) {
1380   unsigned int r;
1381   asm("vmin4.s32.s32.s32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1382   return r;
1383 }
__vminu2(unsigned int __a,unsigned int __b)1384 __DEVICE__ unsigned int __vminu2(unsigned int __a, unsigned int __b) {
1385   unsigned int r;
1386   asm("vmin2.u32.u32.u32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1387   return r;
1388 }
__vminu4(unsigned int __a,unsigned int __b)1389 __DEVICE__ unsigned int __vminu4(unsigned int __a, unsigned int __b) {
1390   unsigned int r;
1391   asm("vmin4.u32.u32.u32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1392   return r;
1393 }
__vsads2(unsigned int __a,unsigned int __b)1394 __DEVICE__ unsigned int __vsads2(unsigned int __a, unsigned int __b) {
1395   unsigned int r;
1396   asm("vabsdiff2.s32.s32.s32.add %0,%1,%2,%3;"
1397       : "=r"(r)
1398       : "r"(__a), "r"(__b), "r"(0));
1399   return r;
1400 }
__vsads4(unsigned int __a,unsigned int __b)1401 __DEVICE__ unsigned int __vsads4(unsigned int __a, unsigned int __b) {
1402   unsigned int r;
1403   asm("vabsdiff4.s32.s32.s32.add %0,%1,%2,%3;"
1404       : "=r"(r)
1405       : "r"(__a), "r"(__b), "r"(0));
1406   return r;
1407 }
__vsadu2(unsigned int __a,unsigned int __b)1408 __DEVICE__ unsigned int __vsadu2(unsigned int __a, unsigned int __b) {
1409   unsigned int r;
1410   asm("vabsdiff2.u32.u32.u32.add %0,%1,%2,%3;"
1411       : "=r"(r)
1412       : "r"(__a), "r"(__b), "r"(0));
1413   return r;
1414 }
__vsadu4(unsigned int __a,unsigned int __b)1415 __DEVICE__ unsigned int __vsadu4(unsigned int __a, unsigned int __b) {
1416   unsigned int r;
1417   asm("vabsdiff4.u32.u32.u32.add %0,%1,%2,%3;"
1418       : "=r"(r)
1419       : "r"(__a), "r"(__b), "r"(0));
1420   return r;
1421 }
1422 
__vsub2(unsigned int __a,unsigned int __b)1423 __DEVICE__ unsigned int __vsub2(unsigned int __a, unsigned int __b) {
1424   unsigned int r;
1425   asm("vsub2.u32.u32.u32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1426   return r;
1427 }
__vneg2(unsigned int __a)1428 __DEVICE__ unsigned int __vneg2(unsigned int __a) { return __vsub2(0, __a); }
1429 
__vsub4(unsigned int __a,unsigned int __b)1430 __DEVICE__ unsigned int __vsub4(unsigned int __a, unsigned int __b) {
1431   unsigned int r;
1432   asm("vsub4.u32.u32.u32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
1433   return r;
1434 }
__vneg4(unsigned int __a)1435 __DEVICE__ unsigned int __vneg4(unsigned int __a) { return __vsub4(0, __a); }
__vsubss2(unsigned int __a,unsigned int __b)1436 __DEVICE__ unsigned int __vsubss2(unsigned int __a, unsigned int __b) {
1437   unsigned int r;
1438   asm("vsub2.s32.s32.s32.sat %0,%1,%2,%3;"
1439       : "=r"(r)
1440       : "r"(__a), "r"(__b), "r"(0));
1441   return r;
1442 }
__vnegss2(unsigned int __a)1443 __DEVICE__ unsigned int __vnegss2(unsigned int __a) {
1444   return __vsubss2(0, __a);
1445 }
__vsubss4(unsigned int __a,unsigned int __b)1446 __DEVICE__ unsigned int __vsubss4(unsigned int __a, unsigned int __b) {
1447   unsigned int r;
1448   asm("vsub4.s32.s32.s32.sat %0,%1,%2,%3;"
1449       : "=r"(r)
1450       : "r"(__a), "r"(__b), "r"(0));
1451   return r;
1452 }
__vnegss4(unsigned int __a)1453 __DEVICE__ unsigned int __vnegss4(unsigned int __a) {
1454   return __vsubss4(0, __a);
1455 }
__vsubus2(unsigned int __a,unsigned int __b)1456 __DEVICE__ unsigned int __vsubus2(unsigned int __a, unsigned int __b) {
1457   unsigned int r;
1458   asm("vsub2.u32.u32.u32.sat %0,%1,%2,%3;"
1459       : "=r"(r)
1460       : "r"(__a), "r"(__b), "r"(0));
1461   return r;
1462 }
__vsubus4(unsigned int __a,unsigned int __b)1463 __DEVICE__ unsigned int __vsubus4(unsigned int __a, unsigned int __b) {
1464   unsigned int r;
1465   asm("vsub4.u32.u32.u32.sat %0,%1,%2,%3;"
1466       : "=r"(r)
1467       : "r"(__a), "r"(__b), "r"(0));
1468   return r;
1469 }
1470 #endif // CUDA_VERSION >= 9020
abs(int __a)1471 __DEVICE__ int abs(int __a) { return __nv_abs(__a); }
acos(double __a)1472 __DEVICE__ double acos(double __a) { return __nv_acos(__a); }
acosf(float __a)1473 __DEVICE__ float acosf(float __a) { return __nv_acosf(__a); }
acosh(double __a)1474 __DEVICE__ double acosh(double __a) { return __nv_acosh(__a); }
acoshf(float __a)1475 __DEVICE__ float acoshf(float __a) { return __nv_acoshf(__a); }
asin(double __a)1476 __DEVICE__ double asin(double __a) { return __nv_asin(__a); }
asinf(float __a)1477 __DEVICE__ float asinf(float __a) { return __nv_asinf(__a); }
asinh(double __a)1478 __DEVICE__ double asinh(double __a) { return __nv_asinh(__a); }
asinhf(float __a)1479 __DEVICE__ float asinhf(float __a) { return __nv_asinhf(__a); }
atan(double __a)1480 __DEVICE__ double atan(double __a) { return __nv_atan(__a); }
atan2(double __a,double __b)1481 __DEVICE__ double atan2(double __a, double __b) { return __nv_atan2(__a, __b); }
atan2f(float __a,float __b)1482 __DEVICE__ float atan2f(float __a, float __b) { return __nv_atan2f(__a, __b); }
atanf(float __a)1483 __DEVICE__ float atanf(float __a) { return __nv_atanf(__a); }
atanh(double __a)1484 __DEVICE__ double atanh(double __a) { return __nv_atanh(__a); }
atanhf(float __a)1485 __DEVICE__ float atanhf(float __a) { return __nv_atanhf(__a); }
cbrt(double __a)1486 __DEVICE__ double cbrt(double __a) { return __nv_cbrt(__a); }
cbrtf(float __a)1487 __DEVICE__ float cbrtf(float __a) { return __nv_cbrtf(__a); }
ceil(double __a)1488 __DEVICE__ double ceil(double __a) { return __nv_ceil(__a); }
ceilf(float __a)1489 __DEVICE__ float ceilf(float __a) { return __nv_ceilf(__a); }
clock()1490 __DEVICE__ int clock() { return __nvvm_read_ptx_sreg_clock(); }
clock64()1491 __DEVICE__ long long clock64() { return __nvvm_read_ptx_sreg_clock64(); }
copysign(double __a,double __b)1492 __DEVICE__ double copysign(double __a, double __b) {
1493   return __nv_copysign(__a, __b);
1494 }
copysignf(float __a,float __b)1495 __DEVICE__ float copysignf(float __a, float __b) {
1496   return __nv_copysignf(__a, __b);
1497 }
cos(double __a)1498 __DEVICE__ double cos(double __a) { return __nv_cos(__a); }
cosf(float __a)1499 __DEVICE__ float cosf(float __a) {
1500   return __FAST_OR_SLOW(__nv_fast_cosf, __nv_cosf)(__a);
1501 }
cosh(double __a)1502 __DEVICE__ double cosh(double __a) { return __nv_cosh(__a); }
coshf(float __a)1503 __DEVICE__ float coshf(float __a) { return __nv_coshf(__a); }
cospi(double __a)1504 __DEVICE__ double cospi(double __a) { return __nv_cospi(__a); }
cospif(float __a)1505 __DEVICE__ float cospif(float __a) { return __nv_cospif(__a); }
cyl_bessel_i0(double __a)1506 __DEVICE__ double cyl_bessel_i0(double __a) { return __nv_cyl_bessel_i0(__a); }
cyl_bessel_i0f(float __a)1507 __DEVICE__ float cyl_bessel_i0f(float __a) { return __nv_cyl_bessel_i0f(__a); }
cyl_bessel_i1(double __a)1508 __DEVICE__ double cyl_bessel_i1(double __a) { return __nv_cyl_bessel_i1(__a); }
cyl_bessel_i1f(float __a)1509 __DEVICE__ float cyl_bessel_i1f(float __a) { return __nv_cyl_bessel_i1f(__a); }
erf(double __a)1510 __DEVICE__ double erf(double __a) { return __nv_erf(__a); }
erfc(double __a)1511 __DEVICE__ double erfc(double __a) { return __nv_erfc(__a); }
erfcf(float __a)1512 __DEVICE__ float erfcf(float __a) { return __nv_erfcf(__a); }
erfcinv(double __a)1513 __DEVICE__ double erfcinv(double __a) { return __nv_erfcinv(__a); }
erfcinvf(float __a)1514 __DEVICE__ float erfcinvf(float __a) { return __nv_erfcinvf(__a); }
erfcx(double __a)1515 __DEVICE__ double erfcx(double __a) { return __nv_erfcx(__a); }
erfcxf(float __a)1516 __DEVICE__ float erfcxf(float __a) { return __nv_erfcxf(__a); }
erff(float __a)1517 __DEVICE__ float erff(float __a) { return __nv_erff(__a); }
erfinv(double __a)1518 __DEVICE__ double erfinv(double __a) { return __nv_erfinv(__a); }
erfinvf(float __a)1519 __DEVICE__ float erfinvf(float __a) { return __nv_erfinvf(__a); }
exp(double __a)1520 __DEVICE__ double exp(double __a) { return __nv_exp(__a); }
exp10(double __a)1521 __DEVICE__ double exp10(double __a) { return __nv_exp10(__a); }
exp10f(float __a)1522 __DEVICE__ float exp10f(float __a) { return __nv_exp10f(__a); }
exp2(double __a)1523 __DEVICE__ double exp2(double __a) { return __nv_exp2(__a); }
exp2f(float __a)1524 __DEVICE__ float exp2f(float __a) { return __nv_exp2f(__a); }
expf(float __a)1525 __DEVICE__ float expf(float __a) { return __nv_expf(__a); }
expm1(double __a)1526 __DEVICE__ double expm1(double __a) { return __nv_expm1(__a); }
expm1f(float __a)1527 __DEVICE__ float expm1f(float __a) { return __nv_expm1f(__a); }
fabs(double __a)1528 __DEVICE__ double fabs(double __a) { return __nv_fabs(__a); }
fabsf(float __a)1529 __DEVICE__ float fabsf(float __a) { return __nv_fabsf(__a); }
fdim(double __a,double __b)1530 __DEVICE__ double fdim(double __a, double __b) { return __nv_fdim(__a, __b); }
fdimf(float __a,float __b)1531 __DEVICE__ float fdimf(float __a, float __b) { return __nv_fdimf(__a, __b); }
fdivide(double __a,double __b)1532 __DEVICE__ double fdivide(double __a, double __b) { return __a / __b; }
fdividef(float __a,float __b)1533 __DEVICE__ float fdividef(float __a, float __b) {
1534 #if __FAST_MATH__ && !__CUDA_PREC_DIV
1535   return __nv_fast_fdividef(__a, __b);
1536 #else
1537   return __a / __b;
1538 #endif
1539 }
floor(double __f)1540 __DEVICE__ double floor(double __f) { return __nv_floor(__f); }
floorf(float __f)1541 __DEVICE__ float floorf(float __f) { return __nv_floorf(__f); }
fma(double __a,double __b,double __c)1542 __DEVICE__ double fma(double __a, double __b, double __c) {
1543   return __nv_fma(__a, __b, __c);
1544 }
fmaf(float __a,float __b,float __c)1545 __DEVICE__ float fmaf(float __a, float __b, float __c) {
1546   return __nv_fmaf(__a, __b, __c);
1547 }
fmax(double __a,double __b)1548 __DEVICE__ double fmax(double __a, double __b) { return __nv_fmax(__a, __b); }
fmaxf(float __a,float __b)1549 __DEVICE__ float fmaxf(float __a, float __b) { return __nv_fmaxf(__a, __b); }
fmin(double __a,double __b)1550 __DEVICE__ double fmin(double __a, double __b) { return __nv_fmin(__a, __b); }
fminf(float __a,float __b)1551 __DEVICE__ float fminf(float __a, float __b) { return __nv_fminf(__a, __b); }
fmod(double __a,double __b)1552 __DEVICE__ double fmod(double __a, double __b) { return __nv_fmod(__a, __b); }
fmodf(float __a,float __b)1553 __DEVICE__ float fmodf(float __a, float __b) { return __nv_fmodf(__a, __b); }
frexp(double __a,int * __b)1554 __DEVICE__ double frexp(double __a, int *__b) { return __nv_frexp(__a, __b); }
frexpf(float __a,int * __b)1555 __DEVICE__ float frexpf(float __a, int *__b) { return __nv_frexpf(__a, __b); }
hypot(double __a,double __b)1556 __DEVICE__ double hypot(double __a, double __b) { return __nv_hypot(__a, __b); }
hypotf(float __a,float __b)1557 __DEVICE__ float hypotf(float __a, float __b) { return __nv_hypotf(__a, __b); }
ilogb(double __a)1558 __DEVICE__ int ilogb(double __a) { return __nv_ilogb(__a); }
ilogbf(float __a)1559 __DEVICE__ int ilogbf(float __a) { return __nv_ilogbf(__a); }
j0(double __a)1560 __DEVICE__ double j0(double __a) { return __nv_j0(__a); }
j0f(float __a)1561 __DEVICE__ float j0f(float __a) { return __nv_j0f(__a); }
j1(double __a)1562 __DEVICE__ double j1(double __a) { return __nv_j1(__a); }
j1f(float __a)1563 __DEVICE__ float j1f(float __a) { return __nv_j1f(__a); }
jn(int __n,double __a)1564 __DEVICE__ double jn(int __n, double __a) { return __nv_jn(__n, __a); }
jnf(int __n,float __a)1565 __DEVICE__ float jnf(int __n, float __a) { return __nv_jnf(__n, __a); }
1566 #if defined(__LP64__)
labs(long __a)1567 __DEVICE__ long labs(long __a) { return llabs(__a); };
1568 #else
labs(long __a)1569 __DEVICE__ long labs(long __a) { return __nv_abs(__a); };
1570 #endif
ldexp(double __a,int __b)1571 __DEVICE__ double ldexp(double __a, int __b) { return __nv_ldexp(__a, __b); }
ldexpf(float __a,int __b)1572 __DEVICE__ float ldexpf(float __a, int __b) { return __nv_ldexpf(__a, __b); }
lgamma(double __a)1573 __DEVICE__ double lgamma(double __a) { return __nv_lgamma(__a); }
lgammaf(float __a)1574 __DEVICE__ float lgammaf(float __a) { return __nv_lgammaf(__a); }
llabs(long long __a)1575 __DEVICE__ long long llabs(long long __a) { return __nv_llabs(__a); }
llmax(long long __a,long long __b)1576 __DEVICE__ long long llmax(long long __a, long long __b) {
1577   return __nv_llmax(__a, __b);
1578 }
llmin(long long __a,long long __b)1579 __DEVICE__ long long llmin(long long __a, long long __b) {
1580   return __nv_llmin(__a, __b);
1581 }
llrint(double __a)1582 __DEVICE__ long long llrint(double __a) { return __nv_llrint(__a); }
llrintf(float __a)1583 __DEVICE__ long long llrintf(float __a) { return __nv_llrintf(__a); }
llround(double __a)1584 __DEVICE__ long long llround(double __a) { return __nv_llround(__a); }
llroundf(float __a)1585 __DEVICE__ long long llroundf(float __a) { return __nv_llroundf(__a); }
log(double __a)1586 __DEVICE__ double log(double __a) { return __nv_log(__a); }
log10(double __a)1587 __DEVICE__ double log10(double __a) { return __nv_log10(__a); }
log10f(float __a)1588 __DEVICE__ float log10f(float __a) { return __nv_log10f(__a); }
log1p(double __a)1589 __DEVICE__ double log1p(double __a) { return __nv_log1p(__a); }
log1pf(float __a)1590 __DEVICE__ float log1pf(float __a) { return __nv_log1pf(__a); }
log2(double __a)1591 __DEVICE__ double log2(double __a) { return __nv_log2(__a); }
log2f(float __a)1592 __DEVICE__ float log2f(float __a) {
1593   return __FAST_OR_SLOW(__nv_fast_log2f, __nv_log2f)(__a);
1594 }
logb(double __a)1595 __DEVICE__ double logb(double __a) { return __nv_logb(__a); }
logbf(float __a)1596 __DEVICE__ float logbf(float __a) { return __nv_logbf(__a); }
logf(float __a)1597 __DEVICE__ float logf(float __a) {
1598   return __FAST_OR_SLOW(__nv_fast_logf, __nv_logf)(__a);
1599 }
1600 #if defined(__LP64__)
lrint(double __a)1601 __DEVICE__ long lrint(double __a) { return llrint(__a); }
lrintf(float __a)1602 __DEVICE__ long lrintf(float __a) { return __float2ll_rn(__a); }
lround(double __a)1603 __DEVICE__ long lround(double __a) { return llround(__a); }
lroundf(float __a)1604 __DEVICE__ long lroundf(float __a) { return llroundf(__a); }
1605 #else
lrint(double __a)1606 __DEVICE__ long lrint(double __a) { return (long)rint(__a); }
lrintf(float __a)1607 __DEVICE__ long lrintf(float __a) { return __float2int_rn(__a); }
lround(double __a)1608 __DEVICE__ long lround(double __a) { return round(__a); }
lroundf(float __a)1609 __DEVICE__ long lroundf(float __a) { return roundf(__a); }
1610 #endif
max(int __a,int __b)1611 __DEVICE__ int max(int __a, int __b) { return __nv_max(__a, __b); }
memcpy(void * __a,const void * __b,size_t __c)1612 __DEVICE__ void *memcpy(void *__a, const void *__b, size_t __c) {
1613   return __builtin_memcpy(__a, __b, __c);
1614 }
memset(void * __a,int __b,size_t __c)1615 __DEVICE__ void *memset(void *__a, int __b, size_t __c) {
1616   return __builtin_memset(__a, __b, __c);
1617 }
min(int __a,int __b)1618 __DEVICE__ int min(int __a, int __b) { return __nv_min(__a, __b); }
modf(double __a,double * __b)1619 __DEVICE__ double modf(double __a, double *__b) { return __nv_modf(__a, __b); }
modff(float __a,float * __b)1620 __DEVICE__ float modff(float __a, float *__b) { return __nv_modff(__a, __b); }
nearbyint(double __a)1621 __DEVICE__ double nearbyint(double __a) { return __nv_nearbyint(__a); }
nearbyintf(float __a)1622 __DEVICE__ float nearbyintf(float __a) { return __nv_nearbyintf(__a); }
nextafter(double __a,double __b)1623 __DEVICE__ double nextafter(double __a, double __b) {
1624   return __nv_nextafter(__a, __b);
1625 }
nextafterf(float __a,float __b)1626 __DEVICE__ float nextafterf(float __a, float __b) {
1627   return __nv_nextafterf(__a, __b);
1628 }
norm(int __dim,const double * __t)1629 __DEVICE__ double norm(int __dim, const double *__t) {
1630   return __nv_norm(__dim, __t);
1631 }
norm3d(double __a,double __b,double __c)1632 __DEVICE__ double norm3d(double __a, double __b, double __c) {
1633   return __nv_norm3d(__a, __b, __c);
1634 }
norm3df(float __a,float __b,float __c)1635 __DEVICE__ float norm3df(float __a, float __b, float __c) {
1636   return __nv_norm3df(__a, __b, __c);
1637 }
norm4d(double __a,double __b,double __c,double __d)1638 __DEVICE__ double norm4d(double __a, double __b, double __c, double __d) {
1639   return __nv_norm4d(__a, __b, __c, __d);
1640 }
norm4df(float __a,float __b,float __c,float __d)1641 __DEVICE__ float norm4df(float __a, float __b, float __c, float __d) {
1642   return __nv_norm4df(__a, __b, __c, __d);
1643 }
normcdf(double __a)1644 __DEVICE__ double normcdf(double __a) { return __nv_normcdf(__a); }
normcdff(float __a)1645 __DEVICE__ float normcdff(float __a) { return __nv_normcdff(__a); }
normcdfinv(double __a)1646 __DEVICE__ double normcdfinv(double __a) { return __nv_normcdfinv(__a); }
normcdfinvf(float __a)1647 __DEVICE__ float normcdfinvf(float __a) { return __nv_normcdfinvf(__a); }
normf(int __dim,const float * __t)1648 __DEVICE__ float normf(int __dim, const float *__t) {
1649   return __nv_normf(__dim, __t);
1650 }
pow(double __a,double __b)1651 __DEVICE__ double pow(double __a, double __b) { return __nv_pow(__a, __b); }
powf(float __a,float __b)1652 __DEVICE__ float powf(float __a, float __b) { return __nv_powf(__a, __b); }
powi(double __a,int __b)1653 __DEVICE__ double powi(double __a, int __b) { return __nv_powi(__a, __b); }
powif(float __a,int __b)1654 __DEVICE__ float powif(float __a, int __b) { return __nv_powif(__a, __b); }
rcbrt(double __a)1655 __DEVICE__ double rcbrt(double __a) { return __nv_rcbrt(__a); }
rcbrtf(float __a)1656 __DEVICE__ float rcbrtf(float __a) { return __nv_rcbrtf(__a); }
remainder(double __a,double __b)1657 __DEVICE__ double remainder(double __a, double __b) {
1658   return __nv_remainder(__a, __b);
1659 }
remainderf(float __a,float __b)1660 __DEVICE__ float remainderf(float __a, float __b) {
1661   return __nv_remainderf(__a, __b);
1662 }
remquo(double __a,double __b,int * __c)1663 __DEVICE__ double remquo(double __a, double __b, int *__c) {
1664   return __nv_remquo(__a, __b, __c);
1665 }
remquof(float __a,float __b,int * __c)1666 __DEVICE__ float remquof(float __a, float __b, int *__c) {
1667   return __nv_remquof(__a, __b, __c);
1668 }
rhypot(double __a,double __b)1669 __DEVICE__ double rhypot(double __a, double __b) {
1670   return __nv_rhypot(__a, __b);
1671 }
rhypotf(float __a,float __b)1672 __DEVICE__ float rhypotf(float __a, float __b) {
1673   return __nv_rhypotf(__a, __b);
1674 }
rint(double __a)1675 __DEVICE__ double rint(double __a) { return __nv_rint(__a); }
rintf(float __a)1676 __DEVICE__ float rintf(float __a) { return __nv_rintf(__a); }
rnorm(int __a,const double * __b)1677 __DEVICE__ double rnorm(int __a, const double *__b) {
1678   return __nv_rnorm(__a, __b);
1679 }
rnorm3d(double __a,double __b,double __c)1680 __DEVICE__ double rnorm3d(double __a, double __b, double __c) {
1681   return __nv_rnorm3d(__a, __b, __c);
1682 }
rnorm3df(float __a,float __b,float __c)1683 __DEVICE__ float rnorm3df(float __a, float __b, float __c) {
1684   return __nv_rnorm3df(__a, __b, __c);
1685 }
rnorm4d(double __a,double __b,double __c,double __d)1686 __DEVICE__ double rnorm4d(double __a, double __b, double __c, double __d) {
1687   return __nv_rnorm4d(__a, __b, __c, __d);
1688 }
rnorm4df(float __a,float __b,float __c,float __d)1689 __DEVICE__ float rnorm4df(float __a, float __b, float __c, float __d) {
1690   return __nv_rnorm4df(__a, __b, __c, __d);
1691 }
rnormf(int __dim,const float * __t)1692 __DEVICE__ float rnormf(int __dim, const float *__t) {
1693   return __nv_rnormf(__dim, __t);
1694 }
round(double __a)1695 __DEVICE__ double round(double __a) { return __nv_round(__a); }
roundf(float __a)1696 __DEVICE__ float roundf(float __a) { return __nv_roundf(__a); }
rsqrt(double __a)1697 __DEVICE__ double rsqrt(double __a) { return __nv_rsqrt(__a); }
rsqrtf(float __a)1698 __DEVICE__ float rsqrtf(float __a) { return __nv_rsqrtf(__a); }
scalbn(double __a,int __b)1699 __DEVICE__ double scalbn(double __a, int __b) { return __nv_scalbn(__a, __b); }
scalbnf(float __a,int __b)1700 __DEVICE__ float scalbnf(float __a, int __b) { return __nv_scalbnf(__a, __b); }
scalbln(double __a,long __b)1701 __DEVICE__ double scalbln(double __a, long __b) {
1702   if (__b > INT_MAX)
1703     return __a > 0 ? HUGE_VAL : -HUGE_VAL;
1704   if (__b < INT_MIN)
1705     return __a > 0 ? 0.0 : -0.0;
1706   return scalbn(__a, (int)__b);
1707 }
scalblnf(float __a,long __b)1708 __DEVICE__ float scalblnf(float __a, long __b) {
1709   if (__b > INT_MAX)
1710     return __a > 0 ? HUGE_VALF : -HUGE_VALF;
1711   if (__b < INT_MIN)
1712     return __a > 0 ? 0.f : -0.f;
1713   return scalbnf(__a, (int)__b);
1714 }
sin(double __a)1715 __DEVICE__ double sin(double __a) { return __nv_sin(__a); }
sincos(double __a,double * __sptr,double * __cptr)1716 __DEVICE__ void sincos(double __a, double *__sptr, double *__cptr) {
1717   return __nv_sincos(__a, __sptr, __cptr);
1718 }
sincosf(float __a,float * __sptr,float * __cptr)1719 __DEVICE__ void sincosf(float __a, float *__sptr, float *__cptr) {
1720   return __FAST_OR_SLOW(__nv_fast_sincosf, __nv_sincosf)(__a, __sptr, __cptr);
1721 }
sincospi(double __a,double * __sptr,double * __cptr)1722 __DEVICE__ void sincospi(double __a, double *__sptr, double *__cptr) {
1723   return __nv_sincospi(__a, __sptr, __cptr);
1724 }
sincospif(float __a,float * __sptr,float * __cptr)1725 __DEVICE__ void sincospif(float __a, float *__sptr, float *__cptr) {
1726   return __nv_sincospif(__a, __sptr, __cptr);
1727 }
sinf(float __a)1728 __DEVICE__ float sinf(float __a) {
1729   return __FAST_OR_SLOW(__nv_fast_sinf, __nv_sinf)(__a);
1730 }
sinh(double __a)1731 __DEVICE__ double sinh(double __a) { return __nv_sinh(__a); }
sinhf(float __a)1732 __DEVICE__ float sinhf(float __a) { return __nv_sinhf(__a); }
sinpi(double __a)1733 __DEVICE__ double sinpi(double __a) { return __nv_sinpi(__a); }
sinpif(float __a)1734 __DEVICE__ float sinpif(float __a) { return __nv_sinpif(__a); }
sqrt(double __a)1735 __DEVICE__ double sqrt(double __a) { return __nv_sqrt(__a); }
sqrtf(float __a)1736 __DEVICE__ float sqrtf(float __a) { return __nv_sqrtf(__a); }
tan(double __a)1737 __DEVICE__ double tan(double __a) { return __nv_tan(__a); }
tanf(float __a)1738 __DEVICE__ float tanf(float __a) { return __nv_tanf(__a); }
tanh(double __a)1739 __DEVICE__ double tanh(double __a) { return __nv_tanh(__a); }
tanhf(float __a)1740 __DEVICE__ float tanhf(float __a) { return __nv_tanhf(__a); }
tgamma(double __a)1741 __DEVICE__ double tgamma(double __a) { return __nv_tgamma(__a); }
tgammaf(float __a)1742 __DEVICE__ float tgammaf(float __a) { return __nv_tgammaf(__a); }
trunc(double __a)1743 __DEVICE__ double trunc(double __a) { return __nv_trunc(__a); }
truncf(float __a)1744 __DEVICE__ float truncf(float __a) { return __nv_truncf(__a); }
ullmax(unsigned long long __a,unsigned long long __b)1745 __DEVICE__ unsigned long long ullmax(unsigned long long __a,
1746                                      unsigned long long __b) {
1747   return __nv_ullmax(__a, __b);
1748 }
ullmin(unsigned long long __a,unsigned long long __b)1749 __DEVICE__ unsigned long long ullmin(unsigned long long __a,
1750                                      unsigned long long __b) {
1751   return __nv_ullmin(__a, __b);
1752 }
umax(unsigned int __a,unsigned int __b)1753 __DEVICE__ unsigned int umax(unsigned int __a, unsigned int __b) {
1754   return __nv_umax(__a, __b);
1755 }
umin(unsigned int __a,unsigned int __b)1756 __DEVICE__ unsigned int umin(unsigned int __a, unsigned int __b) {
1757   return __nv_umin(__a, __b);
1758 }
y0(double __a)1759 __DEVICE__ double y0(double __a) { return __nv_y0(__a); }
y0f(float __a)1760 __DEVICE__ float y0f(float __a) { return __nv_y0f(__a); }
y1(double __a)1761 __DEVICE__ double y1(double __a) { return __nv_y1(__a); }
y1f(float __a)1762 __DEVICE__ float y1f(float __a) { return __nv_y1f(__a); }
yn(int __a,double __b)1763 __DEVICE__ double yn(int __a, double __b) { return __nv_yn(__a, __b); }
ynf(int __a,float __b)1764 __DEVICE__ float ynf(int __a, float __b) { return __nv_ynf(__a, __b); }
1765 
1766 #pragma pop_macro("__DEVICE__")
1767 #pragma pop_macro("__FAST_OR_SLOW")
1768 #endif // __CLANG_CUDA_DEVICE_FUNCTIONS_H__
1769