Coverage for cuda/core/_program.pyx: 87.31%

670 statements  

« prev     ^ index     » next       coverage.py v7.14.1, created at 2026-06-13 01:38 +0000

1# SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. 

2# 

3# SPDX-License-Identifier: Apache-2.0 

4"""Compilation machinery for CUDA programs. 

5  

6This module provides :class:`Program` for compiling source code into 

7:class:`~cuda.core.ObjectCode`, with :class:`ProgramOptions` for configuration. 

8""" 

9  

10from __future__ import annotations 

11  

12from dataclasses import dataclass 

13import threading 

14from typing import TYPE_CHECKING 

15from warnings import warn 

16  

17if TYPE_CHECKING: 

18 from cuda.core.utils._program_cache import ProgramCacheResource # no-cython-lint 

19  

20from cuda.bindings import nvrtc 

21from cuda.pathfinder._optional_cuda_import import _optional_cuda_import 

22  

23from libcpp.vector cimport vector 

24  

25from ._resource_handles cimport ( 

26 as_cu, 

27 as_py, 

28 create_nvrtc_program_handle, 

29 create_nvvm_program_handle, 

30) 

31from cuda.bindings cimport cynvrtc, cynvvm 

32from cuda.core._utils.cuda_utils cimport HANDLE_RETURN_NVRTC, HANDLE_RETURN_NVVM 

33from cuda.core._device import Device 

34from cuda.core._linker import Linker, LinkerHandleT, LinkerOptions 

35from cuda.core._module import ObjectCode 

36from cuda.core._utils.clear_error_support import assert_type 

37from cuda.core._utils.cuda_utils import ( 

38 CUDAError, 

39 _handle_boolean_option, 

40 check_or_create_options, 

41 handle_return, 

42 is_nested_sequence, 

43 is_sequence, 

44) 

45from cuda.core._utils.version import binding_version, driver_version 

46from cuda.core.typing import ObjectCodeFormatType, CompilerBackendType, PCHStatusType, SourceCodeType 

47  

48__all__ = ["Program", "ProgramOptions"] 

49  

50ProgramHandleT = nvrtc.nvrtcProgram | int | LinkerHandleT 

51"""Type alias for program handle types across different backends. 

52  

53The ``int`` type covers NVVM handles, which don't have a wrapper class. 

54""" 

55  

56  

57# ============================================================================= 

58# Principal Class 

59# ============================================================================= 

60  

61  

62cdef class Program: 

63 """Represent a compilation machinery to process programs into 

64 :class:`~cuda.core.ObjectCode`. 

65  

66 This object provides a unified interface to multiple underlying 

67 compiler libraries. Compilation support is enabled for a wide 

68 range of code types and compilation types. 

69  

70 Parameters 

71 ---------- 

72 code : str | bytes | bytearray 

73 The source code to compile. For C++ and PTX, must be a string. 

74 For NVVM IR, can be str, bytes, or bytearray. 

75 code_type : SourceCodeType | str 

76 The type of source code. Must be one of ``"c++"``, ``"ptx"``, or ``"nvvm"``. 

77 options : :class:`ProgramOptions`, optional 

78 Options to customize the compilation process. 

79 """ 

80 def __init__(self, code: str | bytes | bytearray, code_type: SourceCodeType | str, options: ProgramOptions | None = None): 

81 Program_init(self, code, str(code_type), options) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b IhDhyhoh,eAhNhLhzhGh-elhahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

82  

83 def close(self) -> None: 

84 """Destroy this program.""" 

85 if self._linker: 2)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh:eug;evg=ewgie8e?exgje9e@eyga b yhlhahbhchdhehfhghhhihjh.e

86 self._linker.close() 2lhahbhchdhehfhghhhihjh

87 # Reset handles - the C++ shared_ptr destructor handles cleanup 

88 self._h_nvrtc.reset() 2)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh:eug;evg=ewgie8e?exgje9e@eyga b yhlhahbhchdhehfhghhhihjh.e

89 self._h_nvvm.reset() 2)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh:eug;evg=ewgie8e?exgje9e@eyga b yhlhahbhchdhehfhghhhihjh.e

90  

91 def compile( 

92 self, 

93 target_type: ObjectCodeFormatType | str, 

94 name_expressions: tuple[str, ...] | list[str] = (), 

95 logs: object = None, 

96 *, 

97 cache: ProgramCacheResource | None = None, 

98 ) -> ObjectCode: 

99 """Compile the program to the specified target type. 

100  

101 Parameters 

102 ---------- 

103 target_type : ObjectCodeFormatType | str 

104 The compilation target. Must be one of ``"ptx"``, ``"cubin"``, or ``"ltoir"``. 

105 name_expressions : tuple | list, optional 

106 Sequence of name expressions to make accessible in the compiled code. 

107 Used for template instantiation and similar cases. 

108 logs : object, optional 

109 Object with a ``write`` method to receive compilation logs. 

110 On a cache hit no compilation runs and ``logs`` receives 

111 nothing -- callers that rely on log output to confirm a 

112 compile happened should compile without ``cache=``. 

113 cache : :class:`~cuda.core.utils.ProgramCacheResource`, optional 

114 If provided, the compiled binary is looked up in ``cache`` via a 

115 key derived from the program's code, options, and ``target_type``. 

116 On a hit the cached bytes are wrapped in a fresh 

117 :class:`~cuda.core.ObjectCode` (with the same ``target_type`` 

118 and ``ProgramOptions.name``) and returned without re-compiling; 

119 on a miss the compile output is stored as raw bytes (the cache 

120 extracts ``bytes(object_code.code)``). Passing a non-empty 

121 ``name_expressions`` together with ``cache=`` raises 

122 ``ValueError``: NVRTC populates 

123 ``ObjectCode.symbol_mapping`` at compile time and that mapping 

124 is not carried in the binary the cache stores, so cache hits 

125 would silently miss ``get_kernel(name_expression)`` lookups. 

126 Options that require an ``extra_digest`` (``include_path``, 

127 ``pre_include``, ``pch``, ``use_pch``, ``pch_dir``, NVVM 

128 ``use_libdevice=True``, or NVRTC ``options.name`` with a 

129 directory component) raise ``ValueError`` via 

130 :func:`~cuda.core.utils.make_program_cache_key`; for those 

131 compiles, use the manual ``make_program_cache_key(...)`` 

132 pattern directly. 

133  

134 ``cache=`` is independent of ``ProgramOptions.no_cache``: the 

135 former controls this program-level cache (compiled-output 

136 reuse across calls), while ``no_cache`` is forwarded to the 

137 Linker to disable its in-process JIT cache for cuLink/nvJitLink. 

138 Setting ``options.no_cache=True`` does not bypass ``cache=``, 

139 and vice-versa. 

140  

141 Returns 

142 ------- 

143 :class:`~cuda.core.ObjectCode` 

144 The compiled object code. 

145 """ 

146 # Mirror Program_init's code_type normalization so callers can pass 

147 # ``ObjectCodeFormatType.PTX`` or ``"PTX"`` and get the same routing 

148 # / cache key as the lowercase string. ``Program_compile_nvrtc`` 

149 # keys on lowercase ``target_type`` and ``make_program_cache_key`` 

150 # lowercases too. 

151 target_type = str(target_type).lower() 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Bgkh7e:eug;evg=ewgie8e?exgje9e@eyga b oh,e-eahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

152  

153 if cache is None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Bgkh7e:eug;evg=ewgie8e?exgje9e@eyga b oh,e-eahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

154 return _program_compile_uncached(self, target_type, name_expressions, logs) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Bgkh7e:eug;evg=ewgie8e?exgje9e@eyga b oh,e-eahbhchdhehfhghhhihjh.eBh

155  

156 # Deferred import to avoid a circular import between _program and 

157 # cuda.core.utils._program_cache (the cache module already imports 

158 # ProgramOptions from this module). Import from the leaf module so 

159 # tests that monkeypatch make_program_cache_key via that path 

160 # intercept reliably. 

161 from cuda.core.utils._program_cache import ( 2EgCgDgFgR IgGguhqhrhshJgxhHgS

162 ProgramCacheResource, 

163 make_program_cache_key, 

164 ) 

165  

166 if not isinstance(cache, ProgramCacheResource): 2EgCgDgFgR IgGguhqhrhshJgxhHgS

167 raise TypeError( 2uh

168 "cache must be an instance of " 2uh

169 "cuda.core.utils.ProgramCacheResource; got " 

170 f"{type(cache).__name__}" 2uh

171 ) 

172  

173 # ``name_expressions`` is incompatible with the cache: NVRTC 

174 # populates ``ObjectCode.symbol_mapping`` from name-expression 

175 # mangling at compile time, and that mapping isn't carried in 

176 # the binary bytes the cache stores. Without this guard the 

177 # first call (cache miss) would return an ObjectCode with 

178 # symbol_mapping populated, while every subsequent call (hit) 

179 # would return one without -- silently breaking later 

180 # ``get_kernel(name_expression)`` lookups that work on the 

181 # uncached path. Fail loud here instead. 

182 if name_expressions: 2EgCgDgFgR IgGgqhrhshJgxhHgS

