Coverage for cuda/bindings/_internal/nvvm.pyx: 75.59%
213 statements
« prev ^ index » next coverage.py v7.16.0, created at 2026-09-10 02:27 +0000
« prev ^ index » next coverage.py v7.16.0, created at 2026-09-10 02:27 +0000
1# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2#
3# SPDX-License-Identifier: Apache-2.0
4#
5# This code was automatically generated across versions from 12.0.1 to 13.3.0. Do not modify it directly.
6# CYTHON-BINDINGS-GENERATED-DO-NOT-MODIFY-THIS-FILE: format=1; content-sha256=5d1c4358f6dd269e4a5313c7a717acafaebf90ab58acc30002affa060c8389b4
9# <<<< PREAMBLE CONTENT >>>>
11cdef extern from * nogil:
12 """
13 #if defined(_MSC_VER) && !defined(__clang__)
14 #include <intrin.h>
15 static __forceinline int atomic_int_load(int *p) {
16 int v = *(int volatile *)p; _ReadBarrier(); return v;
17 }
18 static __forceinline void atomic_int_store(int *p, int v) {
19 _WriteBarrier(); *(int volatile *)p = v;
20 }
21 #elif defined(__cplusplus)
22 /* GCC/Clang __atomic builtins work in any C++ standard without headers */
23 static inline int atomic_int_load(int *p) {
24 return __atomic_load_n(p, __ATOMIC_ACQUIRE);
25 }
26 static inline void atomic_int_store(int *p, int v) {
27 __atomic_store_n(p, v, __ATOMIC_RELEASE);
28 }
29 #else
30 #include <stdatomic.h>
31 static inline int atomic_int_load(int *p) {
32 return (int)atomic_load_explicit((atomic_int *)p, memory_order_acquire);
33 }
34 static inline void atomic_int_store(int *p, int v) {
35 atomic_store_explicit((atomic_int *)p, v, memory_order_release);
36 }
37 #endif
39 """
40 cdef int _cyb_atomic_int_load "atomic_int_load"(int *p) nogil
41 cdef void _cyb_atomic_int_store "atomic_int_store"(int *p, int v) nogil
43cdef extern from "<dlfcn.h>":
44 void* _cyb_dlsym "dlsym"(void*, const char*) nogil
45 const void * _cyb_RTLD_DEFAULT "RTLD_DEFAULT"
47from libc.stdint cimport intptr_t
49import threading as _cyb_threading
51cdef int _cyb___py_nvvm_init = 0
52cdef dict _cyb_func_ptrs = None
53cdef object _cyb_symbol_lock = _cyb_threading.Lock()
55# <<<< END OF PREAMBLE CONTENT >>>>
57from libc.stdint cimport uintptr_t
59from .utils import FunctionNotFoundError, NotSupportedError
60from cuda.pathfinder import load_nvidia_dynamic_lib
63###############################################################################
64# Wrapper init
65###############################################################################
67cdef void* __nvvmGetErrorString = NULL
68cdef void* __nvvmVersion = NULL
69cdef void* __nvvmIRVersion = NULL
70cdef void* __nvvmCreateProgram = NULL
71cdef void* __nvvmDestroyProgram = NULL
72cdef void* __nvvmAddModuleToProgram = NULL
73cdef void* __nvvmLazyAddModuleToProgram = NULL
74cdef void* __nvvmCompileProgram = NULL
75cdef void* __nvvmVerifyProgram = NULL
76cdef void* __nvvmGetCompiledResultSize = NULL
77cdef void* __nvvmGetCompiledResult = NULL
78cdef void* __nvvmGetProgramLogSize = NULL
79cdef void* __nvvmGetProgramLog = NULL
80cdef void* __nvvmLLVMVersion = NULL
82cdef int _init_nvvm() except -1 nogil:
83 global _cyb___py_nvvm_init
84 cdef void* handle = NULL
85 with gil, _cyb_symbol_lock:
86 if _cyb___py_nvvm_init: return 0
88 global __nvvmGetErrorString
89 __nvvmGetErrorString = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmGetErrorString')
90 if __nvvmGetErrorString == NULL:
91 if handle == NULL:
92 handle = load_library()
93 __nvvmGetErrorString = _cyb_dlsym(handle, 'nvvmGetErrorString')
95 global __nvvmVersion
96 __nvvmVersion = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmVersion')
97 if __nvvmVersion == NULL:
98 if handle == NULL:
99 handle = load_library()
100 __nvvmVersion = _cyb_dlsym(handle, 'nvvmVersion')
102 global __nvvmIRVersion
103 __nvvmIRVersion = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmIRVersion')
104 if __nvvmIRVersion == NULL:
105 if handle == NULL:
106 handle = load_library()
107 __nvvmIRVersion = _cyb_dlsym(handle, 'nvvmIRVersion')
109 global __nvvmCreateProgram
110 __nvvmCreateProgram = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmCreateProgram')
111 if __nvvmCreateProgram == NULL:
112 if handle == NULL:
113 handle = load_library()
114 __nvvmCreateProgram = _cyb_dlsym(handle, 'nvvmCreateProgram')
116 global __nvvmDestroyProgram
117 __nvvmDestroyProgram = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmDestroyProgram')
118 if __nvvmDestroyProgram == NULL:
119 if handle == NULL:
120 handle = load_library()
121 __nvvmDestroyProgram = _cyb_dlsym(handle, 'nvvmDestroyProgram')
123 global __nvvmAddModuleToProgram
124 __nvvmAddModuleToProgram = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmAddModuleToProgram')
125 if __nvvmAddModuleToProgram == NULL:
126 if handle == NULL:
127 handle = load_library()
128 __nvvmAddModuleToProgram = _cyb_dlsym(handle, 'nvvmAddModuleToProgram')
130 global __nvvmLazyAddModuleToProgram
131 __nvvmLazyAddModuleToProgram = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmLazyAddModuleToProgram')
132 if __nvvmLazyAddModuleToProgram == NULL:
133 if handle == NULL:
134 handle = load_library()
135 __nvvmLazyAddModuleToProgram = _cyb_dlsym(handle, 'nvvmLazyAddModuleToProgram')
137 global __nvvmCompileProgram
138 __nvvmCompileProgram = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmCompileProgram') 2a 2 3 D ( E ) F * G + H I Y 1 b , c - d . e / f : g ; h = i ? 4 R Q bb@ [ ' S ] T ^ U _ V ` W { X | 5 } m ~ n abebZ J 0 j K o p q r s t u v fbw x y z A B C k l 6 7 8 9 ! # $ % L M N O P
139 if __nvvmCompileProgram == NULL:
140 if handle == NULL:
141 handle = load_library()
142 __nvvmCompileProgram = _cyb_dlsym(handle, 'nvvmCompileProgram')
144 global __nvvmVerifyProgram
145 __nvvmVerifyProgram = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmVerifyProgram')
146 if __nvvmVerifyProgram == NULL:
147 if handle == NULL:
148 handle = load_library()
149 __nvvmVerifyProgram = _cyb_dlsym(handle, 'nvvmVerifyProgram')
151 global __nvvmGetCompiledResultSize
152 __nvvmGetCompiledResultSize = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmGetCompiledResultSize')
153 if __nvvmGetCompiledResultSize == NULL:
154 if handle == NULL:
155 handle = load_library()
156 __nvvmGetCompiledResultSize = _cyb_dlsym(handle, 'nvvmGetCompiledResultSize')
158 global __nvvmGetCompiledResult
159 __nvvmGetCompiledResult = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmGetCompiledResult')
160 if __nvvmGetCompiledResult == NULL:
161 if handle == NULL:
162 handle = load_library()
163 __nvvmGetCompiledResult = _cyb_dlsym(handle, 'nvvmGetCompiledResult')
165 global __nvvmGetProgramLogSize
166 __nvvmGetProgramLogSize = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmGetProgramLogSize')
167 if __nvvmGetProgramLogSize == NULL:
168 if handle == NULL:
169 handle = load_library()
170 __nvvmGetProgramLogSize = _cyb_dlsym(handle, 'nvvmGetProgramLogSize')
172 global __nvvmGetProgramLog
173 __nvvmGetProgramLog = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmGetProgramLog')
174 if __nvvmGetProgramLog == NULL:
175 if handle == NULL:
176 handle = load_library()
177 __nvvmGetProgramLog = _cyb_dlsym(handle, 'nvvmGetProgramLog')
179 global __nvvmLLVMVersion
180 __nvvmLLVMVersion = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmLLVMVersion')
181 if __nvvmLLVMVersion == NULL:
182 if handle == NULL:
183 handle = load_library()
184 __nvvmLLVMVersion = _cyb_dlsym(handle, 'nvvmLLVMVersion')
186 _cyb_atomic_int_store(<int *>&_cyb___py_nvvm_init, 1)
187 return 0
189cdef inline int _check_or_init_nvvm() except -1 nogil:
190 if _cyb_atomic_int_load(<int *>&_cyb___py_nvvm_init): 2a 2 3 D ( E ) F * G + H I Y 1 b , c - d . e / f : g ; h = i ? 4 R Q bb@ [ ' S ] T ^ U _ V ` W { X | 5 } m ~ n abcbZ J 0 j K o p q r s t u v w dbx y z A B C k l 6 7 8 9 ! # $ % L M N O P
191 return 0 2a 2 3 D ( E ) F * G + H I Y 1 b , c - d . e / f : g ; h = i ? 4 R Q bb@ [ ' S ] T ^ U _ V ` W { X | 5 } m ~ n abcbZ J 0 j K o p q r s t u v w dbx y z A B C k l 6 7 8 9 ! # $ % L M N O P
193 return _init_nvvm()
196cpdef dict _inspect_function_pointers():
197 global _cyb_func_ptrs
198 if _cyb_func_ptrs is not None:
199 return _cyb_func_ptrs 1aLMNOP
201 _check_or_init_nvvm()
202 cdef dict data = {}
203 global __nvvmGetErrorString
204 data["__nvvmGetErrorString"] = <intptr_t>__nvvmGetErrorString
206 global __nvvmVersion
207 data["__nvvmVersion"] = <intptr_t>__nvvmVersion
209 global __nvvmIRVersion
210 data["__nvvmIRVersion"] = <intptr_t>__nvvmIRVersion
212 global __nvvmCreateProgram
213 data["__nvvmCreateProgram"] = <intptr_t>__nvvmCreateProgram
215 global __nvvmDestroyProgram
216 data["__nvvmDestroyProgram"] = <intptr_t>__nvvmDestroyProgram
218 global __nvvmAddModuleToProgram
219 data["__nvvmAddModuleToProgram"] = <intptr_t>__nvvmAddModuleToProgram
221 global __nvvmLazyAddModuleToProgram
222 data["__nvvmLazyAddModuleToProgram"] = <intptr_t>__nvvmLazyAddModuleToProgram
224 global __nvvmCompileProgram
225 data["__nvvmCompileProgram"] = <intptr_t>__nvvmCompileProgram 1a'6789!#$%
227 global __nvvmVerifyProgram
228 data["__nvvmVerifyProgram"] = <intptr_t>__nvvmVerifyProgram 1a'6789!#$%
230 global __nvvmGetCompiledResultSize
231 data["__nvvmGetCompiledResultSize"] = <intptr_t>__nvvmGetCompiledResultSize
233 global __nvvmGetCompiledResult
234 data["__nvvmGetCompiledResult"] = <intptr_t>__nvvmGetCompiledResult 2a ( ) * + , - . / : ; = ? @ ] ^ _ ` { | ~ abfbk l 6 7 8 9 ! # $ % L M N O P
236 global __nvvmGetProgramLogSize
237 data["__nvvmGetProgramLogSize"] = <intptr_t>__nvvmGetProgramLogSize
239 global __nvvmGetProgramLog
240 data["__nvvmGetProgramLog"] = <intptr_t>__nvvmGetProgramLog
242 global __nvvmLLVMVersion
243 data["__nvvmLLVMVersion"] = <intptr_t>__nvvmLLVMVersion
244 _cyb_func_ptrs = data 1a23DEFGHIY1bcdefghi4RQSTUVWX5mnZJ0jKopqrstuvwxyzABCklLMNOP
245 return data 1a23DEFGHIY1bcdefghi4RQSTUVWX5mnZJ0jKopqrstuvwxyzABCklLMNOP
248cpdef _inspect_function_pointer(str name): 1a23DEFGHIY1bcdefghi4RQSTUVWX5mnZJ0jKopqrstuvwxyzABCklLMNOP
249 global _cyb_func_ptrs
250 if _cyb_func_ptrs is None: 1aLMNOP
251 _cyb_func_ptrs = _inspect_function_pointers()
252 return _cyb_func_ptrs[name] 1aLMNOP
257cdef void* load_library() except* with gil:
258 cdef uintptr_t handle = load_nvidia_dynamic_lib("nvvm")._handle_uint 2a 2 3 D E F G H I Y 1 b c d e f g h i 4 R Q S T U V W X } m n ebZ J 0 j o p q r s t u v w x y z A B C k l L M N O P
259 return <void*>handle
262###############################################################################
263# Wrapper functions
264###############################################################################
266cdef const char* _nvvmGetErrorString(nvvmResult result) except?NULL nogil:
267 global __nvvmGetErrorString
268 _check_or_init_nvvm() 2a D E F G H I b c d e f g h i bbS T U V W X 5 m n Z J 0 j K o p q r s t u v w x y z A B C k l L M N O P
269 if __nvvmGetErrorString == NULL: 2bb
270 with gil:
271 raise FunctionNotFoundError("function nvvmGetErrorString is not found")
272 return (<const char* (*)(nvvmResult) noexcept nogil>__nvvmGetErrorString)( 2a bb
273 result)
276cdef nvvmResult _nvvmVersion(int* major, int* minor) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil:
277 global __nvvmVersion
278 _check_or_init_nvvm() 1a'j6789!#$%
279 if __nvvmVersion == NULL: 1a'6789!#$%
280 with gil:
281 raise FunctionNotFoundError("function nvvmVersion is not found")
282 return (<nvvmResult (*)(int*, int*) noexcept nogil>__nvvmVersion)( 1a'6789!#$%
283 major, minor)
286cdef nvvmResult _nvvmIRVersion(int* majorIR, int* minorIR, int* majorDbg, int* minorDbg) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil:
287 global __nvvmIRVersion
288 _check_or_init_nvvm() 2a D ( ) F * + H Y b , c - d . e / f : g ; h = i ? @ ] ^ _ ` { | m ~ n abj K o p q r s t u v w dbx y z A B C k l 6 7 8 9 ! # $ % L M N O P
289 if __nvvmIRVersion == NULL: 2a ( ) * + , - . / : ; = ? @ ] ^ _ ` { | ~ abdbk l 6 7 8 9 ! # $ % L M N O P
290 with gil:
291 raise FunctionNotFoundError("function nvvmIRVersion is not found")
292 return (<nvvmResult (*)(int*, int*, int*, int*) noexcept nogil>__nvvmIRVersion)( 2a ( ) * + , - . / : ; = ? @ ] ^ _ ` { | ~ abdbk l 6 7 8 9 ! # $ % L M N O P
293 majorIR, minorIR, majorDbg, minorDbg)
296cdef nvvmResult _nvvmCreateProgram(nvvmProgram* prog) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil:
297 global __nvvmCreateProgram
298 _check_or_init_nvvm() 1a23DEFGHIY1bcdefghi4RQSTUVWX5mnZJ0jKopqrstuvwxyzABCklLMNOP
299 if __nvvmCreateProgram == NULL: 1a23DEFGHIY1bcdefghi4RQSTUVWX5mnZJ0jKopqrstuvwxyzABCklLMNOP
300 with gil:
301 raise FunctionNotFoundError("function nvvmCreateProgram is not found")
302 return (<nvvmResult (*)(nvvmProgram*) noexcept nogil>__nvvmCreateProgram)( 1a23DEFGHIY1bcdefghi4RQSTUVWX5mnZJ0jKopqrstuvwxyzABCklLMNOP
303 prog)
306cdef nvvmResult _nvvmDestroyProgram(nvvmProgram* prog) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil:
307 global __nvvmDestroyProgram
308 _check_or_init_nvvm() 2a 2 3 D E F G H I Y 1 b c d e f g h i 4 R Q S T U V W X } m n cbZ J 0 j K o p q r s t u v w x y z A B C k l L M N O P
309 if __nvvmDestroyProgram == NULL: 2a 2 3 D E F G H I Y 1 b c d e f g h i 4 R Q S T U V W X } m n cbZ J 0 j o p q r s t u v w x y z A B C k l L M N O P
310 with gil:
311 raise FunctionNotFoundError("function nvvmDestroyProgram is not found")
312 return (<nvvmResult (*)(nvvmProgram*) noexcept nogil>__nvvmDestroyProgram)( 2a 2 3 D E F G H I Y 1 b c d e f g h i 4 R Q S T U V W X } m n cbZ J 0 j o p q r s t u v w x y z A B C k l L M N O P
313 prog)
316cdef nvvmResult _nvvmAddModuleToProgram(nvvmProgram prog, const char* buffer, size_t size, const char* name) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil:
317 global __nvvmAddModuleToProgram
318 _check_or_init_nvvm() 1aDEFGHIbcdefghiRSTUVWX5mnZJ0jKopqrstuvwxyzABCklLMNOP
319 if __nvvmAddModuleToProgram == NULL: 1aDEFGHIbcdefghiSTUVWX5mnZJ0jKopqrstuvwxyzABCklLMNOP
320 with gil:
321 raise FunctionNotFoundError("function nvvmAddModuleToProgram is not found")
322 return (<nvvmResult (*)(nvvmProgram, const char*, size_t, const char*) noexcept nogil>__nvvmAddModuleToProgram)( 1aDEFGHIbcdefghiSTUVWX5mnZJ0jKopqrstuvwxyzABCklLMNOP
323 prog, buffer, size, name)
326cdef nvvmResult _nvvmLazyAddModuleToProgram(nvvmProgram prog, const char* buffer, size_t size, const char* name) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil:
327 global __nvvmLazyAddModuleToProgram
328 _check_or_init_nvvm() 1DEFGHIbcdefghiQJj
329 if __nvvmLazyAddModuleToProgram == NULL: 1j
330 with gil:
331 raise FunctionNotFoundError("function nvvmLazyAddModuleToProgram is not found")
332 return (<nvvmResult (*)(nvvmProgram, const char*, size_t, const char*) noexcept nogil>__nvvmLazyAddModuleToProgram)( 1aj
333 prog, buffer, size, name)
336cdef nvvmResult _nvvmCompileProgram(nvvmProgram prog, int numOptions, const char** options) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil:
337 global __nvvmCompileProgram
338 _check_or_init_nvvm() 1aDEFGHIYbcdefghiQmnJjKopqrstuvwxyzABCklLMNOP
339 if __nvvmCompileProgram == NULL: 1aDFHYbcdefghimnjKopqrstuvwxyzABCklLMNOP
340 with gil:
341 raise FunctionNotFoundError("function nvvmCompileProgram is not found")
342 return (<nvvmResult (*)(nvvmProgram, int, const char**) noexcept nogil>__nvvmCompileProgram)( 1aDFHYbcdefghimnjKopqrstuvwxyzABCklLMNOP
343 prog, numOptions, options)
346cdef nvvmResult _nvvmVerifyProgram(nvvmProgram prog, int numOptions, const char** options) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil:
347 global __nvvmVerifyProgram
348 _check_or_init_nvvm() 1EGI1[STUVWXmnJjKopqrstuvwxyzABCkl
349 if __nvvmVerifyProgram == NULL: 1EGI1STUVWXmnJjKopqrstuvwxyzABCkl
350 with gil:
351 raise FunctionNotFoundError("function nvvmVerifyProgram is not found")
352 return (<nvvmResult (*)(nvvmProgram, int, const char**) noexcept nogil>__nvvmVerifyProgram)( 1EGI1STUVWXmnJjKopqrstuvwxyzABCkl
353 prog, numOptions, options)
356cdef nvvmResult _nvvmGetCompiledResultSize(nvvmProgram prog, size_t* bufferSizeRet) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil:
357 global __nvvmGetCompiledResultSize
358 _check_or_init_nvvm() 1bcdefghiRmnjKopqrstuvwxyzABCkl
359 if __nvvmGetCompiledResultSize == NULL: 1bcdefghiRmnjKopqrstuvwxyzABCkl
360 with gil:
361 raise FunctionNotFoundError("function nvvmGetCompiledResultSize is not found")
362 return (<nvvmResult (*)(nvvmProgram, size_t*) noexcept nogil>__nvvmGetCompiledResultSize)( 1bcdefghiRmnjKopqrstuvwxyzABCkl
363 prog, bufferSizeRet)
366cdef nvvmResult _nvvmGetCompiledResult(nvvmProgram prog, char* buffer) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil:
367 global __nvvmGetCompiledResult
368 _check_or_init_nvvm() 1bcdefghiRmnjKopqrstuvwxyzABCkl
369 if __nvvmGetCompiledResult == NULL: 1bcdefghiRmnjKopqrstuvwxyzABCkl
370 with gil:
371 raise FunctionNotFoundError("function nvvmGetCompiledResult is not found")
372 return (<nvvmResult (*)(nvvmProgram, char*) noexcept nogil>__nvvmGetCompiledResult)( 1bcdefghiRmnjKopqrstuvwxyzABCkl
373 prog, buffer)
376cdef nvvmResult _nvvmGetProgramLogSize(nvvmProgram prog, size_t* bufferSizeRet) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil:
377 global __nvvmGetProgramLogSize
378 _check_or_init_nvvm() 1DEFGHIbcdefghiQJ
379 if __nvvmGetProgramLogSize == NULL: 1DEFGHIbcdefghiQJ
380 with gil:
381 raise FunctionNotFoundError("function nvvmGetProgramLogSize is not found")
382 return (<nvvmResult (*)(nvvmProgram, size_t*) noexcept nogil>__nvvmGetProgramLogSize)( 1DEFGHIbcdefghiQJ
383 prog, bufferSizeRet)
386cdef nvvmResult _nvvmGetProgramLog(nvvmProgram prog, char* buffer) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil:
387 global __nvvmGetProgramLog
388 _check_or_init_nvvm() 1DEFGHIbcdefghiQJ
389 if __nvvmGetProgramLog == NULL: 1DEFGHIbcdefghiQJ
390 with gil:
391 raise FunctionNotFoundError("function nvvmGetProgramLog is not found")
392 return (<nvvmResult (*)(nvvmProgram, char*) noexcept nogil>__nvvmGetProgramLog)( 1DEFGHIbcdefghiQJ
393 prog, buffer)
396cdef nvvmResult _nvvmLLVMVersion(const char* arch, int* major) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil:
397 global __nvvmLLVMVersion
398 _check_or_init_nvvm() 1[
399 if __nvvmLLVMVersion == NULL: 1[
400 with gil:
401 raise FunctionNotFoundError("function nvvmLLVMVersion is not found")
402 return (<nvvmResult (*)(const char*, int*) noexcept nogil>__nvvmLLVMVersion)( 1[
403 arch, major)