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

667 statements  

« prev     ^ index     » next       coverage.py v7.14.0, created at 2026-05-22 01:37 +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 warnings import warn 

15  

16from cuda.bindings import nvrtc 

17from cuda.pathfinder._optional_cuda_import import _optional_cuda_import 

18  

19from libcpp.vector cimport vector 

20  

21from ._resource_handles cimport ( 

22 as_cu, 

23 as_py, 

24 create_nvrtc_program_handle, 

25 create_nvvm_program_handle, 

26) 

27from cuda.bindings cimport cynvrtc, cynvvm 

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

29from cuda.core._device import Device 

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

31from cuda.core._module import ObjectCode 

32from cuda.core._utils.clear_error_support import assert_type 

33from cuda.core._utils.cuda_utils import ( 

34 CUDAError, 

35 _handle_boolean_option, 

36 check_or_create_options, 

37 handle_return, 

38 is_nested_sequence, 

39 is_sequence, 

40) 

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

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

43  

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

45  

46ProgramHandleT = nvrtc.nvrtcProgram | int | LinkerHandleT 

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

48  

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

50""" 

51  

52  

53# ============================================================================= 

54# Principal Class 

55# ============================================================================= 

56  

57  

58cdef class Program: 

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

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

61  

62 This object provides a unified interface to multiple underlying 

63 compiler libraries. Compilation support is enabled for a wide 

64 range of code types and compilation types. 

65  

66 Parameters 

67 ---------- 

68 code : str | bytes | bytearray 

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

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

71 code_type : SourceCodeType | str 

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

73 options : :class:`ProgramOptions`, optional 

74 Options to customize the compilation process. 

75 """ 

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

77 Program_init(self, code, str(code_type), options) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Ehzhuhkhb whGhFhvhChhh}g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

78  

79 def close(self): 

80 """Destroy this program.""" 

81 if self._linker: 2iejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d uhhh}g~gahbhchdhehfhgh)e

82 self._linker.close() 2hh}g~gahbhchdhehfhgh

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

84 self._h_nvrtc.reset() 2iejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d uhhh}g~gahbhchdhehfhgh)e

85 self._h_nvvm.reset() 2iejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d uhhh}g~gahbhchdhehfhgh)e

86  

87 def compile( 

88 self, 

89 target_type: ObjectCodeFormatType | str, 

90 name_expressions: tuple | list = (), 

91 logs=None, 

92 *, 

93 cache: "ProgramCacheResource | None" = None, 

94 ) -> ObjectCode: 

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

96  

97 Parameters 

98 ---------- 

99 target_type : ObjectCodeFormatType | str 

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

101 name_expressions : tuple | list, optional 

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

103 Used for template instantiation and similar cases. 

104 logs : object, optional 

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

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

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

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

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

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

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

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

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

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

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

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

117 ``name_expressions`` together with ``cache=`` raises 

118 ``ValueError``: NVRTC populates 

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

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

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

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

123 ``pre_include``, ``pch``, ``use_pch``, ``pch_dir``, NVVM 

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

125 directory component) raise ``ValueError`` via 

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

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

128 pattern directly. 

129  

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

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

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

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

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

135 and vice-versa. 

136  

137 Returns 

138 ------- 

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

140 The compiled object code. 

141 """ 

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

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

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

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

146 # lowercases too. 

147 target_type = str(target_type).lower() 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgiejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP yg|g^d.esg/etg:eug|dae;evg}dbe=ewga d khb }g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

148  

149 if cache is None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgiejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP yg|g^d.esg/etg:eug|dae;evg}dbe=ewga d khb }g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

150 return _program_compile_uncached(self, target_type, name_expressions, logs) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgiejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP yg|g^d.esg/etg:eug|dae;evg}dbe=ewga d khb }g~g,eahbhchdhehfhgh)exh

151  

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

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

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

155 # tests that monkeypatch make_program_cache_key via that path 

156 # intercept reliably. 

157 from cuda.core.utils._program_cache import ( 2CgAgBgDgN GgEgqhmhnhohHgthFgO

158 ProgramCacheResource, 

159 make_program_cache_key, 

160 ) 

161  

162 if not isinstance(cache, ProgramCacheResource): 2CgAgBgDgN GgEgqhmhnhohHgthFgO

163 raise TypeError( 2qh

164 "cache must be an instance of " 2qh

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

166 f"{type(cache).__name__}" 2qh

167 ) 

168  

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

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

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

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

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

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

175 # would return one without -- silently breaking later 

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

177 # uncached path. Fail loud here instead. 

178 if name_expressions: 2CgAgBgDgN GgEgmhnhohHgthFgO

179 raise ValueError( 2th

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

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

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

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

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

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

186 "hand from the cached ObjectCode." 

187 ) 

188  

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

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

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

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

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

194 # safe; no try/except needed. 

195 code_for_key = self._code if self._code_type == "nvvm" else self._code.decode("utf-8") 2CgAgBgDgN GgEgmhnhohHgFgO

196  

197 key = make_program_cache_key( 2CgAgBgDgN GgEgmhnhohHgFgO

198 code=code_for_key, 

199 code_type=self._code_type, 

200 options=self._options, 

201 target_type=target_type, 2CgAgBgDgN GgEgmhnhohHgFgO

202 ) 

203 hit_bytes = cache.get(key) 2CgAgBgDgN GgEgHgFgO

204 if hit_bytes is not None: 2CgAgBgDgN GgEgFgO

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

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

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

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

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

210 # uncached call would have surfaced. 

211 if ( 2CgAgBgDgN O

212 self._backend == "NVRTC" 2CgAgBgDgN O

213 and target_type == "ptx" 2CgAgBgDgN O

214 and not _can_load_generated_ptx() 2AgBg

215 ): 

216 warn( 2Ag

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

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

219 stacklevel=2, 

220 category=RuntimeWarning, 2Ag

221 ) 

222 return ObjectCode._init(hit_bytes, target_type, name=self._options.name) 2CgAgBgDgN O

223 compiled = _program_compile_uncached(self, target_type, name_expressions, logs) 2CgN GgEgFgO

224 cache[key] = compiled 2CgN EgFgO

225 return compiled 2CgN EgO

226  

227 @property 

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

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

230  

231 Possible values: 

232  

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

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

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

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

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

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

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

240  

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

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

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

244  

245 .. note:: 

246  

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

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

249 always returns ``None``. 

250 """ 

251 if self._pch_status is None: 2f [d

252 return None 2f [d

253 return PCHStatusType(self._pch_status) 1f

254  

255 @property 

256 def backend(self) -> CompilerBackendType: 

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

258 return CompilerBackendType(self._backend) 2iejee ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseih^d.esg/etg:eug|dae;evg}dbe=ewga d zhvh}g~gahbhchdhehfhgh

