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

637 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-04-29 01:27 +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 

42  

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

44  

45ProgramHandleT = nvrtc.nvrtcProgram | int | LinkerHandleT 

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

47  

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

49""" 

50  

51  

52# ============================================================================= 

53# Principal Class 

54# ============================================================================= 

55  

56  

57cdef class Program: 

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

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

60  

61 This object provides a unified interface to multiple underlying 

62 compiler libraries. Compilation support is enabled for a wide 

63 range of code types and compilation types. 

64  

65 Parameters 

66 ---------- 

67 code : str | bytes | bytearray 

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

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

70 code_type : str 

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

72 options : :class:`ProgramOptions`, optional 

73 Options to customize the compilation process. 

74 """ 

75  

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

77 Program_init(self, code, code_type, options) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dQgc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b RgMgIgFg7eKgTgSgJgPgBgsgtgugvgwgxgygzgAg8e

78  

79 def close(self): 

80 """Destroy this program.""" 

81 if self._linker: 29e!ed .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrgcghgdgigegjgVe5efgkgWe6egglga b IgBgsgtgugvgwgxgygzgAg

82 self._linker.close() 2BgsgtgugvgwgxgygzgAg

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

84 self._h_nvrtc.reset() 29e!ed .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrgcghgdgigegjgVe5efgkgWe6egglga b IgBgsgtgugvgwgxgygzgAg

85 self._h_nvvm.reset() 29e!ed .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrgcghgdgigegjgVe5efgkgWe6egglga b IgBgsgtgugvgwgxgygzgAg

86  

87 def compile( 

88 self, target_type: str, name_expressions: tuple | list = (), logs = None 

89 ) -> ObjectCode: 

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

91  

92 Parameters 

93 ---------- 

94 target_type : str 

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

96 name_expressions : tuple | list, optional 

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

98 Used for template instantiation and similar cases. 

99 logs : object, optional 

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

101  

102 Returns 

103 ------- 

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

105 The compiled object code. 

106 """ 

107 return Program_compile(self, target_type, name_expressions, logs) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg9e!ed .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b Fg7esgtgugvgwgxgygzgAg8e

108  

109 @property 

110 def pch_status(self) -> str | None: 

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

112  

113 Possible values: 

114  

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

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

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

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

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

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

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

122  

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

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

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

126  

127 .. note:: 

128  

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

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

131 always returns ``None``. 

132 """ 

133 return self._pch_status 2#ed .d

134  

135 @property 

136 def backend(self) -> str: 

137 """Return this Program instance's underlying backend.""" 

138 return self._backend 29e!ec -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|d4ecghgdgigegjgVe5efgkgWe6egglga b MgJgsgtgugvgwgxgygzgAg

139  

140 @property 

141 def handle(self) -> ProgramHandleT: 

142 """Return the underlying handle object. 

143  

144 .. note:: 

145  

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

147  

148 .. caution:: 

149  

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

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

152 """ 

153 if self._backend == "NVRTC": 24eKgJgBg

154 return as_py(self._h_nvrtc) 2KgJg

155 elif self._backend == "NVVM": 24eBg

156 return as_py(self._h_nvvm) # returns int (NVVM uses raw integers) 24e

157 else: 

158 return self._linker.handle 2Bg

159  

160 def __repr__(self) -> str: 

161 return f"<Program backend='{self._backend}'>" 2LgDg4e

162  

163  

164# ============================================================================= 

165# Other Public Classes 

166# ============================================================================= 

167  

168  

169@dataclass 

170class ProgramOptions: 

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

172  

173 Attributes 

174 ---------- 

175 name : str, optional 

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

177 arch : str, optional 

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

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

180 will be used. 

181 relocatable_device_code : bool, optional 

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

183 Default: False 

184 extensible_whole_program : bool, optional 

185 Do extensible whole program compilation of device code. 

186 Default: False 

187 debug : bool, optional 

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

189 Default: False 

190 lineinfo: bool, optional 

191 Generate line-number information. 

192 Default: False 

193 device_code_optimize : bool, optional 

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

195 for optimized device code. 

196 Default: None 

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

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

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

200 Default: None 

201 max_register_count : int, optional 

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

203 Default: None 

204 ftz : bool, optional 

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

206 values. 

207 Default: False 

208 prec_sqrt : bool, optional 

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

210 Default: True 

211 prec_div : bool, optional 

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

213 approximation. 

214 Default: True 

215 fma : bool, optional 

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

217 multiply-add operations. 

218 Default: True 

219 use_fast_math : bool, optional 

220 Make use of fast math operations. 

221 Default: False 

222 extra_device_vectorization : bool, optional 

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

224 Default: False 

225 link_time_optimization : bool, optional 

226 Generate intermediate code for later link-time optimization. 

227 Default: False 

228 gen_opt_lto : bool, optional 

229 Run the optimizer passes before generating the LTO IR. 

230 Default: False 

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

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

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

234 Default: None 

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

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

237 Default: None 

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

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

240 Default: None 

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

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

243 Default: None 

244 no_source_include : bool, optional 

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

246 Default: False 

247 std : str, optional 

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

249 Default: c++17 

250 builtin_move_forward : bool, optional 

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

252 Default: True 

253 builtin_initializer_list : bool, optional 

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

255 Default: True 

256 disable_warnings : bool, optional 

257 Inhibit all warning messages. 

258 Default: False 

259 restrict : bool, optional 

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

261 Default: False 

262 device_as_default_execution_space : bool, optional 

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

264 Default: False 

265 device_int128 : bool, optional 

266 Allow the __int128 type in device code. 

267 Default: False 

268 optimization_info : str, optional 

269 Provide optimization reports for the specified kind of optimization. 

270 Default: None 

271 no_display_error_number : bool, optional 

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

273 Default: False 

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

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

276 Default: None 

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

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

279 Default: None 

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

281 Emit warning for a specified diagnostic message number or comma separated lis of numbers. 

