Coverage for cuda/core/_program.pyx: 87.31%
670 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-07-19 01:12 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-07-19 01:12 +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 typing import TYPE_CHECKING
15from warnings import warn
17if TYPE_CHECKING:
18 from cuda.core.utils._program_cache import ProgramCacheResource # no-cython-lint
20from cuda.bindings import nvrtc
21from cuda.pathfinder._optional_cuda_import import _optional_cuda_import
23from libcpp.vector cimport vector
25from ._resource_handles cimport (
26 as_cu,
27 as_py,
28 create_nvrtc_program_handle,
29 create_nvvm_program_handle,
30)
31from cuda.bindings cimport cynvrtc, cynvvm
32from cuda.core._utils.cuda_utils cimport HANDLE_RETURN_NVRTC, HANDLE_RETURN_NVVM
33from cuda.core._device import Device
34from cuda.core._linker import Linker, LinkerHandleT, LinkerOptions
35from cuda.core._module import ObjectCode
36from cuda.core._utils.clear_error_support import assert_type
37from cuda.core._utils.cuda_utils import (
38 CUDAError,
39 _handle_boolean_option,
40 check_or_create_options,
41 handle_return,
42 is_nested_sequence,
43 is_sequence,
44)
45from cuda.core._utils.version import binding_version, driver_version
46from cuda.core.typing import ObjectCodeFormatType, CompilerBackendType, PCHStatusType, SourceCodeType
48__all__ = ["Program", "ProgramOptions"]
50ProgramHandleT = nvrtc.nvrtcProgram | int | LinkerHandleT
51"""Type alias for program handle types across different backends.
53The ``int`` type covers NVVM handles, which don't have a wrapper class.
54"""
57# =============================================================================
58# Principal Class
59# =============================================================================
62cdef class Program:
63 """Represent a compilation machinery to process programs into
64 :class:`~cuda.core.ObjectCode`.
66 This object provides a unified interface to multiple underlying
67 compiler libraries. Compilation support is enabled for a wide
68 range of code types and compilation types.
70 Parameters
71 ----------
72 code : str | bytes | bytearray
73 The source code to compile. For C++ and PTX, must be a string.
74 For NVVM IR, can be str, bytes, or bytearray.
75 code_type : SourceCodeType | str
76 The type of source code. Must be one of ``"c++"``, ``"ptx"``, or ``"nvvm"``.
77 options : :class:`ProgramOptions`, optional
78 Options to customize the compilation process.
79 """
80 def __init__(self, code: str | bytes | bytearray, code_type: SourceCodeType | str, options: ProgramOptions | None = None):
81 Program_init(self, code, str(code_type), options) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRhCh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUh]e^ed geWhc he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk BhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b XhShNhDh`ePh2h0hOhVhAhphqhrhshthuhvhwhxhyh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
83 def close(self) -> None:
84 """Destroy this program."""
85 if self._linker: 2]e^ed gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk BhQgzh~eJgafKgbfLgve.ecfMgwe/edfNga b NhAhphqhrhshthuhvhwhxhyh|e
86 self._linker.close() 2Ahphqhrhshthuhvhwhxhyh
87 # Reset handles - the C++ shared_ptr destructor handles cleanup
88 self._h_nvrtc.reset() 2]e^ed gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk BhQgzh~eJgafKgbfLgve.ecfMgwe/edfNga b NhAhphqhrhshthuhvhwhxhyh|e
89 self._h_nvvm.reset() 2]e^ed gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk BhQgzh~eJgafKgbfLgve.ecfMgwe/edfNga b NhAhphqhrhshthuhvhwhxhyh|e
91 def compile(
92 self,
93 target_type: ObjectCodeFormatType | str,
94 name_expressions: tuple[str, ...] | list[str] = (),
95 logs: object = None,
96 *,
97 cache: ProgramCacheResource | None = None,
98 ) -> ObjectCode:
99 """Compile the program to the specified target type.
101 Parameters
102 ----------
103 target_type : ObjectCodeFormatType | str
104 The compilation target. Must be one of ``"ptx"``, ``"cubin"``, or ``"ltoir"``.
105 name_expressions : tuple | list, optional
106 Sequence of name expressions to make accessible in the compiled code.
107 Used for template instantiation and similar cases.
108 logs : object, optional
109 Object with a ``write`` method to receive compilation logs.
110 On a cache hit no compilation runs and ``logs`` receives
111 nothing -- callers that rely on log output to confirm a
112 compile happened should compile without ``cache=``.
113 cache : :class:`~cuda.core.utils.ProgramCacheResource`, optional
114 If provided, the compiled binary is looked up in ``cache`` via a
115 key derived from the program's code, options, and ``target_type``.
116 On a hit the cached bytes are wrapped in a fresh
117 :class:`~cuda.core.ObjectCode` (with the same ``target_type``
118 and ``ProgramOptions.name``) and returned without re-compiling;
119 on a miss the compile output is stored as raw bytes (the cache
120 extracts ``bytes(object_code.code)``). Passing a non-empty
121 ``name_expressions`` together with ``cache=`` raises
122 ``ValueError``: NVRTC populates
123 ``ObjectCode.symbol_mapping`` at compile time and that mapping
124 is not carried in the binary the cache stores, so cache hits
125 would silently miss ``get_kernel(name_expression)`` lookups.
126 Options that require an ``extra_digest`` (``include_path``,
127 ``pre_include``, ``pch``, ``use_pch``, ``pch_dir``, NVVM
128 ``use_libdevice=True``, or NVRTC ``options.name`` with a
129 directory component) raise ``ValueError`` via
130 :func:`~cuda.core.utils.make_program_cache_key`; for those
131 compiles, use the manual ``make_program_cache_key(...)``
132 pattern directly.
134 ``cache=`` is independent of ``ProgramOptions.no_cache``: the
135 former controls this program-level cache (compiled-output
136 reuse across calls), while ``no_cache`` is forwarded to the
137 Linker to disable its in-process JIT cache for cuLink/nvJitLink.
138 Setting ``options.no_cache=True`` does not bypass ``cache=``,
139 and vice-versa.
141 Returns
142 -------
143 :class:`~cuda.core.ObjectCode`
144 The compiled object code.
145 """
146 # Mirror Program_init's code_type normalization so callers can pass
147 # ``ObjectCodeFormatType.PTX`` or ``"PTX"`` and get the same routing
148 # / cache key as the lowercase string. ``Program_compile_nvrtc``
149 # keys on lowercase ``target_type`` and ``make_program_cache_key``
150 # lowercases too.
151 target_type = str(target_type).lower() 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIg]e^ed gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk Qgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b Dh`ephqhrhshthuhvhwhxhyh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
153 if cache is None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIg]e^ed gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk Qgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b Dh`ephqhrhshthuhvhwhxhyh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
154 return _program_compile_uncached(self, target_type, name_expressions, logs) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIg]e^ed gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk Qgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b Dh`ephqhrhshthuhvhwhxhyh{e|eQh
156 # Deferred import to avoid a circular import between _program and
157 # cuda.core.utils._program_cache (the cache module already imports
158 # ProgramOptions from this module). Import from the leaf module so
159 # tests that monkeypatch make_program_cache_key via that path
160 # intercept reliably.
161 from cuda.core.utils._program_cache import ( 2TgRgSgUgR XgVgJhFhGhHhYgMhWgS
162 ProgramCacheResource,
163 make_program_cache_key,
164 )
166 if not isinstance(cache, ProgramCacheResource): 2TgRgSgUgR XgVgJhFhGhHhYgMhWgS
167 raise TypeError( 2Jh
168 "cache must be an instance of " 2Jh
169 "cuda.core.utils.ProgramCacheResource; got "
170 f"{type(cache).__name__}" 2Jh
171 )
173 # ``name_expressions`` is incompatible with the cache: NVRTC
174 # populates ``ObjectCode.symbol_mapping`` from name-expression
175 # mangling at compile time, and that mapping isn't carried in
176 # the binary bytes the cache stores. Without this guard the
177 # first call (cache miss) would return an ObjectCode with
178 # symbol_mapping populated, while every subsequent call (hit)
179 # would return one without -- silently breaking later
180 # ``get_kernel(name_expression)`` lookups that work on the
181 # uncached path. Fail loud here instead.
182 if name_expressions: 2TgRgSgUgR XgVgFhGhHhYgMhWgS
183 raise ValueError( 2Mh
184 "Program.compile(cache=...) does not support name_expressions: "
185 "ObjectCode.symbol_mapping is populated by NVRTC at compile "
186 "time and is not preserved across a cache round-trip, so cache "
187 "hits would silently break get_kernel(name_expression) lookups "
188 "that the uncached path supports. Compile without cache= when "
189 "name_expressions are needed, or look up mangled symbols by "
190 "hand from the cached ObjectCode."
191 )
193 # ``self._code`` is always stored as bytes (see ``Program_init``),
194 # but ``make_program_cache_key`` only accepts bytes when
195 # ``code_type == "nvvm"`` -- c++/ptx must be ``str``. The bytes
196 # came from ``code.encode()`` on a ``str`` Program_init validated
197 # via ``assert_type(code, str)``, so this round-trip is always
198 # safe; no try/except needed.
199 code_for_key = self._code if self._code_type == "nvvm" else self._code.decode("utf-8") 2TgRgSgUgR XgVgFhGhHhYgWgS
201 key = make_program_cache_key( 2TgRgSgUgR XgVgFhGhHhYgWgS
202 code=code_for_key,
203 code_type=self._code_type,
204 options=self._options,
205 target_type=target_type, 2TgRgSgUgR XgVgFhGhHhYgWgS
206 )
207 hit_bytes = cache.get(key) 2TgRgSgUgR XgVgYgWgS
208 if hit_bytes is not None: 2TgRgSgUgR XgVgWgS
209 # The uncached NVRTC path warns when the active driver can't
210 # load freshly-generated PTX; that loadability is a property
211 # of the driver, not of how the bytes were produced, so the
212 # warning applies equally to cached PTX. Mirror it here so a
213 # cache hit doesn't silently hide an incompatibility that the
214 # uncached call would have surfaced.
215 if ( 2TgRgSgUgR S
216 self._backend == "NVRTC" 2TgRgSgUgR S
217 and target_type == "ptx" 2TgRgSgUgR S
218 and not _can_load_generated_ptx() 2RgSg
219 ):
220 warn( 2Rg
221 "The CUDA driver version is older than the backend version. "
222 "The generated ptx will not be loadable by the current driver.",
223 stacklevel=2,
224 category=RuntimeWarning, 2Rg
225 )
226 return ObjectCode._init(hit_bytes, target_type, name=self._options.name) 2TgRgSgUgR S
227 compiled = _program_compile_uncached(self, target_type, name_expressions, logs) 2TgR XgVgWgS
228 cache[key] = compiled 2TgR VgWgS
229 return compiled 2TgR VgS
231 @property
232 def pch_status(self) -> PCHStatusType | None:
233 """PCH creation outcome from the most recent :meth:`compile` call.
235 Possible values:
237 * ``"created"`` — PCH file was written successfully.
238 * ``"not_attempted"`` — PCH creation was not attempted (e.g. the
239 compiler decided not to, or automatic PCH processing skipped it).
240 * ``"failed"`` — an error prevented PCH creation.
241 * ``None`` — PCH was not requested, the program has not been
242 compiled yet, the backend is not NVRTC (e.g. PTX or NVVM),
243 or the NVRTC bindings are too old to report status.
245 When ``create_pch`` is set in :class:`ProgramOptions` and the PCH
246 heap is too small, :meth:`compile` automatically resizes the heap
247 and retries, so ``"created"`` should be the common outcome.
249 .. note::
251 PCH is only supported for ``code_type="c++"`` programs that
252 use the NVRTC backend. For PTX and NVVM programs this property
253 always returns ``None``.
254 """
255 if self._pch_status is None: 2d ge
256 return None 2d ge
257 return PCHStatusType(self._pch_status) 1d
259 @property
260 def backend(self) -> CompilerBackendType:
261 """Return this Program instance's underlying :class:`CompilerBackendType`."""
262 return CompilerBackendType(self._backend) 2]e^ec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,eueBh-e~eJgafKgbfLgve.ecfMgwe/edfNga b ShOhphqhrhshthuhvhwhxhyh
264 @property
265 def handle(self) -> ProgramHandleT:
266 """Return the underlying handle object.
268 .. note::
270 The type of the returned object depends on the backend.
272 .. caution::
274 This handle is a Python object. To get the memory address of the underlying C
275 handle, call ``int(Program.handle)``.
276 """
277 if self._backend == "NVRTC": 2Bh-ePhOhAh
278 return as_py(self._h_nvrtc) 2PhOh
279 elif self._backend == "NVVM": 2Bh-eAh
280 return as_py(self._h_nvvm) # returns int (NVVM uses raw integers) 2Bh-e
281 else:
282 return self._linker.handle 2Ah
284 def __repr__(self) -> str:
285 return f"<Program backend='{self._backend}'>" 2RhCh-e
288# =============================================================================
289# Other Public Classes
290# =============================================================================
293@dataclass
294class ProgramOptions:
295 """Customizable options for configuring :class:`Program`.
297 Attributes
298 ----------
299 name : str, optional
300 Name of the program. If the compilation succeeds, the name is passed down to the generated :class:`ObjectCode`.
301 arch : str, optional
302 Pass the SM architecture value, such as ``sm_<CC>`` (for generating CUBIN) or
303 ``compute_<CC>`` (for generating PTX). If not provided, the current device's architecture
304 will be used.
305 relocatable_device_code : bool, optional
306 Enable (disable) the generation of relocatable device code.
307 Default: False
308 extensible_whole_program : bool, optional
309 Do extensible whole program compilation of device code.
310 Default: False
311 debug : bool, optional
312 Generate debug information. If --dopt is not specified, then turns off all optimizations.
313 Default: False
314 lineinfo: bool, optional
315 Generate line-number information.
316 Default: False
317 device_code_optimize : bool, optional
318 Enable device code optimization. When specified along with '-G', enables limited debug information generation
319 for optimized device code.
320 Default: None
321 ptxas_options : Union[str, list[str]], optional
322 Specify one or more options directly to ptxas, the PTX optimizing assembler. Options should be strings.
323 For example ["-v", "-O2"].
324 Default: None
325 max_register_count : int, optional
326 Specify the maximum amount of registers that GPU functions can use.
327 Default: None
328 ftz : bool, optional
329 When performing single-precision floating-point operations, flush denormal values to zero or preserve denormal
330 values.
331 Default: False
332 prec_sqrt : bool, optional
333 For single-precision floating-point square root, use IEEE round-to-nearest mode or use a faster approximation.
334 Default: True
335 prec_div : bool, optional
336 For single-precision floating-point division and reciprocals, use IEEE round-to-nearest mode or use a faster
337 approximation.
338 Default: True
339 fma : bool, optional
340 Enables (disables) the contraction of floating-point multiplies and adds/subtracts into floating-point
341 multiply-add operations.
342 Default: True
343 use_fast_math : bool, optional
344 Make use of fast math operations.
345 Default: False
346 extra_device_vectorization : bool, optional
347 Enables more aggressive device code vectorization in the NVVM optimizer.
348 Default: False
349 link_time_optimization : bool, optional
350 Generate intermediate code for later link-time optimization.
351 Default: False
352 gen_opt_lto : bool, optional
353 Run the optimizer passes before generating the LTO IR.
354 Default: False
355 define_macro : Union[str, tuple[str, str], list[Union[str, tuple[str, str]]]], optional
356 Predefine a macro. Can be either a string, in which case that macro will be set to 1, a 2 element tuple of
357 strings, in which case the first element is defined as the second, or a list of strings or tuples.
358 Default: None
359 undefine_macro : Union[str, list[str]], optional
360 Cancel any previous definition of a macro, or list of macros.
361 Default: None
362 include_path : Union[str, list[str]], optional
363 Add the directory or directories to the list of directories to be searched for headers.
364 Default: None
365 pre_include : Union[str, list[str]], optional
366 Preinclude one or more headers during preprocessing. Can be either a string or a list of strings.
367 Default: None
368 no_source_include : bool, optional
369 Disable the default behavior of adding the directory of each input source to the include path.
370 Default: False
371 std : str, optional
372 Set language dialect to C++03, C++11, C++14, C++17 or C++20.
373 Default: c++17
374 builtin_move_forward : bool, optional
375 Provide builtin definitions of std::move and std::forward.
376 Default: True
377 builtin_initializer_list : bool, optional
378 Provide builtin definitions of std::initializer_list class and member functions.
379 Default: True
380 disable_warnings : bool, optional
381 Inhibit all warning messages.
382 Default: False
383 restrict : bool, optional
384 Programmer assertion that all kernel pointer parameters are restrict pointers.
385 Default: False
386 device_as_default_execution_space : bool, optional
387 Treat entities with no execution space annotation as __device__ entities.
388 Default: False
389 device_int128 : bool, optional
390 Allow the __int128 type in device code.
391 Default: False
392 optimization_info : str, optional
393 Provide optimization reports for the specified kind of optimization.
394 Default: None
395 no_display_error_number : bool, optional
396 Disable the display of a diagnostic number for warning messages.
397 Default: False
398 diag_error : Union[int, list[int]], optional
399 Emit error for a specified diagnostic message number or comma-separated list of numbers.
400 Default: None
401 diag_suppress : Union[int, list[int]], optional
402 Suppress a specified diagnostic message number or comma-separated list of numbers.
403 Default: None
404 diag_warn : Union[int, list[int]], optional
405 Emit warning for a specified diagnostic message number or comma-separated list of numbers.
406 Default: None
407 brief_diagnostics : bool, optional
408 Disable or enable showing source line and column info in a diagnostic.
409 Default: False
410 time : str, optional
411 Generate a CSV table with the time taken by each compilation phase.
412 Default: None
413 split_compile : int, optional
414 Perform compiler optimizations in parallel.
415 Default: 1
416 fdevice_syntax_only : bool, optional
417 Ends device compilation after front-end syntax checking.
418 Default: False
419 minimal : bool, optional
420 Omit certain language features to reduce compile time for small programs.
421 Default: False
422 no_cache : bool, optional
423 Disable compiler caching.
424 Default: False
425 fdevice_time_trace : str, optional
426 Generate time trace JSON for profiling compilation (NVRTC only).
427 Default: None
428 device_float128 : bool, optional
429 Allow __float128 type in device code (NVRTC only).
430 Default: False
431 frandom_seed : str, optional
432 Set random seed for randomized optimizations (NVRTC only).
433 Default: None
434 ofast_compile : str, optional
435 Fast compilation mode: "0", "min", "mid", or "max" (NVRTC only).
436 Default: None
437 pch : bool, optional
438 Use default precompiled header (NVRTC only, CUDA 12.8+).
439 Default: False
440 create_pch : str, optional
441 Create precompiled header file (NVRTC only, CUDA 12.8+).
442 Default: None
443 use_pch : str, optional
444 Use specific precompiled header file (NVRTC only, CUDA 12.8+).
445 Default: None
446 pch_dir : str, optional
447 PCH directory location (NVRTC only, CUDA 12.8+).
448 Default: None
449 pch_verbose : bool, optional
450 Verbose PCH output (NVRTC only, CUDA 12.8+).
451 Default: False
452 pch_messages : bool, optional
453 Control PCH diagnostic messages (NVRTC only, CUDA 12.8+).
454 Default: False
455 instantiate_templates_in_pch : bool, optional
456 Control template instantiation in PCH (NVRTC only, CUDA 12.8+).
457 Default: False
458 extra_sources : list of 2-tuples or tuple of 2-tuples, optional
459 Additional NVVM IR modules to compile together with the main program, specified as
460 ``((name1, source1), (name2, source2), ...)``. Each name is a string identifier used
461 in diagnostic messages. Each source can be a string (textual LLVM IR) or bytes/bytearray
462 (LLVM bitcode). Only supported for the NVVM backend.
463 Default: None
464 use_libdevice : bool, optional
465 Load NVIDIA's `libdevice <https://docs.nvidia.com/cuda/libdevice-users-guide/>`_
466 math builtins library. Only supported for the NVVM backend.
467 Default: False
468 """
470 name: str | None = "default_program"
471 arch: str | None = None
472 relocatable_device_code: bool | None = None
473 extensible_whole_program: bool | None = None
474 debug: bool | None = None
475 lineinfo: bool | None = None
476 device_code_optimize: bool | None = None
477 ptxas_options: str | list[str] | tuple[str] | None = None
478 max_register_count: int | None = None
479 ftz: bool | None = None
480 prec_sqrt: bool | None = None
481 prec_div: bool | None = None
482 fma: bool | None = None
483 use_fast_math: bool | None = None
484 extra_device_vectorization: bool | None = None
485 link_time_optimization: bool | None = None
486 gen_opt_lto: bool | None = None
487 define_macro: str | tuple[str, str] | list[str | tuple[str, str]] | tuple[str | tuple[str, str], ...] | None = None
488 undefine_macro: str | list[str] | tuple[str] | None = None
489 include_path: str | list[str] | tuple[str] | None = None
490 pre_include: str | list[str] | tuple[str] | None = None
491 no_source_include: bool | None = None
492 std: str | None = None
493 builtin_move_forward: bool | None = None
494 builtin_initializer_list: bool | None = None
495 disable_warnings: bool | None = None
496 restrict: bool | None = None
497 device_as_default_execution_space: bool | None = None
498 device_int128: bool | None = None
499 optimization_info: str | None = None
500 no_display_error_number: bool | None = None
501 diag_error: int | list[int] | tuple[int] | None = None
502 diag_suppress: int | list[int] | tuple[int] | None = None
503 diag_warn: int | list[int] | tuple[int] | None = None
504 brief_diagnostics: bool | None = None
505 time: str | None = None
506 split_compile: int | None = None
507 fdevice_syntax_only: bool | None = None
508 minimal: bool | None = None
509 no_cache: bool | None = None
510 fdevice_time_trace: str | None = None
511 device_float128: bool | None = None
512 frandom_seed: str | None = None
513 ofast_compile: str | None = None
514 pch: bool | None = None
515 create_pch: str | None = None
516 use_pch: str | None = None
517 pch_dir: str | None = None
518 pch_verbose: bool | None = None
519 pch_messages: bool | None = None
520 instantiate_templates_in_pch: bool | None = None
521 extra_sources: list[tuple[str, str | bytes | bytearray]] | tuple[tuple[str, str | bytes | bytearray], ...] | None = None
522 use_libdevice: bool | None = None # For libdevice execution
523 numba_debug: bool | None = None # Custom option for Numba debugging
525 def __post_init__(self) -> None:
526 self._name = self.name.encode() 2Og8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRhCh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUh]e^ed geWhc he9h!h3h6h%hPgk BhQgzh-e)ga b XhYhZh'h1hShNhDh`ePh2h0hOh$hZgoh4gEhIhKhLh(hVhAh{e|e5g0g1g2g6g3g7g)h*h+h,h-h8g+g,g-g.g.h/h/g:g;g=g?g*g@g[g]g9g:h;h=h^g!g?h#g@h_g[h`g{g|g$g]h^h}g~gahbhchlhmhnh%g'g_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCidhDiEiFiGiHiIiJiKiLiMiNiOi7h8hehfhghhhPiQiRiSiTiUiViWiXiYiZi0iih1ijh(gkh2iTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
527 # Set arch to default if not provided
528 if self.arch is None: 2Og8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRhCh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUh]e^ed geWhc he9h!h3h6h%hPgk BhQgzh-e)ga b XhYhZh'h1hShNhDh`ePh2h0hOh$hZgoh4gEhIhKhLh(hVhAh{e|e5g0g1g2g6g3g7g)h*h+h,h-h8g+g,g-g.g.h/h/g:g;g=g?g*g@g[g]g9g:h;h=h^g!g?h#g@h_g[h`g{g|g$g]h^h}g~gahbhchlhmhnh%g'g_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCidhDiEiFiGiHiIiJiKiLiMiNiOi7h8hehfhghhhPiQiRiSiTiUiViWiXiYiZi0iih1ijh(gkh2iTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
529 self.arch = f"sm_{Device().arch}" 2OgifxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckcV W X N O P lcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:cmfnfofpfqfrfsftfufvfwfxfyfzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfOfPfQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f{f|f}f4 ~fagbgcgdgegfggghgig5 jgkglgmgngogpgqgrgsgtgugRhChvgwgxgygzgAgBgCgDgEgFgGgThHgIgUhd geWhc hePgk BhQgzh-ea b XhShNhDh`ePh2h0hOhVhAh{e|e
530 if self.extra_sources is not None: 2Og8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRhCh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUh]e^ed geWhc he9h!h3h6h%hPgk BhQgzh-e)ga b XhYhZh'h1hShNhDh`ePh2h0hOh$hZgoh4gEhIhKhLh(hVhAh{e|e5g0g1g2g6g3g7g)h*h+h,h-h8g+g,g-g.g.h/h/g:g;g=g?g*g@g[g]g9g:h;h=h^g!g?h#g@h_g[h`g{g|g$g]h^h}g~gahbhchlhmhnh%g'g_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCidhDiEiFiGiHiIiJiKiLiMiNiOi7h8hehfhghhhPiQiRiSiTiUiViWiXiYiZi0iih1ijh(gkh2iTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
531 if not is_sequence(self.extra_sources): 2Wh9h!h3h6h%ha b YhZh1hVh7h8h
532 raise TypeError( 2%h
533 "extra_sources must be a sequence of 2-tuples: ((name1, source1), (name2, source2), ...)"
534 )
535 for i, module in enumerate(self.extra_sources): 2Wh9h!h3h6ha b YhZh1hVh7h8h
536 if not isinstance(module, tuple) or len(module) != 2: 2Wh9h!h3h6ha b YhZh1hVh7h8h
537 raise TypeError( 2!h
538 f"Each extra module must be a 2-tuple (name, source)" 2!h
539 f", got {type(module).__name__} at index {i}" 2!h
540 )
542 module_name, module_source = module 2Wh9h3h6ha b YhZh1hVh7h8h
544 if not isinstance(module_name, str): 2Wh9h3h6ha b YhZh1hVh7h8h
545 raise TypeError(f"Module name at index {i} must be a string, got {type(module_name).__name__}") 29h
547 if not isinstance(module_source, (str, bytes, bytearray)): 2Wh3h6ha b YhZh1hVh7h8h
548 raise TypeError( 23h
549 f"Module source at index {i} must be str (textual LLVM IR), bytes (textual LLVM IR or bitcode), " 23h
550 f"or bytearray, got {type(module_source).__name__}" 23h
551 )
553 if len(module_source) == 0: 2Wh6ha b YhZh1hVh7h8h
554 raise ValueError(f"Module source for '{module_name}' (index {i}) cannot be empty") 26h
556 def _prepare_nvrtc_options(self) -> list[bytes]:
557 return _prepare_nvrtc_options_impl(self) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZgEhIhKhLh{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
559 def _prepare_nvvm_options(self, as_bytes: bool = True) -> list[bytes] | list[str]:
560 return _prepare_nvvm_options_impl(self, as_bytes) 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
562 def as_bytes(self, backend: CompilerBackendType | str, target_type: ObjectCodeFormatType | str | None = None) -> list[bytes]:
563 """Convert program options to bytes format for the specified backend.
565 This method transforms the program options into a format suitable for the
566 specified compiler backend. Different backends may use different option names
567 and formats even for the same conceptual options.
569 Parameters
570 ----------
571 backend : CompilerBackendType | str
572 The compiler backend to prepare options for. Must be either "nvrtc" or "nvvm".
573 target_type : ObjectCodeFormatType | str, optional
574 The compilation target type (e.g., "ptx", "cubin", "ltoir"). Some backends
575 require additional options based on the target type.
577 Returns
578 -------
579 list[bytes]
580 List of option strings encoded as bytes.
582 Raises
583 ------
584 ValueError
585 If an unknown backend is specified.
586 CUDAError
587 If an option incompatible with the specified backend is set.
589 Examples
590 --------
591 >>> options = ProgramOptions(arch="sm_80", debug=True)
592 >>> nvrtc_options = options.as_bytes("nvrtc")
593 """
594 backend = str(backend).lower() 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIg]e^ed gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk Qg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b `e$hZgoh4gEhIhKhLh{e|e5g0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g9g^g!g#g_g`g{g|g$g}g~gahbhchlhmhnh%g'gdhehfhghhhihjh(gkhTgRgSgUgR XgVgYgWgS
595 if backend == "nvrtc": 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIg]e^ed gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk Qg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b `e$hZgoh4gEhIhKhLh{e|e5g0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g9g^g!g#g_g`g{g|g$g}g~gahbhchlhmhnh%g'gdhehfhghhhihjh(gkhTgRgSgUgR XgVgYgWgS
596 return self._prepare_nvrtc_options() 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZgEhIhKhLh{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
597 elif backend == "nvvm": 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b $hoh4g5g9g!g#g$glhmhnh%g'g(g
598 options = self._prepare_nvvm_options(as_bytes=True) 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
599 if target_type == "ltoir" and b"-gen-lto" not in options: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b 4g5g9g!g#g$glhmhnh%g'g(g
600 options.append(b"-gen-lto") 2]e^e~eafbfvecfwedfa
601 return options 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b 4g5g9g!g#g$glhmhnh%g'g(g
602 else:
603 raise ValueError(f"Unknown backend '{backend}'. Must be one of: 'nvrtc', 'nvvm'") 2$h
605 def __repr__(self) -> str:
606 return f"ProgramOptions(name={self.name!r}, arch={self.arch!r})" 2(h
608 def _prepare_extra_sources_bytes(self) -> list[tuple[bytes, bytes]] | None:
609 """Convert extra_sources to bytes format for NVVM."""
610 if self.extra_sources is None: 2a b YhZh'h1h
611 return None 2'h
613 result = [] 2a b YhZh1h
614 for module_name, module_source in self.extra_sources: 2a b YhZh1h
615 name_bytes = module_name.encode("utf-8") 2a b YhZh1h
616 if isinstance(module_source, str): 2a b YhZh1h
617 source_bytes = module_source.encode("utf-8") 2a b 1h
618 elif isinstance(module_source, bytearray): 2YhZh
619 source_bytes = bytes(module_source) 2Yh
620 else:
621 source_bytes = module_source 2Zh
622 result.append((name_bytes, source_bytes)) 2a b YhZh1h
623 return result 2a b YhZh1h
626# =============================================================================
627# Private Classes and Helper Functions
628# =============================================================================
631def _program_compile_uncached(program, target_type, name_expressions, logs):
632 """Run ``Program_compile`` without the cache wrapper.
634 Module-level Python function so tests can monkeypatch it from
635 ``cuda.core._program`` to avoid invoking NVRTC when exercising the cache
636 wrapper in :meth:`Program.compile`. ``Program`` itself is a ``cdef class``
637 and its methods cannot be reassigned from Python, so the seam must live
638 outside the class.
639 """
640 return Program_compile(program, target_type, name_expressions, logs) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIg]e^ed gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk Qgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b Dh`ephqhrhshthuhvhwhxhyh{e|eR S
643# Module-level state for NVVM lazy loading
644_nvvm_module = None
645_nvvm_import_attempted = False
648def _get_nvvm_module() -> object:
649 """Get the NVVM module, importing it lazily with availability checks."""
650 global _nvvm_module, _nvvm_import_attempted
652 if _nvvm_import_attempted: 2OgCh4h5h#h]e^eBhQgzh3i-e~eJg4iafKgbfLgve.ecfMgwe/edfNga b Xh5g9g!g#g$g%g'g(g
653 if _nvvm_module is None: 2Ch]e^eBhQgzh3i-e~eJg4iafKgbfLgve.ecfMgwe/edfNga b Xh5g9g!g#g$g%g'g(g
654 raise RuntimeError("NVVM module is not available (previous import attempt failed)")
655 return _nvvm_module 2Ch]e^eBhQgzh3i-e~eJg4iafKgbfLgve.ecfMgwe/edfNga b Xh5g9g!g#g$g%g'g(g
657 _nvvm_import_attempted = True 2Og4h5h#h
659 try: 2Og4h5h#h
660 version = binding_version() 2Og4h5h#h
661 if version < (12, 9, 0): 2Og4h5h#h
662 raise RuntimeError(
663 f"NVVM bindings require cuda-bindings >= 12.9.0, but found {'.'.join(map(str, version))}. "
664 "Please update cuda-bindings to use NVVM features."
665 )
667 nvvm = _optional_cuda_import( 2Og4h5h#h
668 "cuda.bindings.nvvm",
669 probe_function=lambda module: module.version(), # probe triggers libnvvm load 2Og4h5h#h
670 )
671 if nvvm is None: 2Og4h5h
672 raise RuntimeError( 24h5h
673 "NVVM support is unavailable: cuda.bindings.nvvm is missing or libnvvm cannot be loaded."
674 )
676 _nvvm_module = nvvm
677 return _nvvm_module
679 except RuntimeError: 24h5h#h
680 _nvvm_module = None 24h5h
681 raise 24h5h
683def _find_libdevice_path() -> object:
684 """Find libdevice*.bc for NVVM compilation using cuda.pathfinder."""
685 from cuda.pathfinder import find_bitcode_lib 2!i
686 return find_bitcode_lib("device") 2!i
691cdef inline bint _process_define_macro_inner(list options, object macro) except? -1:
692 """Process a single define macro, returning True if successful."""
693 if isinstance(macro, str): 2U Q h i EhIhKhLh
694 options.append(f"--define-macro={macro}") 1U
695 return True 1U
696 if isinstance(macro, tuple): 2Q h i EhIhKhLh
697 if len(macro) != 2 or any(not isinstance(val, str) for val in macro): 2Q h i EhKhLh
698 raise RuntimeError(f"Expected define_macro tuple[str, str], got {macro}") 2EhKhLh
699 options.append(f"--define-macro={macro[0]}={macro[1]}") 1Qhi
700 return True 1Qhi
701 return False 2h i EhIh
704cdef inline void _process_define_macro(list options, object macro) except *:
705 """Process define_macro option which can be str, tuple, or list thereof."""
706 union_type = "Union[str, tuple[str, str]]" 2U Q h i EhIhKhLh
707 if _process_define_macro_inner(options, macro): 2U Q h i EhIhKhLh
708 return 1UQ
709 if is_nested_sequence(macro): 2h i EhIh
710 for seq_macro in macro: 2h i Eh
711 if not _process_define_macro_inner(options, seq_macro): 2h i Eh
712 raise RuntimeError(f"Expected define_macro {union_type}, got {seq_macro}")
713 return 1hi
714 raise RuntimeError(f"Expected define_macro {union_type}, list[{union_type}], got {macro}") 2Ih
717cpdef bint _can_load_generated_ptx() except? -1:
718 """Check if the driver can load PTX generated by the current NVRTC version."""
719 drv = driver_version() 2xeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ee f g 5iN 6iO 7iP 8i9id gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{eRgSg
720 nvrtc_major, nvrtc_minor = handle_return(nvrtc.nvrtcVersion()) 2xeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ee f g 5iN 6iO 7iP 8i9id gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{eRgSg
721 return (nvrtc_major, nvrtc_minor, 0) <= drv 2xeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ee f g 5iN 6iO 7iP 8i9id gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{eRgSg
724cdef inline object _translate_program_options(object options):
725 """Translate ProgramOptions to LinkerOptions for PTX compilation."""
726 return LinkerOptions( 2Ahphqhrhshthuhvhwhxhyh
727 name=options.name, 2Ahphqhrhshthuhvhwhxhyh
728 arch=options.arch, 2Ahphqhrhshthuhvhwhxhyh
729 max_register_count=options.max_register_count, 2Ahphqhrhshthuhvhwhxhyh
730 time=options.time, 2Ahphqhrhshthuhvhwhxhyh
731 link_time_optimization=options.link_time_optimization, 2Ahphqhrhshthuhvhwhxhyh
732 debug=options.debug, 2Ahphqhrhshthuhvhwhxhyh
733 lineinfo=options.lineinfo, 2Ahphqhrhshthuhvhwhxhyh
734 ftz=options.ftz, 2Ahphqhrhshthuhvhwhxhyh
735 prec_div=options.prec_div, 2Ahphqhrhshthuhvhwhxhyh
736 prec_sqrt=options.prec_sqrt, 2Ahphqhrhshthuhvhwhxhyh
737 fma=options.fma, 2Ahphqhrhshthuhvhwhxhyh
738 split_compile=options.split_compile, 2Ahphqhrhshthuhvhwhxhyh
739 ptxas_options=options.ptxas_options, 2Ahphqhrhshthuhvhwhxhyh
740 no_cache=options.no_cache, 2Ahphqhrhshthuhvhwhxhyh
741 numba_debug = options.numba_debug 2Ahphqhrhshthuhvhwhxhyh
742 )
745cdef inline int Program_init(Program self, object code, str code_type, object options) except -1:
746 """Initialize a Program instance."""
747 cdef cynvrtc.nvrtcProgram nvrtc_prog
748 cdef cynvvm.nvvmProgram nvvm_prog
749 cdef bytes code_bytes
750 cdef const char* code_ptr
751 cdef const char* name_ptr
752 cdef size_t code_len
753 cdef bytes module_bytes
754 cdef const char* module_ptr
755 cdef size_t module_len
757 self._options = options = check_or_create_options(ProgramOptions, options, "Program options") 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRhCh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUh]e^ed geWhc he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk BhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b XhShNhDh`ePh2h0hOhVhAhphqhrhshthuhvhwhxhyh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
758 code_type = code_type.lower() 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRhCh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUh]e^ed geWhc he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk BhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b XhShNhDh`ePh2h0hOhVhAhphqhrhshthuhvhwhxhyh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
759 self._code_type = code_type 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRhCh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUh]e^ed geWhc he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk BhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b XhShNhDh`ePh2h0hOhVhAhphqhrhshthuhvhwhxhyh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
760 self._compile_lock = threading.Lock() 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRhCh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUh]e^ed geWhc he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk BhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b XhShNhDh`ePh2h0hOhVhAhphqhrhshthuhvhwhxhyh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
761 self._use_libdevice = False 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRhCh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUh]e^ed geWhc he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk BhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b XhShNhDh`ePh2h0hOhVhAhphqhrhshthuhvhwhxhyh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
762 self._libdevice_added = False 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRhCh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUh]e^ed geWhc he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk BhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b XhShNhDh`ePh2h0hOhVhAhphqhrhshthuhvhwhxhyh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
764 self._pch_status = None 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRhCh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUh]e^ed geWhc he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk BhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b XhShNhDh`ePh2h0hOhVhAhphqhrhshthuhvhwhxhyh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
766 if code_type == "c++": 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRhCh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUh]e^ed geWhc he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk BhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b XhShNhDh`ePh2h0hOhVhAhphqhrhshthuhvhwhxhyh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
767 assert_type(code, str) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUhd geWhc he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk ShNhDh`ePh2hOh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
768 if options.extra_sources is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUhd geWhc he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk ShNhDh`ePhOh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
769 raise ValueError("extra_sources is not supported by the NVRTC backend (C++ code_type)") 2Wh
771 # TODO: support pre-loaded headers & include names
772 code_bytes = code.encode() 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUhd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk ShNhDh`ePhOh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
773 code_ptr = <const char*>code_bytes 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUhd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk ShNhDh`ePhOh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
774 name_ptr = <const char*>options._name 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUhd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk ShNhDh`ePhOh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
776 with nogil: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUhd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk ShNhDh`ePhOh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
777 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcCreateProgram( 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUhd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk ShNhDh`ePhOh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
778 &nvrtc_prog, code_ptr, name_ptr, 0, NULL, NULL))
779 self._h_nvrtc = create_nvrtc_program_handle(nvrtc_prog) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUhd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk ShNhDh`ePhOh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
780 self._code = code_bytes 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUhd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk ShNhDh`ePhOh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
781 self._backend = str(CompilerBackendType.NVRTC) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUhd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk ShNhDh`ePhOh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
782 self._linker = None 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUhd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk ShNhDh`ePhOh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
784 elif code_type == "ptx": 2Ch]e^eBhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b Xh0hVhAhphqhrhshthuhvhwhxhyh
785 assert_type(code, str) 2VhAhphqhrhshthuhvhwhxhyh
786 if options.extra_sources is not None: 2VhAhphqhrhshthuhvhwhxhyh
787 raise ValueError("extra_sources is not supported by the PTX backend.") 2Vh
788 code_bytes = code.encode() 2Ahphqhrhshthuhvhwhxhyh
789 self._code = code_bytes 2Ahphqhrhshthuhvhwhxhyh
790 self._linker = Linker( 2Ahphqhrhshthuhvhwhxhyh
791 ObjectCode._init(code_bytes, code_type), options=_translate_program_options(options) 2Ahphqhrhshthuhvhwhxhyh
792 )
793 self._backend = str(Linker.which_backend()) 2Ahphqhrhshthuhvhwhxhyh
795 elif code_type == "nvvm": 2Ch]e^eBhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b Xh0h
796 _get_nvvm_module() # Validate NVVM availability 2Ch]e^eBhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b Xh
797 if isinstance(code, str): 2Ch]e^eBhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b Xh
798 code = code.encode("utf-8") 2ChQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b
799 elif not isinstance(code, (bytes, bytearray)): 2]e^eBhXh
800 raise TypeError("NVVM IR code must be provided as str, bytes, or bytearray") 2Xh
801 self._code = bytes(code) # Coerce bytearray -> bytes so retention type is stable 2Ch]e^eBhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b
803 # Use self._code (strictly bytes) for the C pointer so a bytearray
804 # input doesn't trip the `<bytes>code` cast at runtime.
805 code_ptr = <const char*>self._code 2Ch]e^eBhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b
806 name_ptr = <const char*>options._name 2Ch]e^eBhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b
807 code_len = len(self._code) 2Ch]e^eBhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b
809 with nogil: 2Ch]e^eBhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b
810 HANDLE_RETURN_NVVM(NULL, cynvvm.nvvmCreateProgram(&nvvm_prog)) 2Ch]e^eBhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b
811 self._h_nvvm = create_nvvm_program_handle(nvvm_prog) # RAII from here 2Ch]e^eBhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b
812 with nogil: 2Ch]e^eBhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b
813 HANDLE_RETURN_NVVM(nvvm_prog, cynvvm.nvvmAddModuleToProgram(nvvm_prog, code_ptr, code_len, name_ptr)) 2Ch]e^eBhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b
815 # Add extra modules if provided
816 if options.extra_sources is not None: 2Ch]e^eBhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b
817 extra_sources_bytes = options._prepare_extra_sources_bytes() 1ab
818 for module_name_bytes, module_bytes in extra_sources_bytes: 1ab
819 module_ptr = <const char*>module_bytes 1ab
820 module_len = len(module_bytes) 1ab
821 module_name_ptr = <const char*>module_name_bytes 1ab
822 with nogil: 1ab
823 HANDLE_RETURN_NVVM(nvvm_prog, cynvvm.nvvmAddModuleToProgram( 1ab
824 nvvm_prog, module_ptr, module_len, module_name_ptr))
826 # Store use_libdevice flag
827 if options.use_libdevice: 2Ch]e^eBhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b
828 self._use_libdevice = True
830 self._backend = str(CompilerBackendType.NVVM) 2Ch]e^eBhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b
831 self._linker = None 2Ch]e^eBhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b
833 else:
834 supported_code_types = tuple(x.value for x in SourceCodeType) 20h
835 if options.use_libdevice: 20h
836 raise ValueError("use_libdevice is only supported by the NVVM backend")
837 raise RuntimeError(f"Unsupported {code_type=} ({supported_code_types=})") 20h
839 return 0 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgugRhCh]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgTheeHgfeIgUh]e^ed gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk BhQgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b ShNhDh`ePhOhAhphqhrhshthuhvhwhxhyh{e|eTgRgSgUgR XgVgJhFhGhHhYgMhWgS Qh
842cdef object _nvrtc_compile_and_extract(
843 cynvrtc.nvrtcProgram prog, str target_type, object name_expressions,
844 object logs, list options_list, str name,
845):
846 """Run nvrtcCompileProgram on *prog* and extract the output.
848 This is the inner compile+extract loop, factored out so the PCH
849 auto-retry path can call it on a fresh program handle.
850 """
851 cdef size_t output_size = 0 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{e|eR S
852 cdef size_t logsize = 0 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{e|eR S
853 cdef vector[const char*] options_vec
854 cdef char* data_ptr = NULL 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{e|eR S
855 cdef bytes name_bytes
856 cdef const char* name_ptr = NULL 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{e|eR S
857 cdef const char* lowered_name = NULL 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{e|eR S
858 cdef dict symbol_mapping = {} 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{e|eR S
860 # Add name expressions before compilation
861 if name_expressions: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{e|eR S
862 for n in name_expressions: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.bl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P lcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodY Z pdqdrdsdtdudvdwdxdydzdAdBdCdDd0 1 EdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d2 3 8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d4 5 :d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefe
863 name_bytes = n.encode() if isinstance(n, str) else n 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.bl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P lcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodY Z pdqdrdsdtdudvdwdxdydzdAdBdCdDd0 1 EdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d2 3 8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d4 5 :d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefe
864 name_ptr = <const char*>name_bytes 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.bl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P lcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodY Z pdqdrdsdtdudvdwdxdydzdAdBdCdDd0 1 EdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d2 3 8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d4 5 :d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefe
865 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcAddNameExpression(prog, name_ptr)) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.bl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P lcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodY Z pdqdrdsdtdudvdwdxdydzdAdBdCdDd0 1 EdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d2 3 8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d4 5 :d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefe
867 # Build options array
868 options_vec.resize(len(options_list)) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{e|eR S
869 for i in range(len(options_list)): 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{e|eR S
870 options_vec[i] = <const char*>(<bytes>options_list[i]) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{e|eR S
872 # Compile
873 with nogil: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{e|eR S
874 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcCompileProgram(prog, <int>options_vec.size(), options_vec.data())) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{e|eR S
876 # Get compiled output based on target type
877 if target_type == "ptx": 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euek `e{e|eR S
878 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPTXSize(prog, &output_size)) 2xeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ee f g N O P d gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euek `e{e
879 data = bytearray(output_size) 2xeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ee f g N O P d gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euek `e{e
880 data_ptr = <char*>(<bytearray>data) 2xeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ee f g N O P d gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euek `e{e
881 with nogil: 2xeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ee f g N O P d gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euek `e{e
882 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPTX(prog, data_ptr)) 2xeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ee f g N O P d gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euek `e{e
883 elif target_type == "cubin": 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:b}e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIg|eR S
884 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetCUBINSize(prog, &output_size)) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:b;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtg]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIg|eR S
885 data = bytearray(output_size) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:b;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtg]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIg|eR S
886 data_ptr = <char*>(<bytearray>data) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:b;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtg]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIg|eR S
887 with nogil: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:b;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtg]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIg|eR S
888 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetCUBIN(prog, data_ptr)) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:b;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtg]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIg|eR S
889 else: # ltoir
890 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLTOIRSize(prog, &output_size)) 2}eV W X ug
891 data = bytearray(output_size) 2}eV W X ug
892 data_ptr = <char*>(<bytearray>data) 2}eV W X ug
893 with nogil: 2}eV W X ug
894 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLTOIR(prog, data_ptr)) 2}eV W X ug
896 # Get lowered names after compilation
897 if name_expressions: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euek `e{e|eR S
898 for n in name_expressions: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.bl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P lcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodY Z pdqdrdsdtdudvdwdxdydzdAdBdCdDd0 1 EdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d2 3 8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d4 5 :d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefe
899 name_bytes = n.encode() if isinstance(n, str) else n 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.bl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P lcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodY Z pdqdrdsdtdudvdwdxdydzdAdBdCdDd0 1 EdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d2 3 8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d4 5 :d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefe
900 name_ptr = <const char*>name_bytes 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.bl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P lcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodY Z pdqdrdsdtdudvdwdxdydzdAdBdCdDd0 1 EdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d2 3 8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d4 5 :d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefe
901 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLoweredName(prog, name_ptr, &lowered_name)) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.bl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P lcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodY Z pdqdrdsdtdudvdwdxdydzdAdBdCdDd0 1 EdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d2 3 8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d4 5 :d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefe
902 symbol_mapping[n] = lowered_name if lowered_name != NULL else None 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.bl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P lcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodY Z pdqdrdsdtdudvdwdxdydzdAdBdCdDd0 1 EdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d2 3 8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d4 5 :d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefe
904 # Get compilation log if requested
905 if logs is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euek `e{e|eR S
906 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetProgramLogSize(prog, &logsize)) 1k
907 if logsize > 1: 1k
908 log = bytearray(logsize) 1k
909 data_ptr = <char*>(<bytearray>log) 1k
910 with nogil: 1k
911 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetProgramLog(prog, data_ptr)) 1k
912 logs.write(log.decode("utf-8", errors="backslashreplace")) 1k
914 return ObjectCode._init(bytes(data), target_type, symbol_mapping=symbol_mapping, name=name) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euek `e{e|eR S
917cdef int _nvrtc_pch_apis_cached = -1 # -1 = unchecked
919cdef bint _has_nvrtc_pch_apis():
920 global _nvrtc_pch_apis_cached
921 if _nvrtc_pch_apis_cached < 0: 1dcj
922 _nvrtc_pch_apis_cached = hasattr(nvrtc, "nvrtcGetPCHCreateStatus") 1j
923 return _nvrtc_pch_apis_cached 1dcj
926cdef object _read_pch_status(cynvrtc.nvrtcProgram prog):
927 """Query nvrtcGetPCHCreateStatus and translate to a high-level string."""
928 cdef cynvrtc.nvrtcResult err
929 with nogil: 1dcj
930 err = cynvrtc.nvrtcGetPCHCreateStatus(prog) 1dcj
931 if err == cynvrtc.nvrtcResult.NVRTC_SUCCESS: 1dcj
932 return PCHStatusType.CREATED 1dcj
933 if err == cynvrtc.nvrtcResult.NVRTC_ERROR_PCH_CREATE_HEAP_EXHAUSTED:
934 return None # sentinel: caller should auto-retry
935 if err == cynvrtc.nvrtcResult.NVRTC_ERROR_NO_PCH_CREATE_ATTEMPTED:
936 return PCHStatusType.NOT_ATTEMPTED
937 return PCHStatusType.FAILED
940cdef object Program_compile_nvrtc(Program self, str target_type, object name_expressions, object logs):
941 """Compile using NVRTC backend and return ObjectCode."""
942 cdef cynvrtc.nvrtcProgram prog = as_cu(self._h_nvrtc) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{e|eR S
943 cdef list options_list = self._options.as_bytes("nvrtc", target_type) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{e|eR S
945 result = _nvrtc_compile_and_extract( 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{e|eR S
946 prog, target_type, name_expressions, logs, options_list, self._options.name, 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{e|eR S
947 )
949 cdef bint pch_creation_possible = self._options.create_pch or self._options.pch 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euek `e{e|eR S
950 if not pch_creation_possible or not _has_nvrtc_pch_apis(): 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euek `e{e|eR S
951 self._pch_status = None 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIggec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*e+e,euek `e{e|eR S
952 return result 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIggec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*e+e,euek `e{e|eR S
954 try: 1dcj
955 status = _read_pch_status(prog) 1dcj
956 except RuntimeError as e:
957 raise RuntimeError(
958 "PCH was requested but the runtime libnvrtc does not support "
959 "PCH APIs. Update to CUDA toolkit 12.8 or newer."
960 ) from e
962 if status is not None: 1dcj
963 self._pch_status = str(status) 1dcj
964 return result 1dcj
966 # Heap exhausted — auto-resize and retry with a fresh program
967 cdef size_t required = 0
968 with nogil:
969 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPCHHeapSizeRequired(prog, &required))
970 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcSetPCHHeapSize(required))
972 cdef cynvrtc.nvrtcProgram retry_prog
973 cdef const char* code_ptr = <const char*>self._code
974 cdef const char* name_ptr = <const char*>self._options._name
975 with nogil:
976 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcCreateProgram(
977 &retry_prog, code_ptr, name_ptr, 0, NULL, NULL))
978 self._h_nvrtc = create_nvrtc_program_handle(retry_prog)
980 result = _nvrtc_compile_and_extract(
981 retry_prog, target_type, name_expressions, logs, options_list, self._options.name,
982 )
984 status = _read_pch_status(retry_prog)
985 self._pch_status = status if status is not None else str(PCHStatusType.FAILED)
986 return result
989cdef object Program_compile_nvvm(Program self, str target_type, object logs):
990 """Compile using NVVM backend and return ObjectCode."""
991 cdef cynvvm.nvvmProgram prog = as_cu(self._h_nvvm) 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNga b
992 cdef size_t output_size = 0 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNga b
993 cdef size_t logsize = 0 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNga b
994 cdef vector[const char*] options_vec
995 cdef char* data_ptr = NULL 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNga b
996 cdef bytes libdevice_bytes
997 cdef const char* libdevice_ptr
998 cdef size_t libdevice_len
999 # Build options array
1000 options_list = self._options.as_bytes("nvvm", target_type) 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNga b
1001 options_vec.resize(len(options_list)) 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNga b
1002 for i in range(len(options_list)): 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNga b
1003 options_vec[i] = <const char*>(<bytes>options_list[i]) 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNga b
1005 # Serialize NVVM program mutation/use per Program instance.
1006 with self._compile_lock: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNga b
1007 with nogil: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNga b
1008 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmVerifyProgram(prog, <int>options_vec.size(), options_vec.data())) 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNga b
1010 # Load libdevice if requested - following numba-cuda.
1011 if self._use_libdevice and not self._libdevice_added: 2]e^e-e~eJgafKgbfLgve.ecfMgwe/edfNga b
1012 libdevice_path = _find_libdevice_path()
1013 with open(libdevice_path, "rb") as f:
1014 libdevice_bytes = f.read()
1015 libdevice_ptr = <const char*>libdevice_bytes
1016 libdevice_len = len(libdevice_bytes)
1017 with nogil:
1018 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmLazyAddModuleToProgram(
1019 prog, libdevice_ptr, libdevice_len, NULL))
1020 self._libdevice_added = True
1022 with nogil: 2]e^e-e~eJgafKgbfLgve.ecfMgwe/edfNga b
1023 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmCompileProgram(prog, <int>options_vec.size(), options_vec.data())) 2]e^e-e~eJgafKgbfLgve.ecfMgwe/edfNga b
1025 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetCompiledResultSize(prog, &output_size)) 2]e^e-e~eJgafKgbfLgve.ecfMgwe/edfNga b
1026 data = bytearray(output_size) 2]e^e-e~eJgafKgbfLgve.ecfMgwe/edfNga b
1027 data_ptr = <char*>(<bytearray>data) 2]e^e-e~eJgafKgbfLgve.ecfMgwe/edfNga b
1028 with nogil: 2]e^e-e~eJgafKgbfLgve.ecfMgwe/edfNga b
1029 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetCompiledResult(prog, data_ptr)) 2]e^e-e~eJgafKgbfLgve.ecfMgwe/edfNga b
1031 # Get compilation log if requested
1032 if logs is not None: 2]e^e-e~eJgafKgbfLgve.ecfMgwe/edfNga b
1033 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetProgramLogSize(prog, &logsize))
1034 if logsize > 1:
1035 log = bytearray(logsize)
1036 data_ptr = <char*>(<bytearray>log)
1037 with nogil:
1038 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetProgramLog(prog, data_ptr))
1039 logs.write(log.decode("utf-8", errors="backslashreplace"))
1041 return ObjectCode._init(bytes(data), target_type, name=self._options.name) 2]e^e-e~eJgafKgbfLgve.ecfMgwe/edfNga b
1043# Supported target types per backend
1044cdef dict SUPPORTED_TARGETS = {
1045 CompilerBackendType.NVRTC: (ObjectCodeFormatType.PTX, ObjectCodeFormatType.CUBIN, ObjectCodeFormatType.LTOIR),
1046 CompilerBackendType.NVVM: (ObjectCodeFormatType.PTX, ObjectCodeFormatType.LTOIR),
1047 CompilerBackendType.NVJITLINK: (ObjectCodeFormatType.CUBIN, ObjectCodeFormatType.PTX),
1048 CompilerBackendType.DRIVER: (ObjectCodeFormatType.CUBIN, ObjectCodeFormatType.PTX),
1049}
1052cdef object Program_compile(Program self, str target_type, object name_expressions, object logs):
1053 """Compile the program to the specified target type."""
1054 # Validate target_type for this backend
1055 supported = SUPPORTED_TARGETS.get(self._backend) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIg]e^ed gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk Qgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b Dh`ephqhrhshthuhvhwhxhyh{e|eR S
1056 if supported is None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIg]e^ed gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk Qgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b Dh`ephqhrhshthuhvhwhxhyh{e|eR S
1057 raise ValueError(f'Unknown backend="{self._backend}"')
1058 if target_type not in supported: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIg]e^ed gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk Qgzh-e~eJgafKgbfLgve.ecfMgwe/edfNga b Dh`ephqhrhshthuhvhwhxhyh{e|eR S
1059 raise ValueError( 2zhDh
1060 f'Unsupported target_type="{target_type}" for {self._backend} ' 2zhDh
1061 f'(supported: {", ".join(repr(t) for t in supported)})' 2zhDh
1062 )
1064 if self._backend == "NVRTC": 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIg]e^ed gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk Qg-e~eJgafKgbfLgve.ecfMgwe/edfNga b `ephqhrhshthuhvhwhxhyh{e|eR S
1065 if target_type == "ptx" and not _can_load_generated_ptx(): 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{e|eR S
1066 warn( 2xeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ee f g N O P d gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{e
1067 "The CUDA driver version is older than the backend version. "
1068 "The generated ptx will not be loadable by the current driver.",
1069 stacklevel=2,
1070 category=RuntimeWarning, 2xeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ee f g N O P d gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{e
1071 )
1072 return Program_compile_nvrtc(self, target_type, name_expressions, logs) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `e{e|eR S
1074 elif self._backend == "NVVM": 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNga b phqhrhshthuhvhwhxhyh
1075 return Program_compile_nvvm(self, target_type, logs) 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNga b
1077 else:
1078 return self._linker.link(target_type) 2phqhrhshthuhvhwhxhyh
1081cdef inline list _prepare_nvrtc_options_impl(object opts):
1082 """Build NVRTC-specific compiler options."""
1083 options = [f"-arch={opts.arch}"] 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZgEhIhKhLh{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1084 if opts.relocatable_device_code is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZgEhIhKhLh{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1085 options.append(f"--relocatable-device-code={_handle_boolean_option(opts.relocatable_device_code)}") 2xeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ekflfoe
1086 if opts.extensible_whole_program is not None and opts.extensible_whole_program: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZgEhIhKhLh{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1087 options.append("--extensible-whole-program") 2!e
1088 if opts.debug is not None and opts.debug: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZgEhIhKhLh{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1089 options.append("--device-debug") 2meneZg
1090 if opts.lineinfo is not None and opts.lineinfo: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZgEhIhKhLh{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1091 options.append("--generate-line-info") 2Zg
1092 if opts.device_code_optimize is not None and opts.device_code_optimize: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZgEhIhKhLh{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1093 options.append("--dopt=on") 2me
1094 if opts.ptxas_options is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZgEhIhKhLh{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1095 opt_name = "--ptxas-options" 167
1096 if isinstance(opts.ptxas_options, str): 167
1097 options.append(f"{opt_name}={opts.ptxas_options}")
1098 elif is_sequence(opts.ptxas_options): 167
1099 for opt_value in opts.ptxas_options: 167
1100 options.append(f"{opt_name}={opt_value}") 167
1101 if opts.max_register_count is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZgEhIhKhLh{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1102 options.append(f"--maxrregcount={opts.max_register_count}") 2oe
1103 if opts.ftz is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZgEhIhKhLh{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1104 options.append(f"--ftz={_handle_boolean_option(opts.ftz)}") 2leZg
1105 if opts.prec_sqrt is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZgEhIhKhLh{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1106 options.append(f"--prec-sqrt={_handle_boolean_option(opts.prec_sqrt)}") 2le
1107 if opts.prec_div is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZgEhIhKhLh{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1108 options.append(f"--prec-div={_handle_boolean_option(opts.prec_div)}") 2le
1109 if opts.fma is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZgEhIhKhLh{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1110 options.append(f"--fmad={_handle_boolean_option(opts.fma)}") 2pe
1111 if opts.use_fast_math is not None and opts.use_fast_math: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZgEhIhKhLh{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1112 options.append("--use_fast_math") 2pe*g
1113 if opts.extra_device_vectorization is not None and opts.extra_device_vectorization: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZgEhIhKhLh{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1114 options.append("--extra-device-vectorization") 25e
1115 if opts.link_time_optimization is not None and opts.link_time_optimization: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZgEhIhKhLh{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1116 options.append("--dlink-time-opt") 2}eV W X 6e
1117 if opts.gen_opt_lto is not None and opts.gen_opt_lto: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZgEhIhKhLh{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1118 options.append("--gen-opt-lto") 2$e
1119 if opts.define_macro is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZgEhIhKhLh{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1120 _process_define_macro(options, opts.define_macro) 2U Q h i EhIhKhLh
1121 if opts.undefine_macro is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1122 if isinstance(opts.undefine_macro, str): 2ieje
1123 options.append(f"--undefine-macro={opts.undefine_macro}") 2je
1124 elif is_sequence(opts.undefine_macro): 2ie
1125 for macro in opts.undefine_macro: 2ie
1126 options.append(f"--undefine-macro={macro}") 2ie
1127 if opts.include_path is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1128 if isinstance(opts.include_path, str): 2:e;e=e?e@e[el m n o p q r s t u v w x y z A B C D E F G H I J K L M je0g1g2g6g8g
1129 options.append(f"--include-path={opts.include_path}") 2je8g
1130 elif is_sequence(opts.include_path): 2:e;e=e?e@e[el m n o p q r s t u v w x y z A B C D E F G H I J K L M 0g1g2g6g
1131 for path in opts.include_path: 2:e;e=e?e@e[el m n o p q r s t u v w x y z A B C D E F G H I J K L M 0g1g2g
1132 options.append(f"--include-path={path}") 2:e;e=e?e@e[el m n o p q r s t u v w x y z A B C D E F G H I J K L M
1133 if opts.pre_include is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1134 if isinstance(opts.pre_include, str): 23g7g
1135 options.append(f"--pre-include={opts.pre_include}")
1136 elif is_sequence(opts.pre_include): 23g7g
1137 for header in opts.pre_include: 23g
1138 options.append(f"--pre-include={header}")
1139 if opts.no_source_include is not None and opts.no_source_include: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1140 options.append("--no-source-include") 2'e
1141 if opts.std is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1142 options.append(f"--std={opts.std}") 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[el m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:b;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodY Z pdqdrdsdtdudvdwdxdydzdAdBdCdDd0 1 EdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d2 3 8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d4 5 :d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefe6 7
1143 if opts.builtin_move_forward is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1144 options.append(f"--builtin-move-forward={_handle_boolean_option(opts.builtin_move_forward)}") 29e
1145 if opts.builtin_initializer_list is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1146 options.append(f"--builtin-initializer-list={_handle_boolean_option(opts.builtin_initializer_list)}") 2qe
1147 if opts.disable_warnings is not None and opts.disable_warnings: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1148 options.append("--disable-warnings") 2qe
1149 if opts.restrict is not None and opts.restrict: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1150 options.append("--restrict") 2re
1151 if opts.device_as_default_execution_space is not None and opts.device_as_default_execution_space: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1152 options.append("--device-as-default-execution-space") 2re
1153 if opts.device_int128 is not None and opts.device_int128: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1154 options.append("--device-int128") 2se
1155 if opts.device_float128 is not None and opts.device_float128: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1156 options.append("--device-float128")
1157 if opts.optimization_info is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1158 options.append(f"--optimization-info={opts.optimization_info}") 2se
1159 if opts.no_display_error_number is not None and opts.no_display_error_number: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1160 options.append("--no-display-error-number") 27e
1161 if opts.diag_error is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1162 if isinstance(opts.diag_error, int): 2keT
1163 options.append(f"--diag-error={opts.diag_error}") 2ke
1164 elif is_sequence(opts.diag_error): 1T
1165 for error in opts.diag_error: 1T
1166 options.append(f"--diag-error={error}") 1T
1167 if opts.diag_suppress is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1168 if isinstance(opts.diag_suppress, int): 2keT
1169 options.append(f"--diag-suppress={opts.diag_suppress}") 2ke
1170 elif is_sequence(opts.diag_suppress): 1T
1171 for suppress in opts.diag_suppress: 1T
1172 options.append(f"--diag-suppress={suppress}") 1T
1173 if opts.diag_warn is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1174 if isinstance(opts.diag_warn, int): 2te
1175 options.append(f"--diag-warn={opts.diag_warn}") 2te
1176 elif is_sequence(opts.diag_warn):
1177 for w in opts.diag_warn:
1178 options.append(f"--diag-warn={w}")
1179 if opts.brief_diagnostics is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1180 options.append(f"--brief-diagnostics={_handle_boolean_option(opts.brief_diagnostics)}") 28e
1181 if opts.time is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1182 options.append(f"--time={opts.time}")
1183 if opts.split_compile is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1184 options.append(f"--split-compile={opts.split_compile}")
1185 if opts.fdevice_syntax_only is not None and opts.fdevice_syntax_only: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1186 options.append("--fdevice-syntax-only") 2#e
1187 if opts.minimal is not None and opts.minimal: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1188 options.append("--minimal") 2%e
1189 if opts.no_cache is not None and opts.no_cache: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1190 options.append("--no-cache") 2(e
1191 if opts.fdevice_time_trace is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1192 options.append(f"--fdevice-time-trace={opts.fdevice_time_trace}") 2he
1193 if opts.frandom_seed is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1194 options.append(f"--frandom-seed={opts.frandom_seed}") 2)e
1195 if opts.ofast_compile is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1196 options.append(f"--Ofast-compile={opts.ofast_compile}") 2*e
1197 # PCH options (CUDA 12.8+)
1198 if opts.pch is not None and opts.pch: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1199 options.append("--pch") 1j
1200 if opts.create_pch is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1201 options.append(f"--create-pch={opts.create_pch}") 1dc
1202 if opts.use_pch is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1203 options.append(f"--use-pch={opts.use_pch}") 1c
1204 if opts.pch_dir is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1205 options.append(f"--pch-dir={opts.pch_dir}")
1206 if opts.pch_verbose is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1207 options.append(f"--pch-verbose={_handle_boolean_option(opts.pch_verbose)}") 2+e
1208 if opts.pch_messages is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1209 options.append(f"--pch-messages={_handle_boolean_option(opts.pch_messages)}") 2,e
1210 if opts.instantiate_templates_in_pch is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1211 options.append( 2ue
1212 f"--instantiate-templates-in-pch={_handle_boolean_option(opts.instantiate_templates_in_pch)}" 2ue
1213 )
1214 if opts.numba_debug: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1215 options.append("--numba-debug") 2ne
1216 return [o.encode() for o in options] 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b:e;e=e?eefffgfhf@e[eifl m n o p q r s t u v w x y z A B C D E F G H I J K L M /b:bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e}e3e4e;b=b?b@b[b]b^b_bjf`b{b|b}b~bacbcccdcecfcgchcicjckce f g V W X N O P kflflcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;cmf=cnfof?cpf@cqf[c]c^crf_csf`c{c|c}c~cadbdcdddedtffdufgdvfhdwfidjdkdxfldyfmdndodzfY AfBfCfDfEfFfGfHfIfZ JfKfLfMfNfpdqdrdsdtdudvdwdxdydzdAdOfBdPfCdDdQf0 RfSfTfUfVfWfXfYfZf0f1 1f2f3f4f5fEdFdGd6fHd7fId8fJd9fKdLdMd!fNd#fOdPdQdRdSdTdUdVdWdXd$fYd%fZd'f0d(f1d2d3d)f4d*f5d6d7d+f2 ,f-f.f/f:f;f=f?f@f3 [f]f^f_f`f8d9d!d#d$d%d'd(d)d*d+d,d{f-d|f.d/d}f4 ~fagbgcgdgegfggghgig5 jgkglgmgng:d;d=dog?dpgqgrg@dsg[dtgug]dvg^dwg_dxg`dyg{dzg|dAg}dBg~dCgaeDgbeEgceFgdeGgeeHgfeIgd gec he_emeneoelepe5e6eU Q h i iejeqerese7ekeT te6 7 8e9e!e#e$e%e'e(e)e*ej +e,euePgk `eZg{e|e0g1g2g6g3g7g8g+g,g-g.g/g:g;g=g?g*g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhTgRgSgUgR XgVgYgWgS
1219cdef inline object _prepare_nvvm_options_impl(object opts, bint as_bytes):
1220 """Build NVVM-specific compiler options."""
1221 options = [] 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1223 # Options supported by NVVM
1224 assert opts.arch is not None 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1225 arch = opts.arch 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1226 if arch.startswith("sm_"): 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1227 arch = f"compute_{arch[3:]}" 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1228 options.append(f"-arch={arch}") 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1229 if opts.debug is not None and opts.debug: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1230 options.append("-g") 2)g4g
1231 if opts.numba_debug: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1232 options.append("--numba-debug") 2)g
1233 if opts.device_code_optimize is False: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1234 options.append("-opt=0") 2~eJgafKgcfMg
1235 elif opts.device_code_optimize is True: 2]e^eQg-ebfLgve.ewe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1236 options.append("-opt=3") 2ve.ewe/e4g
1237 # NVVM uses 0/1 instead of true/false for boolean options
1238 if opts.ftz is not None: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1239 options.append(f"-ftz={'1' if opts.ftz else '0'}") 2ve.ewe/e4g
1240 if opts.prec_sqrt is not None: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1241 options.append(f"-prec-sqrt={'1' if opts.prec_sqrt else '0'}") 2ve.ewe/e
1242 if opts.prec_div is not None: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1243 options.append(f"-prec-div={'1' if opts.prec_div else '0'}") 2ve.ewe/e
1244 if opts.fma is not None: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1245 options.append(f"-fma={'1' if opts.fma else '0'}") 2ve.ewe/e
1247 # Check for unsupported options and raise error if they are set
1248 unsupported = [] 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1249 if opts.relocatable_device_code is not None: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1250 unsupported.append("relocatable_device_code")
1251 if opts.extensible_whole_program is not None and opts.extensible_whole_program: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1252 unsupported.append("extensible_whole_program")
1253 if opts.lineinfo is not None and opts.lineinfo: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1254 unsupported.append("lineinfo") 2oh
1255 if opts.ptxas_options is not None: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1256 unsupported.append("ptxas_options")
1257 if opts.max_register_count is not None: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1258 unsupported.append("max_register_count")
1259 if opts.use_fast_math is not None and opts.use_fast_math: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1260 unsupported.append("use_fast_math")
1261 if opts.extra_device_vectorization is not None and opts.extra_device_vectorization: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1262 unsupported.append("extra_device_vectorization")
1263 if opts.gen_opt_lto is not None and opts.gen_opt_lto: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1264 unsupported.append("gen_opt_lto")
1265 if opts.define_macro is not None: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1266 unsupported.append("define_macro")
1267 if opts.undefine_macro is not None: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1268 unsupported.append("undefine_macro")
1269 if opts.include_path is not None: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1270 unsupported.append("include_path")
1271 if opts.pre_include is not None: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1272 unsupported.append("pre_include")
1273 if opts.no_source_include is not None and opts.no_source_include: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1274 unsupported.append("no_source_include")
1275 if opts.std is not None: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1276 unsupported.append("std")
1277 if opts.builtin_move_forward is not None: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1278 unsupported.append("builtin_move_forward")
1279 if opts.builtin_initializer_list is not None: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1280 unsupported.append("builtin_initializer_list")
1281 if opts.disable_warnings is not None and opts.disable_warnings: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1282 unsupported.append("disable_warnings")
1283 if opts.restrict is not None and opts.restrict: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1284 unsupported.append("restrict")
1285 if opts.device_as_default_execution_space is not None and opts.device_as_default_execution_space: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1286 unsupported.append("device_as_default_execution_space")
1287 if opts.device_int128 is not None and opts.device_int128: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1288 unsupported.append("device_int128")
1289 if opts.optimization_info is not None: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1290 unsupported.append("optimization_info")
1291 if opts.no_display_error_number is not None and opts.no_display_error_number: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1292 unsupported.append("no_display_error_number")
1293 if opts.diag_error is not None: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1294 unsupported.append("diag_error")
1295 if opts.diag_suppress is not None: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1296 unsupported.append("diag_suppress")
1297 if opts.diag_warn is not None: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1298 unsupported.append("diag_warn")
1299 if opts.brief_diagnostics is not None: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1300 unsupported.append("brief_diagnostics")
1301 if opts.time is not None: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1302 unsupported.append("time")
1303 if opts.split_compile is not None: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1304 unsupported.append("split_compile")
1305 if opts.fdevice_syntax_only is not None and opts.fdevice_syntax_only: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1306 unsupported.append("fdevice_syntax_only")
1307 if opts.minimal is not None and opts.minimal: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1308 unsupported.append("minimal")
1309 if unsupported: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b oh4g5g9g!g#g$glhmhnh%g'g(g
1310 raise CUDAError(f"The following options are not supported by NVVM backend: {', '.join(unsupported)}") 2oh
1312 if as_bytes: 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b 4g5g9g!g#g$glhmhnh%g'g(g
1313 return [o.encode() for o in options] 2]e^eQg-e~eJgafKgbfLgve.ecfMgwe/edfNg)ga b 4g5g9g!g#g$glhmhnh%g'g(g
1314 else:
1315 return options