259  

260 @property 

261 def handle(self) -> ProgramHandleT: 

262 """Return the underlying handle object. 

263  

264 .. note:: 

265  

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

267  

268 .. caution:: 

269  

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

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

272 """ 

273 if self._backend == "NVRTC": 2ih^dwhvhhh

274 return as_py(self._h_nvrtc) 2whvh

275 elif self._backend == "NVVM": 2ih^dhh

276 return as_py(self._h_nvvm) # returns int (NVVM uses raw integers) 2ih^d

277 else: 

278 return self._linker.handle 2hh

279  

280 def __repr__(self) -> str: 

281 return f"<Program backend='{self._backend}'>" 2yhjhc

282  

283  

284# ============================================================================= 

285# Other Public Classes 

286# ============================================================================= 

287  

288  

289@dataclass 

290class ProgramOptions: 

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

292  

293 Attributes 

294 ---------- 

295 name : str, optional 

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

297 arch : str, optional 

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

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

300 will be used. 

301 relocatable_device_code : bool, optional 

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

303 Default: False 

304 extensible_whole_program : bool, optional 

305 Do extensible whole program compilation of device code. 

306 Default: False 

307 debug : bool, optional 

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

309 Default: False 

310 lineinfo: bool, optional 

311 Generate line-number information. 

312 Default: False 

313 device_code_optimize : bool, optional 

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

315 for optimized device code. 

316 Default: None 

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

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

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

320 Default: None 

321 max_register_count : int, optional 

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

323 Default: None 

324 ftz : bool, optional 

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

326 values. 

327 Default: False 

328 prec_sqrt : bool, optional 

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

330 Default: True 

331 prec_div : bool, optional 

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

333 approximation. 

334 Default: True 

335 fma : bool, optional 

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

337 multiply-add operations. 

338 Default: True 

339 use_fast_math : bool, optional 

340 Make use of fast math operations. 

341 Default: False 

342 extra_device_vectorization : bool, optional 

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

344 Default: False 

345 link_time_optimization : bool, optional 

346 Generate intermediate code for later link-time optimization. 

347 Default: False 

348 gen_opt_lto : bool, optional 

349 Run the optimizer passes before generating the LTO IR. 

350 Default: False 

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

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

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

354 Default: None 

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

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

357 Default: None 

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

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

360 Default: None 

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

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

363 Default: None 

364 no_source_include : bool, optional 

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

366 Default: False 

367 std : str, optional 

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

369 Default: c++17 

370 builtin_move_forward : bool, optional 

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

372 Default: True 

373 builtin_initializer_list : bool, optional 

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

375 Default: True 

376 disable_warnings : bool, optional 

377 Inhibit all warning messages. 

378 Default: False 

379 restrict : bool, optional 

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

381 Default: False 

382 device_as_default_execution_space : bool, optional 

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

384 Default: False 

385 device_int128 : bool, optional 

386 Allow the __int128 type in device code. 

387 Default: False 

388 optimization_info : str, optional 

389 Provide optimization reports for the specified kind of optimization. 

390 Default: None 

391 no_display_error_number : bool, optional 

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

393 Default: False 

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

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

396 Default: None 

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

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

399 Default: None 

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

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

402 Default: None 

403 brief_diagnostics : bool, optional 

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

405 Default: False 

406 time : str, optional 

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

408 Default: None 

409 split_compile : int, optional 

410 Perform compiler optimizations in parallel. 

411 Default: 1 

412 fdevice_syntax_only : bool, optional 

413 Ends device compilation after front-end syntax checking. 

414 Default: False 

415 minimal : bool, optional 

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

417 Default: False 

418 no_cache : bool, optional 

419 Disable compiler caching. 

420 Default: False 

421 fdevice_time_trace : str, optional 

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

423 Default: None 

424 device_float128 : bool, optional 

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

426 Default: False 

427 frandom_seed : str, optional 

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

429 Default: None 

430 ofast_compile : str, optional 

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

432 Default: None 

433 pch : bool, optional 

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

435 Default: False 

436 create_pch : str, optional 

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

438 Default: None 

439 use_pch : str, optional 

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

441 Default: None 

442 pch_dir : str, optional 

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

444 Default: None 

445 pch_verbose : bool, optional 

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

447 Default: False 

448 pch_messages : bool, optional 

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

450 Default: False 

451 instantiate_templates_in_pch : bool, optional 

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

453 Default: False 

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

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

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

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

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

459 Default: None 

460 use_libdevice : bool, optional 

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

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

463 Default: False 

