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

670 statements  

« prev     ^ index     » next       coverage.py v7.15.0, created at 2026-07-03 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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKhvh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNh/e:ed ~dPhc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk uhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b QhLhGhwh=eIhVhThHhOhthihjhkhlh?emhnhohphqhrh@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

82  

83 def close(self) -> None: 

84 """Destroy this program.""" 

85 if self._linker: 2/e:ed ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk uhJgsh]eCg^eDg_eEgoe'e`eFgpe(e{eGga b Ghthihjhkhlhmhnhohphqhrh@e

86 self._linker.close() 2thihjhkhlhmhnhohphqhrh

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

88 self._h_nvrtc.reset() 2/e:ed ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk uhJgsh]eCg^eDg_eEgoe'e`eFgpe(e{eGga b Ghthihjhkhlhmhnhohphqhrh@e

89 self._h_nvvm.reset() 2/e:ed ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk uhJgsh]eCg^eDg_eEgoe'e`eFgpe(e{eGga b Ghthihjhkhlhmhnhohphqhrh@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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBg/e:ed ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk Jgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b wh=eihjhkhlh?emhnhohphqhrh@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

152  

153 if cache is None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBg/e:ed ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk Jgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b wh=eihjhkhlh?emhnhohphqhrh@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

154 return _program_compile_uncached(self, target_type, name_expressions, logs) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBg/e:ed ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk Jgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b wh=eihjhkhlh?emhnhohphqhrh@eJh

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 ( 2MgKgLgNgR QgOgChyhzhAhRgFhPgS

162 ProgramCacheResource, 

163 make_program_cache_key, 

164 ) 

165  

166 if not isinstance(cache, ProgramCacheResource): 2MgKgLgNgR QgOgChyhzhAhRgFhPgS