282 Default: None 

283 brief_diagnostics : bool, optional 

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

285 Default: False 

286 time : str, optional 

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

288 Default: None 

289 split_compile : int, optional 

290 Perform compiler optimizations in parallel. 

291 Default: 1 

292 fdevice_syntax_only : bool, optional 

293 Ends device compilation after front-end syntax checking. 

294 Default: False 

295 minimal : bool, optional 

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

297 Default: False 

298 no_cache : bool, optional 

299 Disable compiler caching. 

300 Default: False 

301 fdevice_time_trace : str, optional 

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

303 Default: None 

304 device_float128 : bool, optional 

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

306 Default: False 

307 frandom_seed : str, optional 

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

309 Default: None 

310 ofast_compile : str, optional 

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

312 Default: None 

313 pch : bool, optional 

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

315 Default: False 

316 create_pch : str, optional 

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

318 Default: None 

319 use_pch : str, optional 

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

321 Default: None 

322 pch_dir : str, optional 

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

324 Default: None 

325 pch_verbose : bool, optional 

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

327 Default: False 

328 pch_messages : bool, optional 

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

330 Default: False 

331 instantiate_templates_in_pch : bool, optional 

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

333 Default: False 

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

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

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

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

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

339 Default: None 

340 use_libdevice : bool, optional 

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

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

343 Default: False 

344 """ 

345  

346 name: str | None = "default_program" 

347 arch: str | None = None 

348 relocatable_device_code: bool | None = None 

349 extensible_whole_program: bool | None = None 

350 debug: bool | None = None 

351 lineinfo: bool | None = None 

352 device_code_optimize: bool | None = None 

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

354 max_register_count: int | None = None 

355 ftz: bool | None = None 

356 prec_sqrt: bool | None = None 

357 prec_div: bool | None = None 

358 fma: bool | None = None 

359 use_fast_math: bool | None = None 

360 extra_device_vectorization: bool | None = None 

361 link_time_optimization: bool | None = None 

362 gen_opt_lto: bool | None = None 

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

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

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

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

367 no_source_include: bool | None = None 

368 std: str | None = None 

369 builtin_move_forward: bool | None = None 

370 builtin_initializer_list: bool | None = None 

371 disable_warnings: bool | None = None 

372 restrict: bool | None = None 

373 device_as_default_execution_space: bool | None = None 

374 device_int128: bool | None = None 

375 optimization_info: str | None = None 

376 no_display_error_number: bool | None = None 

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

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

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

380 brief_diagnostics: bool | None = None 

381 time: str | None = None 

382 split_compile: int | None = None 

383 fdevice_syntax_only: bool | None = None 

384 minimal: bool | None = None 

385 no_cache: bool | None = None 

386 fdevice_time_trace: str | None = None 

387 device_float128: bool | None = None 

388 frandom_seed: str | None = None 

389 ofast_compile: str | None = None 

390 pch: bool | None = None 

391 create_pch: str | None = None 

392 use_pch: str | None = None 

393 pch_dir: str | None = None 

394 pch_verbose: bool | None = None 

395 pch_messages: bool | None = None 

396 instantiate_templates_in_pch: bool | None = None 

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

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

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

400  

401 def __post_init__(self): 

402 self._name = self.name.encode() 2#e3 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dQgc -dYgZgUgXg2gmgj ngrg4ea b RgMgIgFg7eKgTgSgJg1gogqgpgCgEgGgHg3gPgBg8e

403 # Set arch to default if not provided 

404 if self.arch is None: 2#e3 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dQgc -dYgZgUgXg2gmgj ngrg4ea b RgMgIgFg7eKgTgSgJg1gogqgpgCgEgGgHg3gPgBg8e

405 self.arch = f"sm_{Device().arch}" 2#e'e}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;bR S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c)e*e+e,e-e.e/e:e;e=e?e@e[e]eT ^e_e`e{e|e}e~eafbfU cfdfefffgfhfifjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZf0f1f2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f+f,f-f.f/f:f;fLgDg=f?f@f[f]f^f_f`f{f|f}f~fNgagbgOgd .dQgc -dmgj ngrg4ea b RgMgIgFg7eKgTgSgJgPgBg8e

406 if self.extra_sources is not None: 2#e3 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dQgc -dYgZgUgXg2gmgj ngrg4ea b RgMgIgFg7eKgTgSgJg1gogqgpgCgEgGgHg3gPgBg8e

407 if not is_sequence(self.extra_sources): 2QgYgZgUgXg2ga b Pg

408 raise TypeError( 22g

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

410 ) 

411 for i, module in enumerate(self.extra_sources): 2QgYgZgUgXga b Pg

412 if not isinstance(module, tuple) or len(module) != 2: 2QgYgZgUgXga b Pg

413 raise TypeError( 2Zg

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

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

416 ) 

417  

418 module_name, module_source = module 2QgYgUgXga b Pg

419  

420 if not isinstance(module_name, str): 2QgYgUgXga b Pg

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

422  

423 if not isinstance(module_source, (str, bytes, bytearray)): 2QgUgXga b Pg

424 raise TypeError( 2Ug

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

426 f"or bytearray, got {type(module_source).__name__}" 2Ug

427 ) 

428  

429 if len(module_source) == 0: 2QgXga b Pg

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

431  

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

433 return _prepare_nvrtc_options_impl(self) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e

434  

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

436 return _prepare_nvvm_options_impl(self, as_bytes) 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

437  

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

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

440  

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

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

443 and formats even for the same conceptual options. 

444  

445 Parameters 

446 ---------- 

447 backend : str 

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

449 target_type : str, optional 

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

451 require additional options based on the target type. 

452  

453 Returns 

454 ------- 

455 list[bytes] 

456 List of option strings encoded as bytes. 

457  

458 Raises 

459 ------ 

460 ValueError 

461 If an unknown backend is specified. 

462 CUDAError 

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

464  

465 Examples 

466 -------- 

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

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

469 """ 