183 raise ValueError( 2xh

184 "Program.compile(cache=...) does not support name_expressions: " 

185 "ObjectCode.symbol_mapping is populated by NVRTC at compile " 

186 "time and is not preserved across a cache round-trip, so cache " 

187 "hits would silently break get_kernel(name_expression) lookups " 

188 "that the uncached path supports. Compile without cache= when " 

189 "name_expressions are needed, or look up mangled symbols by " 

190 "hand from the cached ObjectCode." 

191 ) 

192  

193 # ``self._code`` is always stored as bytes (see ``Program_init``), 

194 # but ``make_program_cache_key`` only accepts bytes when 

195 # ``code_type == "nvvm"`` -- c++/ptx must be ``str``. The bytes 

196 # came from ``code.encode()`` on a ``str`` Program_init validated 

197 # via ``assert_type(code, str)``, so this round-trip is always 

198 # safe; no try/except needed. 

199 code_for_key = self._code if self._code_type == "nvvm" else self._code.decode("utf-8") 2EgCgDgFgR IgGgqhrhshJgHgS

200  

201 key = make_program_cache_key( 2EgCgDgFgR IgGgqhrhshJgHgS

202 code=code_for_key, 

203 code_type=self._code_type, 

204 options=self._options, 

205 target_type=target_type, 2EgCgDgFgR IgGgqhrhshJgHgS

206 ) 

207 hit_bytes = cache.get(key) 2EgCgDgFgR IgGgJgHgS

208 if hit_bytes is not None: 2EgCgDgFgR IgGgHgS

209 # The uncached NVRTC path warns when the active driver can't 

210 # load freshly-generated PTX; that loadability is a property 

211 # of the driver, not of how the bytes were produced, so the 

212 # warning applies equally to cached PTX. Mirror it here so a 

213 # cache hit doesn't silently hide an incompatibility that the 

214 # uncached call would have surfaced. 

215 if ( 2EgCgDgFgR S

216 self._backend == "NVRTC" 2EgCgDgFgR S

217 and target_type == "ptx" 2EgCgDgFgR S

218 and not _can_load_generated_ptx() 2CgDg

219 ): 

220 warn( 2Cg

221 "The CUDA driver version is older than the backend version. " 

222 "The generated ptx will not be loadable by the current driver.", 

223 stacklevel=2, 

224 category=RuntimeWarning, 2Cg

225 ) 

226 return ObjectCode._init(hit_bytes, target_type, name=self._options.name) 2EgCgDgFgR S

227 compiled = _program_compile_uncached(self, target_type, name_expressions, logs) 2EgR IgGgHgS

228 cache[key] = compiled 2EgR GgHgS

229 return compiled 2EgR GgS

230  

231 @property 

232 def pch_status(self) -> PCHStatusType | None: 

233 """PCH creation outcome from the most recent :meth:`compile` call. 

234  

235 Possible values: 

236  

237 * ``"created"`` — PCH file was written successfully. 

238 * ``"not_attempted"`` — PCH creation was not attempted (e.g. the 

239 compiler decided not to, or automatic PCH processing skipped it). 

240 * ``"failed"`` — an error prevented PCH creation. 

241 * ``None`` — PCH was not requested, the program has not been 

242 compiled yet, the backend is not NVRTC (e.g. PTX or NVVM), 

243 or the NVRTC bindings are too old to report status. 

244  

245 When ``create_pch`` is set in :class:`ProgramOptions` and the PCH 

246 heap is too small, :meth:`compile` automatically resizes the heap 

247 and retries, so ``"created"`` should be the common outcome. 

248  

249 .. note:: 

250  

251 PCH is only supported for ``code_type="c++"`` programs that 

252 use the NVRTC backend. For PTX and NVVM programs this property 

253 always returns ``None``. 

254 """ 

255 if self._pch_status is None: 2d ^d

256 return None 2d ^d

257 return PCHStatusType(self._pch_status) 1d

258  

259 @property 

260 def backend(self) -> CompilerBackendType: 

261 """Return this Program instance's underlying :class:`CompilerBackendType`.""" 

262 return CompilerBackendType(self._backend) 2)e*ec _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehemh7e:eug;evg=ewgie8e?exgje9e@eyga b Dhzhahbhchdhehfhghhhihjh

263  

264 @property 

265 def handle(self) -> ProgramHandleT: 

266 """Return the underlying handle object. 

267  

268 .. note:: 

269  

270 The type of the returned object depends on the backend. 

271  

272 .. caution:: 

273  

274 This handle is a Python object. To get the memory address of the underlying C 

275 handle, call ``int(Program.handle)``. 

276 """ 

277 if self._backend == "NVRTC": 2mh7eAhzhlh

278 return as_py(self._h_nvrtc) 2Ahzh

279 elif self._backend == "NVVM": 2mh7elh

280 return as_py(self._h_nvvm) # returns int (NVVM uses raw integers) 2mh7e

281 else: 

282 return self._linker.handle 2lh

283  

284 def __repr__(self) -> str: 

285 return f"<Program backend='{self._backend}'>" 2Chnh7e

286  

287  

288# ============================================================================= 

289# Other Public Classes 

290# ============================================================================= 

291  

292  

293@dataclass 

294class ProgramOptions: 

295 """Customizable options for configuring :class:`Program`. 

296  

297 Attributes 

298 ---------- 

299 name : str, optional 

300 Name of the program. If the compilation succeeds, the name is passed down to the generated :class:`ObjectCode`. 

301 arch : str, optional 

302 Pass the SM architecture value, such as ``sm_<CC>`` (for generating CUBIN) or 

303 ``compute_<CC>`` (for generating PTX). If not provided, the current device's architecture 

304 will be used. 

305 relocatable_device_code : bool, optional 

306 Enable (disable) the generation of relocatable device code. 

307 Default: False 

308 extensible_whole_program : bool, optional 

309 Do extensible whole program compilation of device code. 

310 Default: False 

311 debug : bool, optional 

312 Generate debug information. If --dopt is not specified, then turns off all optimizations. 

313 Default: False 

314 lineinfo: bool, optional 

315 Generate line-number information. 

316 Default: False 

317 device_code_optimize : bool, optional 

318 Enable device code optimization. When specified along with '-G', enables limited debug information generation 

319 for optimized device code. 

320 Default: None 

321 ptxas_options : Union[str, list[str]], optional 

322 Specify one or more options directly to ptxas, the PTX optimizing assembler. Options should be strings. 

323 For example ["-v", "-O2"]. 

324 Default: None 

325 max_register_count : int, optional 

326 Specify the maximum amount of registers that GPU functions can use. 

327 Default: None 

328 ftz : bool, optional 

329 When performing single-precision floating-point operations, flush denormal values to zero or preserve denormal 

330 values. 

331 Default: False 

332 prec_sqrt : bool, optional 

333 For single-precision floating-point square root, use IEEE round-to-nearest mode or use a faster approximation. 

334 Default: True 

335 prec_div : bool, optional 

336 For single-precision floating-point division and reciprocals, use IEEE round-to-nearest mode or use a faster 

337 approximation. 

338 Default: True 

339 fma : bool, optional 

340 Enables (disables) the contraction of floating-point multiplies and adds/subtracts into floating-point 

341 multiply-add operations. 

342 Default: True 

343 use_fast_math : bool, optional 

344 Make use of fast math operations. 

345 Default: False 

346 extra_device_vectorization : bool, optional 

347 Enables more aggressive device code vectorization in the NVVM optimizer. 

348 Default: False 

349 link_time_optimization : bool, optional 

350 Generate intermediate code for later link-time optimization. 

351 Default: False 

352 gen_opt_lto : bool, optional 

353 Run the optimizer passes before generating the LTO IR. 

354 Default: False 

355 define_macro : Union[str, tuple[str, str], list[Union[str, tuple[str, str]]]], optional 

356 Predefine a macro. Can be either a string, in which case that macro will be set to 1, a 2 element tuple of 

357 strings, in which case the first element is defined as the second, or a list of strings or tuples. 

358 Default: None 

359 undefine_macro : Union[str, list[str]], optional 

360 Cancel any previous definition of a macro, or list of macros. 

361 Default: None 

362 include_path : Union[str, list[str]], optional 

363 Add the directory or directories to the list of directories to be searched for headers. 

364 Default: None 

365 pre_include : Union[str, list[str]], optional 

366 Preinclude one or more headers during preprocessing. Can be either a string or a list of strings. 

367 Default: None 

368 no_source_include : bool, optional 

369 Disable the default behavior of adding the directory of each input source to the include path. 

370 Default: False 

371 std : str, optional 

372 Set language dialect to C++03, C++11, C++14, C++17 or C++20. 

373 Default: c++17 

374 builtin_move_forward : bool, optional 

375 Provide builtin definitions of std::move and std::forward. 

376 Default: True 

377 builtin_initializer_list : bool, optional 

378 Provide builtin definitions of std::initializer_list class and member functions. 

379 Default: True 

380 disable_warnings : bool, optional 

381 Inhibit all warning messages. 

382 Default: False 

383 restrict : bool, optional 

384 Programmer assertion that all kernel pointer parameters are restrict pointers. 

385 Default: False 

386 device_as_default_execution_space : bool, optional 

387 Treat entities with no execution space annotation as __device__ entities. 

388 Default: False 

389 device_int128 : bool, optional 

390 Allow the __int128 type in device code. 

391 Default: False 

392 optimization_info : str, optional 

393 Provide optimization reports for the specified kind of optimization. 

394 Default: None 

395 no_display_error_number : bool, optional 

396 Disable the display of a diagnostic number for warning messages. 

397 Default: False 

398 diag_error : Union[int, list[int]], optional 

399 Emit error for a specified diagnostic message number or comma-separated list of numbers. 

400 Default: None 

401 diag_suppress : Union[int, list[int]], optional 

402 Suppress a specified diagnostic message number or comma-separated list of numbers. 

403 Default: None 

404 diag_warn : Union[int, list[int]], optional 

405 Emit warning for a specified diagnostic message number or comma-separated list of numbers. 

406 Default: None 

407 brief_diagnostics : bool, optional 

408 Disable or enable showing source line and column info in a diagnostic. 

409 Default: False 

410 time : str, optional 

411 Generate a CSV table with the time taken by each compilation phase. 

412 Default: None 

413 split_compile : int, optional 

414 Perform compiler optimizations in parallel. 

415 Default: 1 

416 fdevice_syntax_only : bool, optional 

417 Ends device compilation after front-end syntax checking. 

418 Default: False 

419 minimal : bool, optional 

420 Omit certain language features to reduce compile time for small programs. 

421 Default: False 

422 no_cache : bool, optional 

423 Disable compiler caching. 

424 Default: False 

425 fdevice_time_trace : str, optional 

426 Generate time trace JSON for profiling compilation (NVRTC only). 

427 Default: None 

428 device_float128 : bool, optional 

429 Allow __float128 type in device code (NVRTC only). 

430 Default: False 

431 frandom_seed : str, optional 

432 Set random seed for randomized optimizations (NVRTC only). 

433 Default: None 

434 ofast_compile : str, optional 

435 Fast compilation mode: "0", "min", "mid", or "max" (NVRTC only). 

436 Default: None 

437 pch : bool, optional 

438 Use default precompiled header (NVRTC only, CUDA 12.8+). 

439 Default: False 

440 create_pch : str, optional 

441 Create precompiled header file (NVRTC only, CUDA 12.8+). 

442 Default: None 

443 use_pch : str, optional 

444 Use specific precompiled header file (NVRTC only, CUDA 12.8+). 

445 Default: None 

446 pch_dir : str, optional 

447 PCH directory location (NVRTC only, CUDA 12.8+). 

448 Default: None 

449 pch_verbose : bool, optional 

450 Verbose PCH output (NVRTC only, CUDA 12.8+). 

451 Default: False 

452 pch_messages : bool, optional 

453 Control PCH diagnostic messages (NVRTC only, CUDA 12.8+). 

454 Default: False 

455 instantiate_templates_in_pch : bool, optional 

456 Control template instantiation in PCH (NVRTC only, CUDA 12.8+). 

457 Default: False 

458 extra_sources : list of 2-tuples or tuple of 2-tuples, optional 

459 Additional NVVM IR modules to compile together with the main program, specified as 

460 ``((name1, source1), (name2, source2), ...)``. Each name is a string identifier used 

461 in diagnostic messages. Each source can be a string (textual LLVM IR) or bytes/bytearray 

462 (LLVM bitcode). Only supported for the NVVM backend. 

463 Default: None 

464 use_libdevice : bool, optional 

465 Load NVIDIA's `libdevice <https://docs.nvidia.com/cuda/libdevice-users-guide/>`_ 

466 math builtins library. Only supported for the NVVM backend. 

467 Default: False 

468 """ 