167 raise TypeError( 2Ch

168 "cache must be an instance of " 2Ch

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

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

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: 2MgKgLgNgR QgOgyhzhAhRgFhPgS

183 raise ValueError( 2Fh

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") 2MgKgLgNgR QgOgyhzhAhRgPgS

200  

201 key = make_program_cache_key( 2MgKgLgNgR QgOgyhzhAhRgPgS

202 code=code_for_key, 

203 code_type=self._code_type, 

204 options=self._options, 

205 target_type=target_type, 2MgKgLgNgR QgOgyhzhAhRgPgS

206 ) 

207 hit_bytes = cache.get(key) 2MgKgLgNgR QgOgRgPgS

208 if hit_bytes is not None: 2MgKgLgNgR QgOgPgS

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 ( 2MgKgLgNgR S

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

217 and target_type == "ptx" 2MgKgLgNgR S

218 and not _can_load_generated_ptx() 2KgLg

219 ): 

220 warn( 2Kg

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, 2Kg

225 ) 

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

227 compiled = _program_compile_uncached(self, target_type, name_expressions, logs) 2MgR QgOgPgS

228 cache[key] = compiled 2MgR OgPgS

229 return compiled 2MgR OgS

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 ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneuh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b LhHhihjhkhlhmhnhohphqhrh

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": 2uh%eIhHhth

278 return as_py(self._h_nvrtc) 2IhHh

279 elif self._backend == "NVVM": 2uh%eth

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

281 else: 

282 return self._linker.handle 2th

283  

284 def __repr__(self) -> str: 

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

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() 2Hg8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKhvh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNh/e:ed ~dPhc ae2h3hWhZh6hIgk uhJgsh%e9ga b QhRhSh7hUhLhGhwh=eIhVhThHh5hSghhXgxhBhDhEh8hOhth?e@eYgTgUgVgZgWg0g9h!h#h$h%h1g#g$g%g'g'h(h(g)g*g+g,g!g-g.g/g2g)h*h+h:g3g,h4g-h;g.h=g?g@g5g/h:h[g]g^g_g`gehfhgh6g7g;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuivi{gwixiyiziAiBiCiDiEiFiGiHi0h1h|g}g~gahIiJiKiLiMiNiOiPiQiRiSiTibhUich8gdhViMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

527 # Set arch to default if not provided 

528 if self.arch is None: 2Hg8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKhvh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNh/e:ed ~dPhc ae2h3hWhZh6hIgk uhJgsh%e9ga b QhRhSh7hUhLhGhwh=eIhVhThHh5hSghhXgxhBhDhEh8hOhth?e@eYgTgUgVgZgWg0g9h!h#h$h%h1g#g$g%g'g'h(h(g)g*g+g,g!g-g.g/g2g)h*h+h:g3g,h4g-h;g.h=g?g@g5g/h:h[g]g^g_g`gehfhgh6g7g;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuivi{gwixiyiziAiBiCiDiEiFiGiHi0h1h|g}g~gahIiJiKiLiMiNiOiPiQiRiSiTibhUich8gdhViMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

529 self.arch = f"sm_{Device().arch}" 2HgbfqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcV W X N O P ecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)cffgfhfifjfkflfmfnfofpfqfrfsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfHfIfJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f?f@f[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggghgigjgkglgmgngKhvhogpgqgrgsgtgugvgwgxgygzgMhAgBgNhd ~dPhc aeIgk uhJgsh%ea b QhLhGhwh=eIhVhThHhOhth?e@e

530 if self.extra_sources is not None: 2Hg8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKhvh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNh/e:ed ~dPhc ae2h3hWhZh6hIgk uhJgsh%e9ga b QhRhSh7hUhLhGhwh=eIhVhThHh5hSghhXgxhBhDhEh8hOhth?e@eYgTgUgVgZgWg0g9h!h#h$h%h1g#g$g%g'g'h(h(g)g*g+g,g!g-g.g/g2g)h*h+h:g3g,h4g-h;g.h=g?g@g5g/h:h[g]g^g_g`gehfhgh6g7g;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuivi{gwixiyiziAiBiCiDiEiFiGiHi0h1h|g}g~gahIiJiKiLiMiNiOiPiQiRiSiTibhUich8gdhViMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

531 if not is_sequence(self.extra_sources): 2Ph2h3hWhZh6ha b RhShUhOh0h1h

532 raise TypeError( 26h

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

534 ) 

535 for i, module in enumerate(self.extra_sources): 2Ph2h3hWhZha b RhShUhOh0h1h

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

537 raise TypeError( 23h

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

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

540 ) 

541  

542 module_name, module_source = module 2Ph2hWhZha b RhShUhOh0h1h

543  

544 if not isinstance(module_name, str): 2Ph2hWhZha b RhShUhOh0h1h

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

546  

547 if not isinstance(module_source, (str, bytes, bytearray)): 2PhWhZha b RhShUhOh0h1h

548 raise TypeError( 2Wh

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

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

551 ) 

552  

553 if len(module_source) == 0: 2PhZha b RhShUhOh0h1h

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

555  

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

557 return _prepare_nvrtc_options_impl(self) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSgxhBhDhEh?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBg/e:ed ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk Jg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b =e5hSghhXgxhBhDhEh?e@eYgTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g2g:g3g4g;g=g?g@g5g[g]g^g_g`gehfhgh6g7g{g|g}g~gahbhch8gdhMgKgLgNgR QgOgRgPgS

595 if backend == "nvrtc": 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBg/e:ed ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk Jg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b =e5hSghhXgxhBhDhEh?e@eYgTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g2g:g3g4g;g=g?g@g5g[g]g^g_g`gehfhgh6g7g{g|g}g~gahbhch8gdhMgKgLgNgR QgOgRgPgS

596 return self._prepare_nvrtc_options() 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSgxhBhDhEh?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

597 elif backend == "nvvm": 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b 5hhhXgYg2g3g4g5gehfhgh6g7g8g

598 options = self._prepare_nvvm_options(as_bytes=True) 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

599 if target_type == "ltoir" and b"-gen-lto" not in options: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b XgYg2g3g4g5gehfhgh6g7g8g

600 options.append(b"-gen-lto") 2/e:e]e^e_eoe`epe{ea

601 return options 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b XgYg2g3g4g5gehfhgh6g7g8g

602 else: 

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

604  

605 def __repr__(self) -> str: 

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

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 RhSh7hUh

611 return None 27h

612  

613 result = [] 2a b RhShUh

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

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

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

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

618 elif isinstance(module_source, bytearray): 2RhSh

619 source_bytes = bytes(module_source) 2Rh

620 else: 

621 source_bytes = module_source 2Sh

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

623 return result 2a b RhShUh

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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBg/e:ed ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk Jgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b wh=eihjhkhlh?emhnhohphqhrh@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: 2HgvhXhYh4h/e:euhJgshWi%e]eCgXi^eDg_eEgoe'e`eFgpe(e{eGga b QhYg2g3g4g5g6g7g8g

653 if _nvvm_module is None: 2vh/e:euhJgshWi%e]eCgXi^eDg_eEgoe'e`eFgpe(e{eGga b QhYg2g3g4g5g6g7g8g

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

655 return _nvvm_module 2vh/e:euhJgshWi%e]eCgXi^eDg_eEgoe'e`eFgpe(e{eGga b QhYg2g3g4g5g6g7g8g

656  

657 _nvvm_import_attempted = True 2HgXhYh4h

658  

659 try: 2HgXhYh4h

660 version = binding_version() 2HgXhYh4h

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

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( 2HgXhYh4h

668 "cuda.bindings.nvvm", 

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

670 ) 

671 if nvvm is None: 2HgXhYh

672 raise RuntimeError( 2XhYh

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: 2XhYh4h

680 _nvvm_module = None 2XhYh

681 raise 2XhYh

682  

683def _find_libdevice_path() -> object: 

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

685 from cuda.pathfinder import find_bitcode_lib 23i

686 return find_bitcode_lib("device") 23i

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 xhBhDhEh

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

695 return True 1U

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

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

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

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

700 return True 1Qhi

701 return False 2h i xhBh

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 xhBhDhEh

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

708 return 1UQ

709 if is_nested_sequence(macro): 2h i xhBh

710 for seq_macro in macro: 2h i xh

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

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}") 2Bh

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() 2qereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXee f g YiN ZiO 0iP 1i2id ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =e?eKgLg

720 nvrtc_major, nvrtc_minor = handle_return(nvrtc.nvrtcVersion()) 2qereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXee f g YiN ZiO 0iP 1i2id ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =e?eKgLg

721 return (nvrtc_major, nvrtc_minor, 0) <= drv 2qereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXee f g YiN ZiO 0iP 1i2id ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =e?eKgLg

722  

723  

724cdef inline object _translate_program_options(object options): 

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

726 return LinkerOptions( 2thihjhkhlhmhnhohphqhrh

727 name=options.name, 2thihjhkhlhmhnhohphqhrh

728 arch=options.arch, 2thihjhkhlhmhnhohphqhrh

729 max_register_count=options.max_register_count, 2thihjhkhlhmhnhohphqhrh

730 time=options.time, 2thihjhkhlhmhnhohphqhrh

731 link_time_optimization=options.link_time_optimization, 2thihjhkhlhmhnhohphqhrh

732 debug=options.debug, 2thihjhkhlhmhnhohphqhrh

733 lineinfo=options.lineinfo, 2thihjhkhlhmhnhohphqhrh

734 ftz=options.ftz, 2thihjhkhlhmhnhohphqhrh

735 prec_div=options.prec_div, 2thihjhkhlhmhnhohphqhrh

736 prec_sqrt=options.prec_sqrt, 2thihjhkhlhmhnhohphqhrh

737 fma=options.fma, 2thihjhkhlhmhnhohphqhrh

738 split_compile=options.split_compile, 2thihjhkhlhmhnhohphqhrh

739 ptxas_options=options.ptxas_options, 2thihjhkhlhmhnhohphqhrh

740 no_cache=options.no_cache, 2thihjhkhlhmhnhohphqhrh

741 numba_debug = options.numba_debug 2thihjhkhlhmhnhohphqhrh

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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKhvh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNh/e:ed ~dPhc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk uhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b QhLhGhwh=eIhVhThHhOhthihjhkhlh?emhnhohphqhrh@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

758 code_type = code_type.lower() 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKhvh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNh/e:ed ~dPhc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk uhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b QhLhGhwh=eIhVhThHhOhthihjhkhlh?emhnhohphqhrh@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

759 self._code_type = code_type 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKhvh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNh/e:ed ~dPhc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk uhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b QhLhGhwh=eIhVhThHhOhthihjhkhlh?emhnhohphqhrh@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

760 self._compile_lock = threading.Lock() 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKhvh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNh/e:ed ~dPhc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk uhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b QhLhGhwh=eIhVhThHhOhthihjhkhlh?emhnhohphqhrh@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

761 self._use_libdevice = False 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKhvh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNh/e:ed ~dPhc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk uhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b QhLhGhwh=eIhVhThHhOhthihjhkhlh?emhnhohphqhrh@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

762 self._libdevice_added = False 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKhvh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNh/e:ed ~dPhc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk uhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b QhLhGhwh=eIhVhThHhOhthihjhkhlh?emhnhohphqhrh@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

763  

764 self._pch_status = None 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKhvh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNh/e:ed ~dPhc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk uhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b QhLhGhwh=eIhVhThHhOhthihjhkhlh?emhnhohphqhrh@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

765  

766 if code_type == "c++": 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKhvh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNh/e:ed ~dPhc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk uhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b QhLhGhwh=eIhVhThHhOhthihjhkhlh?emhnhohphqhrh@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

767 assert_type(code, str) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNhd ~dPhc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk LhGhwh=eIhVhHh?e@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

768 if options.extra_sources is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNhd ~dPhc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk LhGhwh=eIhHh?e@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

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

770  

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

772 code_bytes = code.encode() 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNhd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk LhGhwh=eIhHh?e@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

773 code_ptr = <const char*>code_bytes 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNhd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk LhGhwh=eIhHh?e@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

774 name_ptr = <const char*>options._name 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNhd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk LhGhwh=eIhHh?e@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

775  

776 with nogil: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNhd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk LhGhwh=eIhHh?e@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

777 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcCreateProgram( 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNhd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk LhGhwh=eIhHh?e@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

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

779 self._h_nvrtc = create_nvrtc_program_handle(nvrtc_prog) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNhd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk LhGhwh=eIhHh?e@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

780 self._code = code_bytes 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNhd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk LhGhwh=eIhHh?e@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

781 self._backend = str(CompilerBackendType.NVRTC) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNhd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk LhGhwh=eIhHh?e@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

782 self._linker = None 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNhd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk LhGhwh=eIhHh?e@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

783  

784 elif code_type == "ptx": 2vh/e:euhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b QhThOhthihjhkhlhmhnhohphqhrh

785 assert_type(code, str) 2Ohthihjhkhlhmhnhohphqhrh

786 if options.extra_sources is not None: 2Ohthihjhkhlhmhnhohphqhrh

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

788 code_bytes = code.encode() 2thihjhkhlhmhnhohphqhrh

789 self._code = code_bytes 2thihjhkhlhmhnhohphqhrh

790 self._linker = Linker( 2thihjhkhlhmhnhohphqhrh

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

792 ) 

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

794  

795 elif code_type == "nvvm": 2vh/e:euhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b QhTh

796 _get_nvvm_module() # Validate NVVM availability 2vh/e:euhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b Qh

797 if isinstance(code, str): 2vh/e:euhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b Qh

798 code = code.encode("utf-8") 2vhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

799 elif not isinstance(code, (bytes, bytearray)): 2/e:euhQh

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

801 self._code = bytes(code) # Coerce bytearray -> bytes so retention type is stable 2vh/e:euhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga 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 2vh/e:euhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

806 name_ptr = <const char*>options._name 2vh/e:euhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

807 code_len = len(self._code) 2vh/e:euhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

808  

809 with nogil: 2vh/e:euhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

810 HANDLE_RETURN_NVVM(NULL, cynvvm.nvvmCreateProgram(&nvvm_prog)) 2vh/e:euhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

811 self._h_nvvm = create_nvvm_program_handle(nvvm_prog) # RAII from here 2vh/e:euhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

812 with nogil: 2vh/e:euhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

813 HANDLE_RETURN_NVVM(nvvm_prog, cynvvm.nvvmAddModuleToProgram(nvvm_prog, code_ptr, code_len, name_ptr)) 2vh/e:euhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

814  

815 # Add extra modules if provided 

816 if options.extra_sources is not None: 2vh/e:euhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga 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: 2vh/e:euhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

828 self._use_libdevice = True 

829  

830 self._backend = str(CompilerBackendType.NVVM) 2vh/e:euhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

831 self._linker = None 2vh/e:euhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

832  

833 else: 

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

835 if options.use_libdevice: 2Th

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

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

838  

839 return 0 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgngKhvh/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzgMh|dAg}dBgNh/e:ed ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk uhJgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b LhGhwh=eIhHhthihjhkhlh?emhnhohphqhrh@eMgKgLgNgR QgOgChyhzhAhRgFhPgS Jh

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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =e?e@eR S

852 cdef size_t logsize = 0 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =e?e@eR S

853 cdef vector[const char*] options_vec 

854 cdef char* data_ptr = NULL 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =e?e@eR S

855 cdef bytes name_bytes 

856 cdef const char* name_ptr = NULL 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =e?e@eR S

857 cdef const char* lowered_name = NULL 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =e?e@eR S

858 cdef dict symbol_mapping = {} 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =e?e@eR S

859  

860 # Add name expressions before compilation 

861 if name_expressions: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =e?e@eR S

862 for n in name_expressions: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'bl 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 (b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P ecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdY Z idjdkdldmdndodpdqdrdsdtdudvdwd0 1 xdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d2 3 1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d4 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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'bl 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 (b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P ecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdY Z idjdkdldmdndodpdqdrdsdtdudvdwd0 1 xdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d2 3 1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d4 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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'bl 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 (b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P ecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdY Z idjdkdldmdndodpdqdrdsdtdudvdwd0 1 xdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d2 3 1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d4 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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'bl 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 (b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P ecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdY Z idjdkdldmdndodpdqdrdsdtdudvdwd0 1 xdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d2 3 1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d4 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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =e?e@eR S

869 for i in range(len(options_list)): 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =e?e@eR S

870 options_vec[i] = <const char*>(<bytes>options_list[i]) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =e?e@eR S

871  

872 # Compile 

873 with nogil: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =e?e@eR S

874 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcCompileProgram(prog, <int>options_vec.size(), options_vec.data())) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =e?e@eR S

875  

876 # Get compiled output based on target type 

877 if target_type == "ptx": 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$enek =e?e@eR S

878 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPTXSize(prog, &output_size)) 2qereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXee f g N O P d ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$enek =e?e

879 data = bytearray(output_size) 2qereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXee f g N O P d ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$enek =e?e

880 data_ptr = <char*>(<bytearray>data) 2qereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXee f g N O P d ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$enek =e?e

881 with nogil: 2qereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXee f g N O P d ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$enek =e?e

882 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPTX(prog, data_ptr)) 2qereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXee f g N O P d ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$enek =e?e

883 elif target_type == "cubin": 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)b[e*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBg@eR S

884 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetCUBINSize(prog, &output_size)) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)b*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmg/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBg@eR S