470 backend = backend.lower() 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg9e!ed .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ng4ecghgdgigegjgVe5efgkgWe6egglga b 7e1gogqgpgCgEgGgHg8e

471 if backend == "nvrtc": 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg9e!ed .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ng4ecghgdgigegjgVe5efgkgWe6egglga b 7e1gogqgpgCgEgGgHg8e

472 return self._prepare_nvrtc_options() 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e

473 elif backend == "nvvm": 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b 1gqgpg

474 options = self._prepare_nvvm_options(as_bytes=True) 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

475 if target_type == "ltoir" and b"-gen-lto" not in options: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b pg

476 options.append(b"-gen-lto") 29e!ecgdgegVefgWegga

477 return options 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b pg

478 else: 

479 raise ValueError(f"Unknown backend '{backend}'. Must be one of: 'nvrtc', 'nvvm'") 21g

480  

481 def __repr__(self): 

482 return f"ProgramOptions(name={self.name!r}, arch={self.arch!r})" 23g

483  

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

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

486 if self.extra_sources is None: 1ab

487 return None 

488  

489 result = [] 1ab

490 for module_name, module_source in self.extra_sources: 1ab

491 name_bytes = module_name.encode("utf-8") 1ab

492 if isinstance(module_source, str): 1ab

493 source_bytes = module_source.encode("utf-8") 1ab

494 elif isinstance(module_source, bytearray): 

495 source_bytes = bytes(module_source) 

496 else: 

497 source_bytes = module_source 

498 result.append((name_bytes, source_bytes)) 1ab

499 return result 1ab

500  

501  

502# ============================================================================= 

503# Private Classes and Helper Functions 

504# ============================================================================= 

505  

506# Module-level state for NVVM lazy loading 

507_nvvm_module = None 

508_nvvm_import_attempted = False 

509  

510  

511def _get_nvvm_module(): 

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

513 global _nvvm_module, _nvvm_import_attempted 

514  

515 if _nvvm_import_attempted: 2#eDgVgWg0g9e!engrg4g4ecghgdgigegjgVe5efg5gkgWe6egglga b Rg

516 if _nvvm_module is None: 2Dg9e!engrg4g4ecghgdgigegjgVe5efg5gkgWe6egglga b Rg

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

518 return _nvvm_module 2Dg9e!engrg4g4ecghgdgigegjgVe5efg5gkgWe6egglga b Rg

519  

520 _nvvm_import_attempted = True 2#eVgWg0g

521  

522 try: 2#eVgWg0g

523 version = binding_version() 2#eVgWg0g

524 if version < (12, 9, 0): 2#eVgWg0g

525 raise RuntimeError( 

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

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

528 ) 

529  

530 nvvm = _optional_cuda_import( 2#eVgWg0g

531 "cuda.bindings.nvvm", 

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

533 ) 

534 if nvvm is None: 2#eVgWg

535 raise RuntimeError( 2VgWg

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

537 ) 

538  

539 _nvvm_module = nvvm 

540 return _nvvm_module 

541  

542 except RuntimeError: 2VgWg0g

543 _nvvm_module = None 2VgWg

544 raise 2VgWg

545  

546def _find_libdevice_path(): 

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

548 from cuda.pathfinder import find_bitcode_lib 

549 return find_bitcode_lib("device") 

550  

551  

552  

553  

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

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

556 if isinstance(macro, str): 2Q O g h CgEgGgHg

557 options.append(f"--define-macro={macro}") 1Q

558 return True 1Q

559 if isinstance(macro, tuple): 2O g h CgEgGgHg

560 if len(macro) != 2 or any(not isinstance(val, str) for val in macro): 2O g h CgGgHg

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

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

563 return True 1Ogh

564 return False 2g h CgEg

565  

566  

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

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

569 union_type = "Union[str, tuple[str, str]]" 2Q O g h CgEgGgHg

570 if _process_define_macro_inner(options, macro): 2Q O g h CgEgGgHg

571 return 1QO

572 if is_nested_sequence(macro): 2g h CgEg

573 for seq_macro in macro: 2g h Cg

574 if not _process_define_macro_inner(options, seq_macro): 2g h Cg

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

576 return 1gh

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

578  

579  

580cpdef bint _can_load_generated_ptx() except? -1: 

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

582 drv = driver_version() 2}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFee f 6gM 7gN 8g9gd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

583 nvrtc_major, nvrtc_minor = handle_return(nvrtc.nvrtcVersion()) 2}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFee f 6gM 7gN 8g9gd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

584 return (nvrtc_major, nvrtc_minor, 0) <= drv 2}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFee f 6gM 7gN 8g9gd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

585  

586  

587cdef inline object _translate_program_options(object options): 

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

589 return LinkerOptions( 2BgsgtgugvgwgxgygzgAg

590 name=options.name, 2BgsgtgugvgwgxgygzgAg

591 arch=options.arch, 2BgsgtgugvgwgxgygzgAg

592 max_register_count=options.max_register_count, 2BgsgtgugvgwgxgygzgAg

593 time=options.time, 2BgsgtgugvgwgxgygzgAg

594 link_time_optimization=options.link_time_optimization, 2BgsgtgugvgwgxgygzgAg

595 debug=options.debug, 2BgsgtgugvgwgxgygzgAg

596 lineinfo=options.lineinfo, 2BgsgtgugvgwgxgygzgAg

597 ftz=options.ftz, 2BgsgtgugvgwgxgygzgAg

598 prec_div=options.prec_div, 2BgsgtgugvgwgxgygzgAg

599 prec_sqrt=options.prec_sqrt, 2BgsgtgugvgwgxgygzgAg

600 fma=options.fma, 2BgsgtgugvgwgxgygzgAg

601 split_compile=options.split_compile, 2BgsgtgugvgwgxgygzgAg

602 ptxas_options=options.ptxas_options, 2BgsgtgugvgwgxgygzgAg

603 no_cache=options.no_cache, 2BgsgtgugvgwgxgygzgAg

604 ) 