469  

470 name: str | None = "default_program" 

471 arch: str | None = None 

472 relocatable_device_code: bool | None = None 

473 extensible_whole_program: bool | None = None 

474 debug: bool | None = None 

475 lineinfo: bool | None = None 

476 device_code_optimize: bool | None = None 

477 ptxas_options: str | list[str] | tuple[str] | None = None 

478 max_register_count: int | None = None 

479 ftz: bool | None = None 

480 prec_sqrt: bool | None = None 

481 prec_div: bool | None = None 

482 fma: bool | None = None 

483 use_fast_math: bool | None = None 

484 extra_device_vectorization: bool | None = None 

485 link_time_optimization: bool | None = None 

486 gen_opt_lto: bool | None = None 

487 define_macro: str | tuple[str, str] | list[str | tuple[str, str]] | tuple[str | tuple[str, str], ...] | None = None 

488 undefine_macro: str | list[str] | tuple[str] | None = None 

489 include_path: str | list[str] | tuple[str] | None = None 

490 pre_include: str | list[str] | tuple[str] | None = None 

491 no_source_include: bool | None = None 

492 std: str | None = None 

493 builtin_move_forward: bool | None = None 

494 builtin_initializer_list: bool | None = None 

495 disable_warnings: bool | None = None 

496 restrict: bool | None = None 

497 device_as_default_execution_space: bool | None = None 

498 device_int128: bool | None = None 

499 optimization_info: str | None = None 

500 no_display_error_number: bool | None = None 

501 diag_error: int | list[int] | tuple[int] | None = None 

502 diag_suppress: int | list[int] | tuple[int] | None = None 

503 diag_warn: int | list[int] | tuple[int] | None = None 

504 brief_diagnostics: bool | None = None 

505 time: str | None = None 

506 split_compile: int | None = None 

507 fdevice_syntax_only: bool | None = None 

508 minimal: bool | None = None 

509 no_cache: bool | None = None 

510 fdevice_time_trace: str | None = None 

511 device_float128: bool | None = None 

512 frandom_seed: str | None = None 

513 ofast_compile: str | None = None 

514 pch: bool | None = None 

515 create_pch: str | None = None 

516 use_pch: str | None = None 

517 pch_dir: str | None = None 

518 pch_verbose: bool | None = None 

519 pch_messages: bool | None = None 

520 instantiate_templates_in_pch: bool | None = None 

521 extra_sources: list[tuple[str, str | bytes | bytearray]] | tuple[tuple[str, str | bytes | bytearray], ...] | None = None 

522 use_libdevice: bool | None = None # For libdevice execution 

523 numba_debug: bool | None = None # Custom option for Numba debugging 

524  

525 def __post_init__(self) -> None: 

526 self._name = self.name.encode() 2zg8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _dUhVhOhRhYhAgk mhBgkh7e1ga b IhJhKhZhMhDhyhoh,eAhNhLhzhXhKg~gPgphthvhwh0hGh-elh.eQgLgMgNgRgOgSg1h2h3h4h5hTg3g4g5g6g6h7h7g8g9g!g#g2g$g%g'gUg8h9h!h(gVg#hWg$h)g%h*g+g,gXg'h(h-g.g/g:g;g{g|g}gYgZg)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikilimini=goipiqirisitiuiviwixiyiziShTh?g@g[g]gAiBiCiDiEiFiGiHiIiJiKiLi^gMi_g0g`gNiEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

527 # Set arch to default if not provided 

528 if self.arch is None: 2zg8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _dUhVhOhRhYhAgk mhBgkh7e1ga b IhJhKhZhMhDhyhoh,eAhNhLhzhXhKg~gPgphthvhwh0hGh-elh.eQgLgMgNgRgOgSg1h2h3h4h5hTg3g4g5g6g6h7h7g8g9g!g#g2g$g%g'gUg8h9h!h(gVg#hWg$h)g%h*g+g,gXg'h(h-g.g/g:g;g{g|g}gYgZg)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikilimini=goipiqirisitiuiviwixiyiziShTh?g@g[g]gAiBiCiDiEiFiGiHiIiJiKiLi^gMi_g0g`gNiEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

529 self.arch = f"sm_{Device().arch}" 2zg`ekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|bV W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c|e}e~eafbfcfdfefffgfhfifjfkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfzfAfBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*f+f,f-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f~fagbgcgdgegfgChnhgghgigjgkglgmgngogpgqgrgEhsgtgFhd ^dHhc _dAgk mhBgkh7ea b IhDhyhoh,eAhNhLhzhGh-elh.e

530 if self.extra_sources is not None: 2zg8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _dUhVhOhRhYhAgk mhBgkh7e1ga b IhJhKhZhMhDhyhoh,eAhNhLhzhXhKg~gPgphthvhwh0hGh-elh.eQgLgMgNgRgOgSg1h2h3h4h5hTg3g4g5g6g6h7h7g8g9g!g#g2g$g%g'gUg8h9h!h(gVg#hWg$h)g%h*g+g,gXg'h(h-g.g/g:g;g{g|g}gYgZg)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikilimini=goipiqirisitiuiviwixiyiziShTh?g@g[g]gAiBiCiDiEiFiGiHiIiJiKiLi^gMi_g0g`gNiEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

531 if not is_sequence(self.extra_sources): 2HhUhVhOhRhYha b JhKhMhGhShTh

532 raise TypeError( 2Yh

533 "extra_sources must be a sequence of 2-tuples: ((name1, source1), (name2, source2), ...)" 

534 ) 

535 for i, module in enumerate(self.extra_sources): 2HhUhVhOhRha b JhKhMhGhShTh

536 if not isinstance(module, tuple) or len(module) != 2: 2HhUhVhOhRha b JhKhMhGhShTh

537 raise TypeError( 2Vh

538 f"Each extra module must be a 2-tuple (name, source)" 2Vh

539 f", got {type(module).__name__} at index {i}" 2Vh

540 ) 

541  

542 module_name, module_source = module 2HhUhOhRha b JhKhMhGhShTh

543  