885 data = bytearray(output_size) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)b*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmg/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBg@eR S

886 data_ptr = <char*>(<bytearray>data) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)b*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmg/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBg@eR S

887 with nogil: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)b*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmg/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBg@eR S

888 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetCUBIN(prog, data_ptr)) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)b*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmg/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBg@eR S

889 else: # ltoir 

890 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLTOIRSize(prog, &output_size)) 2[eV W X ng

891 data = bytearray(output_size) 2[eV W X ng

892 data_ptr = <char*>(<bytearray>data) 2[eV W X ng

893 with nogil: 2[eV W X ng

894 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLTOIR(prog, data_ptr)) 2[eV W X ng

895  

896 # Get lowered names after compilation 

897 if name_expressions: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$enek =e?e@eR S

898 for n in name_expressions: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'bl 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 (b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P ecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdY Z idjdkdldmdndodpdqdrdsdtdudvdwd0 1 xdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d2 3 1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d4 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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'bl 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 (b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P ecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdY Z idjdkdldmdndodpdqdrdsdtdudvdwd0 1 xdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d2 3 1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d4 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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'bl 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 (b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P ecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdY Z idjdkdldmdndodpdqdrdsdtdudvdwd0 1 xdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d2 3 1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d4 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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'bl 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 (b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P ecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdY Z idjdkdldmdndodpdqdrdsdtdudvdwd0 1 xdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d2 3 1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d4 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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'bl 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 (b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P ecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdY Z idjdkdldmdndodpdqdrdsdtdudvdwd0 1 xdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d2 3 1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d4 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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$enek =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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$enek =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") 1j

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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =e?e@eR S

943 cdef list options_list = self._options.as_bytes("nvrtc", target_type) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =e?e@eR S

944  

945 result = _nvrtc_compile_and_extract( 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =e?e@eR S

946 prog, target_type, name_expressions, logs, options_list, self._options.name, 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =e?e@eR S

947 ) 

948  

949 cdef bint pch_creation_possible = self._options.create_pch or self._options.pch 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$enek =e?e@eR S

950 if not pch_creation_possible or not _has_nvrtc_pch_apis(): 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$enek =e?e@eR S

951 self._pch_status = None 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!e#e$enek =e?e@eR S

952 return result 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!e#e$enek =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:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

992 cdef size_t output_size = 0 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

993 cdef size_t logsize = 0 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

994 cdef vector[const char*] options_vec 

995 cdef char* data_ptr = NULL 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga 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:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

1001 options_vec.resize(len(options_list)) 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

1002 for i in range(len(options_list)): 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

1003 options_vec[i] = <const char*>(<bytes>options_list[i]) 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

1004  

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

1006 with self._compile_lock: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

1007 with nogil: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

1008 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmVerifyProgram(prog, <int>options_vec.size(), options_vec.data())) 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

1009  

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

1011 if self._use_libdevice and not self._libdevice_added: 2/e:e%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga 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:e%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

1023 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmCompileProgram(prog, <int>options_vec.size(), options_vec.data())) 2/e:e%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

1024  

1025 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetCompiledResultSize(prog, &output_size)) 2/e:e%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

1026 data = bytearray(output_size) 2/e:e%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

1027 data_ptr = <char*>(<bytearray>data) 2/e:e%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

1028 with nogil: 2/e:e%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

1029 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetCompiledResult(prog, data_ptr)) 2/e:e%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

1030  

1031 # Get compilation log if requested 

1032 if logs is not None: 2/e:e%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga 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:e%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga 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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBg/e:ed ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk Jgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b wh=eihjhkhlh?emhnhohphqhrh@eR S

1056 if supported is None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBg/e:ed ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk Jgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b wh=eihjhkhlh?emhnhohphqhrh@eR S

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

1058 if target_type not in supported: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBg/e:ed ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk Jgsh%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b wh=eihjhkhlh?emhnhohphqhrh@eR S

1059 raise ValueError( 2shwh

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

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

1062 ) 

1063  

1064 if self._backend == "NVRTC": 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBg/e:ed ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk Jg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b =eihjhkhlh?emhnhohphqhrh@eR S

1065 if target_type == "ptx" and not _can_load_generated_ptx(): 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =e?e@eR S

1066 warn( 2qereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXee f g N O P d ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =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, 2qereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXee f g N O P d ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =e?e

1071 ) 

1072 return Program_compile_nvrtc(self, target_type, name_expressions, logs) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =e?e@eR S

1073  

1074 elif self._backend == "NVVM": 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b ihjhkhlhmhnhohphqhrh

1075 return Program_compile_nvvm(self, target_type, logs) 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGga b

1076  

1077 else: 

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

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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSgxhBhDhEh?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

1084 if opts.relocatable_device_code is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSgxhBhDhEh?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1086 if opts.extensible_whole_program is not None and opts.extensible_whole_program: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSgxhBhDhEh?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

1087 options.append("--extensible-whole-program") 23e

1088 if opts.debug is not None and opts.debug: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSgxhBhDhEh?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

1089 options.append("--device-debug") 2fegeSg

1090 if opts.lineinfo is not None and opts.lineinfo: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSgxhBhDhEh?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1092 if opts.device_code_optimize is not None and opts.device_code_optimize: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSgxhBhDhEh?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1094 if opts.ptxas_options is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSgxhBhDhEh?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSgxhBhDhEh?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1103 if opts.ftz is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSgxhBhDhEh?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1105 if opts.prec_sqrt is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSgxhBhDhEh?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1107 if opts.prec_div is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSgxhBhDhEh?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1109 if opts.fma is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSgxhBhDhEh?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1111 if opts.use_fast_math is not None and opts.use_fast_math: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSgxhBhDhEh?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

1112 options.append("--use_fast_math") 2ie!g

1113 if opts.extra_device_vectorization is not None and opts.extra_device_vectorization: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSgxhBhDhEh?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1115 if opts.link_time_optimization is not None and opts.link_time_optimization: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSgxhBhDhEh?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

1116 options.append("--dlink-time-opt") 2[eV W X Ze

1117 if opts.gen_opt_lto is not None and opts.gen_opt_lto: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSgxhBhDhEh?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

1118 options.append("--gen-opt-lto") 25e

1119 if opts.define_macro is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSgxhBhDhEh?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1121 if opts.undefine_macro is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

1122 if isinstance(opts.undefine_macro, str): 2bece

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

1124 elif is_sequence(opts.undefine_macro): 2be

1125 for macro in opts.undefine_macro: 2be

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

1127 if opts.include_path is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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 ceTgUgVgZg1g

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

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 TgUgVgZg

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 TgUgVg

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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

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

1136 elif is_sequence(opts.pre_include): 2Wg0g

1137 for header in opts.pre_include: 2Wg

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

1139 if opts.no_source_include is not None and opts.no_source_include: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1141 if opts.std is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

1142 options.append(f"--std={opts.std}") 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-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 (b)b*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdY Z idjdkdldmdndodpdqdrdsdtdudvdwd0 1 xdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d2 3 1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d4 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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1145 if opts.builtin_initializer_list is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1147 if opts.disable_warnings is not None and opts.disable_warnings: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1149 if opts.restrict is not None and opts.restrict: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1151 if opts.device_as_default_execution_space is not None and opts.device_as_default_execution_space: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1153 if opts.device_int128 is not None and opts.device_int128: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1155 if opts.device_float128 is not None and opts.device_float128: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1157 if opts.optimization_info is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1159 if opts.no_display_error_number is not None and opts.no_display_error_number: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

1160 options.append("--no-display-error-number") 20e

1161 if opts.diag_error is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

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

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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

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

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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

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

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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1181 if opts.time is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1183 if opts.split_compile is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

1186 options.append("--fdevice-syntax-only") 24e

1187 if opts.minimal is not None and opts.minimal: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1189 if opts.no_cache is not None and opts.no_cache: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1191 if opts.fdevice_time_trace is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1193 if opts.frandom_seed is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1195 if opts.ofast_compile is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1197 # PCH options (CUDA 12.8+) 

1198 if opts.pch is not None and opts.pch: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1200 if opts.create_pch is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1202 if opts.use_pch is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1204 if opts.pch_dir is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1206 if opts.pch_verbose is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1208 if opts.pch_messages is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1210 if opts.instantiate_templates_in_pch is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

1211 options.append( 2ne

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

1213 ) 

1214 if opts.numba_debug: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

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

1216 return [o.encode() for o in options] 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b)e*e+e,e|e}e~eaf-e.ebfl 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 (b)bqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVe[eWeXe*b+b,b-b.b/b:b;bcf=b?b@b[b]b^b_b`b{b|b}b~bacbcccdce f g V W X N O P dfefecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cff+cgfhf,cif-cjf.c/c:ckf;clf=c?c@c[c]c^c_c`c{c|cmf}cnf~cofadpfbdcdddqfedrffdgdhdsfY tfufvfwfxfyfzfAfBfZ CfDfEfFfGfidjdkdldmdndodpdqdrdsdtdHfudIfvdwdJf0 KfLfMfNfOfPfQfRfSfTf1 UfVfWfXfYfxdydzdZfAd0fBd1fCd2fDdEdFd3fGd4fHdIdJdKdLdMdNdOdPdQd5fRd6fSd7fTd8fUdVdWd9fXd!fYdZd0d#f2 $f%f'f(f)f*f+f,f-f3 .f/f:f;f=f1d2d3d4d5d6d7d8d9d!d#d$d?f%d@f'd(d[f4 ]f^f_f`f{f|f}f~fagbg5 cgdgegfggg)d*d+dhg,digjgkg-dlg.dmgng/dog:dpg;dqg=drg?dsg@dtg[dug]dvg^dwg_dxg`dyg{dzg|dAg}dBgd ~dc ae;efegeheeeieYeZeU Q h i becejekele0edeT me6 7 1e2e3e4e5e6e7e8e9e!ej #e$eneIgk =eSg?e@eTgUgVgZgWg0g1g#g$g%g'g(g)g*g+g,g!g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhMgKgLgNgR QgOgRgPgS

1217  

1218  

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

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

1221 options = [] 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1222  

1223 # Options supported by NVVM 

1224 assert opts.arch is not None 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1225 arch = opts.arch 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1226 if arch.startswith("sm_"): 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1227 arch = f"compute_{arch[3:]}" 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1228 options.append(f"-arch={arch}") 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1229 if opts.debug is not None and opts.debug: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1230 options.append("-g") 29gXg

1231 if opts.numba_debug: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

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

1233 if opts.device_code_optimize is False: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1234 options.append("-opt=0") 2]eCg^eDg`eFg

1235 elif opts.device_code_optimize is True: 2/e:eJg%e_eEgoe'epe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1236 options.append("-opt=3") 2oe'epe(eXg

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

1238 if opts.ftz is not None: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

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

1240 if opts.prec_sqrt is not None: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

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

1242 if opts.prec_div is not None: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

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

1244 if opts.fma is not None: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

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

1246  

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

1248 unsupported = [] 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1249 if opts.relocatable_device_code is not None: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1250 unsupported.append("relocatable_device_code") 

1251 if opts.extensible_whole_program is not None and opts.extensible_whole_program: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1252 unsupported.append("extensible_whole_program") 

1253 if opts.lineinfo is not None and opts.lineinfo: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1254 unsupported.append("lineinfo") 2hh

1255 if opts.ptxas_options is not None: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1256 unsupported.append("ptxas_options") 

1257 if opts.max_register_count is not None: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1258 unsupported.append("max_register_count") 

1259 if opts.use_fast_math is not None and opts.use_fast_math: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1260 unsupported.append("use_fast_math") 

1261 if opts.extra_device_vectorization is not None and opts.extra_device_vectorization: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1262 unsupported.append("extra_device_vectorization") 

1263 if opts.gen_opt_lto is not None and opts.gen_opt_lto: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1264 unsupported.append("gen_opt_lto") 

1265 if opts.define_macro is not None: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1266 unsupported.append("define_macro") 

1267 if opts.undefine_macro is not None: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1268 unsupported.append("undefine_macro") 

1269 if opts.include_path is not None: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1270 unsupported.append("include_path") 

1271 if opts.pre_include is not None: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1272 unsupported.append("pre_include") 

1273 if opts.no_source_include is not None and opts.no_source_include: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1274 unsupported.append("no_source_include") 

1275 if opts.std is not None: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1276 unsupported.append("std") 

1277 if opts.builtin_move_forward is not None: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1278 unsupported.append("builtin_move_forward") 

1279 if opts.builtin_initializer_list is not None: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1280 unsupported.append("builtin_initializer_list") 

1281 if opts.disable_warnings is not None and opts.disable_warnings: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1282 unsupported.append("disable_warnings") 

1283 if opts.restrict is not None and opts.restrict: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1284 unsupported.append("restrict") 

1285 if opts.device_as_default_execution_space is not None and opts.device_as_default_execution_space: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1286 unsupported.append("device_as_default_execution_space") 

1287 if opts.device_int128 is not None and opts.device_int128: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1288 unsupported.append("device_int128") 

1289 if opts.optimization_info is not None: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1290 unsupported.append("optimization_info") 

1291 if opts.no_display_error_number is not None and opts.no_display_error_number: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1292 unsupported.append("no_display_error_number") 

1293 if opts.diag_error is not None: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1294 unsupported.append("diag_error") 

1295 if opts.diag_suppress is not None: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1296 unsupported.append("diag_suppress") 

1297 if opts.diag_warn is not None: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1298 unsupported.append("diag_warn") 

1299 if opts.brief_diagnostics is not None: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1300 unsupported.append("brief_diagnostics") 

1301 if opts.time is not None: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1302 unsupported.append("time") 

1303 if opts.split_compile is not None: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1304 unsupported.append("split_compile") 

1305 if opts.fdevice_syntax_only is not None and opts.fdevice_syntax_only: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1306 unsupported.append("fdevice_syntax_only") 

1307 if opts.minimal is not None and opts.minimal: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

1308 unsupported.append("minimal") 

1309 if unsupported: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b hhXgYg2g3g4g5gehfhgh6g7g8g

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

1311  

1312 if as_bytes: 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b XgYg2g3g4g5gehfhgh6g7g8g

1313 return [o.encode() for o in options] 2/e:eJg%e]eCg^eDg_eEgoe'e`eFgpe(e{eGg9ga b XgYg2g3g4g5gehfhgh6g7g8g

1314 else: 

1315 return options