464 """ 

465  

466 name: str | None = "default_program" 

467 arch: str | None = None 

468 relocatable_device_code: bool | None = None 

469 extensible_whole_program: bool | None = None 

470 debug: bool | None = None 

471 lineinfo: bool | None = None 

472 device_code_optimize: bool | None = None 

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

474 max_register_count: int | None = None 

475 ftz: bool | None = None 

476 prec_sqrt: bool | None = None 

477 prec_div: bool | None = None 

478 fma: bool | None = None 

479 use_fast_math: bool | None = None 

480 extra_device_vectorization: bool | None = None 

481 link_time_optimization: bool | None = None 

482 gen_opt_lto: bool | None = None 

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

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

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

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

487 no_source_include: bool | None = None 

488 std: str | None = None 

489 builtin_move_forward: bool | None = None 

490 builtin_initializer_list: bool | None = None 

491 disable_warnings: bool | None = None 

492 restrict: bool | None = None 

493 device_as_default_execution_space: bool | None = None 

494 device_int128: bool | None = None 

495 optimization_info: str | None = None 

496 no_display_error_number: bool | None = None 

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

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

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

500 brief_diagnostics: bool | None = None 

501 time: str | None = None 

502 split_compile: int | None = None 

503 fdevice_syntax_only: bool | None = None 

504 minimal: bool | None = None 

505 no_cache: bool | None = None 

506 fdevice_time_trace: str | None = None 

507 device_float128: bool | None = None 

508 frandom_seed: str | None = None 

509 ofast_compile: str | None = None 

510 pch: bool | None = None 

511 create_pch: str | None = None 

512 use_pch: str | None = None 

513 pch_dir: str | None = None 

514 pch_verbose: bool | None = None 

515 pch_messages: bool | None = None 

516 instantiate_templates_in_pch: bool | None = None 

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

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

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

520  

521 def __post_init__(self): 

522 self._name = self.name.encode() 2xg4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]dNhOhHhKhRhzgP ihyg|g^da d Ehzhuhkhb whGhFhvhQhIg{gNglhphrhshShChhh,e)eOgJgKgLgPgMgQgThUhVhWhXhRg0g1g2g3gYhZh4g5g6g7g8gZg9g!g#gSg0h1h2h$gTg3hUg4h%g5h'g(g)gVg6h7h*g+g,g-g.g^g_g`gWgXg8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifi/ggihiiijikiliminioipiqiriLhMh:g;g=g?gsitiuiviwixiyiziAiBiCiDi@gEi[gYg]gFiCgAgBgDgN GgEgqhmhnhohHgthFgO xh

523 # Set arch to default if not provided 

524 if self.arch is None: 2xg4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]dNhOhHhKhRhzgP ihyg|g^da d Ehzhuhkhb whGhFhvhQhIg{gNglhphrhshShChhh,e)eOgJgKgLgPgMgQgThUhVhWhXhRg0g1g2g3gYhZh4g5g6g7g8gZg9g!g#gSg0h1h2h$gTg3hUg4h%g5h'g(g)gVg6h7h*g+g,g-g.g^g_g`gWgXg8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifi/ggihiiijikiliminioipiqiriLhMh:g;g=g?gsitiuiviwixiyiziAiBiCiDi@gEi[gYg]gFiCgAgBgDgN GgEgqhmhnhohHgthFgO xh

525 self.arch = f"sm_{Device().arch}" 2xg^eteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bT U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c`e{e|e}e~eafbfcfdfefffgfhfifV jfkflfmfnfofpfqfrfW sftfufvfwfxfyfzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(f)f*f+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f|f}f~fagbgcgdg*eyhjhc egfggghgigjgkglgmgngogpgAhqgrgBhf [dDhe ]dzgP ihyg|g^da d Ehzhuhkhb whGhFhvhChhh,e)e

526 if self.extra_sources is not None: 2xg4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]dNhOhHhKhRhzgP ihyg|g^da d Ehzhuhkhb whGhFhvhQhIg{gNglhphrhshShChhh,e)eOgJgKgLgPgMgQgThUhVhWhXhRg0g1g2g3gYhZh4g5g6g7g8gZg9g!g#gSg0h1h2h$gTg3hUg4h%g5h'g(g)gVg6h7h*g+g,g-g.g^g_g`gWgXg8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifi/ggihiiijikiliminioipiqiriLhMh:g;g=g?gsitiuiviwixiyiziAiBiCiDi@gEi[gYg]gFiCgAgBgDgN GgEgqhmhnhohHgthFgO xh

527 if not is_sequence(self.extra_sources): 2DhNhOhHhKhRha d ChLhMh

528 raise TypeError( 2Rh

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

530 ) 

531 for i, module in enumerate(self.extra_sources): 2DhNhOhHhKha d ChLhMh

532 if not isinstance(module, tuple) or len(module) != 2: 2DhNhOhHhKha d ChLhMh

533 raise TypeError( 2Oh

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

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

536 ) 

537  

538 module_name, module_source = module 2DhNhHhKha d ChLhMh

539  

540 if not isinstance(module_name, str): 2DhNhHhKha d ChLhMh

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

542  

543 if not isinstance(module_source, (str, bytes, bytearray)): 2DhHhKha d ChLhMh

544 raise TypeError( 2Hh

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

546 f"or bytearray, got {type(module_source).__name__}" 2Hh

547 ) 

548  

549 if len(module_source) == 0: 2DhKha d ChLhMh

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

551  

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

553 return _prepare_nvrtc_options_impl(self) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

554  

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

556 return _prepare_nvvm_options_impl(self, as_bytes) 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

557  

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

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

560  

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

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

563 and formats even for the same conceptual options. 

564  

565 Parameters 

566 ---------- 

567 backend : CompilerBackendType | str 

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

569 target_type : ObjectCodeFormatType | str, optional 

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

571 require additional options based on the target type. 

572  

573 Returns 

574 ------- 

575 list[bytes] 

576 List of option strings encoded as bytes. 

577  

578 Raises 

579 ------ 

580 ValueError 

581 If an unknown backend is specified. 

582 CUDAError 

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

584  

585 Examples 

586 -------- 

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

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

589 """ 

590 backend = str(backend).lower() 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgiejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP yg^d.esg/etg:eug|dae;evg}dbe=ewga d b QhIg{gNglhphrhsh,e)eOgJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#gSg$gTgUg%g'g(g)gVg*g+g,g-g.g^g_g`gWgXg/g:g;g=g?g@g[gYg]gCgAgBgDgN GgEgHgFgO

591 if backend == "nvrtc": 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgiejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP yg^d.esg/etg:eug|dae;evg}dbe=ewga d b QhIg{gNglhphrhsh,e)eOgJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#gSg$gTgUg%g'g(g)gVg*g+g,g-g.g^g_g`gWgXg/g:g;g=g?g@g[gYg]gCgAgBgDgN GgEgHgFgO

592 return self._prepare_nvrtc_options() 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

593 elif backend == "nvvm": 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d Qh{gNgOgSgTgUgVg^g_g`gWgXgYg

594 options = self._prepare_nvvm_options(as_bytes=True) 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

595 if target_type == "ltoir" and b"-gen-lto" not in options: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d NgOgSgTgUgVg^g_g`gWgXgYg

596 options.append(b"-gen-lto") 2ieje.e/e:e|d;e}d=ea