605  

606  

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

608 """Initialize a Program instance.""" 

609 cdef cynvrtc.nvrtcProgram nvrtc_prog 

610 cdef cynvvm.nvvmProgram nvvm_prog 

611 cdef bytes code_bytes 

612 cdef const char* code_ptr 

613 cdef const char* name_ptr 

614 cdef size_t code_len 

615 cdef bytes module_bytes 

616 cdef const char* module_ptr 

617 cdef size_t module_len 

618  

619 self._options = options = check_or_create_options(ProgramOptions, options, "Program options") 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dQgc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b RgMgIgFg7eKgTgSgJgPgBgsgtgugvgwgxgygzgAg8e

620 code_type = code_type.lower() 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dQgc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b RgMgIgFg7eKgTgSgJgPgBgsgtgugvgwgxgygzgAg8e

621 self._compile_lock = threading.Lock() 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dQgc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b RgMgIgFg7eKgTgSgJgPgBgsgtgugvgwgxgygzgAg8e

622 self._use_libdevice = False 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dQgc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b RgMgIgFg7eKgTgSgJgPgBgsgtgugvgwgxgygzgAg8e

623 self._libdevice_added = False 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dQgc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b RgMgIgFg7eKgTgSgJgPgBgsgtgugvgwgxgygzgAg8e

624  

625 self._pch_status = None 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dQgc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b RgMgIgFg7eKgTgSgJgPgBgsgtgugvgwgxgygzgAg8e

626  

627 if code_type == "c++": 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dQgc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b RgMgIgFg7eKgTgSgJgPgBgsgtgugvgwgxgygzgAg8e

628 assert_type(code, str) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOgd .dQgc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj MgIgFg7eKgTgJg8e

629 if options.extra_sources is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOgd .dQgc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj MgIgFg7eKgJg8e

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

631  

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

633 code_bytes = code.encode() 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj MgIgFg7eKgJg8e

634 code_ptr = <const char*>code_bytes 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj MgIgFg7eKgJg8e

635 name_ptr = <const char*>options._name 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj MgIgFg7eKgJg8e

636  

637 with nogil: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj MgIgFg7eKgJg8e