544 if not isinstance(module_name, str): 2HhUhOhRha b JhKhMhGhShTh

545 raise TypeError(f"Module name at index {i} must be a string, got {type(module_name).__name__}") 2Uh

546  

547 if not isinstance(module_source, (str, bytes, bytearray)): 2HhOhRha b JhKhMhGhShTh

548 raise TypeError( 2Oh

549 f"Module source at index {i} must be str (textual LLVM IR), bytes (textual LLVM IR or bitcode), " 2Oh

550 f"or bytearray, got {type(module_source).__name__}" 2Oh

551 ) 

552  

553 if len(module_source) == 0: 2HhRha b JhKhMhGhShTh

554 raise ValueError(f"Module source for '{module_name}' (index {i}) cannot be empty") 2Rh

555  

556 def _prepare_nvrtc_options(self) -> list[bytes]: 

557 return _prepare_nvrtc_options_impl(self) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

558  

559 def _prepare_nvvm_options(self, as_bytes: bool = True) -> list[bytes] | list[str]: 

560 return _prepare_nvvm_options_impl(self, as_bytes) 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

561  

562 def as_bytes(self, backend: CompilerBackendType | str, target_type: ObjectCodeFormatType | str | None = None) -> list[bytes]: 

563 """Convert program options to bytes format for the specified backend. 

564  

565 This method transforms the program options into a format suitable for the 

566 specified compiler backend. Different backends may use different option names 

567 and formats even for the same conceptual options. 

568  

569 Parameters 

570 ---------- 

571 backend : CompilerBackendType | str 

572 The compiler backend to prepare options for. Must be either "nvrtc" or "nvvm". 

573 target_type : ObjectCodeFormatType | str, optional 

574 The compilation target type (e.g., "ptx", "cubin", "ltoir"). Some backends 

575 require additional options based on the target type. 

576  

577 Returns 

578 ------- 

579 list[bytes] 

580 List of option strings encoded as bytes. 

581  

582 Raises 

583 ------ 

584 ValueError 

585 If an unknown backend is specified. 

586 CUDAError 

587 If an option incompatible with the specified backend is set. 

588  

589 Examples 

590 -------- 

591 >>> options = ProgramOptions(arch="sm_80", debug=True) 

592 >>> nvrtc_options = options.as_bytes("nvrtc") 

593 """ 

594 backend = str(backend).lower() 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Bg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ,eXhKg~gPgphthvhwh-e.eQgLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'gUg(gVgWg)g*g+g,gXg-g.g/g:g;g{g|g}gYgZg=g?g@g[g]g^g_g0g`gEgCgDgFgR IgGgJgHgS

595 if backend == "nvrtc": 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Bg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ,eXhKg~gPgphthvhwh-e.eQgLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'gUg(gVgWg)g*g+g,gXg-g.g/g:g;g{g|g}gYgZg=g?g@g[g]g^g_g0g`gEgCgDgFgR IgGgJgHgS

596 return self._prepare_nvrtc_options() 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

597 elif backend == "nvvm": 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b Xh~gPgQgUgVgWgXg{g|g}gYgZg0g

598 options = self._prepare_nvvm_options(as_bytes=True) 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

599 if target_type == "ltoir" and b"-gen-lto" not in options: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b PgQgUgVgWgXg{g|g}gYgZg0g

600 options.append(b"-gen-lto") 2)e*e:e;e=eie?eje@ea

601 return options 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b PgQgUgVgWgXg{g|g}gYgZg0g

602 else: 

603 raise ValueError(f"Unknown backend '{backend}'. Must be one of: 'nvrtc', 'nvvm'") 2Xh

604  

605 def __repr__(self) -> str: 

606 return f"ProgramOptions(name={self.name!r}, arch={self.arch!r})" 20h

607  

608 def _prepare_extra_sources_bytes(self) -> list[tuple[bytes, bytes]] | None: 

609 """Convert extra_sources to bytes format for NVVM.""" 

610 if self.extra_sources is None: 2a b JhKhZhMh

611 return None 2Zh

612  

613 result = [] 2a b JhKhMh

614 for module_name, module_source in self.extra_sources: 2a b JhKhMh

615 name_bytes = module_name.encode("utf-8") 2a b JhKhMh

616 if isinstance(module_source, str): 2a b JhKhMh

617 source_bytes = module_source.encode("utf-8") 2a b Mh

618 elif isinstance(module_source, bytearray): 2JhKh

619 source_bytes = bytes(module_source) 2Jh

620 else: 

621 source_bytes = module_source 2Kh

622 result.append((name_bytes, source_bytes)) 2a b JhKhMh

623 return result 2a b JhKhMh

624  

625  

626# ============================================================================= 

627# Private Classes and Helper Functions 

628# ============================================================================= 

629  

630  

631def _program_compile_uncached(program, target_type, name_expressions, logs): 

632 """Run ``Program_compile`` without the cache wrapper. 

633  

634 Module-level Python function so tests can monkeypatch it from 

635 ``cuda.core._program`` to avoid invoking NVRTC when exercising the cache 

636 wrapper in :meth:`Program.compile`. ``Program`` itself is a ``cdef class`` 

637 and its methods cannot be reassigned from Python, so the seam must live 

638 outside the class. 

639 """ 

640 return Program_compile(program, target_type, name_expressions, logs) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Bgkh7e:eug;evg=ewgie8e?exgje9e@eyga b oh,e-eahbhchdhehfhghhhihjh.eR S

641  

642  

643# Module-level state for NVVM lazy loading 

644_nvvm_module = None 

645_nvvm_import_attempted = False 

646  

647  

648def _get_nvvm_module() -> object: 

649 """Get the NVVM module, importing it lazily with availability checks.""" 

650 global _nvvm_module, _nvvm_import_attempted 

651  

652 if _nvvm_import_attempted: 2zgnhPhQhWh)e*emhBgkhOi7e:eug;evg=ewgie8e?ePixgje9e@eyga b IhQgUgVgWgXgYgZg0g

653 if _nvvm_module is None: 2nh)e*emhBgkhOi7e:eug;evg=ewgie8e?ePixgje9e@eyga b IhQgUgVgWgXgYgZg0g

654 raise RuntimeError("NVVM module is not available (previous import attempt failed)") 

655 return _nvvm_module 2nh)e*emhBgkhOi7e:eug;evg=ewgie8e?ePixgje9e@eyga b IhQgUgVgWgXgYgZg0g

656  

657 _nvvm_import_attempted = True 2zgPhQhWh

658  

659 try: 2zgPhQhWh

660 version = binding_version() 2zgPhQhWh

661 if version < (12, 9, 0): 2zgPhQhWh

662 raise RuntimeError( 

663 f"NVVM bindings require cuda-bindings >= 12.9.0, but found {'.'.join(map(str, version))}. " 

664 "Please update cuda-bindings to use NVVM features." 

665 ) 

666  

667 nvvm = _optional_cuda_import( 2zgPhQhWh

668 "cuda.bindings.nvvm", 

669 probe_function=lambda module: module.version(), # probe triggers libnvvm load 2zgPhQhWh

670 ) 

671 if nvvm is None: 2zgPhQh

672 raise RuntimeError( 2PhQh

673 "NVVM support is unavailable: cuda.bindings.nvvm is missing or libnvvm cannot be loaded." 

674 ) 

675  

676 _nvvm_module = nvvm 

677 return _nvvm_module 

678  

679 except RuntimeError: 2PhQhWh

680 _nvvm_module = None 2PhQh

681 raise 2PhQh

682  

683def _find_libdevice_path() -> object: 

684 """Find libdevice*.bc for NVVM compilation using cuda.pathfinder.""" 

685 from cuda.pathfinder import find_bitcode_lib 2Vi

686 return find_bitcode_lib("device") 2Vi

687  

688  

689  

690  

691cdef inline bint _process_define_macro_inner(list options, object macro) except? -1: 

692 """Process a single define macro, returning True if successful.""" 

693 if isinstance(macro, str): 2U Q h i phthvhwh

694 options.append(f"--define-macro={macro}") 1U

695 return True 1U

696 if isinstance(macro, tuple): 2Q h i phthvhwh

697 if len(macro) != 2 or any(not isinstance(val, str) for val in macro): 2Q h i phvhwh

698 raise RuntimeError(f"Expected define_macro tuple[str, str], got {macro}") 2phvhwh

699 options.append(f"--define-macro={macro[0]}={macro[1]}") 1Qhi

700 return True 1Qhi

701 return False 2h i phth

702  

703  

704cdef inline void _process_define_macro(list options, object macro) except *: 

705 """Process define_macro option which can be str, tuple, or list thereof.""" 

706 union_type = "Union[str, tuple[str, str]]" 2U Q h i phthvhwh

707 if _process_define_macro_inner(options, macro): 2U Q h i phthvhwh

708 return 1UQ

709 if is_nested_sequence(macro): 2h i phth

710 for seq_macro in macro: 2h i ph

711 if not _process_define_macro_inner(options, seq_macro): 2h i ph

712 raise RuntimeError(f"Expected define_macro {union_type}, got {seq_macro}") 

713 return 1hi

714 raise RuntimeError(f"Expected define_macro {union_type}, list[{union_type}], got {macro}") 2th

715  

716  

717cpdef bint _can_load_generated_ptx() except? -1: 

718 """Check if the driver can load PTX generated by the current NVRTC version.""" 