597 return options 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d NgOgSgTgUgVg^g_g`gWgXgYg

598 else: 

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

600  

601 def __repr__(self): 

602 return f"ProgramOptions(name={self.name!r}, arch={self.arch!r})" 2Sh

603  

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

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

606 if self.extra_sources is None: 1ad

607 return None 

608  

609 result = [] 1ad

610 for module_name, module_source in self.extra_sources: 1ad

611 name_bytes = module_name.encode("utf-8") 1ad

612 if isinstance(module_source, str): 1ad

613 source_bytes = module_source.encode("utf-8") 1ad

614 elif isinstance(module_source, bytearray): 

615 source_bytes = bytes(module_source) 

616 else: 

617 source_bytes = module_source 

618 result.append((name_bytes, source_bytes)) 1ad

619 return result 1ad

620  

621  

622# ============================================================================= 

623# Private Classes and Helper Functions 

624# ============================================================================= 

625  

626  

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

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

629  

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

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

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

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

634 outside the class. 

635 """ 

636 return Program_compile(program, target_type, name_expressions, logs) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgiejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP yg|g^d.esg/etg:eug|dae;evg}dbe=ewga d khb }g~g,eahbhchdhehfhgh)eN O

637  

638  

639# Module-level state for NVVM lazy loading 

640_nvvm_module = None 

641_nvvm_import_attempted = False 

642  

643  

644def _get_nvvm_module(): 

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

646 global _nvvm_module, _nvvm_import_attempted 

647  

648 if _nvvm_import_attempted: 2xgjhIhJhPhiejeihyg|gGi^d.esg/etg:eug|dae;evg}dbeHi=ewga d EhOgSgTgUgVgWgXgYg

649 if _nvvm_module is None: 2jhiejeihyg|gGi^d.esg/etg:eug|dae;evg}dbeHi=ewga d EhOgSgTgUgVgWgXgYg

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

651 return _nvvm_module 2jhiejeihyg|gGi^d.esg/etg:eug|dae;evg}dbeHi=ewga d EhOgSgTgUgVgWgXgYg

652  

653 _nvvm_import_attempted = True 2xgIhJhPh

654  

655 try: 2xgIhJhPh

656 version = binding_version() 2xgIhJhPh

657 if version < (12, 9, 0): 2xgIhJhPh

658 raise RuntimeError( 

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

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

661 ) 

662  

663 nvvm = _optional_cuda_import( 2xgIhJhPh

664 "cuda.bindings.nvvm", 

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

666 ) 

667 if nvvm is None: 2xgIhJh

668 raise RuntimeError( 2IhJh

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

670 ) 

671  

672 _nvvm_module = nvvm 

673 return _nvvm_module 

674  

675 except RuntimeError: 2IhJhPh

676 _nvvm_module = None 2IhJh

677 raise 2IhJh

678  

679def _find_libdevice_path(): 

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

681 from cuda.pathfinder import find_bitcode_lib 

682 return find_bitcode_lib("device") 

683  

684  

685  

686  

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

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

689 if isinstance(macro, str): 2=dS i j lhphrhsh

690 options.append(f"--define-macro={macro}") 2=d

691 return True 2=d

692 if isinstance(macro, tuple): 2S i j lhphrhsh

693 if len(macro) != 2 or any(not isinstance(val, str) for val in macro): 2S i j lhrhsh

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

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

696 return True 1Sij

697 return False 2i j lhph

698  

699  

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

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

702 union_type = "Union[str, tuple[str, str]]" 2=dS i j lhphrhsh

703 if _process_define_macro_inner(options, macro): 2=dS i j lhphrhsh

704 return 2=dS

705 if is_nested_sequence(macro): 2i j lhph

706 for seq_macro in macro: 2i j lh

707 if not _process_define_macro_inner(options, seq_macro): 2i j lh

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

709 return 1ij

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

711  

712  

713cpdef bint _can_load_generated_ptx() except? -1: 

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

715 drv = driver_version() 2teuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0eg h IiQ JiR *ec f [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,eAgBg

716 nvrtc_major, nvrtc_minor = handle_return(nvrtc.nvrtcVersion()) 2teuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0eg h IiQ JiR *ec f [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,eAgBg

717 return (nvrtc_major, nvrtc_minor, 0) <= drv 2teuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0eg h IiQ JiR *ec f [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,eAgBg

718  

719  

720cdef inline object _translate_program_options(object options): 

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

722 return LinkerOptions( 2c b hh}g~gahbhchdhehfhgh

723 name=options.name, 2c b hh}g~gahbhchdhehfhgh

724 arch=options.arch, 2c b hh}g~gahbhchdhehfhgh

725 max_register_count=options.max_register_count, 2c b hh}g~gahbhchdhehfhgh

726 time=options.time, 2c b hh}g~gahbhchdhehfhgh

727 link_time_optimization=options.link_time_optimization, 2c b hh}g~gahbhchdhehfhgh

728 debug=options.debug, 2c b hh}g~gahbhchdhehfhgh

729 lineinfo=options.lineinfo, 2c b hh}g~gahbhchdhehfhgh

730 ftz=options.ftz, 2c b hh}g~gahbhchdhehfhgh

731 prec_div=options.prec_div, 2c b hh}g~gahbhchdhehfhgh

732 prec_sqrt=options.prec_sqrt, 2c b hh}g~gahbhchdhehfhgh

733 fma=options.fma, 2c b hh}g~gahbhchdhehfhgh

734 split_compile=options.split_compile, 2c b hh}g~gahbhchdhehfhgh

735 ptxas_options=options.ptxas_options, 2c b hh}g~gahbhchdhehfhgh

736 no_cache=options.no_cache, 2c b hh}g~gahbhchdhehfhgh

737 ) 

738  

739  

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

741 """Initialize a Program instance.""" 

742 cdef cynvrtc.nvrtcProgram nvrtc_prog 

743 cdef cynvvm.nvvmProgram nvvm_prog 

744 cdef bytes code_bytes 

745 cdef const char* code_ptr 

746 cdef const char* name_ptr 

747 cdef size_t code_len 

748 cdef bytes module_bytes 

749 cdef const char* module_ptr 

750 cdef size_t module_len 

751  

752 self._options = options = check_or_create_options(ProgramOptions, options, "Program options") 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Ehzhuhkhb whGhFhvhChhh}g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

753 code_type = code_type.lower() 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Ehzhuhkhb whGhFhvhChhh}g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

754 self._code_type = code_type 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Ehzhuhkhb whGhFhvhChhh}g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

755 self._compile_lock = threading.Lock() 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Ehzhuhkhb whGhFhvhChhh}g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

756 self._use_libdevice = False 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Ehzhuhkhb whGhFhvhChhh}g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

757 self._libdevice_added = False 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Ehzhuhkhb whGhFhvhChhh}g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

758  

759 self._pch_status = None 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Ehzhuhkhb whGhFhvhChhh}g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

760  

761 if code_type == "c++": 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Ehzhuhkhb whGhFhvhChhh}g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

762 assert_type(code, str) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhf [dDhe ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP zhuhkhb whGhvh,e)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

763 if options.extra_sources is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhf [dDhe ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP zhuhkhb whvh,e)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

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

765  

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

767 code_bytes = code.encode() 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP zhuhkhb whvh,e)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

768 code_ptr = <const char*>code_bytes 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP zhuhkhb whvh,e)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

769 name_ptr = <const char*>options._name 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP zhuhkhb whvh,e)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

770  

771 with nogil: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP zhuhkhb whvh,e)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

772 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcCreateProgram( 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP zhuhkhb whvh,e)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

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

774 self._h_nvrtc = create_nvrtc_program_handle(nvrtc_prog) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP zhuhkhb whvh,e)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

775 self._code = code_bytes 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP zhuhkhb whvh,e)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

776 self._backend = str(CompilerBackendType.NVRTC) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP zhuhkhb whvh,e)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

777 self._linker = None 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP zhuhkhb whvh,e)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

778  

779 elif code_type == "ptx": 2jhc iejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Ehb FhChhh}g~gahbhchdhehfhgh

780 assert_type(code, str) 2c b Chhh}g~gahbhchdhehfhgh

781 if options.extra_sources is not None: 2c b Chhh}g~gahbhchdhehfhgh

782 raise ValueError("extra_sources is not supported by the PTX backend.") 2Ch

783 code_bytes = code.encode() 2c b hh}g~gahbhchdhehfhgh

784 self._code = code_bytes 2c b hh}g~gahbhchdhehfhgh

785 self._linker = Linker( 2c b hh}g~gahbhchdhehfhgh

786 ObjectCode._init(code_bytes, code_type), options=_translate_program_options(options) 2c b hh}g~gahbhchdhehfhgh

787 ) 

788 self._backend = str(Linker.which_backend()) 2c b hh}g~gahbhchdhehfhgh

789  

790 elif code_type == "nvvm": 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d EhFh

791 _get_nvvm_module() # Validate NVVM availability 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Eh

792 if isinstance(code, str): 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Eh

793 code = code.encode("utf-8") 2jhyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d

794 elif not isinstance(code, (bytes, bytearray)): 2iejeihEh

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

796 self._code = bytes(code) # Coerce bytearray -> bytes so retention type is stable 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d

797  

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

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

800 code_ptr = <const char*>self._code 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d

801 name_ptr = <const char*>options._name 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d

802 code_len = len(self._code) 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d

803  

804 with nogil: 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d

805 HANDLE_RETURN_NVVM(NULL, cynvvm.nvvmCreateProgram(&nvvm_prog)) 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d

806 self._h_nvvm = create_nvvm_program_handle(nvvm_prog) # RAII from here 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d

807 with nogil: 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d

808 HANDLE_RETURN_NVVM(nvvm_prog, cynvvm.nvvmAddModuleToProgram(nvvm_prog, code_ptr, code_len, name_ptr)) 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d

809  

810 # Add extra modules if provided 

811 if options.extra_sources is not None: 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d

812 extra_sources_bytes = options._prepare_extra_sources_bytes() 1ad

813 for module_name_bytes, module_bytes in extra_sources_bytes: 1ad

814 module_ptr = <const char*>module_bytes 1ad

815 module_len = len(module_bytes) 1ad

816 module_name_ptr = <const char*>module_name_bytes 1ad

817 with nogil: 1ad

818 HANDLE_RETURN_NVVM(nvvm_prog, cynvvm.nvvmAddModuleToProgram( 1ad

819 nvvm_prog, module_ptr, module_len, module_name_ptr)) 

820  

821 # Store use_libdevice flag 

822 if options.use_libdevice: 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d

823 self._use_libdevice = True 

824  

825 self._backend = str(CompilerBackendType.NVVM) 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d

826 self._linker = None 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d

827  

828 else: 

829 supported_code_types = tuple(x.value for x in SourceCodeType) 2Fh

830 if options.use_libdevice: 2Fh

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

832 raise RuntimeError(f"Unsupported {code_type=} ({supported_code_types=})") 2Fh

833  

834 return 0 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d zhuhkhb whvhhh}g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh

835  

836  

837cdef object _nvrtc_compile_and_extract( 

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

839 object logs, list options_list, str name, 

840): 

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

842  

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

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

845 """ 

846 cdef size_t output_size = 0 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O

847 cdef size_t logsize = 0 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O

848 cdef vector[const char*] options_vec 

849 cdef char* data_ptr = NULL 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O

850 cdef bytes name_bytes 

851 cdef const char* name_ptr = NULL 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O

852 cdef const char* lowered_name = NULL 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O

853 cdef dict symbol_mapping = {} 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O

854  

855 # Add name expressions before compilation 

856 if name_expressions: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O

857 for n in name_expressions: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{cV W |c}c~cadbdcdddedfdgdhdidjdkdldX Y mdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdZ 0 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d1 2 5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d

858 name_bytes = n.encode() if isinstance(n, str) else n 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{cV W |c}c~cadbdcdddedfdgdhdidjdkdldX Y mdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdZ 0 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d1 2 5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d

859 name_ptr = <const char*>name_bytes 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{cV W |c}c~cadbdcdddedfdgdhdidjdkdldX Y mdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdZ 0 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d1 2 5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d

860 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcAddNameExpression(prog, name_ptr)) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{cV W |c}c~cadbdcdddedfdgdhdidjdkdldX Y mdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdZ 0 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d1 2 5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d

861  

862 # Build options array 

863 options_vec.resize(len(options_list)) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O

864 for i in range(len(options_list)): 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O

865 options_vec[i] = <const char*>(<bytes>options_list[i]) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O

866  

867 # Compile 

868 with nogil: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O

869 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcCompileProgram(prog, <int>options_vec.size(), options_vec.data())) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O

870  

871 # Get compiled output based on target type 

872 if target_type == "ptx": 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseP b ,e)eN O

873 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPTXSize(prog, &output_size)) 2teuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0eg h Q R *ec f [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseP b ,e

874 data = bytearray(output_size) 2teuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0eg h Q R *ec f [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseP b ,e

875 data_ptr = <char*>(<bytearray>data) 2teuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0eg h Q R *ec f [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseP b ,e

876 with nogil: 2teuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0eg h Q R *ec f [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseP b ,e

877 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPTX(prog, data_ptr)) 2teuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0eg h Q R *ec f [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseP b ,e

878 elif target_type == "cubin": 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b-e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg#deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drg)eN O

879 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetCUBINSize(prog, &output_size)) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcg#deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drg)eN O

880 data = bytearray(output_size) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcg#deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drg)eN O

881 data_ptr = <char*>(<bytearray>data) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcg#deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drg)eN O

882 with nogil: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcg#deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drg)eN O

883 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetCUBIN(prog, data_ptr)) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcg#deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drg)eN O

884 else: # ltoir 

885 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLTOIRSize(prog, &output_size)) 2-eT U dg

886 data = bytearray(output_size) 2-eT U dg

887 data_ptr = <char*>(<bytearray>data) 2-eT U dg

888 with nogil: 2-eT U dg

889 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLTOIR(prog, data_ptr)) 2-eT U dg

890  

891 # Get lowered names after compilation 

892 if name_expressions: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseP b ,e)eN O

893 for n in name_expressions: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{cV W |c}c~cadbdcdddedfdgdhdidjdkdldX Y mdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdZ 0 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d1 2 5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d

894 name_bytes = n.encode() if isinstance(n, str) else n 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{cV W |c}c~cadbdcdddedfdgdhdidjdkdldX Y mdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdZ 0 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d1 2 5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d

895 name_ptr = <const char*>name_bytes 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{cV W |c}c~cadbdcdddedfdgdhdidjdkdldX Y mdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdZ 0 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d1 2 5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d

896 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLoweredName(prog, name_ptr, &lowered_name)) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{cV W |c}c~cadbdcdddedfdgdhdidjdkdldX Y mdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdZ 0 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d1 2 5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d

897 symbol_mapping[n] = lowered_name if lowered_name != NULL else None 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{cV W |c}c~cadbdcdddedfdgdhdidjdkdldX Y mdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdZ 0 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d1 2 5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d

898  

899 # Get compilation log if requested 

900 if logs is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseP b ,e)eN O

901 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetProgramLogSize(prog, &logsize)) 1P

902 if logsize > 1: 1P

903 log = bytearray(logsize) 1P

904 data_ptr = <char*>(<bytearray>log) 1P

905 with nogil: 1P

906 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetProgramLog(prog, data_ptr)) 1P

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

908  

909 return ObjectCode._init(bytes(data), target_type, symbol_mapping=symbol_mapping, name=name) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseP b ,e)eN O

910  

911  

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

913  

914cdef bint _has_nvrtc_pch_apis(): 

915 global _nvrtc_pch_apis_cached 

916 if _nvrtc_pch_apis_cached < 0: 1feM

917 _nvrtc_pch_apis_cached = hasattr(nvrtc, "nvrtcGetPCHCreateStatus") 1M

918 return _nvrtc_pch_apis_cached 1feM

919  

920  

921cdef object _read_pch_status(cynvrtc.nvrtcProgram prog): 

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

923 cdef cynvrtc.nvrtcResult err 

924 with nogil: 1feM

925 err = cynvrtc.nvrtcGetPCHCreateStatus(prog) 1feM

926 if err == cynvrtc.nvrtcResult.NVRTC_SUCCESS: 1feM

927 return PCHStatusType.CREATED 1feM

928 if err == cynvrtc.nvrtcResult.NVRTC_ERROR_PCH_CREATE_HEAP_EXHAUSTED: 

929 return None # sentinel: caller should auto-retry 

930 if err == cynvrtc.nvrtcResult.NVRTC_ERROR_NO_PCH_CREATE_ATTEMPTED: 

931 return PCHStatusType.NOT_ATTEMPTED 

932 return PCHStatusType.FAILED 

933  

934  

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

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

937 cdef cynvrtc.nvrtcProgram prog = as_cu(self._h_nvrtc) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O

938 cdef list options_list = self._options.as_bytes("nvrtc", target_type) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O

939  

940 result = _nvrtc_compile_and_extract( 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O

941 prog, target_type, name_expressions, logs, options_list, self._options.name, 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O

942 ) 

943  

944 cdef bint pch_creation_possible = self._options.create_pch or self._options.pch 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseP b ,e)eN O

945 if not pch_creation_possible or not _has_nvrtc_pch_apis(): 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseP b ,e)eN O

946 self._pch_status = None 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drg[de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%e'e(eseP b ,e)eN O

947 return result 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drg[de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%e'e(eseP b ,e)eN O

948  

949 try: 1feM

950 status = _read_pch_status(prog) 1feM

951 except RuntimeError as e: 

952 raise RuntimeError( 

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

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

955 ) from e 

956  

957 if status is not None: 1feM

958 self._pch_status = str(status) 1feM

959 return result 1feM

960  

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

962 cdef size_t required = 0 

963 with nogil: 

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

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

966  

967 cdef cynvrtc.nvrtcProgram retry_prog 

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

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

970 with nogil: 

971 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcCreateProgram( 

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

973 self._h_nvrtc = create_nvrtc_program_handle(retry_prog) 

974  

975 result = _nvrtc_compile_and_extract( 

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

977 ) 

978  

979 status = _read_pch_status(retry_prog) 

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

981 return result 

982  

983  

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

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

986 cdef cynvvm.nvvmProgram prog = as_cu(self._h_nvvm) 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d

987 cdef size_t output_size = 0 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d

988 cdef size_t logsize = 0 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d

989 cdef vector[const char*] options_vec 

990 cdef char* data_ptr = NULL 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d

991 cdef bytes libdevice_bytes 

992 cdef const char* libdevice_ptr 

993 cdef size_t libdevice_len 

994 # Build options array 

995 options_list = self._options.as_bytes("nvvm", target_type) 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d

996 options_vec.resize(len(options_list)) 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d

997 for i in range(len(options_list)): 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d

998 options_vec[i] = <const char*>(<bytes>options_list[i]) 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d

999  

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

1001 with self._compile_lock: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d

1002 with nogil: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d

1003 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmVerifyProgram(prog, <int>options_vec.size(), options_vec.data())) 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d

1004  

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

1006 if self._use_libdevice and not self._libdevice_added: 2ieje^d.esg/etg:eug|dae;evg}dbe=ewga d

1007 libdevice_path = _find_libdevice_path() 

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

1009 libdevice_bytes = f.read() 

1010 libdevice_ptr = <const char*>libdevice_bytes 

1011 libdevice_len = len(libdevice_bytes) 

1012 with nogil: 

1013 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmLazyAddModuleToProgram( 

1014 prog, libdevice_ptr, libdevice_len, NULL)) 

1015 self._libdevice_added = True 

1016  

1017 with nogil: 2ieje^d.esg/etg:eug|dae;evg}dbe=ewga d

1018 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmCompileProgram(prog, <int>options_vec.size(), options_vec.data())) 2ieje^d.esg/etg:eug|dae;evg}dbe=ewga d

1019  

1020 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetCompiledResultSize(prog, &output_size)) 2ieje^d.esg/etg:eug|dae;evg}dbe=ewga d

1021 data = bytearray(output_size) 2ieje^d.esg/etg:eug|dae;evg}dbe=ewga d

1022 data_ptr = <char*>(<bytearray>data) 2ieje^d.esg/etg:eug|dae;evg}dbe=ewga d

1023 with nogil: 2ieje^d.esg/etg:eug|dae;evg}dbe=ewga d

1024 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetCompiledResult(prog, data_ptr)) 2ieje^d.esg/etg:eug|dae;evg}dbe=ewga d

1025  

1026 # Get compilation log if requested 

1027 if logs is not None: 2ieje^d.esg/etg:eug|dae;evg}dbe=ewga d

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

1029 if logsize > 1: 

1030 log = bytearray(logsize) 

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

1032 with nogil: 

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

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

1035  

1036 return ObjectCode._init(bytes(data), target_type, name=self._options.name) 2ieje^d.esg/etg:eug|dae;evg}dbe=ewga d

1037  

1038# Supported target types per backend 

1039cdef dict SUPPORTED_TARGETS = { 

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

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

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

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

1044} 

1045  

1046  

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

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

1049 # Validate target_type for this backend 

1050 supported = SUPPORTED_TARGETS.get(self._backend) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgiejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP yg|g^d.esg/etg:eug|dae;evg}dbe=ewga d khb }g~g,eahbhchdhehfhgh)eN O

1051 if supported is None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgiejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP yg|g^d.esg/etg:eug|dae;evg}dbe=ewga d khb }g~g,eahbhchdhehfhgh)eN O

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

1053 if target_type not in supported: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgiejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP yg|g^d.esg/etg:eug|dae;evg}dbe=ewga d khb }g~g,eahbhchdhehfhgh)eN O

1054 raise ValueError( 2|gkh

1055 f'Unsupported target_type="{target_type}" for {self._backend} ' 2|gkh

1056 f'(supported: {", ".join(repr(t) for t in supported)})' 2|gkh

1057 ) 

1058  

1059 if self._backend == "NVRTC": 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgiejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP yg^d.esg/etg:eug|dae;evg}dbe=ewga d b }g~g,eahbhchdhehfhgh)eN O

1060 if target_type == "ptx" and not _can_load_generated_ptx(): 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O

1061 warn( 

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

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

1064 stacklevel=2, 

1065 category=RuntimeWarning, 

1066 ) 

1067 return Program_compile_nvrtc(self, target_type, name_expressions, logs) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O

1068  

1069 elif self._backend == "NVVM": 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d b }g~gahbhchdhehfhgh

1070 return Program_compile_nvvm(self, target_type, logs) 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d

1071  

1072 else: 

1073 return self._linker.link(target_type) 2b }g~gahbhchdhehfhgh

1074  

1075  

1076cdef inline list _prepare_nvrtc_options_impl(object opts): 

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

1078 options = [f"-arch={opts.arch}"] 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1079 if opts.relocatable_device_code is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

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

1081 if opts.extensible_whole_program is not None and opts.extensible_whole_program: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1082 options.append("--extensible-whole-program") 26e

1083 if opts.debug is not None and opts.debug: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1084 options.append("--device-debug") 2keleIg

1085 if opts.lineinfo is not None and opts.lineinfo: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1086 options.append("--generate-line-info") 2Ig

1087 if opts.device_code_optimize is not None and opts.device_code_optimize: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1088 options.append("--dopt=on") 2ke

1089 if opts.ptxas_options is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1090 opt_name = "--ptxas-options" 2?d@d

1091 if isinstance(opts.ptxas_options, str): 2?d@d

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

1093 elif is_sequence(opts.ptxas_options): 2?d@d

1094 for opt_value in opts.ptxas_options: 2?d@d

1095 options.append(f"{opt_name}={opt_value}") 2?d@d

1096 if opts.max_register_count is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1097 options.append(f"--maxrregcount={opts.max_register_count}") 2me

1098 if opts.ftz is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1099 options.append(f"--ftz={_handle_boolean_option(opts.ftz)}") 2~dIg

1100 if opts.prec_sqrt is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

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

1102 if opts.prec_div is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

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

1104 if opts.fma is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

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

1106 if opts.use_fast_math is not None and opts.use_fast_math: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1107 options.append("--use_fast_math") 2neZg

1108 if opts.extra_device_vectorization is not None and opts.extra_device_vectorization: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1109 options.append("--extra-device-vectorization") 21e

1110 if opts.link_time_optimization is not None and opts.link_time_optimization: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1111 options.append("--dlink-time-opt") 2-eT U 2e

1112 if opts.gen_opt_lto is not None and opts.gen_opt_lto: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1113 options.append("--gen-opt-lto") 28e

1114 if opts.define_macro is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1115 _process_define_macro(options, opts.define_macro) 2=dS i j lhphrhsh

1116 if opts.undefine_macro is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1117 if isinstance(opts.undefine_macro, str): 2_d`d

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

