Coverage for cuda / core / _program.pyx: 86.06%
667 statements
« prev ^ index » next coverage.py v7.14.0, created at 2026-05-22 01:37 +0000
« prev ^ index » next coverage.py v7.14.0, created at 2026-05-22 01:37 +0000
1# SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2#
3# SPDX-License-Identifier: Apache-2.0
4"""Compilation machinery for CUDA programs.
6This module provides :class:`Program` for compiling source code into
7:class:`~cuda.core.ObjectCode`, with :class:`ProgramOptions` for configuration.
8"""
10from __future__ import annotations
12from dataclasses import dataclass
13import threading
14from warnings import warn
16from cuda.bindings import nvrtc
17from cuda.pathfinder._optional_cuda_import import _optional_cuda_import
19from libcpp.vector cimport vector
21from ._resource_handles cimport (
22 as_cu,
23 as_py,
24 create_nvrtc_program_handle,
25 create_nvvm_program_handle,
26)
27from cuda.bindings cimport cynvrtc, cynvvm
28from cuda.core._utils.cuda_utils cimport HANDLE_RETURN_NVRTC, HANDLE_RETURN_NVVM
29from cuda.core._device import Device
30from cuda.core._linker import Linker, LinkerHandleT, LinkerOptions
31from cuda.core._module import ObjectCode
32from cuda.core._utils.clear_error_support import assert_type
33from cuda.core._utils.cuda_utils import (
34 CUDAError,
35 _handle_boolean_option,
36 check_or_create_options,
37 handle_return,
38 is_nested_sequence,
39 is_sequence,
40)
41from cuda.core._utils.version import binding_version, driver_version
42from cuda.core.typing import ObjectCodeFormatType, CompilerBackendType, PCHStatusType, SourceCodeType
44__all__ = ["Program", "ProgramOptions"]
46ProgramHandleT = nvrtc.nvrtcProgram | int | LinkerHandleT
47"""Type alias for program handle types across different backends.
49The ``int`` type covers NVVM handles, which don't have a wrapper class.
50"""
53# =============================================================================
54# Principal Class
55# =============================================================================
58cdef class Program:
59 """Represent a compilation machinery to process programs into
60 :class:`~cuda.core.ObjectCode`.
62 This object provides a unified interface to multiple underlying
63 compiler libraries. Compilation support is enabled for a wide
64 range of code types and compilation types.
66 Parameters
67 ----------
68 code : str | bytes | bytearray
69 The source code to compile. For C++ and PTX, must be a string.
70 For NVVM IR, can be str, bytes, or bytearray.
71 code_type : SourceCodeType | str
72 The type of source code. Must be one of ``"c++"``, ``"ptx"``, or ``"nvvm"``.
73 options : :class:`ProgramOptions`, optional
74 Options to customize the compilation process.
75 """
76 def __init__(self, code: str | bytes | bytearray, code_type: SourceCodeType | str, options: ProgramOptions | None = None):
77 Program_init(self, code, str(code_type), options) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Ehzhuhkhb whGhFhvhChhh}g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
79 def close(self):
80 """Destroy this program."""
81 if self._linker: 2iejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d uhhh}g~gahbhchdhehfhgh)e
82 self._linker.close() 2hh}g~gahbhchdhehfhgh
83 # Reset handles - the C++ shared_ptr destructor handles cleanup
84 self._h_nvrtc.reset() 2iejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d uhhh}g~gahbhchdhehfhgh)e
85 self._h_nvvm.reset() 2iejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d uhhh}g~gahbhchdhehfhgh)e
87 def compile(
88 self,
89 target_type: ObjectCodeFormatType | str,
90 name_expressions: tuple | list = (),
91 logs=None,
92 *,
93 cache: "ProgramCacheResource | None" = None,
94 ) -> ObjectCode:
95 """Compile the program to the specified target type.
97 Parameters
98 ----------
99 target_type : ObjectCodeFormatType | str
100 The compilation target. Must be one of ``"ptx"``, ``"cubin"``, or ``"ltoir"``.
101 name_expressions : tuple | list, optional
102 Sequence of name expressions to make accessible in the compiled code.
103 Used for template instantiation and similar cases.
104 logs : object, optional
105 Object with a ``write`` method to receive compilation logs.
106 On a cache hit no compilation runs and ``logs`` receives
107 nothing -- callers that rely on log output to confirm a
108 compile happened should compile without ``cache=``.
109 cache : :class:`~cuda.core.utils.ProgramCacheResource`, optional
110 If provided, the compiled binary is looked up in ``cache`` via a
111 key derived from the program's code, options, and ``target_type``.
112 On a hit the cached bytes are wrapped in a fresh
113 :class:`~cuda.core.ObjectCode` (with the same ``target_type``
114 and ``ProgramOptions.name``) and returned without re-compiling;
115 on a miss the compile output is stored as raw bytes (the cache
116 extracts ``bytes(object_code.code)``). Passing a non-empty
117 ``name_expressions`` together with ``cache=`` raises
118 ``ValueError``: NVRTC populates
119 ``ObjectCode.symbol_mapping`` at compile time and that mapping
120 is not carried in the binary the cache stores, so cache hits
121 would silently miss ``get_kernel(name_expression)`` lookups.
122 Options that require an ``extra_digest`` (``include_path``,
123 ``pre_include``, ``pch``, ``use_pch``, ``pch_dir``, NVVM
124 ``use_libdevice=True``, or NVRTC ``options.name`` with a
125 directory component) raise ``ValueError`` via
126 :func:`~cuda.core.utils.make_program_cache_key`; for those
127 compiles, use the manual ``make_program_cache_key(...)``
128 pattern directly.
130 ``cache=`` is independent of ``ProgramOptions.no_cache``: the
131 former controls this program-level cache (compiled-output
132 reuse across calls), while ``no_cache`` is forwarded to the
133 Linker to disable its in-process JIT cache for cuLink/nvJitLink.
134 Setting ``options.no_cache=True`` does not bypass ``cache=``,
135 and vice-versa.
137 Returns
138 -------
139 :class:`~cuda.core.ObjectCode`
140 The compiled object code.
141 """
142 # Mirror Program_init's code_type normalization so callers can pass
143 # ``ObjectCodeFormatType.PTX`` or ``"PTX"`` and get the same routing
144 # / cache key as the lowercase string. ``Program_compile_nvrtc``
145 # keys on lowercase ``target_type`` and ``make_program_cache_key``
146 # lowercases too.
147 target_type = str(target_type).lower() 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgiejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP yg|g^d.esg/etg:eug|dae;evg}dbe=ewga d khb }g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
149 if cache is None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgiejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP yg|g^d.esg/etg:eug|dae;evg}dbe=ewga d khb }g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
150 return _program_compile_uncached(self, target_type, name_expressions, logs) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgiejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP yg|g^d.esg/etg:eug|dae;evg}dbe=ewga d khb }g~g,eahbhchdhehfhgh)exh
152 # Deferred import to avoid a circular import between _program and
153 # cuda.core.utils._program_cache (the cache module already imports
154 # ProgramOptions from this module). Import from the leaf module so
155 # tests that monkeypatch make_program_cache_key via that path
156 # intercept reliably.
157 from cuda.core.utils._program_cache import ( 2CgAgBgDgN GgEgqhmhnhohHgthFgO
158 ProgramCacheResource,
159 make_program_cache_key,
160 )
162 if not isinstance(cache, ProgramCacheResource): 2CgAgBgDgN GgEgqhmhnhohHgthFgO
163 raise TypeError( 2qh
164 "cache must be an instance of " 2qh
165 "cuda.core.utils.ProgramCacheResource; got "
166 f"{type(cache).__name__}" 2qh
167 )
169 # ``name_expressions`` is incompatible with the cache: NVRTC
170 # populates ``ObjectCode.symbol_mapping`` from name-expression
171 # mangling at compile time, and that mapping isn't carried in
172 # the binary bytes the cache stores. Without this guard the
173 # first call (cache miss) would return an ObjectCode with
174 # symbol_mapping populated, while every subsequent call (hit)
175 # would return one without -- silently breaking later
176 # ``get_kernel(name_expression)`` lookups that work on the
177 # uncached path. Fail loud here instead.
178 if name_expressions: 2CgAgBgDgN GgEgmhnhohHgthFgO
179 raise ValueError( 2th
180 "Program.compile(cache=...) does not support name_expressions: "
181 "ObjectCode.symbol_mapping is populated by NVRTC at compile "
182 "time and is not preserved across a cache round-trip, so cache "
183 "hits would silently break get_kernel(name_expression) lookups "
184 "that the uncached path supports. Compile without cache= when "
185 "name_expressions are needed, or look up mangled symbols by "
186 "hand from the cached ObjectCode."
187 )
189 # ``self._code`` is always stored as bytes (see ``Program_init``),
190 # but ``make_program_cache_key`` only accepts bytes when
191 # ``code_type == "nvvm"`` -- c++/ptx must be ``str``. The bytes
192 # came from ``code.encode()`` on a ``str`` Program_init validated
193 # via ``assert_type(code, str)``, so this round-trip is always
194 # safe; no try/except needed.
195 code_for_key = self._code if self._code_type == "nvvm" else self._code.decode("utf-8") 2CgAgBgDgN GgEgmhnhohHgFgO
197 key = make_program_cache_key( 2CgAgBgDgN GgEgmhnhohHgFgO
198 code=code_for_key,
199 code_type=self._code_type,
200 options=self._options,
201 target_type=target_type, 2CgAgBgDgN GgEgmhnhohHgFgO
202 )
203 hit_bytes = cache.get(key) 2CgAgBgDgN GgEgHgFgO
204 if hit_bytes is not None: 2CgAgBgDgN GgEgFgO
205 # The uncached NVRTC path warns when the active driver can't
206 # load freshly-generated PTX; that loadability is a property
207 # of the driver, not of how the bytes were produced, so the
208 # warning applies equally to cached PTX. Mirror it here so a
209 # cache hit doesn't silently hide an incompatibility that the
210 # uncached call would have surfaced.
211 if ( 2CgAgBgDgN O
212 self._backend == "NVRTC" 2CgAgBgDgN O
213 and target_type == "ptx" 2CgAgBgDgN O
214 and not _can_load_generated_ptx() 2AgBg
215 ):
216 warn( 2Ag
217 "The CUDA driver version is older than the backend version. "
218 "The generated ptx will not be loadable by the current driver.",
219 stacklevel=2,
220 category=RuntimeWarning, 2Ag
221 )
222 return ObjectCode._init(hit_bytes, target_type, name=self._options.name) 2CgAgBgDgN O
223 compiled = _program_compile_uncached(self, target_type, name_expressions, logs) 2CgN GgEgFgO
224 cache[key] = compiled 2CgN EgFgO
225 return compiled 2CgN EgO
227 @property
228 def pch_status(self) -> PCHStatusType | None:
229 """PCH creation outcome from the most recent :meth:`compile` call.
231 Possible values:
233 * ``"created"`` — PCH file was written successfully.
234 * ``"not_attempted"`` — PCH creation was not attempted (e.g. the
235 compiler decided not to, or automatic PCH processing skipped it).
236 * ``"failed"`` — an error prevented PCH creation.
237 * ``None`` — PCH was not requested, the program has not been
238 compiled yet, the backend is not NVRTC (e.g. PTX or NVVM),
239 or the NVRTC bindings are too old to report status.
241 When ``create_pch`` is set in :class:`ProgramOptions` and the PCH
242 heap is too small, :meth:`compile` automatically resizes the heap
243 and retries, so ``"created"`` should be the common outcome.
245 .. note::
247 PCH is only supported for ``code_type="c++"`` programs that
248 use the NVRTC backend. For PTX and NVVM programs this property
249 always returns ``None``.
250 """
251 if self._pch_status is None: 2f [d
252 return None 2f [d
253 return PCHStatusType(self._pch_status) 1f
255 @property
256 def backend(self) -> CompilerBackendType:
257 """Return this Program instance's underlying :class:`CompilerBackendType`."""
258 return CompilerBackendType(self._backend) 2iejee ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseih^d.esg/etg:eug|dae;evg}dbe=ewga d zhvh}g~gahbhchdhehfhgh
260 @property
261 def handle(self) -> ProgramHandleT:
262 """Return the underlying handle object.
264 .. note::
266 The type of the returned object depends on the backend.
268 .. caution::
270 This handle is a Python object. To get the memory address of the underlying C
271 handle, call ``int(Program.handle)``.
272 """
273 if self._backend == "NVRTC": 2ih^dwhvhhh
274 return as_py(self._h_nvrtc) 2whvh
275 elif self._backend == "NVVM": 2ih^dhh
276 return as_py(self._h_nvvm) # returns int (NVVM uses raw integers) 2ih^d
277 else:
278 return self._linker.handle 2hh
280 def __repr__(self) -> str:
281 return f"<Program backend='{self._backend}'>" 2yhjhc
284# =============================================================================
285# Other Public Classes
286# =============================================================================
289@dataclass
290class ProgramOptions:
291 """Customizable options for configuring :class:`Program`.
293 Attributes
294 ----------
295 name : str, optional
296 Name of the program. If the compilation succeeds, the name is passed down to the generated :class:`ObjectCode`.
297 arch : str, optional
298 Pass the SM architecture value, such as ``sm_<CC>`` (for generating CUBIN) or
299 ``compute_<CC>`` (for generating PTX). If not provided, the current device's architecture
300 will be used.
301 relocatable_device_code : bool, optional
302 Enable (disable) the generation of relocatable device code.
303 Default: False
304 extensible_whole_program : bool, optional
305 Do extensible whole program compilation of device code.
306 Default: False
307 debug : bool, optional
308 Generate debug information. If --dopt is not specified, then turns off all optimizations.
309 Default: False
310 lineinfo: bool, optional
311 Generate line-number information.
312 Default: False
313 device_code_optimize : bool, optional
314 Enable device code optimization. When specified along with '-G', enables limited debug information generation
315 for optimized device code.
316 Default: None
317 ptxas_options : Union[str, list[str]], optional
318 Specify one or more options directly to ptxas, the PTX optimizing assembler. Options should be strings.
319 For example ["-v", "-O2"].
320 Default: None
321 max_register_count : int, optional
322 Specify the maximum amount of registers that GPU functions can use.
323 Default: None
324 ftz : bool, optional
325 When performing single-precision floating-point operations, flush denormal values to zero or preserve denormal
326 values.
327 Default: False
328 prec_sqrt : bool, optional
329 For single-precision floating-point square root, use IEEE round-to-nearest mode or use a faster approximation.
330 Default: True
331 prec_div : bool, optional
332 For single-precision floating-point division and reciprocals, use IEEE round-to-nearest mode or use a faster
333 approximation.
334 Default: True
335 fma : bool, optional
336 Enables (disables) the contraction of floating-point multiplies and adds/subtracts into floating-point
337 multiply-add operations.
338 Default: True
339 use_fast_math : bool, optional
340 Make use of fast math operations.
341 Default: False
342 extra_device_vectorization : bool, optional
343 Enables more aggressive device code vectorization in the NVVM optimizer.
344 Default: False
345 link_time_optimization : bool, optional
346 Generate intermediate code for later link-time optimization.
347 Default: False
348 gen_opt_lto : bool, optional
349 Run the optimizer passes before generating the LTO IR.
350 Default: False
351 define_macro : Union[str, tuple[str, str], list[Union[str, tuple[str, str]]]], optional
352 Predefine a macro. Can be either a string, in which case that macro will be set to 1, a 2 element tuple of
353 strings, in which case the first element is defined as the second, or a list of strings or tuples.
354 Default: None
355 undefine_macro : Union[str, list[str]], optional
356 Cancel any previous definition of a macro, or list of macros.
357 Default: None
358 include_path : Union[str, list[str]], optional
359 Add the directory or directories to the list of directories to be searched for headers.
360 Default: None
361 pre_include : Union[str, list[str]], optional
362 Preinclude one or more headers during preprocessing. Can be either a string or a list of strings.
363 Default: None
364 no_source_include : bool, optional
365 Disable the default behavior of adding the directory of each input source to the include path.
366 Default: False
367 std : str, optional
368 Set language dialect to C++03, C++11, C++14, C++17 or C++20.
369 Default: c++17
370 builtin_move_forward : bool, optional
371 Provide builtin definitions of std::move and std::forward.
372 Default: True
373 builtin_initializer_list : bool, optional
374 Provide builtin definitions of std::initializer_list class and member functions.
375 Default: True
376 disable_warnings : bool, optional
377 Inhibit all warning messages.
378 Default: False
379 restrict : bool, optional
380 Programmer assertion that all kernel pointer parameters are restrict pointers.
381 Default: False
382 device_as_default_execution_space : bool, optional
383 Treat entities with no execution space annotation as __device__ entities.
384 Default: False
385 device_int128 : bool, optional
386 Allow the __int128 type in device code.
387 Default: False
388 optimization_info : str, optional
389 Provide optimization reports for the specified kind of optimization.
390 Default: None
391 no_display_error_number : bool, optional
392 Disable the display of a diagnostic number for warning messages.
393 Default: False
394 diag_error : Union[int, list[int]], optional
395 Emit error for a specified diagnostic message number or comma-separated list of numbers.
396 Default: None
397 diag_suppress : Union[int, list[int]], optional
398 Suppress a specified diagnostic message number or comma-separated list of numbers.
399 Default: None
400 diag_warn : Union[int, list[int]], optional
401 Emit warning for a specified diagnostic message number or comma-separated list of numbers.
402 Default: None
403 brief_diagnostics : bool, optional
404 Disable or enable showing source line and column info in a diagnostic.
405 Default: False
406 time : str, optional
407 Generate a CSV table with the time taken by each compilation phase.
408 Default: None
409 split_compile : int, optional
410 Perform compiler optimizations in parallel.
411 Default: 1
412 fdevice_syntax_only : bool, optional
413 Ends device compilation after front-end syntax checking.
414 Default: False
415 minimal : bool, optional
416 Omit certain language features to reduce compile time for small programs.
417 Default: False
418 no_cache : bool, optional
419 Disable compiler caching.
420 Default: False
421 fdevice_time_trace : str, optional
422 Generate time trace JSON for profiling compilation (NVRTC only).
423 Default: None
424 device_float128 : bool, optional
425 Allow __float128 type in device code (NVRTC only).
426 Default: False
427 frandom_seed : str, optional
428 Set random seed for randomized optimizations (NVRTC only).
429 Default: None
430 ofast_compile : str, optional
431 Fast compilation mode: "0", "min", "mid", or "max" (NVRTC only).
432 Default: None
433 pch : bool, optional
434 Use default precompiled header (NVRTC only, CUDA 12.8+).
435 Default: False
436 create_pch : str, optional
437 Create precompiled header file (NVRTC only, CUDA 12.8+).
438 Default: None
439 use_pch : str, optional
440 Use specific precompiled header file (NVRTC only, CUDA 12.8+).
441 Default: None
442 pch_dir : str, optional
443 PCH directory location (NVRTC only, CUDA 12.8+).
444 Default: None
445 pch_verbose : bool, optional
446 Verbose PCH output (NVRTC only, CUDA 12.8+).
447 Default: False
448 pch_messages : bool, optional
449 Control PCH diagnostic messages (NVRTC only, CUDA 12.8+).
450 Default: False
451 instantiate_templates_in_pch : bool, optional
452 Control template instantiation in PCH (NVRTC only, CUDA 12.8+).
453 Default: False
454 extra_sources : list of 2-tuples or tuple of 2-tuples, optional
455 Additional NVVM IR modules to compile together with the main program, specified as
456 ``((name1, source1), (name2, source2), ...)``. Each name is a string identifier used
457 in diagnostic messages. Each source can be a string (textual LLVM IR) or bytes/bytearray
458 (LLVM bitcode). Only supported for the NVVM backend.
459 Default: None
460 use_libdevice : bool, optional
461 Load NVIDIA's `libdevice <https://docs.nvidia.com/cuda/libdevice-users-guide/>`_
462 math builtins library. Only supported for the NVVM backend.
463 Default: False
464 """
466 name: str | None = "default_program"
467 arch: str | None = None
468 relocatable_device_code: bool | None = None
469 extensible_whole_program: bool | None = None
470 debug: bool | None = None
471 lineinfo: bool | None = None
472 device_code_optimize: bool | None = None
473 ptxas_options: str | list[str] | tuple[str] | None = None
474 max_register_count: int | None = None
475 ftz: bool | None = None
476 prec_sqrt: bool | None = None
477 prec_div: bool | None = None
478 fma: bool | None = None
479 use_fast_math: bool | None = None
480 extra_device_vectorization: bool | None = None
481 link_time_optimization: bool | None = None
482 gen_opt_lto: bool | None = None
483 define_macro: str | tuple[str, str] | list[str | tuple[str, str]] | tuple[str | tuple[str, str], ...] | None = None
484 undefine_macro: str | list[str] | tuple[str] | None = None
485 include_path: str | list[str] | tuple[str] | None = None
486 pre_include: str | list[str] | tuple[str] | None = None
487 no_source_include: bool | None = None
488 std: str | None = None
489 builtin_move_forward: bool | None = None
490 builtin_initializer_list: bool | None = None
491 disable_warnings: bool | None = None
492 restrict: bool | None = None
493 device_as_default_execution_space: bool | None = None
494 device_int128: bool | None = None
495 optimization_info: str | None = None
496 no_display_error_number: bool | None = None
497 diag_error: int | list[int] | tuple[int] | None = None
498 diag_suppress: int | list[int] | tuple[int] | None = None
499 diag_warn: int | list[int] | tuple[int] | None = None
500 brief_diagnostics: bool | None = None
501 time: str | None = None
502 split_compile: int | None = None
503 fdevice_syntax_only: bool | None = None
504 minimal: bool | None = None
505 no_cache: bool | None = None
506 fdevice_time_trace: str | None = None
507 device_float128: bool | None = None
508 frandom_seed: str | None = None
509 ofast_compile: str | None = None
510 pch: bool | None = None
511 create_pch: str | None = None
512 use_pch: str | None = None
513 pch_dir: str | None = None
514 pch_verbose: bool | None = None
515 pch_messages: bool | None = None
516 instantiate_templates_in_pch: bool | None = None
517 extra_sources: list[tuple[str, str | bytes | bytearray]] | tuple[tuple[str, str | bytes | bytearray], ...] | None = None
518 use_libdevice: bool | None = None # For libdevice execution
519 numba_debug: bool | None = None # Custom option for Numba debugging
521 def __post_init__(self):
522 self._name = self.name.encode() 2xg4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]dNhOhHhKhRhzgP ihyg|g^da d Ehzhuhkhb whGhFhvhQhIg{gNglhphrhshShChhh,e)eOgJgKgLgPgMgQgThUhVhWhXhRg0g1g2g3gYhZh4g5g6g7g8gZg9g!g#gSg0h1h2h$gTg3hUg4h%g5h'g(g)gVg6h7h*g+g,g-g.g^g_g`gWgXg8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifi/ggihiiijikiliminioipiqiriLhMh:g;g=g?gsitiuiviwixiyiziAiBiCiDi@gEi[gYg]gFiCgAgBgDgN GgEgqhmhnhohHgthFgO xh
523 # Set arch to default if not provided
524 if self.arch is None: 2xg4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]dNhOhHhKhRhzgP ihyg|g^da d Ehzhuhkhb whGhFhvhQhIg{gNglhphrhshShChhh,e)eOgJgKgLgPgMgQgThUhVhWhXhRg0g1g2g3gYhZh4g5g6g7g8gZg9g!g#gSg0h1h2h$gTg3hUg4h%g5h'g(g)gVg6h7h*g+g,g-g.g^g_g`gWgXg8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifi/ggihiiijikiliminioipiqiriLhMh:g;g=g?gsitiuiviwixiyiziAiBiCiDi@gEi[gYg]gFiCgAgBgDgN GgEgqhmhnhohHgthFgO xh
525 self.arch = f"sm_{Device().arch}" 2xg^eteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bT U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c`e{e|e}e~eafbfcfdfefffgfhfifV jfkflfmfnfofpfqfrfW sftfufvfwfxfyfzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(f)f*f+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f|f}f~fagbgcgdg*eyhjhc egfggghgigjgkglgmgngogpgAhqgrgBhf [dDhe ]dzgP ihyg|g^da d Ehzhuhkhb whGhFhvhChhh,e)e
526 if self.extra_sources is not None: 2xg4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]dNhOhHhKhRhzgP ihyg|g^da d Ehzhuhkhb whGhFhvhQhIg{gNglhphrhshShChhh,e)eOgJgKgLgPgMgQgThUhVhWhXhRg0g1g2g3gYhZh4g5g6g7g8gZg9g!g#gSg0h1h2h$gTg3hUg4h%g5h'g(g)gVg6h7h*g+g,g-g.g^g_g`gWgXg8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifi/ggihiiijikiliminioipiqiriLhMh:g;g=g?gsitiuiviwixiyiziAiBiCiDi@gEi[gYg]gFiCgAgBgDgN GgEgqhmhnhohHgthFgO xh
527 if not is_sequence(self.extra_sources): 2DhNhOhHhKhRha d ChLhMh
528 raise TypeError( 2Rh
529 "extra_sources must be a sequence of 2-tuples: ((name1, source1), (name2, source2), ...)"
530 )
531 for i, module in enumerate(self.extra_sources): 2DhNhOhHhKha d ChLhMh
532 if not isinstance(module, tuple) or len(module) != 2: 2DhNhOhHhKha d ChLhMh
533 raise TypeError( 2Oh
534 f"Each extra module must be a 2-tuple (name, source)" 2Oh
535 f", got {type(module).__name__} at index {i}" 2Oh
536 )
538 module_name, module_source = module 2DhNhHhKha d ChLhMh
540 if not isinstance(module_name, str): 2DhNhHhKha d ChLhMh
541 raise TypeError(f"Module name at index {i} must be a string, got {type(module_name).__name__}") 2Nh
543 if not isinstance(module_source, (str, bytes, bytearray)): 2DhHhKha d ChLhMh
544 raise TypeError( 2Hh
545 f"Module source at index {i} must be str (textual LLVM IR), bytes (textual LLVM IR or bitcode), " 2Hh
546 f"or bytearray, got {type(module_source).__name__}" 2Hh
547 )
549 if len(module_source) == 0: 2DhKha d ChLhMh
550 raise ValueError(f"Module source for '{module_name}' (index {i}) cannot be empty") 2Kh
552 def _prepare_nvrtc_options(self) -> list[bytes]:
553 return _prepare_nvrtc_options_impl(self) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
555 def _prepare_nvvm_options(self, as_bytes: bool = True) -> list[bytes] | list[str]:
556 return _prepare_nvvm_options_impl(self, as_bytes) 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
558 def as_bytes(self, backend: CompilerBackendType | str, target_type: ObjectCodeFormatType | str | None = None) -> list[bytes]:
559 """Convert program options to bytes format for the specified backend.
561 This method transforms the program options into a format suitable for the
562 specified compiler backend. Different backends may use different option names
563 and formats even for the same conceptual options.
565 Parameters
566 ----------
567 backend : CompilerBackendType | str
568 The compiler backend to prepare options for. Must be either "nvrtc" or "nvvm".
569 target_type : ObjectCodeFormatType | str, optional
570 The compilation target type (e.g., "ptx", "cubin", "ltoir"). Some backends
571 require additional options based on the target type.
573 Returns
574 -------
575 list[bytes]
576 List of option strings encoded as bytes.
578 Raises
579 ------
580 ValueError
581 If an unknown backend is specified.
582 CUDAError
583 If an option incompatible with the specified backend is set.
585 Examples
586 --------
587 >>> options = ProgramOptions(arch="sm_80", debug=True)
588 >>> nvrtc_options = options.as_bytes("nvrtc")
589 """
590 backend = str(backend).lower() 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgiejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP yg^d.esg/etg:eug|dae;evg}dbe=ewga d b QhIg{gNglhphrhsh,e)eOgJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#gSg$gTgUg%g'g(g)gVg*g+g,g-g.g^g_g`gWgXg/g:g;g=g?g@g[gYg]gCgAgBgDgN GgEgHgFgO
591 if backend == "nvrtc": 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgiejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP yg^d.esg/etg:eug|dae;evg}dbe=ewga d b QhIg{gNglhphrhsh,e)eOgJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#gSg$gTgUg%g'g(g)gVg*g+g,g-g.g^g_g`gWgXg/g:g;g=g?g@g[gYg]gCgAgBgDgN GgEgHgFgO
592 return self._prepare_nvrtc_options() 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
593 elif backend == "nvvm": 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d Qh{gNgOgSgTgUgVg^g_g`gWgXgYg
594 options = self._prepare_nvvm_options(as_bytes=True) 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
595 if target_type == "ltoir" and b"-gen-lto" not in options: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d NgOgSgTgUgVg^g_g`gWgXgYg
596 options.append(b"-gen-lto") 2ieje.e/e:e|d;e}d=ea
597 return options 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d NgOgSgTgUgVg^g_g`gWgXgYg
598 else:
599 raise ValueError(f"Unknown backend '{backend}'. Must be one of: 'nvrtc', 'nvvm'") 2Qh
601 def __repr__(self):
602 return f"ProgramOptions(name={self.name!r}, arch={self.arch!r})" 2Sh
604 def _prepare_extra_sources_bytes(self) -> list[tuple[bytes, bytes]] | None:
605 """Convert extra_sources to bytes format for NVVM."""
606 if self.extra_sources is None: 1ad
607 return None
609 result = [] 1ad
610 for module_name, module_source in self.extra_sources: 1ad
611 name_bytes = module_name.encode("utf-8") 1ad
612 if isinstance(module_source, str): 1ad
613 source_bytes = module_source.encode("utf-8") 1ad
614 elif isinstance(module_source, bytearray):
615 source_bytes = bytes(module_source)
616 else:
617 source_bytes = module_source
618 result.append((name_bytes, source_bytes)) 1ad
619 return result 1ad
622# =============================================================================
623# Private Classes and Helper Functions
624# =============================================================================
627def _program_compile_uncached(program, target_type, name_expressions, logs):
628 """Run ``Program_compile`` without the cache wrapper.
630 Module-level Python function so tests can monkeypatch it from
631 ``cuda.core._program`` to avoid invoking NVRTC when exercising the cache
632 wrapper in :meth:`Program.compile`. ``Program`` itself is a ``cdef class``
633 and its methods cannot be reassigned from Python, so the seam must live
634 outside the class.
635 """
636 return Program_compile(program, target_type, name_expressions, logs) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgiejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP yg|g^d.esg/etg:eug|dae;evg}dbe=ewga d khb }g~g,eahbhchdhehfhgh)eN O
639# Module-level state for NVVM lazy loading
640_nvvm_module = None
641_nvvm_import_attempted = False
644def _get_nvvm_module():
645 """Get the NVVM module, importing it lazily with availability checks."""
646 global _nvvm_module, _nvvm_import_attempted
648 if _nvvm_import_attempted: 2xgjhIhJhPhiejeihyg|gGi^d.esg/etg:eug|dae;evg}dbeHi=ewga d EhOgSgTgUgVgWgXgYg
649 if _nvvm_module is None: 2jhiejeihyg|gGi^d.esg/etg:eug|dae;evg}dbeHi=ewga d EhOgSgTgUgVgWgXgYg
650 raise RuntimeError("NVVM module is not available (previous import attempt failed)")
651 return _nvvm_module 2jhiejeihyg|gGi^d.esg/etg:eug|dae;evg}dbeHi=ewga d EhOgSgTgUgVgWgXgYg
653 _nvvm_import_attempted = True 2xgIhJhPh
655 try: 2xgIhJhPh
656 version = binding_version() 2xgIhJhPh
657 if version < (12, 9, 0): 2xgIhJhPh
658 raise RuntimeError(
659 f"NVVM bindings require cuda-bindings >= 12.9.0, but found {'.'.join(map(str, version))}. "
660 "Please update cuda-bindings to use NVVM features."
661 )
663 nvvm = _optional_cuda_import( 2xgIhJhPh
664 "cuda.bindings.nvvm",
665 probe_function=lambda module: module.version(), # probe triggers libnvvm load 2xgIhJhPh
666 )
667 if nvvm is None: 2xgIhJh
668 raise RuntimeError( 2IhJh
669 "NVVM support is unavailable: cuda.bindings.nvvm is missing or libnvvm cannot be loaded."
670 )
672 _nvvm_module = nvvm
673 return _nvvm_module
675 except RuntimeError: 2IhJhPh
676 _nvvm_module = None 2IhJh
677 raise 2IhJh
679def _find_libdevice_path():
680 """Find libdevice*.bc for NVVM compilation using cuda.pathfinder."""
681 from cuda.pathfinder import find_bitcode_lib
682 return find_bitcode_lib("device")
687cdef inline bint _process_define_macro_inner(list options, object macro) except? -1:
688 """Process a single define macro, returning True if successful."""
689 if isinstance(macro, str): 2=dS i j lhphrhsh
690 options.append(f"--define-macro={macro}") 2=d
691 return True 2=d
692 if isinstance(macro, tuple): 2S i j lhphrhsh
693 if len(macro) != 2 or any(not isinstance(val, str) for val in macro): 2S i j lhrhsh
694 raise RuntimeError(f"Expected define_macro tuple[str, str], got {macro}") 2lhrhsh
695 options.append(f"--define-macro={macro[0]}={macro[1]}") 1Sij
696 return True 1Sij
697 return False 2i j lhph
700cdef inline void _process_define_macro(list options, object macro) except *:
701 """Process define_macro option which can be str, tuple, or list thereof."""
702 union_type = "Union[str, tuple[str, str]]" 2=dS i j lhphrhsh
703 if _process_define_macro_inner(options, macro): 2=dS i j lhphrhsh
704 return 2=dS
705 if is_nested_sequence(macro): 2i j lhph
706 for seq_macro in macro: 2i j lh
707 if not _process_define_macro_inner(options, seq_macro): 2i j lh
708 raise RuntimeError(f"Expected define_macro {union_type}, got {seq_macro}")
709 return 1ij
710 raise RuntimeError(f"Expected define_macro {union_type}, list[{union_type}], got {macro}") 2ph
713cpdef bint _can_load_generated_ptx() except? -1:
714 """Check if the driver can load PTX generated by the current NVRTC version."""
715 drv = driver_version() 2teuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0eg h IiQ JiR *ec f [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,eAgBg
716 nvrtc_major, nvrtc_minor = handle_return(nvrtc.nvrtcVersion()) 2teuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0eg h IiQ JiR *ec f [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,eAgBg
717 return (nvrtc_major, nvrtc_minor, 0) <= drv 2teuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0eg h IiQ JiR *ec f [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,eAgBg
720cdef inline object _translate_program_options(object options):
721 """Translate ProgramOptions to LinkerOptions for PTX compilation."""
722 return LinkerOptions( 2c b hh}g~gahbhchdhehfhgh
723 name=options.name, 2c b hh}g~gahbhchdhehfhgh
724 arch=options.arch, 2c b hh}g~gahbhchdhehfhgh
725 max_register_count=options.max_register_count, 2c b hh}g~gahbhchdhehfhgh
726 time=options.time, 2c b hh}g~gahbhchdhehfhgh
727 link_time_optimization=options.link_time_optimization, 2c b hh}g~gahbhchdhehfhgh
728 debug=options.debug, 2c b hh}g~gahbhchdhehfhgh
729 lineinfo=options.lineinfo, 2c b hh}g~gahbhchdhehfhgh
730 ftz=options.ftz, 2c b hh}g~gahbhchdhehfhgh
731 prec_div=options.prec_div, 2c b hh}g~gahbhchdhehfhgh
732 prec_sqrt=options.prec_sqrt, 2c b hh}g~gahbhchdhehfhgh
733 fma=options.fma, 2c b hh}g~gahbhchdhehfhgh
734 split_compile=options.split_compile, 2c b hh}g~gahbhchdhehfhgh
735 ptxas_options=options.ptxas_options, 2c b hh}g~gahbhchdhehfhgh
736 no_cache=options.no_cache, 2c b hh}g~gahbhchdhehfhgh
737 )
740cdef inline int Program_init(Program self, object code, str code_type, object options) except -1:
741 """Initialize a Program instance."""
742 cdef cynvrtc.nvrtcProgram nvrtc_prog
743 cdef cynvvm.nvvmProgram nvvm_prog
744 cdef bytes code_bytes
745 cdef const char* code_ptr
746 cdef const char* name_ptr
747 cdef size_t code_len
748 cdef bytes module_bytes
749 cdef const char* module_ptr
750 cdef size_t module_len
752 self._options = options = check_or_create_options(ProgramOptions, options, "Program options") 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Ehzhuhkhb whGhFhvhChhh}g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
753 code_type = code_type.lower() 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Ehzhuhkhb whGhFhvhChhh}g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
754 self._code_type = code_type 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Ehzhuhkhb whGhFhvhChhh}g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
755 self._compile_lock = threading.Lock() 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Ehzhuhkhb whGhFhvhChhh}g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
756 self._use_libdevice = False 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Ehzhuhkhb whGhFhvhChhh}g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
757 self._libdevice_added = False 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Ehzhuhkhb whGhFhvhChhh}g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
759 self._pch_status = None 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Ehzhuhkhb whGhFhvhChhh}g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
761 if code_type == "c++": 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [dDhe ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Ehzhuhkhb whGhFhvhChhh}g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
762 assert_type(code, str) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhf [dDhe ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP zhuhkhb whGhvh,e)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
763 if options.extra_sources is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhf [dDhe ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP zhuhkhb whvh,e)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
764 raise ValueError("extra_sources is not supported by the NVRTC backend (C++ code_type)") 2Dh
766 # TODO: support pre-loaded headers & include names
767 code_bytes = code.encode() 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP zhuhkhb whvh,e)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
768 code_ptr = <const char*>code_bytes 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP zhuhkhb whvh,e)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
769 name_ptr = <const char*>options._name 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP zhuhkhb whvh,e)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
771 with nogil: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP zhuhkhb whvh,e)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
772 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcCreateProgram( 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP zhuhkhb whvh,e)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
773 &nvrtc_prog, code_ptr, name_ptr, 0, NULL, NULL))
774 self._h_nvrtc = create_nvrtc_program_handle(nvrtc_prog) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP zhuhkhb whvh,e)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
775 self._code = code_bytes 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP zhuhkhb whvh,e)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
776 self._backend = str(CompilerBackendType.NVRTC) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP zhuhkhb whvh,e)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
777 self._linker = None 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP zhuhkhb whvh,e)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
779 elif code_type == "ptx": 2jhc iejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Ehb FhChhh}g~gahbhchdhehfhgh
780 assert_type(code, str) 2c b Chhh}g~gahbhchdhehfhgh
781 if options.extra_sources is not None: 2c b Chhh}g~gahbhchdhehfhgh
782 raise ValueError("extra_sources is not supported by the PTX backend.") 2Ch
783 code_bytes = code.encode() 2c b hh}g~gahbhchdhehfhgh
784 self._code = code_bytes 2c b hh}g~gahbhchdhehfhgh
785 self._linker = Linker( 2c b hh}g~gahbhchdhehfhgh
786 ObjectCode._init(code_bytes, code_type), options=_translate_program_options(options) 2c b hh}g~gahbhchdhehfhgh
787 )
788 self._backend = str(Linker.which_backend()) 2c b hh}g~gahbhchdhehfhgh
790 elif code_type == "nvvm": 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d EhFh
791 _get_nvvm_module() # Validate NVVM availability 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Eh
792 if isinstance(code, str): 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d Eh
793 code = code.encode("utf-8") 2jhyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d
794 elif not isinstance(code, (bytes, bytearray)): 2iejeihEh
795 raise TypeError("NVVM IR code must be provided as str, bytes, or bytearray") 2Eh
796 self._code = bytes(code) # Coerce bytearray -> bytes so retention type is stable 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d
798 # Use self._code (strictly bytes) for the C pointer so a bytearray
799 # input doesn't trip the `<bytes>code` cast at runtime.
800 code_ptr = <const char*>self._code 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d
801 name_ptr = <const char*>options._name 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d
802 code_len = len(self._code) 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d
804 with nogil: 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d
805 HANDLE_RETURN_NVVM(NULL, cynvvm.nvvmCreateProgram(&nvvm_prog)) 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d
806 self._h_nvvm = create_nvvm_program_handle(nvvm_prog) # RAII from here 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d
807 with nogil: 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d
808 HANDLE_RETURN_NVVM(nvvm_prog, cynvvm.nvvmAddModuleToProgram(nvvm_prog, code_ptr, code_len, name_ptr)) 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d
810 # Add extra modules if provided
811 if options.extra_sources is not None: 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d
812 extra_sources_bytes = options._prepare_extra_sources_bytes() 1ad
813 for module_name_bytes, module_bytes in extra_sources_bytes: 1ad
814 module_ptr = <const char*>module_bytes 1ad
815 module_len = len(module_bytes) 1ad
816 module_name_ptr = <const char*>module_name_bytes 1ad
817 with nogil: 1ad
818 HANDLE_RETURN_NVVM(nvvm_prog, cynvvm.nvvmAddModuleToProgram( 1ad
819 nvvm_prog, module_ptr, module_len, module_name_ptr))
821 # Store use_libdevice flag
822 if options.use_libdevice: 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d
823 self._use_libdevice = True
825 self._backend = str(CompilerBackendType.NVVM) 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d
826 self._linker = None 2jhiejeihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d
828 else:
829 supported_code_types = tuple(x.value for x in SourceCodeType) 2Fh
830 if options.use_libdevice: 2Fh
831 raise ValueError("use_libdevice is only supported by the NVVM backend")
832 raise RuntimeError(f"Unsupported {code_type=} ({supported_code_types=})") 2Fh
834 return 0 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*eyhjhc #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpgAh:dqg;drgBhiejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP ihyg|g^d.esg/etg:eug|dae;evg}dbe=ewga d zhuhkhb whvhhh}g~g,eahbhchdhehfhgh)eCgAgBgDgN GgEgqhmhnhohHgthFgO xh
837cdef object _nvrtc_compile_and_extract(
838 cynvrtc.nvrtcProgram prog, str target_type, object name_expressions,
839 object logs, list options_list, str name,
840):
841 """Run nvrtcCompileProgram on *prog* and extract the output.
843 This is the inner compile+extract loop, factored out so the PCH
844 auto-retry path can call it on a fresh program handle.
845 """
846 cdef size_t output_size = 0 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O
847 cdef size_t logsize = 0 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O
848 cdef vector[const char*] options_vec
849 cdef char* data_ptr = NULL 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O
850 cdef bytes name_bytes
851 cdef const char* name_ptr = NULL 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O
852 cdef const char* lowered_name = NULL 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O
853 cdef dict symbol_mapping = {} 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O
855 # Add name expressions before compilation
856 if name_expressions: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O
857 for n in name_expressions: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{cV W |c}c~cadbdcdddedfdgdhdidjdkdldX Y mdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdZ 0 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d1 2 5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d
858 name_bytes = n.encode() if isinstance(n, str) else n 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{cV W |c}c~cadbdcdddedfdgdhdidjdkdldX Y mdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdZ 0 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d1 2 5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d
859 name_ptr = <const char*>name_bytes 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{cV W |c}c~cadbdcdddedfdgdhdidjdkdldX Y mdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdZ 0 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d1 2 5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d
860 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcAddNameExpression(prog, name_ptr)) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{cV W |c}c~cadbdcdddedfdgdhdidjdkdldX Y mdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdZ 0 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d1 2 5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d
862 # Build options array
863 options_vec.resize(len(options_list)) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O
864 for i in range(len(options_list)): 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O
865 options_vec[i] = <const char*>(<bytes>options_list[i]) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O
867 # Compile
868 with nogil: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O
869 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcCompileProgram(prog, <int>options_vec.size(), options_vec.data())) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O
871 # Get compiled output based on target type
872 if target_type == "ptx": 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseP b ,e)eN O
873 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPTXSize(prog, &output_size)) 2teuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0eg h Q R *ec f [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseP b ,e
874 data = bytearray(output_size) 2teuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0eg h Q R *ec f [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseP b ,e
875 data_ptr = <char*>(<bytearray>data) 2teuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0eg h Q R *ec f [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseP b ,e
876 with nogil: 2teuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0eg h Q R *ec f [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseP b ,e
877 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPTX(prog, data_ptr)) 2teuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0eg h Q R *ec f [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseP b ,e
878 elif target_type == "cubin": 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b-e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg#deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drg)eN O
879 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetCUBINSize(prog, &output_size)) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcg#deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drg)eN O
880 data = bytearray(output_size) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcg#deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drg)eN O
881 data_ptr = <char*>(<bytearray>data) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcg#deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drg)eN O
882 with nogil: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcg#deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drg)eN O
883 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetCUBIN(prog, data_ptr)) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcg#deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drg)eN O
884 else: # ltoir
885 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLTOIRSize(prog, &output_size)) 2-eT U dg
886 data = bytearray(output_size) 2-eT U dg
887 data_ptr = <char*>(<bytearray>data) 2-eT U dg
888 with nogil: 2-eT U dg
889 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLTOIR(prog, data_ptr)) 2-eT U dg
891 # Get lowered names after compilation
892 if name_expressions: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseP b ,e)eN O
893 for n in name_expressions: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{cV W |c}c~cadbdcdddedfdgdhdidjdkdldX Y mdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdZ 0 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d1 2 5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d
894 name_bytes = n.encode() if isinstance(n, str) else n 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{cV W |c}c~cadbdcdddedfdgdhdidjdkdldX Y mdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdZ 0 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d1 2 5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d
895 name_ptr = <const char*>name_bytes 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{cV W |c}c~cadbdcdddedfdgdhdidjdkdldX Y mdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdZ 0 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d1 2 5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d
896 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLoweredName(prog, name_ptr, &lowered_name)) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{cV W |c}c~cadbdcdddedfdgdhdidjdkdldX Y mdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdZ 0 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d1 2 5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d
897 symbol_mapping[n] = lowered_name if lowered_name != NULL else None 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{cV W |c}c~cadbdcdddedfdgdhdidjdkdldX Y mdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdZ 0 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d1 2 5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d
899 # Get compilation log if requested
900 if logs is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseP b ,e)eN O
901 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetProgramLogSize(prog, &logsize)) 1P
902 if logsize > 1: 1P
903 log = bytearray(logsize) 1P
904 data_ptr = <char*>(<bytearray>log) 1P
905 with nogil: 1P
906 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetProgramLog(prog, data_ptr)) 1P
907 logs.write(log.decode("utf-8", errors="backslashreplace")) 1P
909 return ObjectCode._init(bytes(data), target_type, symbol_mapping=symbol_mapping, name=name) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseP b ,e)eN O
912cdef int _nvrtc_pch_apis_cached = -1 # -1 = unchecked
914cdef bint _has_nvrtc_pch_apis():
915 global _nvrtc_pch_apis_cached
916 if _nvrtc_pch_apis_cached < 0: 1feM
917 _nvrtc_pch_apis_cached = hasattr(nvrtc, "nvrtcGetPCHCreateStatus") 1M
918 return _nvrtc_pch_apis_cached 1feM
921cdef object _read_pch_status(cynvrtc.nvrtcProgram prog):
922 """Query nvrtcGetPCHCreateStatus and translate to a high-level string."""
923 cdef cynvrtc.nvrtcResult err
924 with nogil: 1feM
925 err = cynvrtc.nvrtcGetPCHCreateStatus(prog) 1feM
926 if err == cynvrtc.nvrtcResult.NVRTC_SUCCESS: 1feM
927 return PCHStatusType.CREATED 1feM
928 if err == cynvrtc.nvrtcResult.NVRTC_ERROR_PCH_CREATE_HEAP_EXHAUSTED:
929 return None # sentinel: caller should auto-retry
930 if err == cynvrtc.nvrtcResult.NVRTC_ERROR_NO_PCH_CREATE_ATTEMPTED:
931 return PCHStatusType.NOT_ATTEMPTED
932 return PCHStatusType.FAILED
935cdef object Program_compile_nvrtc(Program self, str target_type, object name_expressions, object logs):
936 """Compile using NVRTC backend and return ObjectCode."""
937 cdef cynvrtc.nvrtcProgram prog = as_cu(self._h_nvrtc) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O
938 cdef list options_list = self._options.as_bytes("nvrtc", target_type) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O
940 result = _nvrtc_compile_and_extract( 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O
941 prog, target_type, name_expressions, logs, options_list, self._options.name, 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O
942 )
944 cdef bint pch_creation_possible = self._options.create_pch or self._options.pch 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseP b ,e)eN O
945 if not pch_creation_possible or not _has_nvrtc_pch_apis(): 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(eseP b ,e)eN O
946 self._pch_status = None 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drg[de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%e'e(eseP b ,e)eN O
947 return result 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drg[de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%e'e(eseP b ,e)eN O
949 try: 1feM
950 status = _read_pch_status(prog) 1feM
951 except RuntimeError as e:
952 raise RuntimeError(
953 "PCH was requested but the runtime libnvrtc does not support "
954 "PCH APIs. Update to CUDA toolkit 12.8 or newer."
955 ) from e
957 if status is not None: 1feM
958 self._pch_status = str(status) 1feM
959 return result 1feM
961 # Heap exhausted — auto-resize and retry with a fresh program
962 cdef size_t required = 0
963 with nogil:
964 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPCHHeapSizeRequired(prog, &required))
965 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcSetPCHHeapSize(required))
967 cdef cynvrtc.nvrtcProgram retry_prog
968 cdef const char* code_ptr = <const char*>self._code
969 cdef const char* name_ptr = <const char*>self._options._name
970 with nogil:
971 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcCreateProgram(
972 &retry_prog, code_ptr, name_ptr, 0, NULL, NULL))
973 self._h_nvrtc = create_nvrtc_program_handle(retry_prog)
975 result = _nvrtc_compile_and_extract(
976 retry_prog, target_type, name_expressions, logs, options_list, self._options.name,
977 )
979 status = _read_pch_status(retry_prog)
980 self._pch_status = status if status is not None else str(PCHStatusType.FAILED)
981 return result
984cdef object Program_compile_nvvm(Program self, str target_type, object logs):
985 """Compile using NVVM backend and return ObjectCode."""
986 cdef cynvvm.nvvmProgram prog = as_cu(self._h_nvvm) 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d
987 cdef size_t output_size = 0 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d
988 cdef size_t logsize = 0 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d
989 cdef vector[const char*] options_vec
990 cdef char* data_ptr = NULL 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d
991 cdef bytes libdevice_bytes
992 cdef const char* libdevice_ptr
993 cdef size_t libdevice_len
994 # Build options array
995 options_list = self._options.as_bytes("nvvm", target_type) 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d
996 options_vec.resize(len(options_list)) 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d
997 for i in range(len(options_list)): 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d
998 options_vec[i] = <const char*>(<bytes>options_list[i]) 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d
1000 # Serialize NVVM program mutation/use per Program instance.
1001 with self._compile_lock: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d
1002 with nogil: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d
1003 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmVerifyProgram(prog, <int>options_vec.size(), options_vec.data())) 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d
1005 # Load libdevice if requested - following numba-cuda.
1006 if self._use_libdevice and not self._libdevice_added: 2ieje^d.esg/etg:eug|dae;evg}dbe=ewga d
1007 libdevice_path = _find_libdevice_path()
1008 with open(libdevice_path, "rb") as f:
1009 libdevice_bytes = f.read()
1010 libdevice_ptr = <const char*>libdevice_bytes
1011 libdevice_len = len(libdevice_bytes)
1012 with nogil:
1013 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmLazyAddModuleToProgram(
1014 prog, libdevice_ptr, libdevice_len, NULL))
1015 self._libdevice_added = True
1017 with nogil: 2ieje^d.esg/etg:eug|dae;evg}dbe=ewga d
1018 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmCompileProgram(prog, <int>options_vec.size(), options_vec.data())) 2ieje^d.esg/etg:eug|dae;evg}dbe=ewga d
1020 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetCompiledResultSize(prog, &output_size)) 2ieje^d.esg/etg:eug|dae;evg}dbe=ewga d
1021 data = bytearray(output_size) 2ieje^d.esg/etg:eug|dae;evg}dbe=ewga d
1022 data_ptr = <char*>(<bytearray>data) 2ieje^d.esg/etg:eug|dae;evg}dbe=ewga d
1023 with nogil: 2ieje^d.esg/etg:eug|dae;evg}dbe=ewga d
1024 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetCompiledResult(prog, data_ptr)) 2ieje^d.esg/etg:eug|dae;evg}dbe=ewga d
1026 # Get compilation log if requested
1027 if logs is not None: 2ieje^d.esg/etg:eug|dae;evg}dbe=ewga d
1028 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetProgramLogSize(prog, &logsize))
1029 if logsize > 1:
1030 log = bytearray(logsize)
1031 data_ptr = <char*>(<bytearray>log)
1032 with nogil:
1033 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetProgramLog(prog, data_ptr))
1034 logs.write(log.decode("utf-8", errors="backslashreplace"))
1036 return ObjectCode._init(bytes(data), target_type, name=self._options.name) 2ieje^d.esg/etg:eug|dae;evg}dbe=ewga d
1038# Supported target types per backend
1039cdef dict SUPPORTED_TARGETS = {
1040 CompilerBackendType.NVRTC: (ObjectCodeFormatType.PTX, ObjectCodeFormatType.CUBIN, ObjectCodeFormatType.LTOIR),
1041 CompilerBackendType.NVVM: (ObjectCodeFormatType.PTX, ObjectCodeFormatType.LTOIR),
1042 CompilerBackendType.NVJITLINK: (ObjectCodeFormatType.CUBIN, ObjectCodeFormatType.PTX),
1043 CompilerBackendType.DRIVER: (ObjectCodeFormatType.CUBIN, ObjectCodeFormatType.PTX),
1044}
1047cdef object Program_compile(Program self, str target_type, object name_expressions, object logs):
1048 """Compile the program to the specified target type."""
1049 # Validate target_type for this backend
1050 supported = SUPPORTED_TARGETS.get(self._backend) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgiejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP yg|g^d.esg/etg:eug|dae;evg}dbe=ewga d khb }g~g,eahbhchdhehfhgh)eN O
1051 if supported is None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgiejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP yg|g^d.esg/etg:eug|dae;evg}dbe=ewga d khb }g~g,eahbhchdhehfhgh)eN O
1052 raise ValueError(f'Unknown backend="{self._backend}"')
1053 if target_type not in supported: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgiejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP yg|g^d.esg/etg:eug|dae;evg}dbe=ewga d khb }g~g,eahbhchdhehfhgh)eN O
1054 raise ValueError( 2|gkh
1055 f'Unsupported target_type="{target_type}" for {self._backend} ' 2|gkh
1056 f'(supported: {", ".join(repr(t) for t in supported)})' 2|gkh
1057 )
1059 if self._backend == "NVRTC": 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgiejef [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP yg^d.esg/etg:eug|dae;evg}dbe=ewga d b }g~g,eahbhchdhehfhgh)eN O
1060 if target_type == "ptx" and not _can_load_generated_ptx(): 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O
1061 warn(
1062 "The CUDA driver version is older than the backend version. "
1063 "The generated ptx will not be loadable by the current driver.",
1064 stacklevel=2,
1065 category=RuntimeWarning,
1066 )
1067 return Program_compile_nvrtc(self, target_type, name_expressions, logs) 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b ,e)eN O
1069 elif self._backend == "NVVM": 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d b }g~gahbhchdhehfhgh
1070 return Program_compile_nvvm(self, target_type, logs) 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d
1072 else:
1073 return self._linker.link(target_type) 2b }g~gahbhchdhehfhgh
1076cdef inline list _prepare_nvrtc_options_impl(object opts):
1077 """Build NVRTC-specific compiler options."""
1078 options = [f"-arch={opts.arch}"] 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1079 if opts.relocatable_device_code is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1080 options.append(f"--relocatable-device-code={_handle_boolean_option(opts.relocatable_device_code)}") 2teuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0eme
1081 if opts.extensible_whole_program is not None and opts.extensible_whole_program: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1082 options.append("--extensible-whole-program") 26e
1083 if opts.debug is not None and opts.debug: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1084 options.append("--device-debug") 2keleIg
1085 if opts.lineinfo is not None and opts.lineinfo: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1086 options.append("--generate-line-info") 2Ig
1087 if opts.device_code_optimize is not None and opts.device_code_optimize: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1088 options.append("--dopt=on") 2ke
1089 if opts.ptxas_options is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1090 opt_name = "--ptxas-options" 2?d@d
1091 if isinstance(opts.ptxas_options, str): 2?d@d
1092 options.append(f"{opt_name}={opts.ptxas_options}")
1093 elif is_sequence(opts.ptxas_options): 2?d@d
1094 for opt_value in opts.ptxas_options: 2?d@d
1095 options.append(f"{opt_name}={opt_value}") 2?d@d
1096 if opts.max_register_count is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1097 options.append(f"--maxrregcount={opts.max_register_count}") 2me
1098 if opts.ftz is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1099 options.append(f"--ftz={_handle_boolean_option(opts.ftz)}") 2~dIg
1100 if opts.prec_sqrt is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1101 options.append(f"--prec-sqrt={_handle_boolean_option(opts.prec_sqrt)}") 2~d
1102 if opts.prec_div is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1103 options.append(f"--prec-div={_handle_boolean_option(opts.prec_div)}") 2~d
1104 if opts.fma is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1105 options.append(f"--fmad={_handle_boolean_option(opts.fma)}") 2ne
1106 if opts.use_fast_math is not None and opts.use_fast_math: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1107 options.append("--use_fast_math") 2neZg
1108 if opts.extra_device_vectorization is not None and opts.extra_device_vectorization: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1109 options.append("--extra-device-vectorization") 21e
1110 if opts.link_time_optimization is not None and opts.link_time_optimization: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1111 options.append("--dlink-time-opt") 2-eT U 2e
1112 if opts.gen_opt_lto is not None and opts.gen_opt_lto: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1113 options.append("--gen-opt-lto") 28e
1114 if opts.define_macro is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Iglhphrhsh,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1115 _process_define_macro(options, opts.define_macro) 2=dS i j lhphrhsh
1116 if opts.undefine_macro is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1117 if isinstance(opts.undefine_macro, str): 2_d`d
1118 options.append(f"--undefine-macro={opts.undefine_macro}") 2`d
1119 elif is_sequence(opts.undefine_macro): 2_d
1120 for macro in opts.undefine_macro: 2_d
1121 options.append(f"--undefine-macro={macro}") 2_d
1122 if opts.include_path is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1123 if isinstance(opts.include_path, str): 2cedeeefegehek l m n o p q r s t u v w x y z A B C D E F G H I J K L `dJgKgLgPgRg
1124 options.append(f"--include-path={opts.include_path}") 2`dRg
1125 elif is_sequence(opts.include_path): 2cedeeefegehek l m n o p q r s t u v w x y z A B C D E F G H I J K L JgKgLgPg
1126 for path in opts.include_path: 2cedeeefegehek l m n o p q r s t u v w x y z A B C D E F G H I J K L JgKgLg
1127 options.append(f"--include-path={path}") 2cedeeefegehek l m n o p q r s t u v w x y z A B C D E F G H I J K L
1128 if opts.pre_include is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1129 if isinstance(opts.pre_include, str): 2MgQg
1130 options.append(f"--pre-include={opts.pre_include}")
1131 elif is_sequence(opts.pre_include): 2MgQg
1132 for header in opts.pre_include: 2Mg
1133 options.append(f"--pre-include={header}")
1134 if opts.no_source_include is not None and opts.no_source_include: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1135 options.append("--no-source-include") 2!e
1136 if opts.std is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1137 options.append(f"--std={opts.std}") 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6b6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{cV W |c}c~cadbdcdddedfdgdhdidjdkdldX Y mdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdZ 0 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d1 2 5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d?d@d
1138 if opts.builtin_move_forward is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1139 options.append(f"--builtin-move-forward={_handle_boolean_option(opts.builtin_move_forward)}") 25e
1140 if opts.builtin_initializer_list is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1141 options.append(f"--builtin-initializer-list={_handle_boolean_option(opts.builtin_initializer_list)}") 2oe
1142 if opts.disable_warnings is not None and opts.disable_warnings: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1143 options.append("--disable-warnings") 2oe
1144 if opts.restrict is not None and opts.restrict: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1145 options.append("--restrict") 2pe
1146 if opts.device_as_default_execution_space is not None and opts.device_as_default_execution_space: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1147 options.append("--device-as-default-execution-space") 2pe
1148 if opts.device_int128 is not None and opts.device_int128: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1149 options.append("--device-int128") 2qe
1150 if opts.device_float128 is not None and opts.device_float128: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1151 options.append("--device-float128")
1152 if opts.optimization_info is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1153 options.append(f"--optimization-info={opts.optimization_info}") 2qe
1154 if opts.no_display_error_number is not None and opts.no_display_error_number: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1155 options.append("--no-display-error-number") 23e
1156 if opts.diag_error is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1157 if isinstance(opts.diag_error, int): 2{d3
1158 options.append(f"--diag-error={opts.diag_error}") 2{d
1159 elif is_sequence(opts.diag_error): 13
1160 for error in opts.diag_error: 13
1161 options.append(f"--diag-error={error}") 13
1162 if opts.diag_suppress is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1163 if isinstance(opts.diag_suppress, int): 2{d3
1164 options.append(f"--diag-suppress={opts.diag_suppress}") 2{d
1165 elif is_sequence(opts.diag_suppress): 13
1166 for suppress in opts.diag_suppress: 13
1167 options.append(f"--diag-suppress={suppress}") 13
1168 if opts.diag_warn is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1169 if isinstance(opts.diag_warn, int): 2re
1170 options.append(f"--diag-warn={opts.diag_warn}") 2re
1171 elif is_sequence(opts.diag_warn):
1172 for w in opts.diag_warn:
1173 options.append(f"--diag-warn={w}")
1174 if opts.brief_diagnostics is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1175 options.append(f"--brief-diagnostics={_handle_boolean_option(opts.brief_diagnostics)}") 24e
1176 if opts.time is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1177 options.append(f"--time={opts.time}")
1178 if opts.split_compile is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1179 options.append(f"--split-compile={opts.split_compile}")
1180 if opts.fdevice_syntax_only is not None and opts.fdevice_syntax_only: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1181 options.append("--fdevice-syntax-only") 27e
1182 if opts.minimal is not None and opts.minimal: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1183 options.append("--minimal") 29e
1184 if opts.no_cache is not None and opts.no_cache: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1185 options.append("--no-cache") 2#e
1186 if opts.fdevice_time_trace is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1187 options.append(f"--fdevice-time-trace={opts.fdevice_time_trace}") 2]d
1188 if opts.frandom_seed is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1189 options.append(f"--frandom-seed={opts.frandom_seed}") 2$e
1190 if opts.ofast_compile is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1191 options.append(f"--Ofast-compile={opts.ofast_compile}") 2%e
1192 # PCH options (CUDA 12.8+)
1193 if opts.pch is not None and opts.pch: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1194 options.append("--pch") 1M
1195 if opts.create_pch is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1196 options.append(f"--create-pch={opts.create_pch}") 1fe
1197 if opts.use_pch is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1198 options.append(f"--use-pch={opts.use_pch}") 1e
1199 if opts.pch_dir is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1200 options.append(f"--pch-dir={opts.pch_dir}")
1201 if opts.pch_verbose is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1202 options.append(f"--pch-verbose={_handle_boolean_option(opts.pch_verbose)}") 2'e
1203 if opts.pch_messages is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1204 options.append(f"--pch-messages={_handle_boolean_option(opts.pch_messages)}") 2(e
1205 if opts.instantiate_templates_in_pch is not None: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1206 options.append( 2se
1207 f"--instantiate-templates-in-pch={_handle_boolean_option(opts.instantiate_templates_in_pch)}" 2se
1208 )
1209 if opts.numba_debug: 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1210 options.append("--numba-debug") 2le
1211 return [o.encode() for o in options] 24 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bcedeeefe?e@e[e]egehe^ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 5b6bteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYe-eZe0e7b8b9b!b#b$b%b'b_e(b)b*b+b,b-b.b/b:b;b=b?b@b[b]bg h T U Q R ^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c`e7c{e|e8c}e9c~e!c#c$caf%cbf'c(c)c*c+c,c-c.c/c:ccf;cdf=cef?cff@c[c]cgf^chf_c`c{cifV jfkflfmfnfofpfqfrfW sftfufvfwf|c}c~cadbdcdddedfdgdhdidxfjdyfkdldzfX AfBfCfDfEfFfGfHfIfJfY KfLfMfNfOfmdndodPfpdQfqdRfrdSfsdtdudTfvdUfwdxdydzdAdBdCdDdEdFdVfGdWfHdXfIdYfJdKdLdZfMd0fNdOdPd1fZ 2f3f4f5f6f7f8f9f!f0 #f$f%f'f(fQdRdSdTdUdVdWdXdYdZd0d1d)f2d*f3d4d+f1 ,f-f.f/f:f;f=f?f@f[f2 ]f^f_f`f{f5d6d7d|f8d}f~fag9dbg!dcgdg*ec #deg$dfg%dgg'dhg(dig)djg*dkg+dlg,dmg-dng.dog/dpg:dqg;drgf [de ]d+ekeleme~dne1e2e=dS i j _d`doepeqe3e{d3 re?d@d4e5e6e7e8e9e!e#e$e%eM 'e(esezgP b Ig,e)eJgKgLgPgMgQgRg0g1g2g3g4g5g6g7g8gZg9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]gCgAgBgDgN GgEgHgFgO
1214cdef inline object _prepare_nvvm_options_impl(object opts, bint as_bytes):
1215 """Build NVVM-specific compiler options."""
1216 options = [] 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1218 # Options supported by NVVM
1219 assert opts.arch is not None 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1220 arch = opts.arch 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1221 if arch.startswith("sm_"): 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1222 arch = f"compute_{arch[3:]}" 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1223 options.append(f"-arch={arch}") 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1224 if opts.debug is not None and opts.debug: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1225 options.append("-g") 2Ng
1226 if opts.device_code_optimize is False: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1227 options.append("-opt=0") 2.esg/etg;evg
1228 elif opts.device_code_optimize is True: 2iejeyg^d:eug|dae}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1229 options.append("-opt=3") 2|dae}dbeNg
1230 # NVVM uses 0/1 instead of true/false for boolean options
1231 if opts.ftz is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1232 options.append(f"-ftz={'1' if opts.ftz else '0'}") 2|dae}dbeNg
1233 if opts.prec_sqrt is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1234 options.append(f"-prec-sqrt={'1' if opts.prec_sqrt else '0'}") 2|dae}dbe
1235 if opts.prec_div is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1236 options.append(f"-prec-div={'1' if opts.prec_div else '0'}") 2|dae}dbe
1237 if opts.fma is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1238 options.append(f"-fma={'1' if opts.fma else '0'}") 2|dae}dbe
1240 # Check for unsupported options and raise error if they are set
1241 unsupported = [] 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1242 if opts.relocatable_device_code is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1243 unsupported.append("relocatable_device_code")
1244 if opts.extensible_whole_program is not None and opts.extensible_whole_program: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1245 unsupported.append("extensible_whole_program")
1246 if opts.lineinfo is not None and opts.lineinfo: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1247 unsupported.append("lineinfo") 2{g
1248 if opts.ptxas_options is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1249 unsupported.append("ptxas_options")
1250 if opts.max_register_count is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1251 unsupported.append("max_register_count")
1252 if opts.use_fast_math is not None and opts.use_fast_math: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1253 unsupported.append("use_fast_math")
1254 if opts.extra_device_vectorization is not None and opts.extra_device_vectorization: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1255 unsupported.append("extra_device_vectorization")
1256 if opts.gen_opt_lto is not None and opts.gen_opt_lto: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1257 unsupported.append("gen_opt_lto")
1258 if opts.define_macro is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1259 unsupported.append("define_macro")
1260 if opts.undefine_macro is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1261 unsupported.append("undefine_macro")
1262 if opts.include_path is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1263 unsupported.append("include_path")
1264 if opts.pre_include is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1265 unsupported.append("pre_include")
1266 if opts.no_source_include is not None and opts.no_source_include: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1267 unsupported.append("no_source_include")
1268 if opts.std is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1269 unsupported.append("std")
1270 if opts.builtin_move_forward is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1271 unsupported.append("builtin_move_forward")
1272 if opts.builtin_initializer_list is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1273 unsupported.append("builtin_initializer_list")
1274 if opts.disable_warnings is not None and opts.disable_warnings: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1275 unsupported.append("disable_warnings")
1276 if opts.restrict is not None and opts.restrict: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1277 unsupported.append("restrict")
1278 if opts.device_as_default_execution_space is not None and opts.device_as_default_execution_space: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1279 unsupported.append("device_as_default_execution_space")
1280 if opts.device_int128 is not None and opts.device_int128: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1281 unsupported.append("device_int128")
1282 if opts.optimization_info is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1283 unsupported.append("optimization_info")
1284 if opts.no_display_error_number is not None and opts.no_display_error_number: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1285 unsupported.append("no_display_error_number")
1286 if opts.diag_error is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1287 unsupported.append("diag_error")
1288 if opts.diag_suppress is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1289 unsupported.append("diag_suppress")
1290 if opts.diag_warn is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1291 unsupported.append("diag_warn")
1292 if opts.brief_diagnostics is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1293 unsupported.append("brief_diagnostics")
1294 if opts.time is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1295 unsupported.append("time")
1296 if opts.split_compile is not None: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1297 unsupported.append("split_compile")
1298 if opts.fdevice_syntax_only is not None and opts.fdevice_syntax_only: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1299 unsupported.append("fdevice_syntax_only")
1300 if opts.minimal is not None and opts.minimal: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1301 unsupported.append("minimal")
1302 if opts.numba_debug is not None and opts.numba_debug: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1303 unsupported.append("numba_debug")
1304 if unsupported: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d {gNgOgSgTgUgVg^g_g`gWgXgYg
1305 raise CUDAError(f"The following options are not supported by NVVM backend: {', '.join(unsupported)}") 2{g
1307 if as_bytes: 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d NgOgSgTgUgVg^g_g`gWgXgYg
1308 return [o.encode() for o in options] 2iejeyg^d.esg/etg:eug|dae;evg}dbe=ewga d NgOgSgTgUgVg^g_g`gWgXgYg
1309 else:
1310 return options