719 drv = driver_version() 2kelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRee f g QiN RiO SiP TiUid ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-eCgDg

720 nvrtc_major, nvrtc_minor = handle_return(nvrtc.nvrtcVersion()) 2kelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRee f g QiN RiO SiP TiUid ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-eCgDg

721 return (nvrtc_major, nvrtc_minor, 0) <= drv 2kelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRee f g QiN RiO SiP TiUid ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-eCgDg

722  

723  

724cdef inline object _translate_program_options(object options): 

725 """Translate ProgramOptions to LinkerOptions for PTX compilation.""" 

726 return LinkerOptions( 2lhahbhchdhehfhghhhihjh

727 name=options.name, 2lhahbhchdhehfhghhhihjh

728 arch=options.arch, 2lhahbhchdhehfhghhhihjh

729 max_register_count=options.max_register_count, 2lhahbhchdhehfhghhhihjh

730 time=options.time, 2lhahbhchdhehfhghhhihjh

731 link_time_optimization=options.link_time_optimization, 2lhahbhchdhehfhghhhihjh

732 debug=options.debug, 2lhahbhchdhehfhghhhihjh

733 lineinfo=options.lineinfo, 2lhahbhchdhehfhghhhihjh

734 ftz=options.ftz, 2lhahbhchdhehfhghhhihjh

735 prec_div=options.prec_div, 2lhahbhchdhehfhghhhihjh

736 prec_sqrt=options.prec_sqrt, 2lhahbhchdhehfhghhhihjh

737 fma=options.fma, 2lhahbhchdhehfhghhhihjh

738 split_compile=options.split_compile, 2lhahbhchdhehfhghhhihjh

739 ptxas_options=options.ptxas_options, 2lhahbhchdhehfhghhhihjh

740 no_cache=options.no_cache, 2lhahbhchdhehfhghhhihjh

741 numba_debug = options.numba_debug 2lhahbhchdhehfhghhhihjh

742 ) 

743  

744  

745cdef inline int Program_init(Program self, object code, str code_type, object options) except -1: 

746 """Initialize a Program instance.""" 

747 cdef cynvrtc.nvrtcProgram nvrtc_prog 

748 cdef cynvvm.nvvmProgram nvvm_prog 

749 cdef bytes code_bytes 

750 cdef const char* code_ptr 

751 cdef const char* name_ptr 

752 cdef size_t code_len 

753 cdef bytes module_bytes 

754 cdef const char* module_ptr 

755 cdef size_t module_len 

756  

757 self._options = options = check_or_create_options(ProgramOptions, options, "Program options") 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b IhDhyhoh,eAhNhLhzhGh-elhahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

758 code_type = code_type.lower() 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b IhDhyhoh,eAhNhLhzhGh-elhahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

759 self._code_type = code_type 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b IhDhyhoh,eAhNhLhzhGh-elhahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

760 self._compile_lock = threading.Lock() 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b IhDhyhoh,eAhNhLhzhGh-elhahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

761 self._use_libdevice = False 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b IhDhyhoh,eAhNhLhzhGh-elhahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

762 self._libdevice_added = False 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b IhDhyhoh,eAhNhLhzhGh-elhahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

763  

764 self._pch_status = None 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b IhDhyhoh,eAhNhLhzhGh-elhahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

765  

766 if code_type == "c++": 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b IhDhyhoh,eAhNhLhzhGh-elhahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

767 assert_type(code, str) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgCh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFhd ^dHhc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Dhyhoh,eAhNhzh-e.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

768 if options.extra_sources is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgCh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFhd ^dHhc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Dhyhoh,eAhzh-e.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

769 raise ValueError("extra_sources is not supported by the NVRTC backend (C++ code_type)") 2Hh

770  

771 # TODO: support pre-loaded headers & include names 

772 code_bytes = code.encode() 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgCh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFhd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Dhyhoh,eAhzh-e.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

773 code_ptr = <const char*>code_bytes 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgCh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFhd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Dhyhoh,eAhzh-e.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

774 name_ptr = <const char*>options._name 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgCh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFhd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Dhyhoh,eAhzh-e.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

775  

776 with nogil: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgCh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFhd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Dhyhoh,eAhzh-e.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

777 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcCreateProgram( 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgCh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFhd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Dhyhoh,eAhzh-e.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

778 &nvrtc_prog, code_ptr, name_ptr, 0, NULL, NULL)) 

779 self._h_nvrtc = create_nvrtc_program_handle(nvrtc_prog) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgCh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFhd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Dhyhoh,eAhzh-e.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

780 self._code = code_bytes 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgCh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFhd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Dhyhoh,eAhzh-e.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

781 self._backend = str(CompilerBackendType.NVRTC) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgCh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFhd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Dhyhoh,eAhzh-e.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

782 self._linker = None 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgCh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFhd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Dhyhoh,eAhzh-e.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

783  

784 elif code_type == "ptx": 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b IhLhGhlhahbhchdhehfhghhhihjh

785 assert_type(code, str) 2Ghlhahbhchdhehfhghhhihjh

786 if options.extra_sources is not None: 2Ghlhahbhchdhehfhghhhihjh

787 raise ValueError("extra_sources is not supported by the PTX backend.") 2Gh

788 code_bytes = code.encode() 2lhahbhchdhehfhghhhihjh

789 self._code = code_bytes 2lhahbhchdhehfhghhhihjh

790 self._linker = Linker( 2lhahbhchdhehfhghhhihjh

791 ObjectCode._init(code_bytes, code_type), options=_translate_program_options(options) 2lhahbhchdhehfhghhhihjh

792 ) 

793 self._backend = str(Linker.which_backend()) 2lhahbhchdhehfhghhhihjh

794  

795 elif code_type == "nvvm": 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b IhLh

796 _get_nvvm_module() # Validate NVVM availability 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b Ih

797 if isinstance(code, str): 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b Ih

798 code = code.encode("utf-8") 2nhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b

799 elif not isinstance(code, (bytes, bytearray)): 2)e*emhIh

800 raise TypeError("NVVM IR code must be provided as str, bytes, or bytearray") 2Ih

801 self._code = bytes(code) # Coerce bytearray -> bytes so retention type is stable 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b

802  

803 # Use self._code (strictly bytes) for the C pointer so a bytearray 

804 # input doesn't trip the `<bytes>code` cast at runtime. 

805 code_ptr = <const char*>self._code 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b

806 name_ptr = <const char*>options._name 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b

807 code_len = len(self._code) 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b

808  

809 with nogil: 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b

810 HANDLE_RETURN_NVVM(NULL, cynvvm.nvvmCreateProgram(&nvvm_prog)) 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b

811 self._h_nvvm = create_nvvm_program_handle(nvvm_prog) # RAII from here 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b

812 with nogil: 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b

813 HANDLE_RETURN_NVVM(nvvm_prog, cynvvm.nvvmAddModuleToProgram(nvvm_prog, code_ptr, code_len, name_ptr)) 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b

814  

815 # Add extra modules if provided 

816 if options.extra_sources is not None: 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b

817 extra_sources_bytes = options._prepare_extra_sources_bytes() 1ab

818 for module_name_bytes, module_bytes in extra_sources_bytes: 1ab

819 module_ptr = <const char*>module_bytes 1ab

820 module_len = len(module_bytes) 1ab

821 module_name_ptr = <const char*>module_name_bytes 1ab

822 with nogil: 1ab

823 HANDLE_RETURN_NVVM(nvvm_prog, cynvvm.nvvmAddModuleToProgram( 1ab

824 nvvm_prog, module_ptr, module_len, module_name_ptr)) 

825  

826 # Store use_libdevice flag 

827 if options.use_libdevice: 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b

828 self._use_libdevice = True 

829  

830 self._backend = str(CompilerBackendType.NVVM) 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b

831 self._linker = None 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b

832  

833 else: 

834 supported_code_types = tuple(x.value for x in SourceCodeType) 2Lh

835 if options.use_libdevice: 2Lh

836 raise ValueError("use_libdevice is only supported by the NVVM backend") 

837 raise RuntimeError(f"Unsupported {code_type=} ({supported_code_types=})") 2Lh

838  

839 return 0 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b Dhyhoh,eAhzh-elhahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh

840  

841  

842cdef object _nvrtc_compile_and_extract( 

843 cynvrtc.nvrtcProgram prog, str target_type, object name_expressions, 

844 object logs, list options_list, str name, 

845): 

846 """Run nvrtcCompileProgram on *prog* and extract the output. 

847  

848 This is the inner compile+extract loop, factored out so the PCH 

849 auto-retry path can call it on a fresh program handle. 

850 """ 

851 cdef size_t output_size = 0 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S

852 cdef size_t logsize = 0 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S

853 cdef vector[const char*] options_vec 

854 cdef char* data_ptr = NULL 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S

855 cdef bytes name_bytes 

856 cdef const char* name_ptr = NULL 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S

857 cdef const char* lowered_name = NULL 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S

858 cdef dict symbol_mapping = {} 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S

859  

860 # Add name expressions before compilation 

861 if name_expressions: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S

862 for n in name_expressions: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8bl m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdY Z cdddedfdgdhdidjdkdldmdndodpdqd0 1 rdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUd2 3 VdWdXdYdZd0d1d2d3d4d5d6d7d8d9d4 5 !d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d