1119 elif is_sequence(opts.undefine_macro): 2_d

1120 for macro in opts.undefine_macro: 2_d

1121 options.append(f"--undefine-macro={macro}") 2_d

1122 if opts.include_path is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1123 if isinstance(opts.include_path, str): 2cedeeefegehek l m n o p q r s t u v w x y z A B C D E F G H I J K L `dJgKgLgPgRg

1124 options.append(f"--include-path={opts.include_path}") 2`dRg

1125 elif is_sequence(opts.include_path): 2cedeeefegehek l m n o p q r s t u v w x y z A B C D E F G H I J K L JgKgLgPg

1126 for path in opts.include_path: 2cedeeefegehek l m n o p q r s t u v w x y z A B C D E F G H I J K L JgKgLg

1127 options.append(f"--include-path={path}") 2cedeeefegehek l m n o p q r s t u v w x y z A B C D E F G H I J K L

1128 if opts.pre_include is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1129 if isinstance(opts.pre_include, str): 2MgQg

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

1131 elif is_sequence(opts.pre_include): 2MgQg

1132 for header in opts.pre_include: 2Mg

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

1134 if opts.no_source_include is not None and opts.no_source_include: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1135 options.append("--no-source-include") 2!e

1136 if opts.std is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1137 options.append(f"--std={opts.std}") 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{cV W |c}c~cadbdcdddedfdgdhdidjdkdldX Y mdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdZ 0 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d1 2 5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d?d@d