638 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcCreateProgram( 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj MgIgFg7eKgJg8e

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

640 self._h_nvrtc = create_nvrtc_program_handle(nvrtc_prog) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj MgIgFg7eKgJg8e

641 self._nvrtc_code = code_bytes 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj MgIgFg7eKgJg8e

642 self._backend = "NVRTC" 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj MgIgFg7eKgJg8e

643 self._linker = None 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj MgIgFg7eKgJg8e

644  

645 elif code_type == "ptx": 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b RgSgPgBgsgtgugvgwgxgygzgAg

646 assert_type(code, str) 2PgBgsgtgugvgwgxgygzgAg

647 if options.extra_sources is not None: 2PgBgsgtgugvgwgxgygzgAg

648 raise ValueError("extra_sources is not supported by the PTX backend.") 2Pg

649 self._linker = Linker( 2BgsgtgugvgwgxgygzgAg

650 ObjectCode._init(code.encode(), code_type), options=_translate_program_options(options) 2BgsgtgugvgwgxgygzgAg

651 ) 

652 self._backend = self._linker.backend 2BgsgtgugvgwgxgygzgAg

653  

654 elif code_type == "nvvm": 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b RgSg

655 _get_nvvm_module() # Validate NVVM availability 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b Rg

656 if isinstance(code, str): 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b Rg

657 code = code.encode("utf-8") 2Dgngrg4ecghgdgigegjgVe5efgkgWe6egglga b

658 elif not isinstance(code, (bytes, bytearray)): 29e!eRg

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

660  

661 code_ptr = <const char*>(<bytes>code) 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b

662 name_ptr = <const char*>options._name 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b

663 code_len = len(code) 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b

664  

665 with nogil: 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b

666 HANDLE_RETURN_NVVM(NULL, cynvvm.nvvmCreateProgram(&nvvm_prog)) 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b

667 self._h_nvvm = create_nvvm_program_handle(nvvm_prog) # RAII from here 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b

668 with nogil: 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b

669 HANDLE_RETURN_NVVM(nvvm_prog, cynvvm.nvvmAddModuleToProgram(nvvm_prog, code_ptr, code_len, name_ptr)) 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b

670  

671 # Add extra modules if provided 

672 if options.extra_sources is not None: 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b

673 extra_sources_bytes = options._prepare_extra_sources_bytes() 1ab

674 for module_name_bytes, module_bytes in extra_sources_bytes: 1ab

675 module_ptr = <const char*>module_bytes 1ab

676 module_len = len(module_bytes) 1ab

677 module_name_ptr = <const char*>module_name_bytes 1ab

678 with nogil: 1ab

679 HANDLE_RETURN_NVVM(nvvm_prog, cynvvm.nvvmAddModuleToProgram( 1ab

680 nvvm_prog, module_ptr, module_len, module_name_ptr)) 

681  

682 # Store use_libdevice flag 

683 if options.use_libdevice: 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b

684 self._use_libdevice = True 

685  

686 self._backend = "NVVM" 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b

687 self._linker = None 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b

688  

689 else: 

690 supported_code_types = ("c++", "ptx", "nvvm") 2Sg

691 assert code_type not in supported_code_types, f"{code_type=}" 2Sg

692 if options.use_libdevice: 2Sg

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

694 raise RuntimeError(f"Unsupported {code_type=} ({supported_code_types=})") 2Sg

695  

696 return 0 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b MgIgFg7eKgJgBgsgtgugvgwgxgygzgAg8e

697  

698  

699cdef object _nvrtc_compile_and_extract( 

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

701 object logs, list options_list, str name, 

702): 

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

704  

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

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

707 """ 

708 cdef size_t output_size = 0 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

709 cdef size_t logsize = 0 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

710 cdef vector[const char*] options_vec 

711 cdef char* data_ptr = NULL 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

712 cdef bytes name_bytes 

713 cdef const char* name_ptr = NULL 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

714 cdef const char* lowered_name = NULL 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

715 cdef dict symbol_mapping = {} 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

716  

717 # Add name expressions before compilation 

718 if name_expressions: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

719 for n in name_expressions: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bk 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 2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^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[cT U ]c^c_c`c{c|c}c~cadbdcdddedfdgdV W hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdX Y LdMdNdOdPdQdRdSdTdUdVdWdXdYdZdZ 0 0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d

720 name_bytes = n.encode() if isinstance(n, str) else n 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bk 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 2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^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[cT U ]c^c_c`c{c|c}c~cadbdcdddedfdgdV W hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdX Y LdMdNdOdPdQdRdSdTdUdVdWdXdYdZdZ 0 0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d

721 name_ptr = <const char*>name_bytes 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bk 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 2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^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[cT U ]c^c_c`c{c|c}c~cadbdcdddedfdgdV W hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdX Y LdMdNdOdPdQdRdSdTdUdVdWdXdYdZdZ 0 0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d

722 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcAddNameExpression(prog, name_ptr)) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bk 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 2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^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[cT U ]c^c_c`c{c|c}c~cadbdcdddedfdgdV W hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdX Y LdMdNdOdPdQdRdSdTdUdVdWdXdYdZdZ 0 0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d

723  

724 # Build options array 

725 options_vec.resize(len(options_list)) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

726 for i in range(len(options_list)): 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

727 options_vec[i] = <const char*>(<bytes>options_list[i]) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

728  

729 # Compile 

730 with nogil: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

731 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcCompileProgram(prog, <int>options_vec.size(), options_vec.data())) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

732  

733 # Get compiled output based on target type 

734 if target_type == "ptx": 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dj 7e8e

735 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPTXSize(prog, &output_size)) 2}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFee f M N d .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dj 7e8e

736 data = bytearray(output_size) 2}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFee f M N d .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dj 7e8e

737 data_ptr = <char*>(<bytearray>data) 2}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFee f M N d .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dj 7e8e

738 with nogil: 2}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFee f M N d .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dj 7e8e

739 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPTX(prog, data_ptr)) 2}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFee f M N d .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dj 7e8e

740 elif target_type == "cubin": 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b$e4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg

741 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetCUBINSize(prog, &output_size)) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg

742 data = bytearray(output_size) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg

743 data_ptr = <char*>(<bytearray>data) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg

744 with nogil: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg

745 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetCUBIN(prog, data_ptr)) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg

746 else: # ltoir 

747 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLTOIRSize(prog, &output_size)) 2$eR S ;f

748 data = bytearray(output_size) 2$eR S ;f

749 data_ptr = <char*>(<bytearray>data) 2$eR S ;f

750 with nogil: 2$eR S ;f

751 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLTOIR(prog, data_ptr)) 2$eR S ;f

752  

753 # Get lowered names after compilation 

754 if name_expressions: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dj 7e8e

755 for n in name_expressions: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bk 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 2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^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[cT U ]c^c_c`c{c|c}c~cadbdcdddedfdgdV W hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdX Y LdMdNdOdPdQdRdSdTdUdVdWdXdYdZdZ 0 0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d

756 name_bytes = n.encode() if isinstance(n, str) else n 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bk 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 2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^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[cT U ]c^c_c`c{c|c}c~cadbdcdddedfdgdV W hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdX Y LdMdNdOdPdQdRdSdTdUdVdWdXdYdZdZ 0 0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d

757 name_ptr = <const char*>name_bytes 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bk 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 2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^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[cT U ]c^c_c`c{c|c}c~cadbdcdddedfdgdV W hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdX Y LdMdNdOdPdQdRdSdTdUdVdWdXdYdZdZ 0 0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d

758 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLoweredName(prog, name_ptr, &lowered_name)) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bk 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 2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^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[cT U ]c^c_c`c{c|c}c~cadbdcdddedfdgdV W hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdX Y LdMdNdOdPdQdRdSdTdUdVdWdXdYdZdZ 0 0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d

759 symbol_mapping[n] = lowered_name if lowered_name != NULL else None 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bk 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 2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^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[cT U ]c^c_c`c{c|c}c~cadbdcdddedfdgdV W hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdX Y LdMdNdOdPdQdRdSdTdUdVdWdXdYdZdZ 0 0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d

760  

761 # Get compilation log if requested 

762 if logs is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dj 7e8e

763 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetProgramLogSize(prog, &logsize)) 1j

764 if logsize > 1: 1j

765 log = bytearray(logsize) 1j

766 data_ptr = <char*>(<bytearray>log) 1j

767 with nogil: 1j

768 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetProgramLog(prog, data_ptr)) 1j

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

770  

771 return ObjectCode._init(bytes(data), target_type, symbol_mapping=symbol_mapping, name=name) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dj 7e8e

772  

773  

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

775  

776cdef bint _has_nvrtc_pch_apis(): 

777 global _nvrtc_pch_apis_cached 

778 if _nvrtc_pch_apis_cached < 0: 1dci

779 _nvrtc_pch_apis_cached = hasattr(nvrtc, "nvrtcGetPCHCreateStatus") 1d

780 return _nvrtc_pch_apis_cached 1dci

781  

782  

783cdef str _PCH_STATUS_CREATED = "created" 

784cdef str _PCH_STATUS_NOT_ATTEMPTED = "not_attempted" 

785cdef str _PCH_STATUS_FAILED = "failed" 

786  

787  

788cdef str _read_pch_status(cynvrtc.nvrtcProgram prog): 

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

790 cdef cynvrtc.nvrtcResult err 

791 with nogil: 1dci

792 err = cynvrtc.nvrtcGetPCHCreateStatus(prog) 1dci

793 if err == cynvrtc.nvrtcResult.NVRTC_SUCCESS: 1dci

794 return _PCH_STATUS_CREATED 1dci

795 if err == cynvrtc.nvrtcResult.NVRTC_ERROR_PCH_CREATE_HEAP_EXHAUSTED: 

796 return None # sentinel: caller should auto-retry 

797 if err == cynvrtc.nvrtcResult.NVRTC_ERROR_NO_PCH_CREATE_ATTEMPTED: 

798 return _PCH_STATUS_NOT_ATTEMPTED 

799 return _PCH_STATUS_FAILED 

800  

801  

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

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

804 cdef cynvrtc.nvrtcProgram prog = as_cu(self._h_nvrtc) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

805 cdef list options_list = self._options.as_bytes("nvrtc", target_type) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

806  

807 result = _nvrtc_compile_and_extract( 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

808 prog, target_type, name_expressions, logs, options_list, self._options.name, 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

809 ) 

810  

811 cdef bint pch_creation_possible = self._options.create_pch or self._options.pch 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dj 7e8e

812 if not pch_creation_possible or not _has_nvrtc_pch_apis(): 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dj 7e8e

813 self._pch_status = None 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg.dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSeTeUe|dj 7e8e

814 return result 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg.dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSeTeUe|dj 7e8e

815  

816 try: 1dci

817 status = _read_pch_status(prog) 1dci

818 except RuntimeError as e: 

819 raise RuntimeError( 

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

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

822 ) from e 

823  

824 if status is not None: 1dci

825 self._pch_status = status 1dci

826 return result 1dci

827  

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

829 cdef size_t required = 0 

830 with nogil: 

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

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

833  

834 cdef cynvrtc.nvrtcProgram retry_prog 

835 cdef const char* code_ptr = <const char*>self._nvrtc_code 

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

837 with nogil: 

838 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcCreateProgram( 

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

840 self._h_nvrtc = create_nvrtc_program_handle(retry_prog) 

841  

842 result = _nvrtc_compile_and_extract( 

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

844 ) 

845  

846 status = _read_pch_status(retry_prog) 

847 self._pch_status = status if status is not None else _PCH_STATUS_FAILED 

848 return result 

849  

850  

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

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

853 cdef cynvvm.nvvmProgram prog = as_cu(self._h_nvvm) 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b

854 cdef size_t output_size = 0 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b

855 cdef size_t logsize = 0 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b

856 cdef vector[const char*] options_vec 

857 cdef char* data_ptr = NULL 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b

858 cdef bytes libdevice_bytes 

859 cdef const char* libdevice_ptr 

860 cdef size_t libdevice_len 

861 # Build options array 

862 options_list = self._options.as_bytes("nvvm", target_type) 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b

863 options_vec.resize(len(options_list)) 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b

864 for i in range(len(options_list)): 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b

865 options_vec[i] = <const char*>(<bytes>options_list[i]) 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b

866  

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

868 with self._compile_lock: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b

869 with nogil: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b

870 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmVerifyProgram(prog, <int>options_vec.size(), options_vec.data())) 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b

871  

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

873 if self._use_libdevice and not self._libdevice_added: 29e!e4ecghgdgigegjgVe5efgkgWe6egglga b

874 libdevice_path = _find_libdevice_path() 

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

876 libdevice_bytes = f.read() 

877 libdevice_ptr = <const char*>libdevice_bytes 

878 libdevice_len = len(libdevice_bytes) 

879 with nogil: 

880 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmLazyAddModuleToProgram( 

881 prog, libdevice_ptr, libdevice_len, NULL)) 

882 self._libdevice_added = True 

883  

884 with nogil: 29e!e4ecghgdgigegjgVe5efgkgWe6egglga b

885 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmCompileProgram(prog, <int>options_vec.size(), options_vec.data())) 29e!e4ecghgdgigegjgVe5efgkgWe6egglga b

886  

887 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetCompiledResultSize(prog, &output_size)) 29e!e4ecghgdgigegjgVe5efgkgWe6egglga b

888 data = bytearray(output_size) 29e!e4ecghgdgigegjgVe5efgkgWe6egglga b

889 data_ptr = <char*>(<bytearray>data) 29e!e4ecghgdgigegjgVe5efgkgWe6egglga b

890 with nogil: 29e!e4ecghgdgigegjgVe5efgkgWe6egglga b

891 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetCompiledResult(prog, data_ptr)) 29e!e4ecghgdgigegjgVe5efgkgWe6egglga b

892  

893 # Get compilation log if requested 

894 if logs is not None: 29e!e4ecghgdgigegjgVe5efgkgWe6egglga b

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

896 if logsize > 1: 

897 log = bytearray(logsize) 

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

899 with nogil: 

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

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

902  

903 return ObjectCode._init(bytes(data), target_type, name=self._options.name) 29e!e4ecghgdgigegjgVe5efgkgWe6egglga b

904  

905# Supported target types per backend 

906cdef dict SUPPORTED_TARGETS = { 

907 "NVRTC": ("ptx", "cubin", "ltoir"), 

908 "NVVM": ("ptx", "ltoir"), 

909 "nvJitLink": ("cubin", "ptx"), 

910 "driver": ("cubin", "ptx"), 

911} 

912  

913  

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

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

916 # Validate target_type for this backend 

917 supported = SUPPORTED_TARGETS.get(self._backend) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg9e!ed .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b Fg7esgtgugvgwgxgygzgAg8e

918 if supported is None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg9e!ed .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b Fg7esgtgugvgwgxgygzgAg8e

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

920 if target_type not in supported: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg9e!ed .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b Fg7esgtgugvgwgxgygzgAg8e

921 raise ValueError( 2rgFg

922 f'Unsupported target_type="{target_type}" for {self._backend} ' 2rgFg

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

924 ) 

925  

926 if self._backend == "NVRTC": 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg9e!ed .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ng4ecghgdgigegjgVe5efgkgWe6egglga b 7esgtgugvgwgxgygzgAg8e

927 if target_type == "ptx" and not _can_load_generated_ptx(): 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

928 warn( 2}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFee f M N d .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

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

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

931 stacklevel=2, 

932 category=RuntimeWarning, 2}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFee f M N d .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

933 ) 

934 return Program_compile_nvrtc(self, target_type, name_expressions, logs) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e

935  

936 elif self._backend == "NVVM": 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b sgtgugvgwgxgygzgAg

937 return Program_compile_nvvm(self, target_type, logs) 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b

938  

939 else: 

940 return self._linker.link(target_type) 2sgtgugvgwgxgygzgAg

941  

942  

943cdef inline list _prepare_nvrtc_options_impl(object opts): 

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

945 options = [f"-arch={opts.arch}"] 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e

946 if opts.relocatable_device_code is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e

947 options.append(f"--relocatable-device-code={_handle_boolean_option(opts.relocatable_device_code)}") 2}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFe[d

948 if opts.extensible_whole_program is not None and opts.extensible_whole_program: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e

949 options.append("--extensible-whole-program") 2Le

950 if opts.debug is not None and opts.debug: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e

951 options.append("--device-debug") 2?d@dog

952 if opts.lineinfo is not None and opts.lineinfo: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e

953 options.append("--generate-line-info") 2og

954 if opts.device_code_optimize is not None and opts.device_code_optimize: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e

955 options.append("--dopt=on") 2?d

956 if opts.ptxas_options is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e

957 opt_name = "--ptxas-options" 112

958 if isinstance(opts.ptxas_options, str): 112

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

960 elif is_sequence(opts.ptxas_options): 112

961 for opt_value in opts.ptxas_options: 112

962 options.append(f"{opt_name}={opt_value}") 112

963 if opts.max_register_count is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e

964 options.append(f"--maxrregcount={opts.max_register_count}") 2[d

965 if opts.ftz is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e

966 options.append(f"--ftz={_handle_boolean_option(opts.ftz)}") 2=dog

967 if opts.prec_sqrt is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e

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

969 if opts.prec_div is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e

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

971 if opts.fma is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e

972 options.append(f"--fmad={_handle_boolean_option(opts.fma)}") 2]d

973 if opts.use_fast_math is not None and opts.use_fast_math: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e

974 options.append("--use_fast_math") 2]d

975 if opts.extra_device_vectorization is not None and opts.extra_device_vectorization: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e

976 options.append("--extra-device-vectorization") 2Ge

977 if opts.link_time_optimization is not None and opts.link_time_optimization: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e

978 options.append("--dlink-time-opt") 2$eR S He

979 if opts.gen_opt_lto is not None and opts.gen_opt_lto: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e

980 options.append("--gen-opt-lto") 2Ne

981 if opts.define_macro is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e

982 _process_define_macro(options, opts.define_macro) 2Q O g h CgEgGgHg

983 if opts.undefine_macro is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

984 if isinstance(opts.undefine_macro, str): 2/d:d

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

986 elif is_sequence(opts.undefine_macro): 2/d

987 for macro in opts.undefine_macro: 2/d

988 options.append(f"--undefine-macro={macro}") 2/d

989 if opts.include_path is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

990 if isinstance(opts.include_path, str): 2XeYeZe0e1e2ek 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 :d

991 options.append(f"--include-path={opts.include_path}") 2:d

992 elif is_sequence(opts.include_path): 2XeYeZe0e1e2ek 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

993 for path in opts.include_path: 2XeYeZe0e1e2ek 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

994 options.append(f"--include-path={path}") 2XeYeZe0e1e2ek 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

995 if opts.pre_include is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

996 if isinstance(opts.pre_include, str): 

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

998 elif is_sequence(opts.pre_include): 

999 for header in opts.pre_include: 

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

1001 if opts.no_source_include is not None and opts.no_source_include: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

1002 options.append("--no-source-include") 2Pe

1003 if opts.std is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

1004 options.append(f"--std={opts.std}") 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2ek 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 2b3b1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[cT U ]c^c_c`c{c|c}c~cadbdcdddedfdgdV W hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdX Y LdMdNdOdPdQdRdSdTdUdVdWdXdYdZdZ 0 0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d1 2

1005 if opts.builtin_move_forward is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

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

1007 if opts.builtin_initializer_list is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

1008 options.append(f"--builtin-initializer-list={_handle_boolean_option(opts.builtin_initializer_list)}") 2^d

1009 if opts.disable_warnings is not None and opts.disable_warnings: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

1010 options.append("--disable-warnings") 2^d

1011 if opts.restrict is not None and opts.restrict: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

1012 options.append("--restrict") 2_d

1013 if opts.device_as_default_execution_space is not None and opts.device_as_default_execution_space: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

1014 options.append("--device-as-default-execution-space") 2_d

1015 if opts.device_int128 is not None and opts.device_int128: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

1016 options.append("--device-int128") 2`d

1017 if opts.device_float128 is not None and opts.device_float128: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

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

1019 if opts.optimization_info is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

1020 options.append(f"--optimization-info={opts.optimization_info}") 2`d

1021 if opts.no_display_error_number is not None and opts.no_display_error_number: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

1022 options.append("--no-display-error-number") 2Ie

1023 if opts.diag_error is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

1024 if isinstance(opts.diag_error, int): 2;dP

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

1026 elif is_sequence(opts.diag_error): 1P

1027 for error in opts.diag_error: 1P

1028 options.append(f"--diag-error={error}") 1P

1029 if opts.diag_suppress is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

1030 if isinstance(opts.diag_suppress, int): 2;dP

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

1032 elif is_sequence(opts.diag_suppress): 1P

1033 for suppress in opts.diag_suppress: 1P

1034 options.append(f"--diag-suppress={suppress}") 1P

1035 if opts.diag_warn is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

1036 if isinstance(opts.diag_warn, int): 2{d

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

1038 elif is_sequence(opts.diag_warn): 

1039 for w in opts.diag_warn: 

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

1041 if opts.brief_diagnostics is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

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

1043 if opts.time is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

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

1045 if opts.split_compile is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

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

1047 if opts.fdevice_syntax_only is not None and opts.fdevice_syntax_only: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

1048 options.append("--fdevice-syntax-only") 2Me

1049 if opts.minimal is not None and opts.minimal: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

1050 options.append("--minimal") 2Oe

1051 if opts.no_cache is not None and opts.no_cache: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

1052 options.append("--no-cache") 2Qe

1053 if opts.fdevice_time_trace is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

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

1055 if opts.frandom_seed is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

1056 options.append(f"--frandom-seed={opts.frandom_seed}") 2Re

1057 if opts.ofast_compile is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

1058 options.append(f"--Ofast-compile={opts.ofast_compile}") 2Se

1059 # PCH options (CUDA 12.8+) 

1060 if opts.pch is not None and opts.pch: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

1061 options.append("--pch") 1i

1062 if opts.create_pch is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

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

1064 if opts.use_pch is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

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

1066 if opts.pch_dir is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

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

1068 if opts.pch_verbose is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

1069 options.append(f"--pch-verbose={_handle_boolean_option(opts.pch_verbose)}") 2Te

1070 if opts.pch_messages is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

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

1072 if opts.instantiate_templates_in_pch is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

1073 options.append( 2|d

1074 f"--instantiate-templates-in-pch={_handle_boolean_option(opts.instantiate_templates_in_pch)}" 2|d

1075 ) 

1076 if opts.numba_debug: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

1077 options.append("--numba-debug") 2@d

1078 return [o.encode() for o in options] 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'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 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e

1079  

1080  

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

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

1083 options = [] 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1084  

1085 # Options supported by NVVM 

1086 assert opts.arch is not None 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1087 arch = opts.arch 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1088 if arch.startswith("sm_"): 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1089 arch = f"compute_{arch[3:]}" 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1090 options.append(f"-arch={arch}") 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1091 if opts.debug is not None and opts.debug: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1092 options.append("-g") 2pg

1093 if opts.device_code_optimize is False: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1094 options.append("-opt=0") 2cghgdgigfgkg

1095 elif opts.device_code_optimize is True: 29e!eng4eegjgVe5eWe6egglga b qgpg

1096 options.append("-opt=3") 2Ve5eWe6epg

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

1098 if opts.ftz is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

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

1100 if opts.prec_sqrt is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

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

1102 if opts.prec_div is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

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

1104 if opts.fma is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

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

1106  

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

1108 unsupported = [] 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1109 if opts.relocatable_device_code is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1110 unsupported.append("relocatable_device_code") 

1111 if opts.extensible_whole_program is not None and opts.extensible_whole_program: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1112 unsupported.append("extensible_whole_program") 

1113 if opts.lineinfo is not None and opts.lineinfo: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1114 unsupported.append("lineinfo") 2qg

1115 if opts.ptxas_options is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1116 unsupported.append("ptxas_options") 

1117 if opts.max_register_count is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1118 unsupported.append("max_register_count") 

1119 if opts.use_fast_math is not None and opts.use_fast_math: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1120 unsupported.append("use_fast_math") 

1121 if opts.extra_device_vectorization is not None and opts.extra_device_vectorization: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1122 unsupported.append("extra_device_vectorization") 

1123 if opts.gen_opt_lto is not None and opts.gen_opt_lto: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1124 unsupported.append("gen_opt_lto") 

1125 if opts.define_macro is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1126 unsupported.append("define_macro") 

1127 if opts.undefine_macro is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1128 unsupported.append("undefine_macro") 

1129 if opts.include_path is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1130 unsupported.append("include_path") 

1131 if opts.pre_include is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1132 unsupported.append("pre_include") 

1133 if opts.no_source_include is not None and opts.no_source_include: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1134 unsupported.append("no_source_include") 

1135 if opts.std is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1136 unsupported.append("std") 

1137 if opts.builtin_move_forward is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1138 unsupported.append("builtin_move_forward") 

1139 if opts.builtin_initializer_list is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1140 unsupported.append("builtin_initializer_list") 

1141 if opts.disable_warnings is not None and opts.disable_warnings: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1142 unsupported.append("disable_warnings") 

1143 if opts.restrict is not None and opts.restrict: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1144 unsupported.append("restrict") 

1145 if opts.device_as_default_execution_space is not None and opts.device_as_default_execution_space: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1146 unsupported.append("device_as_default_execution_space") 

1147 if opts.device_int128 is not None and opts.device_int128: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1148 unsupported.append("device_int128") 

1149 if opts.optimization_info is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1150 unsupported.append("optimization_info") 

1151 if opts.no_display_error_number is not None and opts.no_display_error_number: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1152 unsupported.append("no_display_error_number") 

1153 if opts.diag_error is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1154 unsupported.append("diag_error") 

1155 if opts.diag_suppress is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1156 unsupported.append("diag_suppress") 

1157 if opts.diag_warn is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1158 unsupported.append("diag_warn") 

1159 if opts.brief_diagnostics is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1160 unsupported.append("brief_diagnostics") 

1161 if opts.time is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1162 unsupported.append("time") 

1163 if opts.split_compile is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1164 unsupported.append("split_compile") 

1165 if opts.fdevice_syntax_only is not None and opts.fdevice_syntax_only: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1166 unsupported.append("fdevice_syntax_only") 

1167 if opts.minimal is not None and opts.minimal: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1168 unsupported.append("minimal") 

1169 if opts.numba_debug is not None and opts.numba_debug: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

1170 unsupported.append("numba_debug") 

1171 if unsupported: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg

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

1173  

1174 if as_bytes: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b pg

1175 return [o.encode() for o in options] 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b pg

1176 else: 

1177 return options