863 name_bytes = n.encode() if isinstance(n, str) else n 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8bl m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdY Z cdddedfdgdhdidjdkdldmdndodpdqd0 1 rdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUd2 3 VdWdXdYdZd0d1d2d3d4d5d6d7d8d9d4 5 !d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d

864 name_ptr = <const char*>name_bytes 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8bl m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdY Z cdddedfdgdhdidjdkdldmdndodpdqd0 1 rdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUd2 3 VdWdXdYdZd0d1d2d3d4d5d6d7d8d9d4 5 !d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d

865 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcAddNameExpression(prog, name_ptr)) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8bl m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdY Z cdddedfdgdhdidjdkdldmdndodpdqd0 1 rdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUd2 3 VdWdXdYdZd0d1d2d3d4d5d6d7d8d9d4 5 !d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d

866  

867 # Build options array 

868 options_vec.resize(len(options_list)) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S

869 for i in range(len(options_list)): 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S

870 options_vec[i] = <const char*>(<bytes>options_list[i]) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S

871  

872 # Compile 

873 with nogil: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S

874 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcCompileProgram(prog, <int>options_vec.size(), options_vec.data())) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S

875  

876 # Get compiled output based on target type 

877 if target_type == "ptx": 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehek ,e-e.eR S

878 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPTXSize(prog, &output_size)) 2kelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRee f g N O P d ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehek ,e-e

879 data = bytearray(output_size) 2kelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRee f g N O P d ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehek ,e-e

880 data_ptr = <char*>(<bytearray>data) 2kelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRee f g N O P d ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehek ,e-e

881 with nogil: 2kelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRee f g N O P d ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehek ,e-e

882 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPTX(prog, data_ptr)) 2kelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRee f g N O P d ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehek ,e-e

883 elif target_type == "cubin": 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!b/e#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg.eR S

884 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetCUBINSize(prog, &output_size)) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!b#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(deg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg.eR S

885 data = bytearray(output_size) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!b#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(deg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg.eR S

886 data_ptr = <char*>(<bytearray>data) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!b#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(deg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg.eR S

887 with nogil: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!b#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(deg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg.eR S

888 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetCUBIN(prog, data_ptr)) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!b#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(deg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg.eR S

889 else: # ltoir 

890 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLTOIRSize(prog, &output_size)) 2/eV W X fg

891 data = bytearray(output_size) 2/eV W X fg

892 data_ptr = <char*>(<bytearray>data) 2/eV W X fg

893 with nogil: 2/eV W X fg

894 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLTOIR(prog, data_ptr)) 2/eV W X fg

895  

896 # Get lowered names after compilation 

897 if name_expressions: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehek ,e-e.eR S

898 for n in name_expressions: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8bl m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdY Z cdddedfdgdhdidjdkdldmdndodpdqd0 1 rdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUd2 3 VdWdXdYdZd0d1d2d3d4d5d6d7d8d9d4 5 !d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d

899 name_bytes = n.encode() if isinstance(n, str) else n 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8bl m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdY Z cdddedfdgdhdidjdkdldmdndodpdqd0 1 rdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUd2 3 VdWdXdYdZd0d1d2d3d4d5d6d7d8d9d4 5 !d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d

900 name_ptr = <const char*>name_bytes 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8bl m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdY Z cdddedfdgdhdidjdkdldmdndodpdqd0 1 rdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUd2 3 VdWdXdYdZd0d1d2d3d4d5d6d7d8d9d4 5 !d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d

901 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLoweredName(prog, name_ptr, &lowered_name)) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8bl m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdY Z cdddedfdgdhdidjdkdldmdndodpdqd0 1 rdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUd2 3 VdWdXdYdZd0d1d2d3d4d5d6d7d8d9d4 5 !d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d

902 symbol_mapping[n] = lowered_name if lowered_name != NULL else None 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8bl m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdY Z cdddedfdgdhdidjdkdldmdndodpdqd0 1 rdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUd2 3 VdWdXdYdZd0d1d2d3d4d5d6d7d8d9d4 5 !d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d

903  

904 # Get compilation log if requested 

905 if logs is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehek ,e-e.eR S

906 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetProgramLogSize(prog, &logsize)) 1k

907 if logsize > 1: 1k

908 log = bytearray(logsize) 1k

909 data_ptr = <char*>(<bytearray>log) 1k

910 with nogil: 1k

911 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetProgramLog(prog, data_ptr)) 1k

912 logs.write(log.decode("utf-8", errors="backslashreplace")) 1k

913  

914 return ObjectCode._init(bytes(data), target_type, symbol_mapping=symbol_mapping, name=name) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehek ,e-e.eR S

915  

916  

917cdef int _nvrtc_pch_apis_cached = -1 # -1 = unchecked 

918  

919cdef bint _has_nvrtc_pch_apis(): 

920 global _nvrtc_pch_apis_cached 

921 if _nvrtc_pch_apis_cached < 0: 1dcj

922 _nvrtc_pch_apis_cached = hasattr(nvrtc, "nvrtcGetPCHCreateStatus") 1c

923 return _nvrtc_pch_apis_cached 1dcj

924  

925  

926cdef object _read_pch_status(cynvrtc.nvrtcProgram prog): 

927 """Query nvrtcGetPCHCreateStatus and translate to a high-level string.""" 

928 cdef cynvrtc.nvrtcResult err 

929 with nogil: 1dcj

930 err = cynvrtc.nvrtcGetPCHCreateStatus(prog) 1dcj

931 if err == cynvrtc.nvrtcResult.NVRTC_SUCCESS: 1dcj

932 return PCHStatusType.CREATED 1dcj

933 if err == cynvrtc.nvrtcResult.NVRTC_ERROR_PCH_CREATE_HEAP_EXHAUSTED: 

934 return None # sentinel: caller should auto-retry 

935 if err == cynvrtc.nvrtcResult.NVRTC_ERROR_NO_PCH_CREATE_ATTEMPTED: 

936 return PCHStatusType.NOT_ATTEMPTED 

937 return PCHStatusType.FAILED 

938  

939  

940cdef object Program_compile_nvrtc(Program self, str target_type, object name_expressions, object logs): 

941 """Compile using NVRTC backend and return ObjectCode.""" 

942 cdef cynvrtc.nvrtcProgram prog = as_cu(self._h_nvrtc) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S

943 cdef list options_list = self._options.as_bytes("nvrtc", target_type) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S

944  

945 result = _nvrtc_compile_and_extract( 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S

946 prog, target_type, name_expressions, logs, options_list, self._options.name, 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S

947 ) 

948  

949 cdef bint pch_creation_possible = self._options.create_pch or self._options.pch 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehek ,e-e.eR S

950 if not pch_creation_possible or not _has_nvrtc_pch_apis(): 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehek ,e-e.eR S

951 self._pch_status = None 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4e5e6ehek ,e-e.eR S

952 return result 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4e5e6ehek ,e-e.eR S

953  

954 try: 1dcj

955 status = _read_pch_status(prog) 1dcj

956 except RuntimeError as e: 

957 raise RuntimeError( 

958 "PCH was requested but the runtime libnvrtc does not support " 

959 "PCH APIs. Update to CUDA toolkit 12.8 or newer." 

960 ) from e 

961  

962 if status is not None: 1dcj

963 self._pch_status = str(status) 1dcj

964 return result 1dcj

965  

966 # Heap exhausted — auto-resize and retry with a fresh program 

967 cdef size_t required = 0 

968 with nogil: 

969 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPCHHeapSizeRequired(prog, &required)) 

970 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcSetPCHHeapSize(required)) 

971  

972 cdef cynvrtc.nvrtcProgram retry_prog 

973 cdef const char* code_ptr = <const char*>self._code 

974 cdef const char* name_ptr = <const char*>self._options._name 

975 with nogil: 

976 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcCreateProgram( 

977 &retry_prog, code_ptr, name_ptr, 0, NULL, NULL)) 

978 self._h_nvrtc = create_nvrtc_program_handle(retry_prog) 

979  

980 result = _nvrtc_compile_and_extract( 

981 retry_prog, target_type, name_expressions, logs, options_list, self._options.name, 

982 ) 

983  

984 status = _read_pch_status(retry_prog) 

985 self._pch_status = status if status is not None else str(PCHStatusType.FAILED) 

986 return result 

987  

988  

989cdef object Program_compile_nvvm(Program self, str target_type, object logs): 

990 """Compile using NVVM backend and return ObjectCode.""" 

991 cdef cynvvm.nvvmProgram prog = as_cu(self._h_nvvm) 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b

992 cdef size_t output_size = 0 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b

993 cdef size_t logsize = 0 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b

994 cdef vector[const char*] options_vec 

995 cdef char* data_ptr = NULL 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b

996 cdef bytes libdevice_bytes 

997 cdef const char* libdevice_ptr 

998 cdef size_t libdevice_len 

999 # Build options array 

1000 options_list = self._options.as_bytes("nvvm", target_type) 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b

1001 options_vec.resize(len(options_list)) 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b

1002 for i in range(len(options_list)): 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b

1003 options_vec[i] = <const char*>(<bytes>options_list[i]) 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b

1004  

1005 # Serialize NVVM program mutation/use per Program instance. 

1006 with self._compile_lock: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b

1007 with nogil: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b