1138 if opts.builtin_move_forward is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

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

1140 if opts.builtin_initializer_list is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

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

1142 if opts.disable_warnings is not None and opts.disable_warnings: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1143 options.append("--disable-warnings") 2oe

1144 if opts.restrict is not None and opts.restrict: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1145 options.append("--restrict") 2pe

1146 if opts.device_as_default_execution_space is not None and opts.device_as_default_execution_space: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1147 options.append("--device-as-default-execution-space") 2pe

1148 if opts.device_int128 is not None and opts.device_int128: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1149 options.append("--device-int128") 2qe

1150 if opts.device_float128 is not None and opts.device_float128: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

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

1152 if opts.optimization_info is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

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

1154 if opts.no_display_error_number is not None and opts.no_display_error_number: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1155 options.append("--no-display-error-number") 23e

1156 if opts.diag_error is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1157 if isinstance(opts.diag_error, int): 2{d3

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

1159 elif is_sequence(opts.diag_error): 13

1160 for error in opts.diag_error: 13

1161 options.append(f"--diag-error={error}") 13

1162 if opts.diag_suppress is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1163 if isinstance(opts.diag_suppress, int): 2{d3

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

1165 elif is_sequence(opts.diag_suppress): 13

1166 for suppress in opts.diag_suppress: 13

1167 options.append(f"--diag-suppress={suppress}") 13

1168 if opts.diag_warn is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1169 if isinstance(opts.diag_warn, int): 2re

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

1171 elif is_sequence(opts.diag_warn): 

1172 for w in opts.diag_warn: 

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

1174 if opts.brief_diagnostics is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

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

1176 if opts.time is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

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

1178 if opts.split_compile is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

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

1180 if opts.fdevice_syntax_only is not None and opts.fdevice_syntax_only: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1181 options.append("--fdevice-syntax-only") 27e

1182 if opts.minimal is not None and opts.minimal: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1183 options.append("--minimal") 29e

1184 if opts.no_cache is not None and opts.no_cache: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1185 options.append("--no-cache") 2#e

1186 if opts.fdevice_time_trace is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1187 options.append(f"--fdevice-time-trace={opts.fdevice_time_trace}") 2]d

1188 if opts.frandom_seed is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1189 options.append(f"--frandom-seed={opts.frandom_seed}") 2$e

1190 if opts.ofast_compile is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

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

1192 # PCH options (CUDA 12.8+) 

1193 if opts.pch is not None and opts.pch: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1194 options.append("--pch") 1M

1195 if opts.create_pch is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

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

1197 if opts.use_pch is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

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

1199 if opts.pch_dir is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

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

1201 if opts.pch_verbose is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

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

1203 if opts.pch_messages is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

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

1205 if opts.instantiate_templates_in_pch is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1206 options.append( 2se

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

1208 ) 

1209 if opts.numba_debug: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1210 options.append("--numba-debug") 2le

1211 return [o.encode() for o in options] 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO

1212  

1213  

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

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

1216 options = [] 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1217  

1218 # Options supported by NVVM 

1219 assert opts.arch is not None 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1220 arch = opts.arch 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1221 if arch.startswith("sm_"): 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1222 arch = f"compute_{arch[3:]}" 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1223 options.append(f"-arch={arch}") 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1224 if opts.debug is not None and opts.debug: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1225 options.append("-g") 2Ng

1226 if opts.device_code_optimize is False: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1227 options.append("-opt=0") 2.esg/etg;evg

1228 elif opts.device_code_optimize is True: 2iejeyg^d:eug|dae}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1229 options.append("-opt=3") 2|dae}dbeNg

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