1008 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmVerifyProgram(prog, <int>options_vec.size(), options_vec.data())) 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b

1009  

1010 # Load libdevice if requested - following numba-cuda. 

1011 if self._use_libdevice and not self._libdevice_added: 2)e*e7e:eug;evg=ewgie8e?exgje9e@eyga b

1012 libdevice_path = _find_libdevice_path() 

1013 with open(libdevice_path, "rb") as f: 

1014 libdevice_bytes = f.read() 

1015 libdevice_ptr = <const char*>libdevice_bytes 

1016 libdevice_len = len(libdevice_bytes) 

1017 with nogil: 

1018 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmLazyAddModuleToProgram( 

1019 prog, libdevice_ptr, libdevice_len, NULL)) 

1020 self._libdevice_added = True 

1021  

1022 with nogil: 2)e*e7e:eug;evg=ewgie8e?exgje9e@eyga b

1023 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmCompileProgram(prog, <int>options_vec.size(), options_vec.data())) 2)e*e7e:eug;evg=ewgie8e?exgje9e@eyga b

1024  

1025 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetCompiledResultSize(prog, &output_size)) 2)e*e7e:eug;evg=ewgie8e?exgje9e@eyga b

1026 data = bytearray(output_size) 2)e*e7e:eug;evg=ewgie8e?exgje9e@eyga b

1027 data_ptr = <char*>(<bytearray>data) 2)e*e7e:eug;evg=ewgie8e?exgje9e@eyga b

1028 with nogil: 2)e*e7e:eug;evg=ewgie8e?exgje9e@eyga b

1029 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetCompiledResult(prog, data_ptr)) 2)e*e7e:eug;evg=ewgie8e?exgje9e@eyga b

1030  

1031 # Get compilation log if requested 

1032 if logs is not None: 2)e*e7e:eug;evg=ewgie8e?exgje9e@eyga b

1033 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetProgramLogSize(prog, &logsize)) 

1034 if logsize > 1: 

1035 log = bytearray(logsize) 

1036 data_ptr = <char*>(<bytearray>log) 

1037 with nogil: 

1038 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetProgramLog(prog, data_ptr)) 

1039 logs.write(log.decode("utf-8", errors="backslashreplace")) 

1040  

1041 return ObjectCode._init(bytes(data), target_type, name=self._options.name) 2)e*e7e:eug;evg=ewgie8e?exgje9e@eyga b

1042  

1043# Supported target types per backend 

1044cdef dict SUPPORTED_TARGETS = { 

1045 CompilerBackendType.NVRTC: (ObjectCodeFormatType.PTX, ObjectCodeFormatType.CUBIN, ObjectCodeFormatType.LTOIR), 

1046 CompilerBackendType.NVVM: (ObjectCodeFormatType.PTX, ObjectCodeFormatType.LTOIR), 

1047 CompilerBackendType.NVJITLINK: (ObjectCodeFormatType.CUBIN, ObjectCodeFormatType.PTX), 

1048 CompilerBackendType.DRIVER: (ObjectCodeFormatType.CUBIN, ObjectCodeFormatType.PTX), 

1049} 

1050  

1051  

1052cdef object Program_compile(Program self, str target_type, object name_expressions, object logs): 

1053 """Compile the program to the specified target type.""" 

1054 # Validate target_type for this backend 

1055 supported = SUPPORTED_TARGETS.get(self._backend) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Bgkh7e:eug;evg=ewgie8e?exgje9e@eyga b oh,e-eahbhchdhehfhghhhihjh.eR S

1056 if supported is None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Bgkh7e:eug;evg=ewgie8e?exgje9e@eyga b oh,e-eahbhchdhehfhghhhihjh.eR S

1057 raise ValueError(f'Unknown backend="{self._backend}"') 

1058 if target_type not in supported: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Bgkh7e:eug;evg=ewgie8e?exgje9e@eyga b oh,e-eahbhchdhehfhghhhihjh.eR S

1059 raise ValueError( 2khoh

1060 f'Unsupported target_type="{target_type}" for {self._backend} ' 2khoh

1061 f'(supported: {", ".join(repr(t) for t in supported)})' 2khoh

1062 ) 

1063  

1064 if self._backend == "NVRTC": 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Bg7e:eug;evg=ewgie8e?exgje9e@eyga b ,e-eahbhchdhehfhghhhihjh.eR S

1065 if target_type == "ptx" and not _can_load_generated_ptx(): 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S

1066 warn( 2kelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRee f g N O P d ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e

1067 "The CUDA driver version is older than the backend version. " 

1068 "The generated ptx will not be loadable by the current driver.", 

1069 stacklevel=2, 

1070 category=RuntimeWarning, 2kelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRee f g N O P d ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e

1071 ) 

1072 return Program_compile_nvrtc(self, target_type, name_expressions, logs) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S

1073  

1074 elif self._backend == "NVVM": 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b ahbhchdhehfhghhhihjh

1075 return Program_compile_nvvm(self, target_type, logs) 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b

1076  

1077 else: 

1078 return self._linker.link(target_type) 2ahbhchdhehfhghhhihjh

1079  

1080  

1081cdef inline list _prepare_nvrtc_options_impl(object opts): 

1082 """Build NVRTC-specific compiler options.""" 

1083 options = [f"-arch={opts.arch}"] 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1084 if opts.relocatable_device_code is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1085 options.append(f"--relocatable-device-code={_handle_boolean_option(opts.relocatable_device_code)}") 2kelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRebe

1086 if opts.extensible_whole_program is not None and opts.extensible_whole_program: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1087 options.append("--extensible-whole-program") 2Xe

1088 if opts.debug is not None and opts.debug: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1089 options.append("--device-debug") 2~daeKg

1090 if opts.lineinfo is not None and opts.lineinfo: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1091 options.append("--generate-line-info") 2Kg

1092 if opts.device_code_optimize is not None and opts.device_code_optimize: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1093 options.append("--dopt=on") 2~d

1094 if opts.ptxas_options is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1095 opt_name = "--ptxas-options" 167

1096 if isinstance(opts.ptxas_options, str): 167

1097 options.append(f"{opt_name}={opts.ptxas_options}") 

1098 elif is_sequence(opts.ptxas_options): 167

1099 for opt_value in opts.ptxas_options: 167

1100 options.append(f"{opt_name}={opt_value}") 167

1101 if opts.max_register_count is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1102 options.append(f"--maxrregcount={opts.max_register_count}") 2be

1103 if opts.ftz is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1104 options.append(f"--ftz={_handle_boolean_option(opts.ftz)}") 2}dKg

1105 if opts.prec_sqrt is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1106 options.append(f"--prec-sqrt={_handle_boolean_option(opts.prec_sqrt)}") 2}d

1107 if opts.prec_div is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1108 options.append(f"--prec-div={_handle_boolean_option(opts.prec_div)}") 2}d

1109 if opts.fma is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1110 options.append(f"--fmad={_handle_boolean_option(opts.fma)}") 2ce

1111 if opts.use_fast_math is not None and opts.use_fast_math: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1112 options.append("--use_fast_math") 2ce2g

1113 if opts.extra_device_vectorization is not None and opts.extra_device_vectorization: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1114 options.append("--extra-device-vectorization") 2Se

1115 if opts.link_time_optimization is not None and opts.link_time_optimization: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1116 options.append("--dlink-time-opt") 2/eV W X Te

1117 if opts.gen_opt_lto is not None and opts.gen_opt_lto: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1118 options.append("--gen-opt-lto") 2Ze

1119 if opts.define_macro is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1120 _process_define_macro(options, opts.define_macro) 2U Q h i phthvhwh

1121 if opts.undefine_macro is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1122 if isinstance(opts.undefine_macro, str): 2`d{d

1123 options.append(f"--undefine-macro={opts.undefine_macro}") 2{d

1124 elif is_sequence(opts.undefine_macro): 2`d

1125 for macro in opts.undefine_macro: 2`d

1126 options.append(f"--undefine-macro={macro}") 2`d

1127 if opts.include_path is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1128 if isinstance(opts.include_path, str): 2!e#e$e%e'e(el m n o p q r s t u v w x y z A B C D E F G H I J K L M {dLgMgNgRgTg