1231 if opts.ftz is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1232 options.append(f"-ftz={'1' if opts.ftz else '0'}") 2|dae}dbeNg

1233 if opts.prec_sqrt is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1234 options.append(f"-prec-sqrt={'1' if opts.prec_sqrt else '0'}") 2|dae}dbe

1235 if opts.prec_div is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1236 options.append(f"-prec-div={'1' if opts.prec_div else '0'}") 2|dae}dbe

1237 if opts.fma is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1238 options.append(f"-fma={'1' if opts.fma else '0'}") 2|dae}dbe

1239  

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

1241 unsupported = [] 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1242 if opts.relocatable_device_code is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1243 unsupported.append("relocatable_device_code") 

1244 if opts.extensible_whole_program is not None and opts.extensible_whole_program: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1245 unsupported.append("extensible_whole_program") 

1246 if opts.lineinfo is not None and opts.lineinfo: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1247 unsupported.append("lineinfo") 2{g

1248 if opts.ptxas_options is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1249 unsupported.append("ptxas_options") 

1250 if opts.max_register_count is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1251 unsupported.append("max_register_count") 

1252 if opts.use_fast_math is not None and opts.use_fast_math: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1253 unsupported.append("use_fast_math") 

1254 if opts.extra_device_vectorization is not None and opts.extra_device_vectorization: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1255 unsupported.append("extra_device_vectorization") 

1256 if opts.gen_opt_lto is not None and opts.gen_opt_lto: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1257 unsupported.append("gen_opt_lto") 

1258 if opts.define_macro is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1259 unsupported.append("define_macro") 

1260 if opts.undefine_macro is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1261 unsupported.append("undefine_macro") 

1262 if opts.include_path is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1263 unsupported.append("include_path") 

1264 if opts.pre_include is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1265 unsupported.append("pre_include") 

1266 if opts.no_source_include is not None and opts.no_source_include: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1267 unsupported.append("no_source_include") 

1268 if opts.std is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1269 unsupported.append("std") 

1270 if opts.builtin_move_forward is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1271 unsupported.append("builtin_move_forward") 

1272 if opts.builtin_initializer_list is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1273 unsupported.append("builtin_initializer_list") 

1274 if opts.disable_warnings is not None and opts.disable_warnings: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1275 unsupported.append("disable_warnings") 

1276 if opts.restrict is not None and opts.restrict: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1277 unsupported.append("restrict") 

1278 if opts.device_as_default_execution_space is not None and opts.device_as_default_execution_space: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1279 unsupported.append("device_as_default_execution_space") 

1280 if opts.device_int128 is not None and opts.device_int128: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1281 unsupported.append("device_int128") 

1282 if opts.optimization_info is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1283 unsupported.append("optimization_info") 

1284 if opts.no_display_error_number is not None and opts.no_display_error_number: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1285 unsupported.append("no_display_error_number") 

1286 if opts.diag_error is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1287 unsupported.append("diag_error") 

1288 if opts.diag_suppress is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1289 unsupported.append("diag_suppress") 

1290 if opts.diag_warn is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1291 unsupported.append("diag_warn") 

1292 if opts.brief_diagnostics is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1293 unsupported.append("brief_diagnostics") 

1294 if opts.time is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1295 unsupported.append("time") 

1296 if opts.split_compile is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1297 unsupported.append("split_compile") 

1298 if opts.fdevice_syntax_only is not None and opts.fdevice_syntax_only: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1299 unsupported.append("fdevice_syntax_only") 

1300 if opts.minimal is not None and opts.minimal: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1301 unsupported.append("minimal") 

1302 if opts.numba_debug is not None and opts.numba_debug: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

1303 unsupported.append("numba_debug") 

1304 if unsupported: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg

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

1306  

1307 if as_bytes: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d NgOgSgTgUgVg^g_g`gWgXgYg

1308 return [o.encode() for o in options] 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d NgOgSgTgUgVg^g_g`gWgXgYg

1309 else: 

1310 return options