1129 options.append(f"--include-path={opts.include_path}") 2{dTg

1130 elif is_sequence(opts.include_path): 2!e#e$e%e'e(el m n o p q r s t u v w x y z A B C D E F G H I J K L M LgMgNgRg

1131 for path in opts.include_path: 2!e#e$e%e'e(el m n o p q r s t u v w x y z A B C D E F G H I J K L M LgMgNg

1132 options.append(f"--include-path={path}") 2!e#e$e%e'e(el m n o p q r s t u v w x y z A B C D E F G H I J K L M

1133 if opts.pre_include is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1134 if isinstance(opts.pre_include, str): 2OgSg

1135 options.append(f"--pre-include={opts.pre_include}") 

1136 elif is_sequence(opts.pre_include): 2OgSg

1137 for header in opts.pre_include: 2Og

1138 options.append(f"--pre-include={header}") 

1139 if opts.no_source_include is not None and opts.no_source_include: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1140 options.append("--no-source-include") 21e

1141 if opts.std is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1142 options.append(f"--std={opts.std}") 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!b#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdY Z cdddedfdgdhdidjdkdldmdndodpdqd0 1 rdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUd2 3 VdWdXdYdZd0d1d2d3d4d5d6d7d8d9d4 5 !d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d6 7

1143 if opts.builtin_move_forward is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1144 options.append(f"--builtin-move-forward={_handle_boolean_option(opts.builtin_move_forward)}") 2We

1145 if opts.builtin_initializer_list is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1146 options.append(f"--builtin-initializer-list={_handle_boolean_option(opts.builtin_initializer_list)}") 2de

1147 if opts.disable_warnings is not None and opts.disable_warnings: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1148 options.append("--disable-warnings") 2de

1149 if opts.restrict is not None and opts.restrict: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1150 options.append("--restrict") 2ee

1151 if opts.device_as_default_execution_space is not None and opts.device_as_default_execution_space: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1152 options.append("--device-as-default-execution-space") 2ee

1153 if opts.device_int128 is not None and opts.device_int128: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1154 options.append("--device-int128") 2fe

1155 if opts.device_float128 is not None and opts.device_float128: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1156 options.append("--device-float128") 

1157 if opts.optimization_info is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1158 options.append(f"--optimization-info={opts.optimization_info}") 2fe

1159 if opts.no_display_error_number is not None and opts.no_display_error_number: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1160 options.append("--no-display-error-number") 2Ue

1161 if opts.diag_error is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1162 if isinstance(opts.diag_error, int): 2|dT

1163 options.append(f"--diag-error={opts.diag_error}") 2|d

1164 elif is_sequence(opts.diag_error): 1T

1165 for error in opts.diag_error: 1T

1166 options.append(f"--diag-error={error}") 1T

1167 if opts.diag_suppress is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1168 if isinstance(opts.diag_suppress, int): 2|dT

1169 options.append(f"--diag-suppress={opts.diag_suppress}") 2|d

1170 elif is_sequence(opts.diag_suppress): 1T

1171 for suppress in opts.diag_suppress: 1T

1172 options.append(f"--diag-suppress={suppress}") 1T

1173 if opts.diag_warn is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1174 if isinstance(opts.diag_warn, int): 2ge

1175 options.append(f"--diag-warn={opts.diag_warn}") 2ge

1176 elif is_sequence(opts.diag_warn): 

1177 for w in opts.diag_warn: 

1178 options.append(f"--diag-warn={w}") 

1179 if opts.brief_diagnostics is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1180 options.append(f"--brief-diagnostics={_handle_boolean_option(opts.brief_diagnostics)}") 2Ve

1181 if opts.time is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1182 options.append(f"--time={opts.time}") 

1183 if opts.split_compile is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1184 options.append(f"--split-compile={opts.split_compile}") 

1185 if opts.fdevice_syntax_only is not None and opts.fdevice_syntax_only: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1186 options.append("--fdevice-syntax-only") 2Ye

1187 if opts.minimal is not None and opts.minimal: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1188 options.append("--minimal") 20e

1189 if opts.no_cache is not None and opts.no_cache: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1190 options.append("--no-cache") 22e

1191 if opts.fdevice_time_trace is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1192 options.append(f"--fdevice-time-trace={opts.fdevice_time_trace}") 2_d

1193 if opts.frandom_seed is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1194 options.append(f"--frandom-seed={opts.frandom_seed}") 23e

1195 if opts.ofast_compile is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1196 options.append(f"--Ofast-compile={opts.ofast_compile}") 24e

1197 # PCH options (CUDA 12.8+) 

1198 if opts.pch is not None and opts.pch: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1199 options.append("--pch") 1j

1200 if opts.create_pch is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1201 options.append(f"--create-pch={opts.create_pch}") 1dc

1202 if opts.use_pch is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1203 options.append(f"--use-pch={opts.use_pch}") 1c

1204 if opts.pch_dir is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1205 options.append(f"--pch-dir={opts.pch_dir}") 

1206 if opts.pch_verbose is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1207 options.append(f"--pch-verbose={_handle_boolean_option(opts.pch_verbose)}") 25e

1208 if opts.pch_messages is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1209 options.append(f"--pch-messages={_handle_boolean_option(opts.pch_messages)}") 26e

1210 if opts.instantiate_templates_in_pch is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1211 options.append( 2he

1212 f"--instantiate-templates-in-pch={_handle_boolean_option(opts.instantiate_templates_in_pch)}" 2he

1213 ) 

1214 if opts.numba_debug: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1215 options.append("--numba-debug") 2ae

1216 return [o.encode() for o in options] 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el m n o p q r s t u v w x y z A B C D E F G H I J K L M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS

1217  

1218  

1219cdef inline object _prepare_nvvm_options_impl(object opts, bint as_bytes): 

1220 """Build NVVM-specific compiler options.""" 

1221 options = [] 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1222  

1223 # Options supported by NVVM 

1224 assert opts.arch is not None 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1225 arch = opts.arch 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1226 if arch.startswith("sm_"): 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1227 arch = f"compute_{arch[3:]}" 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1228 options.append(f"-arch={arch}") 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1229 if opts.debug is not None and opts.debug: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1230 options.append("-g") 21gPg

1231 if opts.numba_debug: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1232 options.append("--numba-debug") 21g

1233 if opts.device_code_optimize is False: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1234 options.append("-opt=0") 2:eug;evg?exg

1235 elif opts.device_code_optimize is True: 2)e*eBg7e=ewgie8eje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1236 options.append("-opt=3") 2ie8eje9ePg

1237 # NVVM uses 0/1 instead of true/false for boolean options 

1238 if opts.ftz is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1239 options.append(f"-ftz={'1' if opts.ftz else '0'}") 2ie8eje9ePg

1240 if opts.prec_sqrt is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1241 options.append(f"-prec-sqrt={'1' if opts.prec_sqrt else '0'}") 2ie8eje9e

1242 if opts.prec_div is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1243 options.append(f"-prec-div={'1' if opts.prec_div else '0'}") 2ie8eje9e

1244 if opts.fma is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1245 options.append(f"-fma={'1' if opts.fma else '0'}") 2ie8eje9e

1246  

1247 # Check for unsupported options and raise error if they are set 

1248 unsupported = [] 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1249 if opts.relocatable_device_code is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1250 unsupported.append("relocatable_device_code") 

1251 if opts.extensible_whole_program is not None and opts.extensible_whole_program: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1252 unsupported.append("extensible_whole_program") 

1253 if opts.lineinfo is not None and opts.lineinfo: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1254 unsupported.append("lineinfo") 2~g

1255 if opts.ptxas_options is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1256 unsupported.append("ptxas_options") 

1257 if opts.max_register_count is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1258 unsupported.append("max_register_count") 

1259 if opts.use_fast_math is not None and opts.use_fast_math: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1260 unsupported.append("use_fast_math") 

1261 if opts.extra_device_vectorization is not None and opts.extra_device_vectorization: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1262 unsupported.append("extra_device_vectorization") 

1263 if opts.gen_opt_lto is not None and opts.gen_opt_lto: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1264 unsupported.append("gen_opt_lto") 

1265 if opts.define_macro is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1266 unsupported.append("define_macro") 

1267 if opts.undefine_macro is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1268 unsupported.append("undefine_macro") 

1269 if opts.include_path is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1270 unsupported.append("include_path") 

1271 if opts.pre_include is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1272 unsupported.append("pre_include") 

1273 if opts.no_source_include is not None and opts.no_source_include: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1274 unsupported.append("no_source_include") 

1275 if opts.std is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1276 unsupported.append("std") 

1277 if opts.builtin_move_forward is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1278 unsupported.append("builtin_move_forward") 

1279 if opts.builtin_initializer_list is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1280 unsupported.append("builtin_initializer_list") 

1281 if opts.disable_warnings is not None and opts.disable_warnings: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1282 unsupported.append("disable_warnings") 

1283 if opts.restrict is not None and opts.restrict: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1284 unsupported.append("restrict") 

1285 if opts.device_as_default_execution_space is not None and opts.device_as_default_execution_space: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1286 unsupported.append("device_as_default_execution_space") 

1287 if opts.device_int128 is not None and opts.device_int128: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1288 unsupported.append("device_int128") 

1289 if opts.optimization_info is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1290 unsupported.append("optimization_info") 

1291 if opts.no_display_error_number is not None and opts.no_display_error_number: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1292 unsupported.append("no_display_error_number") 

1293 if opts.diag_error is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1294 unsupported.append("diag_error") 

1295 if opts.diag_suppress is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1296 unsupported.append("diag_suppress") 

1297 if opts.diag_warn is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1298 unsupported.append("diag_warn") 

1299 if opts.brief_diagnostics is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1300 unsupported.append("brief_diagnostics") 

1301 if opts.time is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1302 unsupported.append("time") 

1303 if opts.split_compile is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1304 unsupported.append("split_compile") 

1305 if opts.fdevice_syntax_only is not None and opts.fdevice_syntax_only: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1306 unsupported.append("fdevice_syntax_only") 

1307 if opts.minimal is not None and opts.minimal: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1308 unsupported.append("minimal") 

1309 if unsupported: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g

1310 raise CUDAError(f"The following options are not supported by NVVM backend: {', '.join(unsupported)}") 2~g

1311  

1312 if as_bytes: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b PgQgUgVgWgXg{g|g}gYgZg0g

1313 return [o.encode() for o in options] 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b PgQgUgVgWgXg{g|g}gYgZg0g

1314 else: 

1315 return options