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

748 statements  

« prev     ^ index     » next       coverage.py v7.16.0, created at 2026-09-10 02:27 +0000

1# SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. 

2# 

3# SPDX-License-Identifier: Apache-2.0 

4"""Compilation machinery for CUDA programs. 

5  

6This module provides :class:`Program` for compiling source code into 

7:class:`~cuda.core.ObjectCode`, with :class:`ProgramOptions` for configuration. 

8""" 

9  

10from __future__ import annotations 

11  

12from dataclasses import dataclass 

13import os 

14import re 

15import sys 

16import tempfile 

17import threading 

18from typing import TYPE_CHECKING 

19from warnings import warn 

20  

21if TYPE_CHECKING: 

22 from cuda.core.utils._program_cache import ProgramCacheResource # no-cython-lint 

23  

24from cuda.bindings import nvrtc 

25from cuda.pathfinder._optional_cuda_import import _optional_cuda_import 

26  

27from libcpp.vector cimport vector 

28  

29from ._resource_handles cimport ( 

30 as_cu, 

31 as_py, 

32 create_nvrtc_program_handle, 

33 create_nvvm_program_handle, 

34) 

35from cuda.bindings cimport cynvrtc, cynvvm 

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

37from cuda.core._device import Device 

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

39from cuda.core._module import ObjectCode 

40from cuda.core._utils.clear_error_support import assert_type 

41from cuda.core._utils.cuda_utils import ( 

42 CUDAError, 

43 _handle_boolean_option, 

44 check_or_create_options, 

45 handle_return, 

46 is_nested_sequence, 

47 is_sequence, 

48) 

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

50from cuda.core.utils._cache_dir import _default_cache_dir 

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

52  

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

54  

55ProgramHandleT = nvrtc.nvrtcProgram | int | LinkerHandleT 

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

57  

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

59""" 

60  

61  

62# ============================================================================= 

63# Principal Class 

64# ============================================================================= 

65  

66  

67cdef inline int Program_check_open(Program self) except -1: 

68 if self.is_closed: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euh:e;eWii _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c vh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g Qi+f~hai9f3hbicidieifi!fgihiiiji, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

69 raise RuntimeError("Program has been closed") 2Wi

70 return 0 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euh:e;ei _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c vh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g Qi+f~hai9f3hbicidieifi!fgihiiiji, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

71  

72  

73cdef class Program: 

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

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

76  

77 This object provides a unified interface to multiple underlying 

78 compiler libraries. Compilation support is enabled for a wide 

79 range of code types and compilation types. 

80  

81 Parameters 

82 ---------- 

83 code : str | bytes | bytearray 

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

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

86 code_type : SourceCodeType | str 

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

88 options : :class:`ProgramOptions`, optional 

89 Options to customize the compilation process. 

90 """ 

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

92 Program_init(self, code, str(code_type), options) 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9iZi5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#i:e;eWii _ %ij ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c Pivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 'i5i1iQi+f3i+i(i2i$iOi~hai9f3hbicidieifi!fgihiiiji, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

93  

94 def close(self) -> None: 

95 """Destroy this program.""" 

96 if self._linker is not None: 2]i:e;eWii _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c Pivh}hq /e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 1iOibicidieifigihiiiji, #f

97 self._linker.close() 2Oibicidieifigihiiiji

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

99 self._h_nvrtc.reset() 2]i:e;eWii _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c Pivh}hq /e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 1iOibicidieifigihiiiji, #f

100 self._h_nvvm.reset() 2]i:e;eWii _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c Pivh}hq /e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 1iOibicidieifigihiiiji, #f

101 self._cleanup_debug_source() 2]i:e;eWii _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c Pivh}hq /e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 1iOibicidieifigihiiiji, #f

102  

103 def __dealloc__(self): 

104 self._cleanup_debug_source() 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLc`jOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd{j0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh|j}j5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh~j*eth+euhak:e;eWii bk_ %ij ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c Pivh}hq /e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 'i5i1iQick3i+i(i2i$iOi~hai9f3hbicidieifi!fgihiiiji, #fzhxhyhAh( dkChBhUiRiSiTiVi) Xi

105  

106 def _cleanup_debug_source(self): 

107 # Only a temp file this Program wrote may be removed, and the name having 

108 # moved off options.name is what says one was written. Without that test 

109 # the caller's own file is deleted whenever options.name happens to match 

110 # something on disk, since the unredirected name is just that path. 

111 if self._nvrtc_name is not None and self._nvrtc_name != self._options._name: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLc`jOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd]i{j0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh|j}j5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh~j*eth+euhak:e;eWii bk_ %ij ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c Pivh}hq /e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 'i5i1iQick3i+i(i2i$iOi~hai9f3hbicidieifi!fgihiiiji, #fzhxhyhAh( dkChBhUiRiSiTiVi) Xi

112 self._unlink_debug_source(self._nvrtc_name.decode()) 1efabc

113  

114 def _unlink_debug_source(self, path: str) -> None: 

115 try: 2=fe f a h b c

116 os.unlink(path) 1efahbc

117 except OSError: 1efabc

118 pass 1efabc

119  

120 def _try_materialize_nvrtc_debug_source(self, code: str) -> str | None: 

121 """Write *code* to a ``{caller}_{kernel}_XXXXXXXX.cu`` temp file for cuda-gdb. 

122  

123 ``caller`` is the Python file stem (no ``.py``). ``kernel`` is the first 

124 ``__global__`` function name, or ``kernel`` if none is found. 

125  

126 Returns None if the filesystem is not writable, so the caller can fall back 

127 to the label-only behavior instead of failing the compile. 

128 """ 

129 frame = sys._getframe() 1efahkbc

130 while frame and frame.f_globals.get("__name__", "").startswith("cuda.core"): 1efahkbc

131 frame = frame.f_back 

132 caller = "program" 1efahkbc

133 if frame: 2=fe f a h k b c

134 caller = os.path.splitext(os.path.basename(frame.f_code.co_filename))[0] 1efahkbc

135 match = re.search(r"__global__.*?(\w+)\s*\(", code, re.DOTALL) 1efahkbc

136 prefix = re.sub(r"\W", "_", f"{caller}_{match.group(1) if match else 'kernel'}_") 1efahkbc

137 try: 1efahkbc

138 fd, path = tempfile.mkstemp(prefix=prefix, suffix=".cu") 1efahkbc

139 except OSError: 1k

140 return None 1k

141 try: 1efahbc

142 with os.fdopen(fd, "w", encoding="utf-8") as f: 1efahbc

143 f.write(code) 1efahbc

144 return path 1efabc

145 except OSError: 1h

146 self._unlink_debug_source(path) 1h

147 return None 1h

148  

149 @property 

150 def is_closed(self) -> bool: 

151 """Whether this program has been closed.""" 

152 if self._backend == "NVRTC": 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd]i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euh:e;eWii _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c vh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g Qi+f~hai9f3hbicidieifi!fgihiiiji, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

153 return self._h_nvrtc.get() == NULL 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd]i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhWii _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c Qi+f9f!f, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

154 if self._backend == "NVVM": 2:e;evh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g ~hai3hbicidieifigihiiiji

155 return self._h_nvvm.get() == NULL 2:e;evh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

156 return self._linker is None or self._linker.is_closed 2~hai3hbicidieifigihiiiji

157  

158 def compile( 

159 self, 

160 target_type: ObjectCodeFormatType | str, 

161 name_expressions: tuple[str, ...] | list[str] = (), 

162 logs: object = None, 

163 *, 

164 cache: ProgramCacheResource | None = None, 

165 ) -> ObjectCode: 

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

167  

168 Parameters 

169 ---------- 

170 target_type : ObjectCodeFormatType | str 

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

172 name_expressions : tuple | list, optional 

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

174 Used for template instantiation and similar cases. 

175 logs : object, optional 

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

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

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

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

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

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

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

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

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

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

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

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

188 ``name_expressions`` together with ``cache=`` raises 

189 ``ValueError``: NVRTC populates 

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

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

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

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

194 ``pre_include``, ``pch``, ``use_pch``, ``pch_dir``, NVVM 

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

196 directory component) raise ``ValueError`` via 

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

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

199 pattern directly. 

200  

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

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

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

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

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

206 and vice-versa. 

207  

208 Returns 

209 ------- 

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

211 The compiled object code. 

212 """ 

213 Program_check_open(self) 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euh:e;eWii _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c vh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g Qi+f~hai9f3hbicidieifi!fgihiiiji, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

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

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

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

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

218 # lowercases too. 

219 target_type = str(target_type).lower() 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euh:e;ei _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c vh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g Qi+f~hai9f3hbicidieifi!fgihiiiji, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

220  

221 if cache is None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euh:e;ei _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c vh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g Qi+f~hai9f3hbicidieifi!fgihiiiji, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

222 return _program_compile_uncached(self, target_type, name_expressions, logs) 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euh:e;ei _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c vh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g Qi+f~hai9f3hbicidieifi!fgihiiiji, #fXi

223  

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

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

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

227 # tests that monkeypatch make_program_cache_key via that path 

228 # intercept reliably. 

229 from cuda.core.utils._program_cache import ( 2zhxhyhAh( ChBhUiRiSiTiEhViDh)

230 ProgramCacheResource, 

231 make_program_cache_key, 

232 ) 

233  

234 if not isinstance(cache, ProgramCacheResource): 2zhxhyhAh( ChBhUiRiSiTiEhViDh)

235 raise TypeError( 2Ui

236 "cache must be an instance of " 2Ui

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

238 f"{type(cache).__name__}" 2Ui

239 ) 

240  

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

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

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

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

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

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

247 # would return one without -- silently breaking later 

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

249 # uncached path. Fail loud here instead. 

250 if name_expressions: 2zhxhyhAh( ChBhRiSiTiEhViDh)

251 raise ValueError( 2Vi

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

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

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

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

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

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

258 "hand from the cached ObjectCode." 

259 ) 

260  

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

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

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

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

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

266 # safe; no try/except needed. 

267 code_for_key = self._code if self._code_type == "nvvm" else self._code.decode("utf-8") 2zhxhyhAh( ChBhRiSiTiEhDh)

268  

269 key = make_program_cache_key( 2zhxhyhAh( ChBhRiSiTiEhDh)

270 code=code_for_key, 

271 code_type=self._code_type, 

272 options=self._options, 

273 target_type=target_type, 2zhxhyhAh( ChBhRiSiTiEhDh)

274 ) 

275 hit_bytes = cache.get(key) 2zhxhyhAh( ChBhEhDh)

276 if hit_bytes is not None: 2zhxhyhAh( ChBhDh)

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

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

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

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

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

282 # uncached call would have surfaced. 

283 if ( 2zhxhyhAh( )

284 self._backend == "NVRTC" 2zhxhyhAh( )

285 and target_type == "ptx" 2zhxhyhAh( )

286 and not _can_load_generated_ptx() 2xhyh

287 ): 

288 warn( 2xh

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

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

291 stacklevel=2, 

292 category=RuntimeWarning, 2xh

293 ) 

294 return ObjectCode._init(hit_bytes, target_type, name=self._nvrtc_name.decode()) 2zhxhyhAh( )

295 compiled = _program_compile_uncached(self, target_type, name_expressions, logs) 2zh( ChBhDh)

296 cache[key] = compiled 2zh( BhDh)

297 return compiled 2zh( Bh)

298  

299 @property 

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

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

302  

303 Possible values: 

304  

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

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

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

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

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

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

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

312  

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

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

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

316  

317 .. note:: 

318  

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

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

321 always returns ``None``. 

322 """ 

323 if self._pch_status is None: 1i_

324 return None 1i_

325 return PCHStatusType(self._pch_status) 1i

326  

327 @property 

328 def backend(self) -> CompilerBackendType: 

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

330 return CompilerBackendType(self._backend) 2:e;ej ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfPiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 5i2ibicidieifigihiiiji

331  

332 @property 

333 def handle(self) -> ProgramHandleT: 

334 """Return the underlying handle object. 

335  

336 .. note:: 

337  

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

339  

340 .. caution:: 

341  

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

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

344 """ 

345 if self._backend == "NVRTC": 2]iPiNf3i2iOi

346 return as_py(self._h_nvrtc) 2]i3i2i

347 elif self._backend == "NVVM": 2PiNfOi

348 return as_py(self._h_nvvm) # returns int (NVVM uses raw integers) 2PiNf

349 else: 

350 return self._linker.handle 2Oi

351  

352 def __repr__(self) -> str: 

353 return f"<Program backend='{self._backend}'>" 2]iikjkNf

354  

355  

356# ============================================================================= 

357# Other Public Classes 

358# ============================================================================= 

359  

360  

361@dataclass 

362class ProgramOptions: 

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

364  

365 Attributes 

366 ---------- 

367 name : str, optional 

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

369 When set to `None`, ``"default_program"`` is used. 

370 arch : str, optional 

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

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

373 will be used. 

374 relocatable_device_code : bool, optional 

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

376 Default: False 

377 extensible_whole_program : bool, optional 

378 Do extensible whole program compilation of device code. 

379 Default: False 

380 debug : bool, optional 

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

382 Default: False 

383 lineinfo: bool, optional 

384 Generate line-number information. 

385 Default: False 

386 device_code_optimize : bool, optional 

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

388 for optimized device code. 

389 Default: None 

390 ptxas_options : str | list[str], optional 

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

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

393 Default: None 

394 max_register_count : int, optional 

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

396 Default: None 

397 ftz : bool, optional 

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

399 values. 

400 Default: False 

401 prec_sqrt : bool, optional 

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

403 Default: True 

404 prec_div : bool, optional 

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

406 approximation. 

407 Default: True 

408 fma : bool, optional 

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

410 multiply-add operations. 

411 Default: True 

412 use_fast_math : bool, optional 

413 Make use of fast math operations. 

414 Default: False 

415 extra_device_vectorization : bool, optional 

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

417 Default: False 

418 link_time_optimization : bool, optional 

419 Generate intermediate code for later link-time optimization. 

420 Default: False 

421 gen_opt_lto : bool, optional 

422 Run the optimizer passes before generating the LTO IR. 

423 Default: False 

424 define_macro : str | tuple[str, str] | list[str | tuple[str, str]], optional 

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

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

427 Default: None 

428 undefine_macro : str | list[str], optional 

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

430 Default: None 

431 include_path : str | list[str], optional 

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

433 Default: None 

434 use_bundled_headers : bool, optional 

435 Use the CUDA and CCCL headers bundled with NVRTC, installed into a per-user cache 

436 directory, instead of requiring a full CUDA Toolkit installation. Implemented via NVRTC's 

437 ``--use-bundled-headers=<dir>`` compiler option, which installs the headers into the cache 

438 directory (skipping installation if already present and up to date) and adds that 

439 directory to the include search path. NVRTC only. 

440 Default: False 

441 pre_include : str | list[str], optional 

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

443 Default: None 

444 no_source_include : bool, optional 

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

446 Default: False 

447 std : str, optional 

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

449 Default: c++17 

450 builtin_move_forward : bool, optional 

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

452 Default: True 

453 builtin_initializer_list : bool, optional 

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

455 Default: True 

456 disable_warnings : bool, optional 

457 Inhibit all warning messages. 

458 Default: False 

459 restrict : bool, optional 

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

461 Default: False 

462 device_as_default_execution_space : bool, optional 

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

464 Default: False 

465 device_int128 : bool, optional 

466 Allow the __int128 type in device code. 

467 Default: False 

468 optimization_info : str, optional 

469 Provide optimization reports for the specified kind of optimization. 

470 Default: None 

471 no_display_error_number : bool, optional 

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

473 Default: False 

474 diag_error : int | list[int], optional 

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

476 Default: None 

477 diag_suppress : int | list[int], optional 

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

479 Default: None 

480 diag_warn : int | list[int], optional 

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

482 Default: None 

483 brief_diagnostics : bool, optional 

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

485 Default: False 

486 time : str, optional 

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

488 Default: None 

489 split_compile : int, optional 

490 Perform compiler optimizations in parallel. 

491 Default: 1 

492 fdevice_syntax_only : bool, optional 

493 Ends device compilation after front-end syntax checking. 

494 Default: False 

495 minimal : bool, optional 

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

497 Default: False 

498 no_cache : bool, optional 

499 Disable compiler caching. 

500 Default: False 

501 fdevice_time_trace : str, optional 

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

503 Default: None 

504 device_float128 : bool, optional 

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

506 Default: False 

507 frandom_seed : str, optional 

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

509 Default: None 

510 ofast_compile : str, optional 

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

512 Default: None 

513 pch : bool, optional 

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

515 Default: False 

516 create_pch : str, optional 

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

518 Default: None 

519 use_pch : str, optional 

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

521 Default: None 

522 pch_dir : str, optional 

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

524 Default: None 

525 pch_verbose : bool, optional 

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

527 Default: False 

528 pch_messages : bool, optional 

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

530 Default: False 

531 instantiate_templates_in_pch : bool, optional 

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

533 Default: False 

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

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

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

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

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

539 Default: None 

540 use_libdevice : bool, optional 

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

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

543 Default: False 

544 numba_debug : bool, optional 

545 Emit the debug information layout expected by Numba. Recognized only by 

546 newer toolkits; compilers that do not support it reject the option with 

547 an error. Applies only to the NVVM and NVRTC compilation backends -- 

548 ``code_type="ptx"`` is processed by the linker, which cannot honor it, 

549 so enabling this option there emits a :class:`UserWarning` and the 

550 option is ignored. 

551 Default: None 

552 """ 

553  

554 name: str | None = "default_program" 

555 arch: str | None = None 

556 relocatable_device_code: bool | None = None 

557 extensible_whole_program: bool | None = None 

558 debug: bool | None = None 

559 lineinfo: bool | None = None 

560 device_code_optimize: bool | None = None 

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

562 max_register_count: int | None = None 

563 ftz: bool | None = None 

564 prec_sqrt: bool | None = None 

565 prec_div: bool | None = None 

566 fma: bool | None = None 

567 use_fast_math: bool | None = None 

568 extra_device_vectorization: bool | None = None 

569 link_time_optimization: bool | None = None 

570 gen_opt_lto: bool | None = None 

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

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

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

574 use_bundled_headers: bool | None = None 

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

576 no_source_include: bool | None = None 

577 std: str | None = None 

578 builtin_move_forward: bool | None = None 

579 builtin_initializer_list: bool | None = None 

580 disable_warnings: bool | None = None 

581 restrict: bool | None = None 

582 device_as_default_execution_space: bool | None = None 

583 device_int128: bool | None = None 

584 optimization_info: str | None = None 

585 no_display_error_number: bool | None = None 

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

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

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

589 brief_diagnostics: bool | None = None 

590 time: str | None = None 

591 split_compile: int | None = None 

592 fdevice_syntax_only: bool | None = None 

593 minimal: bool | None = None 

594 no_cache: bool | None = None 

595 fdevice_time_trace: str | None = None 

596 device_float128: bool | None = None 

597 frandom_seed: str | None = None 

598 ofast_compile: str | None = None 

599 pch: bool | None = None 

600 create_pch: str | None = None 

601 use_pch: str | None = None 

602 pch_dir: str | None = None 

603 pch_verbose: bool | None = None 

604 pch_messages: bool | None = None 

605 instantiate_templates_in_pch: bool | None = None 

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

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

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

609  

610 def __post_init__(self) -> None: 

611 # Set name to default if not provided 

612 if self.name is None: 2=f| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9iZi5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#i:e;eWii _ %ij ` @i[i-i.i`iFhwhr a h k [e.eb c Pivh}hq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/eGhIhd g 'i)i*i{i,i5i1iQi+f3i+i(i2i^iRhHh0i4iYi6i7i|i~i}i$iOi~hai9f3h!f, #fJhShThUhWhVhXhajbjcjdjejYh4h5h6h7hfjgj8h9h!h#h$h2h%h'h(hKhhjijjj)hLhkjMhljmjnj*hoj+h,h-hNhpjqj.h/h:h;h=hZh0h1hOhPhrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj?h0j1j2j3j4j5j6j7j8j9j!j#j;i=i@h[h]h^h$j%j'j(j)j*j+j,j-j.j/j:j_h;j`hQh{h=jzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

613 self.name = "default_program" 2|i

614 self._name = self.name.encode() 2=f| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9iZi5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#i:e;eWii _ %ij ` @i[i-i.i`iFhwhr a h k [e.eb c Pivh}hq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/eGhIhd g 'i)i*i{i,i5i1iQi+f3i+i(i2i^iRhHh0i4iYi6i7i|i~i}i$iOi~hai9f3h!f, #fJhShThUhWhVhXhajbjcjdjejYh4h5h6h7hfjgj8h9h!h#h$h2h%h'h(hKhhjijjj)hLhkjMhljmjnj*hoj+h,h-hNhpjqj.h/h:h;h=hZh0h1hOhPhrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj?h0j1j2j3j4j5j6j7j8j9j!j#j;i=i@h[h]h^h$j%j'j(j)j*j+j,j-j.j/j:j_h;j`hQh{h=jzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

615 # Set arch to default if not provided 

616 if self.arch is None: 2=f| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9iZi5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#i:e;eWii _ %ij ` @i[i-i.i`iFhwhr a h k [e.eb c Pivh}hq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/eGhIhd g 'i)i*i{i,i5i1iQi+f3i+i(i2i^iRhHh0i4iYi6i7i|i~i}i$iOi~hai9f3h!f, #fJhShThUhWhVhXhajbjcjdjejYh4h5h6h7hfjgj8h9h!h#h$h2h%h'h(hKhhjijjj)hLhkjMhljmjnj*hoj+h,h-hNhpjqj.h/h:h;h=hZh0h1hOhPhrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj?h0j1j2j3j4j5j6j7j8j9j!j#j;i=i@h[h]h^h$j%j'j(j)j*j+j,j-j.j/j:j_h;j`hQh{h=jzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

617 self.arch = f"sm_{Device().arch}" 2=f^f|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:c- . / $ % ' ;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i}f~fagbgcgdgegfggghgigjgkglg: mgngogpgqgrgsgtgug; vgwgxgygzgAgBgCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+g,g-g.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gahbhchdhehfhgh9iZihhihjhkhlhmhnhohphqhrhsh!ithuh#iWii _ %ij ` whr Pivh}hNfd g 'i5i1iQi+f3i+i(i2i$iOi~hai9f3h!f, #f

618 if self.use_bundled_headers: 2=f| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9iZi5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#i:e;eWii _ %ij ` @i[i-i.i`iFhwhr a h k [e.eb c Pivh}hq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/eGhIhd g 'i)i*i{i,i5i1iQi+f3i+i(i2i^iRhHh0i4iYi6i7i|i~i}i$iOi~hai9f3h!f, #fJhShThUhWhVhXhajbjcjdjejYh4h5h6h7hfjgj8h9h!h#h$h2h%h'h(hKhhjijjj)hLhkjMhljmjnj*hoj+h,h-hNhpjqj.h/h:h;h=hZh0h1hOhPhrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj?h0j1j2j3j4j5j6j7j8j9j!j#j;i=i@h[h]h^h$j%j'j(j)j*j+j,j-j.j/j:j_h;j`hQh{h=jzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

619 # --use-bundled-headers (and the bundled CUDA/CCCL headers themselves) were 

620 # introduced in NVRTC 13.3. 

621 nvrtc_major, nvrtc_minor = handle_return(nvrtc.nvrtcVersion()) 2|h,

622 if (nvrtc_major, nvrtc_minor) < (13, 3): 2|h,

623 raise RuntimeError( 

624 "use_bundled_headers requires NVRTC >= 13.3, but found " 

625 f"{nvrtc_major}.{nvrtc_minor}. Upgrade the CUDA Toolkit / driver providing " 

626 "libnvrtc, or set use_bundled_headers=False and supply include_path manually." 

627 ) 

628 if self.extra_sources is not None: 2=f| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9iZi5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#i:e;eWii _ %ij ` @i[i-i.i`iFhwhr a h k [e.eb c Pivh}hq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/eGhIhd g 'i)i*i{i,i5i1iQi+f3i+i(i2i^iRhHh0i4iYi6i7i|i~i}i$iOi~hai9f3h!f, #fJhShThUhWhVhXhajbjcjdjejYh4h5h6h7hfjgj8h9h!h#h$h2h%h'h(hKhhjijjj)hLhkjMhljmjnj*hoj+h,h-hNhpjqj.h/h:h;h=hZh0h1hOhPhrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj?h0j1j2j3j4j5j6j7j8j9j!j#j;i=i@h[h]h^h$j%j'j(j)j*j+j,j-j.j/j:j_h;j`hQh{h=jzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

629 if not is_sequence(self.extra_sources): 2%i@i[i-i.i`id g )i*i,i$i;i=i

630 raise TypeError( 2`i

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

632 ) 

633 for i, module in enumerate(self.extra_sources): 2%i@i[i-i.id g )i*i,i$i;i=i

634 if not isinstance(module, tuple) or len(module) != 2: 2%i@i[i-i.id g )i*i,i$i;i=i

635 raise TypeError( 2[i

636 f"Each extra module must be a 2-tuple (name, source)" 2[i

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

638 ) 

639  

640 module_name, module_source = module 2%i@i-i.id g )i*i,i$i;i=i

641  

642 if not isinstance(module_name, str): 2%i@i-i.id g )i*i,i$i;i=i

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

644  

645 if not isinstance(module_source, (str, bytes, bytearray)): 2%i-i.id g )i*i,i$i;i=i

646 raise TypeError( 2-i

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

648 f"or bytearray, got {type(module_source).__name__}" 2-i

649 ) 

650  

651 if len(module_source) == 0: 2%i.id g )i*i,i$i;i=i

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

653  

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

655 return _prepare_nvrtc_options_impl(self) 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh0i4iYi6i7i9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

656  

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

658 return _prepare_nvvm_options_impl(self, as_bytes) 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

659  

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

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

662  

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

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

665 and formats even for the same conceptual options. 

666  

667 Parameters 

668 ---------- 

669 backend : CompilerBackendType | str 

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

671 target_type : ObjectCodeFormatType | str, optional 

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

673 require additional options based on the target type. 

674  

675 Returns 

676 ------- 

677 list[bytes] 

678 List of option strings encoded as bytes. 

679  

680 Raises 

681 ------ 

682 ValueError 

683 If an unknown backend is specified. 

684 CUDAError 

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

686  

687 Examples 

688 -------- 

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

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

691 """ 

692 backend = str(backend).lower() 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euh:e;ei _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c vhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g +f^iRhHh0i4iYi6i7i9f!f, #fJhShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(hKh)hLhMh*h+h,h-hNh.h/h:h;h=hZh0h1hOhPh?h@h[h]h^h_h`hQh{hzhxhyhAh( ChBhEhDh)

693 if backend == "nvrtc": 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euh:e;ei _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c vhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g +f^iRhHh0i4iYi6i7i9f!f, #fJhShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(hKh)hLhMh*h+h,h-hNh.h/h:h;h=hZh0h1hOhPh?h@h[h]h^h_h`hQh{hzhxhyhAh( ChBhEhDh)

694 return self._prepare_nvrtc_options() 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh0i4iYi6i7i9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

695 elif backend == "nvvm": 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g ^iHhJhKhLhMhNhZh0h1hOhPhQh

696 options = self._prepare_nvvm_options(as_bytes=True) 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

697 if target_type == "ltoir" and b"-gen-lto" not in options: 2:e;evhq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

698 options.append(b"-gen-lto") 2:e;e%f'f(f]e)f^e*fd

699 return options 2:e;evhq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

700 else: 

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

702  

703 def __repr__(self) -> str: 

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

705  

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

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

708 if self.extra_sources is None: 2d g )i*i{i,i

709 return None 2{i

710  

711 result = [] 2d g )i*i,i

712 for module_name, module_source in self.extra_sources: 2d g )i*i,i

713 name_bytes = module_name.encode("utf-8") 2d g )i*i,i

714 if isinstance(module_source, str): 2d g )i*i,i

715 source_bytes = module_source.encode("utf-8") 2d g ,i

716 elif isinstance(module_source, bytearray): 2)i*i

717 source_bytes = bytes(module_source) 2)i

718 else: 

719 source_bytes = module_source 2*i

720 result.append((name_bytes, source_bytes)) 2d g )i*i,i

721 return result 2d g )i*i,i

722  

723  

724# ============================================================================= 

725# Private Classes and Helper Functions 

726# ============================================================================= 

727  

728  

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

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

731  

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

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

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

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

736 outside the class. 

737 """ 

738 return Program_compile(program, target_type, name_expressions, logs) 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euh:e;ei _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c vh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g Qi+f~hai9f3hbicidieifi!fgihiiiji, #f( )

739  

740  

741# Module-level state for NVVM lazy loading 

742_nvvm_module = None 

743_nvvm_import_attempted = False 

744  

745  

746def _get_nvvm_module() -> object: 

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

748 global _nvvm_module, _nvvm_import_attempted 

749  

750 if _nvvm_module is not None: 2=fZi/i?i:i_i:e;ePivh}hq ekNf/e%f-f'f.f(f/f]efk`egk)f:f^e{e*f;fd g 'iJhKhLhMhNhOhPhQh

751 return _nvvm_module 2Zi:e;ePivh}hq ekNf/e%f-f'f.f(f/f]efk`egk)f:f^e{e*f;fd g 'iJhKhLhMhNhOhPhQh

752 if _nvvm_import_attempted: 2=f/i?i:i_i

753 raise RuntimeError("NVVM module is not available (previous import attempt failed)") 2?i

754  

755 try: 2=f/i?i:i_i

756 version = binding_version() 2=f/i?i:i_i

757 if version < (12, 9, 0): 2=f/i?i:i_i

758 raise RuntimeError( 2?i

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

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

761 ) 

762  

763 nvvm = _optional_cuda_import( 2=f/i:i_i

764 "cuda.bindings.nvvm", 

765 probe_function=lambda module: module.version(), # probe triggers libnvvm load 2=f/i:i_i

766 ) 

767 if nvvm is None: 2=f/i:i

768 raise RuntimeError( 2/i:i

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

770 ) 

771  

772 _nvvm_module = nvvm 

773 return _nvvm_module 

774  

775 except RuntimeError: 2/i?i:i_i

776 _nvvm_module = None 2/i?i:i

777 _nvvm_import_attempted = True 2/i?i:i

778 raise 2/i?i:i

779  

780  

781def _find_libdevice_path() -> object: 

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

783 from cuda.pathfinder import find_bitcode_lib 2hkq

784 return find_bitcode_lib("device") 2hkq

785  

786  

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

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

789 if isinstance(macro, str): 2{ * o p 0i4iYi6i7i

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

791 return True 1{

792 if isinstance(macro, tuple): 2* o p 0i4iYi6i7i

793 if len(macro) != 2 or any(not isinstance(val, str) for val in macro): 2* o p 0iYi6i7i

794 raise RuntimeError(f"Expected define_macro tuple[str, str], got {macro}") 20i6i7i

795 options.append(f"--define-macro={macro[0]}={macro[1]}") 2* o p Yi

796 return True 2* o p Yi

797 return False 2o p 0i4iYi

798  

799  

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

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

802 union_type = "Union[str, tuple[str, str]]" 2{ * o p 0i4iYi6i7i

803 if _process_define_macro_inner(options, macro): 2{ * o p 0i4iYi6i7i

804 return 1{*

805 if is_nested_sequence(macro): 2o p 0i4iYi

806 for seq_macro in macro: 2o p 0iYi

807 if not _process_define_macro_inner(options, seq_macro): 2o p 0iYi

808 raise RuntimeError(f"Expected define_macro {union_type}, got {seq_macro}") 2Yi

809 return 1op

810 raise RuntimeError(f"Expected define_macro {union_type}, list[{union_type}], got {macro}") 24i

811  

812  

813cpdef bint _can_load_generated_ptx() except? -1: 

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

815 drv = driver_version() 2|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfl m n @j$ [j% ]j' ^j_ji _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f, xhyh

816 nvrtc_major, nvrtc_minor = handle_return(nvrtc.nvrtcVersion()) 2|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfl m n @j$ [j% ]j' ^j_ji _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f, xhyh

817 return (nvrtc_major, nvrtc_minor, 0) <= drv 2|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfl m n @j$ [j% ]j' ^j_ji _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f, xhyh

818  

819  

820cdef inline object _translate_program_options(object options): 

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

822 # ``numba_debug`` is an NVVM/NVRTC compiler option that no linking backend can 

823 # honor. It used to be forwarded into ``LinkerOptions`` and dropped without a 

824 # word; warn instead, and do not forward -- forwarding would only trigger the 

825 # deprecation warning on a field the user never touched. ``UserWarning``, not 

826 # ``DeprecationWarning``: ``ProgramOptions.numba_debug`` is not deprecated, it 

827 # is fully supported on NVVM and NVRTC and merely inapplicable here. The gate 

828 # is truthiness, matching ``_prepare_nvvm_options_impl``: only an enabled 

829 # ``numba_debug`` asks for something this path cannot deliver. 

830 if options.numba_debug: 2Oi~hai3hbicidieifigihiiiji

831 warn( 23h

832 "numba_debug is ignored for code_type='ptx', which is processed by the linker; " 

833 "it applies only to the NVVM and NVRTC compilation backends.", 

834 UserWarning, 23h

835 stacklevel=4, 

836 ) 

837 return LinkerOptions( 2Oi~hai3hbicidieifigihiiiji

838 name=options.name, 2Oi~hai3hbicidieifigihiiiji

839 arch=options.arch, 2Oi~hai3hbicidieifigihiiiji

840 max_register_count=options.max_register_count, 2Oi~hai3hbicidieifigihiiiji

841 time=options.time, 2Oi~hai3hbicidieifigihiiiji

842 link_time_optimization=options.link_time_optimization, 2Oi~hai3hbicidieifigihiiiji

843 debug=options.debug, 2Oi~hai3hbicidieifigihiiiji

844 lineinfo=options.lineinfo, 2Oi~hai3hbicidieifigihiiiji

845 ftz=options.ftz, 2Oi~hai3hbicidieifigihiiiji

846 prec_div=options.prec_div, 2Oi~hai3hbicidieifigihiiiji

847 prec_sqrt=options.prec_sqrt, 2Oi~hai3hbicidieifigihiiiji

848 fma=options.fma, 2Oi~hai3hbicidieifigihiiiji

849 split_compile=options.split_compile, 2Oi~hai3hbicidieifigihiiiji

850 ptxas_options=options.ptxas_options, 2Oi~hai3hbicidieifigihiiiji

851 no_cache=options.no_cache, 2Oi~hai3hbicidieifigihiiiji

852 ) 

853  

854  

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

856 """Initialize a Program instance.""" 

857 cdef cynvrtc.nvrtcProgram nvrtc_prog 

858 cdef cynvvm.nvvmProgram nvvm_prog 

859 cdef bytes code_bytes 

860 cdef const char* code_ptr 

861 cdef const char* name_ptr 

862 cdef size_t code_len 

863 cdef bytes module_bytes 

864 cdef const char* module_ptr 

865 cdef size_t module_len 

866  

867 self._options = options = check_or_create_options(ProgramOptions, options, "Program options") 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9iZi5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#i:e;eWii _ %ij ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c Pivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 'i5i1iQi+f3i+i(i2i$iOi~hai9f3hbicidieifi!fgihiiiji, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

868 code_type = code_type.lower() 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9iZi5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#i:e;eWii _ %ij ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c Pivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 'i5i1iQi+f3i+i(i2i$iOi~hai9f3hbicidieifi!fgihiiiji, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

869 self._code_type = code_type 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9iZi5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#i:e;eWii _ %ij ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c Pivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 'i5i1iQi+f3i+i(i2i$iOi~hai9f3hbicidieifi!fgihiiiji, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

870 self._compile_lock = threading.Lock() 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9iZi5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#i:e;eWii _ %ij ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c Pivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 'i5i1iQi+f3i+i(i2i$iOi~hai9f3hbicidieifi!fgihiiiji, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

871 self._use_libdevice = False 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9iZi5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#i:e;eWii _ %ij ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c Pivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 'i5i1iQi+f3i+i(i2i$iOi~hai9f3hbicidieifi!fgihiiiji, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

872 self._libdevice_added = False 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9iZi5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#i:e;eWii _ %ij ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c Pivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 'i5i1iQi+f3i+i(i2i$iOi~hai9f3hbicidieifi!fgihiiiji, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

873  

874 self._pch_status = None 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9iZi5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#i:e;eWii _ %ij ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c Pivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 'i5i1iQi+f3i+i(i2i$iOi~hai9f3hbicidieifi!fgihiiiji, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

875 self._nvrtc_name = options._name 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9iZi5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#i:e;eWii _ %ij ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c Pivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 'i5i1iQi+f3i+i(i2i$iOi~hai9f3hbicidieifi!fgihiiiji, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

876 self._extra_options = [] 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9iZi5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#i:e;eWii _ %ij ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c Pivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 'i5i1iQi+f3i+i(i2i$iOi~hai9f3hbicidieifi!fgihiiiji, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

877  

878 if code_type == "c++": 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9iZi5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#i:e;eWii _ %ij ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c Pivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 'i5i1iQi+f3i+i(i2i$iOi~hai9f3hbicidieifi!fgihiiiji, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

879 assert_type(code, str) 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9i5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#iWii _ %ij ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c 5i1iQi+f3i+i2i9f!f, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

880 if options.extra_sources is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9i5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#iWii _ %ij ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c 5i1iQi+f3i2i9f!f, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

881 raise ValueError("extra_sources is not supported by the NVRTC backend (C++ code_type)") 2%i

882  

883 if (options.debug or options.lineinfo) and options.name == "default_program": 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9i5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#iWii _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c 5i1iQi+f3i2i9f!f, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

884 debug_path = self._try_materialize_nvrtc_debug_source(code) 1efahkbc

885 if debug_path is not None: 1efahkbc

886 self._nvrtc_name = debug_path.encode() 1efabc

887 # NVRTC resolves #include "..." against the directory of the name it 

888 # is given, so moving the name into the temp dir would otherwise stop 

889 # every quoted include from resolving where it did before. 

890 try: 1efabc

891 include_dir = os.path.dirname(os.path.abspath(options.name)) 1efabc

892 except OSError: 

893 # abspath needs a cwd; with none there is no directory to restore. 

894 pass 

895 else: 

896 self._extra_options = [b"--include-path=" + include_dir.encode()] 1efabc

897  

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

899 code_bytes = code.encode() 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9i5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#iWii _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c 5i1iQi+f3i2i9f!f, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

900 code_ptr = <const char*>code_bytes 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9i5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#iWii _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c 5i1iQi+f3i2i9f!f, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

901 name_ptr = <const char*>self._nvrtc_name 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9i5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#iWii _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c 5i1iQi+f3i2i9f!f, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

902  

903 with nogil: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9i5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#iWii _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c 5i1iQi+f3i2i9f!f, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

904 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcCreateProgram( 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9i5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#iWii _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c 5i1iQi+f3i2i9f!f, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

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

906 self._h_nvrtc = create_nvrtc_program_handle(nvrtc_prog) 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9i5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#iWii _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c 5i1iQi+f3i2i9f!f, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

907 self._code = code_bytes 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9i5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#iWii _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c 5i1iQi+f3i2i9f!f, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

908 self._backend = str(CompilerBackendType.NVRTC) 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9i5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#iWii _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c 5i1iQi+f3i2i9f!f, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

909 self._linker = None 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9i5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#iWii _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c 5i1iQi+f3i2i9f!f, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

910  

911 elif code_type == "ptx": 2Zi:e;ePivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 'i(i$iOi~hai3hbicidieifigihiiiji

912 assert_type(code, str) 2$iOi~hai3hbicidieifigihiiiji

913 if options.extra_sources is not None: 2$iOi~hai3hbicidieifigihiiiji

914 raise ValueError("extra_sources is not supported by the PTX backend.") 2$i

915 code_bytes = code.encode() 2Oi~hai3hbicidieifigihiiiji

916 self._code = code_bytes 2Oi~hai3hbicidieifigihiiiji

917 self._linker = Linker( 2Oi~hai3hbicidieifigihiiiji

918 ObjectCode._init(code_bytes, code_type), options=_translate_program_options(options) 2Oi~hai3hbicidieifigihiiiji

919 ) 

920 self._backend = str(Linker.which_backend()) 2Oi~hai3hbicidieifigihiiiji

921  

922 elif code_type == "nvvm": 2Zi:e;ePivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 'i(i

923 _get_nvvm_module() # Validate NVVM availability 2Zi:e;ePivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 'i

924 if isinstance(code, str): 2Zi:e;ePivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 'i

925 code = code.encode("utf-8") 2Zivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

926 elif not isinstance(code, (bytes, bytearray)): 2:e;ePi'i

927 raise TypeError("NVVM IR code must be provided as str, bytes, or bytearray") 2'i

928 self._code = bytes(code) # Coerce bytearray -> bytes so retention type is stable 2Zi:e;ePivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

929  

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

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

932 code_ptr = <const char*>self._code 2Zi:e;ePivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

933 name_ptr = <const char*>options._name 2Zi:e;ePivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

934 code_len = len(self._code) 2Zi:e;ePivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

935  

936 with nogil: 2Zi:e;ePivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

937 HANDLE_RETURN_NVVM(NULL, cynvvm.nvvmCreateProgram(&nvvm_prog)) 2Zi:e;ePivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

938 self._h_nvvm = create_nvvm_program_handle(nvvm_prog) # RAII from here 2Zi:e;ePivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

939 with nogil: 2Zi:e;ePivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

940 HANDLE_RETURN_NVVM(nvvm_prog, cynvvm.nvvmAddModuleToProgram(nvvm_prog, code_ptr, code_len, name_ptr)) 2Zi:e;ePivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

941  

942 # Add extra modules if provided 

943 if options.extra_sources is not None: 2Zi:e;ePivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

944 extra_sources_bytes = options._prepare_extra_sources_bytes() 1dg

945 for module_name_bytes, module_bytes in extra_sources_bytes: 1dg

946 module_ptr = <const char*>module_bytes 1dg

947 module_len = len(module_bytes) 1dg

948 module_name_ptr = <const char*>module_name_bytes 1dg

949 with nogil: 1dg

950 HANDLE_RETURN_NVVM(nvvm_prog, cynvvm.nvvmAddModuleToProgram( 1dg

951 nvvm_prog, module_ptr, module_len, module_name_ptr)) 

952  

953 # Store use_libdevice flag 

954 if options.use_libdevice: 2Zi:e;ePivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

955 self._use_libdevice = True 1q

956  

957 self._backend = str(CompilerBackendType.NVVM) 2Zi:e;ePivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

958 self._linker = None 2Zi:e;ePivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

959  

960 else: 

961 supported_code_types = tuple(x.value for x in SourceCodeType) 2(i

962 if options.use_libdevice: 2(i

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

964 raise RuntimeError(f"Unsupported {code_type=} ({supported_code_types=})") 2(i

965  

966 return 0 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd8i0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh9iZi5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh!i*eth+euh#i:e;eWii _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c Pivh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g 5i1iQi+f3i2iOi~hai9f3hbicidieifi!fgihiiiji, #fzhxhyhAh( ChBhUiRiSiTiEhViDh) Xi

967  

968  

969cdef object _nvrtc_compile_and_extract( 

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

971 object logs, list options_list, str name, 

972): 

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

974  

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

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

977 """ 

978 cdef size_t output_size = 0 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f, #f( )

979 cdef size_t logsize = 0 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f, #f( )

980 cdef vector[const char*] options_vec 

981 cdef char* data_ptr = NULL 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f, #f( )

982 cdef bytes name_bytes 

983 cdef const char* name_ptr = NULL 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f, #f( )

984 cdef const char* lowered_name = NULL 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f, #f( )

985 cdef dict symbol_mapping = {} 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f, #f( )

986  

987 # Add name expressions before compilation 

988 if name_expressions: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f, #f( )

989 for n in name_expressions: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNct u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:cl m n - . / $ % ' ;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d: ; [d]d^d_d`d{d|d}d~daebecedeeefe= ? geheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJe@ [ KeLeMeNeOePeQeReSeTeUeVeWeXeYe] ^ Ze0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e

990 name_bytes = n.encode() if isinstance(n, str) else n 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNct u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:cl m n - . / $ % ' ;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d: ; [d]d^d_d`d{d|d}d~daebecedeeefe= ? geheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJe@ [ KeLeMeNeOePeQeReSeTeUeVeWeXeYe] ^ Ze0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e

991 name_ptr = <const char*>name_bytes 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNct u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:cl m n - . / $ % ' ;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d: ; [d]d^d_d`d{d|d}d~daebecedeeefe= ? geheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJe@ [ KeLeMeNeOePeQeReSeTeUeVeWeXeYe] ^ Ze0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e

992 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcAddNameExpression(prog, name_ptr)) 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNct u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:cl m n - . / $ % ' ;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d: ; [d]d^d_d`d{d|d}d~daebecedeeefe= ? geheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJe@ [ KeLeMeNeOePeQeReSeTeUeVeWeXeYe] ^ Ze0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e

993  

994 # Build options array 

995 options_vec.resize(len(options_list)) 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f, #f( )

996 for i in range(len(options_list)): 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f, #f( )

997 options_vec[i] = <const char*>(<bytes>options_list[i]) 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f, #f( )

998  

999 # Compile 

1000 with nogil: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f, #f( )

1001 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcCompileProgram(prog, <int>options_vec.size(), options_vec.data())) 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f, #f( )

1002  

1003 # Get compiled output based on target type 

1004 if target_type == "ptx": 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfr a h k [e.eb c +f9f!f, #f( )

1005 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPTXSize(prog, &output_size)) 2|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfl m n $ % ' i _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfr a h k [e.eb c +f9f!f,

1006 data = bytearray(output_size) 2|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfl m n $ % ' i _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfr a h k [e.eb c +f9f!f,

1007 data_ptr = <char*>(<bytearray>data) 2|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfl m n $ % ' i _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfr a h k [e.eb c +f9f!f,

1008 with nogil: 2|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfl m n $ % ' i _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfr a h k [e.eb c +f9f!f,

1009 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPTX(prog, data_ptr)) 2|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfl m n $ % ' i _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfr a h k [e.eb c +f9f!f,

1010 elif target_type == "cubin": 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc,f0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euh#f( )

1011 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetCUBINSize(prog, &output_size)) 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euh#f( )

1012 data = bytearray(output_size) 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euh#f( )

1013 data_ptr = <char*>(<bytearray>data) 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euh#f( )

1014 with nogil: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euh#f( )

1015 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetCUBIN(prog, data_ptr)) 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euh#f( )

1016 else: # ltoir 

1017 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLTOIRSize(prog, &output_size)) 2,f- . / gh

1018 data = bytearray(output_size) 2,f- . / gh

1019 data_ptr = <char*>(<bytearray>data) 2,f- . / gh

1020 with nogil: 2,f- . / gh

1021 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLTOIR(prog, data_ptr)) 2,f- . / gh

1022  

1023 # Get lowered names after compilation 

1024 if name_expressions: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfr a h k [e.eb c +f9f!f, #f( )

1025 for n in name_expressions: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNct u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:cl m n - . / $ % ' ;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d: ; [d]d^d_d`d{d|d}d~daebecedeeefe= ? geheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJe@ [ KeLeMeNeOePeQeReSeTeUeVeWeXeYe] ^ Ze0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e

1026 name_bytes = n.encode() if isinstance(n, str) else n 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNct u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:cl m n - . / $ % ' ;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d: ; [d]d^d_d`d{d|d}d~daebecedeeefe= ? geheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJe@ [ KeLeMeNeOePeQeReSeTeUeVeWeXeYe] ^ Ze0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e

1027 name_ptr = <const char*>name_bytes 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNct u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:cl m n - . / $ % ' ;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d: ; [d]d^d_d`d{d|d}d~daebecedeeefe= ? geheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJe@ [ KeLeMeNeOePeQeReSeTeUeVeWeXeYe] ^ Ze0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e

1028 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLoweredName(prog, name_ptr, &lowered_name)) 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNct u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:cl m n - . / $ % ' ;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d: ; [d]d^d_d`d{d|d}d~daebecedeeefe= ? geheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJe@ [ KeLeMeNeOePeQeReSeTeUeVeWeXeYe] ^ Ze0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e

1029 symbol_mapping[n] = lowered_name if lowered_name != NULL else None 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNct u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:cl m n - . / $ % ' ;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d: ; [d]d^d_d`d{d|d}d~daebecedeeefe= ? geheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJe@ [ KeLeMeNeOePeQeReSeTeUeVeWeXeYe] ^ Ze0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e

1030  

1031 # Get compilation log if requested 

1032 if logs is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfr a h k [e.eb c +f9f!f, #f( )

1033 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetProgramLogSize(prog, &logsize)) 1r

1034 if logsize > 1: 1r

1035 log = bytearray(logsize) 1r

1036 data_ptr = <char*>(<bytearray>log) 1r

1037 with nogil: 1r

1038 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetProgramLog(prog, data_ptr)) 1r

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

1040  

1041 return ObjectCode._init(bytes(data), target_type, symbol_mapping=symbol_mapping, name=name) 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfr a h k [e.eb c +f9f!f, #f( )

1042  

1043  

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

1045  

1046cdef bint _has_nvrtc_pch_apis(): 

1047 global _nvrtc_pch_apis_cached 

1048 if _nvrtc_pch_apis_cached < 0: 1ijs

1049 _nvrtc_pch_apis_cached = hasattr(nvrtc, "nvrtcGetPCHCreateStatus") 1is

1050 return _nvrtc_pch_apis_cached 1ijs

1051  

1052  

1053cdef object _read_pch_status(cynvrtc.nvrtcProgram prog): 

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

1055 cdef cynvrtc.nvrtcResult err 

1056 with nogil: 1ijs

1057 err = cynvrtc.nvrtcGetPCHCreateStatus(prog) 1ijs

1058 if err == cynvrtc.nvrtcResult.NVRTC_SUCCESS: 1ijs

1059 return PCHStatusType.CREATED 1ijs

1060 if err == cynvrtc.nvrtcResult.NVRTC_ERROR_PCH_CREATE_HEAP_EXHAUSTED: 

1061 return None # sentinel: caller should auto-retry 

1062 if err == cynvrtc.nvrtcResult.NVRTC_ERROR_NO_PCH_CREATE_ATTEMPTED: 

1063 return PCHStatusType.NOT_ATTEMPTED 

1064 return PCHStatusType.FAILED 

1065  

1066  

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

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

1069 cdef cynvrtc.nvrtcProgram prog = as_cu(self._h_nvrtc) 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f, #f( )

1070 cdef list options_list = self._options.as_bytes("nvrtc", target_type) + self._extra_options 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f, #f( )

1071  

1072 result = _nvrtc_compile_and_extract( 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f, #f( )

1073 prog, target_type, name_expressions, logs, options_list, self._nvrtc_name.decode(), 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f, #f( )

1074 ) 

1075  

1076 cdef bint pch_creation_possible = self._options.create_pch or self._options.pch 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfr a h k [e.eb c +f9f!f, #f( )

1077 if not pch_creation_possible or not _has_nvrtc_pch_apis(): 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfr a h k [e.eb c +f9f!f, #f( )

1078 self._pch_status = None 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euh_ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6f7f8fMfr a h k [e.eb c +f9f!f, #f( )

1079 return result 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euh_ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6f7f8fMfr a h k [e.eb c +f9f!f, #f( )

1080  

1081 try: 1ijs

1082 status = _read_pch_status(prog) 1ijs

1083 except RuntimeError as e: 

1084 raise RuntimeError( 

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

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

1087 ) from e 

1088  

1089 if status is not None: 1ijs

1090 self._pch_status = str(status) 1ijs

1091 return result 1ijs

1092  

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

1094 cdef size_t required = 0 

1095 with nogil: 

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

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

1098  

1099 cdef cynvrtc.nvrtcProgram retry_prog 

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

1101 cdef const char* name_ptr = <const char*>self._nvrtc_name 

1102 with nogil: 

1103 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcCreateProgram( 

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

1105 self._h_nvrtc = create_nvrtc_program_handle(retry_prog) 

1106  

1107 result = _nvrtc_compile_and_extract( 

1108 retry_prog, target_type, name_expressions, logs, options_list, self._nvrtc_name.decode(), 

1109 ) 

1110  

1111 status = _read_pch_status(retry_prog) 

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

1113 return result 

1114  

1115  

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

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

1118 cdef cynvvm.nvvmProgram prog = as_cu(self._h_nvvm) 2:e;evhq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

1119 cdef size_t output_size = 0 2:e;evhq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

1120 cdef size_t logsize = 0 2:e;evhq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

1121 cdef vector[const char*] options_vec 

1122 cdef char* data_ptr = NULL 2:e;evhq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

1123 cdef bytes libdevice_bytes 

1124 cdef const char* libdevice_ptr 

1125 cdef size_t libdevice_len 

1126 # Build options array 

1127 options_list = self._options.as_bytes("nvvm", target_type) 2:e;evhq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

1128 options_vec.resize(len(options_list)) 2:e;evhq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

1129 for i in range(len(options_list)): 2:e;evhq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

1130 options_vec[i] = <const char*>(<bytes>options_list[i]) 2:e;evhq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

1131  

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

1133 with self._compile_lock: 2:e;evhq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

1134 with nogil: 2:e;evhq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

1135 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmVerifyProgram(prog, <int>options_vec.size(), options_vec.data())) 2:e;evhq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

1136  

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

1138 if self._use_libdevice and not self._libdevice_added: 2:e;eq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

1139 libdevice_path = _find_libdevice_path() 1q

1140 with open(libdevice_path, "rb") as f: 1q

1141 libdevice_bytes = f.read() 1q

1142 libdevice_ptr = <const char*>libdevice_bytes 1q

1143 libdevice_len = len(libdevice_bytes) 1q

1144 with nogil: 1q

1145 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmLazyAddModuleToProgram( 1q

1146 prog, libdevice_ptr, libdevice_len, NULL)) 

1147 self._libdevice_added = True 1q

1148  

1149 with nogil: 2:e;eq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

1150 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmCompileProgram(prog, <int>options_vec.size(), options_vec.data())) 2:e;eq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

1151  

1152 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetCompiledResultSize(prog, &output_size)) 2:e;eq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

1153 data = bytearray(output_size) 2:e;eq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

1154 data_ptr = <char*>(<bytearray>data) 2:e;eq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

1155 with nogil: 2:e;eq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

1156 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetCompiledResult(prog, data_ptr)) 2:e;eq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

1157  

1158 # Get compilation log if requested 

1159 if logs is not None: 2:e;eq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

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

1161 if logsize > 1: 

1162 log = bytearray(logsize) 

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

1164 with nogil: 

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

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

1167  

1168 return ObjectCode._init(bytes(data), target_type, name=self._options.name) 2:e;eq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

1169  

1170# Supported target types per backend 

1171cdef dict SUPPORTED_TARGETS = { 

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

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

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

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

1176} 

1177  

1178  

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

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

1181 # Validate target_type for this backend 

1182 supported = SUPPORTED_TARGETS.get(self._backend) 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euh:e;ei _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c vh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g Qi+f~hai9f3hbicidieifi!fgihiiiji, #f( )

1183 if supported is None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euh:e;ei _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c vh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g Qi+f~hai9f3hbicidieifi!fgihiiiji, #f( )

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

1185 if target_type not in supported: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euh:e;ei _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c vh}hq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g Qi+f~hai9f3hbicidieifi!fgihiiiji, #f( )

1186 raise ValueError( 2}hQi

1187 f'Unsupported target_type="{target_type}" for {self._backend} ' 2}hQi

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

1189 ) 

1190  

1191 if self._backend == "NVRTC": 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euh:e;ei _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c vhq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g +f~hai9f3hbicidieifi!fgihiiiji, #f( )

1192 if target_type == "ptx" and not _can_load_generated_ptx(): 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f, #f( )

1193 warn( 2|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfl m n $ % ' i _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f,

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

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

1196 stacklevel=2, 

1197 category=RuntimeWarning, 2|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfl m n $ % ' i _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f,

1198 ) 

1199 return Program_compile_nvrtc(self, target_type, name_expressions, logs) 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfwhr a h k [e.eb c +f9f!f, #f( )

1200  

1201 elif self._backend == "NVVM": 2:e;evhq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g ~hai3hbicidieifigihiiiji

1202 return Program_compile_nvvm(self, target_type, logs) 2:e;evhq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fd g

1203  

1204 else: 

1205 return self._linker.link(target_type) 2~hai3hbicidieifigihiiiji

1206  

1207  

1208cdef inline list _prepare_nvrtc_options_impl(object opts): 

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

1210 options = [f"-arch={opts.arch}"] 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh0i4iYi6i7i9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1211 if opts.relocatable_device_code is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh0i4iYi6i7i9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1212 options.append(f"--relocatable-device-code={_handle_boolean_option(opts.relocatable_device_code)}") 2|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFf{f|fGf

1213 if opts.extensible_whole_program is not None and opts.extensible_whole_program: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh0i4iYi6i7i9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1214 options.append("--extensible-whole-program") 2Zf

1215 if opts.debug is not None and opts.debug: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh0i4iYi6i7i9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1216 options.append("--device-debug") 2e f a h k .eb c Rh

1217 if opts.lineinfo is not None and opts.lineinfo: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh0i4iYi6i7i9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1218 options.append("--generate-line-info") 2Rh

1219 if opts.device_code_optimize is not None and opts.device_code_optimize: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh0i4iYi6i7i9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1220 options.append("--dopt=on") 1e

1221 if opts.ptxas_options is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh0i4iYi6i7i9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1222 opt_name = "--ptxas-options" 2,e-eFh

1223 if isinstance(opts.ptxas_options, str): 2,e-eFh

1224 options.append(f"{opt_name}={opts.ptxas_options}") 2Fh

1225 elif is_sequence(opts.ptxas_options): 2,e-e

1226 for opt_value in opts.ptxas_options: 2,e-e

1227 options.append(f"{opt_name}={opt_value}") 2,e-e

1228 if opts.max_register_count is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh0i4iYi6i7i9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1229 options.append(f"--maxrregcount={opts.max_register_count}") 2Gf

1230 if opts.ftz is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh0i4iYi6i7i9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1231 options.append(f"--ftz={_handle_boolean_option(opts.ftz)}") 2_eRh

1232 if opts.prec_sqrt is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh0i4iYi6i7i9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

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

1234 if opts.prec_div is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh0i4iYi6i7i9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

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

1236 if opts.fma is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh0i4iYi6i7i9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

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

1238 if opts.use_fast_math is not None and opts.use_fast_math: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh0i4iYi6i7i9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1239 options.append("--use_fast_math") 2Hf2h

1240 if opts.extra_device_vectorization is not None and opts.extra_device_vectorization: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh0i4iYi6i7i9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1241 options.append("--extra-device-vectorization") 2Uf

1242 if opts.link_time_optimization is not None and opts.link_time_optimization: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh0i4iYi6i7i9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1243 options.append("--dlink-time-opt") 2,f- . / Vf

1244 if opts.gen_opt_lto is not None and opts.gen_opt_lto: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh0i4iYi6i7i9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1245 options.append("--gen-opt-lto") 21f

1246 if opts.define_macro is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh0i4iYi6i7i9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1247 _process_define_macro(options, opts.define_macro) 2{ * o p 0i4iYi6i7i

1248 if opts.undefine_macro is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1249 if isinstance(opts.undefine_macro, str): 2=e?e

1250 options.append(f"--undefine-macro={opts.undefine_macro}") 2?e

1251 elif is_sequence(opts.undefine_macro): 2=e

1252 for macro in opts.undefine_macro: 2=e

1253 options.append(f"--undefine-macro={macro}") 2=e

1254 if opts.use_bundled_headers: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1255 options.append(f"--use-bundled-headers={_default_cache_dir() / 'nvrtc-bundled-headers'}") 1,

1256 if opts.include_path is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1257 if isinstance(opts.include_path, str): 2OfPfQfRfSfTft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # ?eShThUhWhYh

1258 options.append(f"--include-path={opts.include_path}") 2?eYh

1259 elif is_sequence(opts.include_path): 2OfPfQfRfSfTft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # ShThUhWh

1260 for path in opts.include_path: 2OfPfQfRfSfTft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # ShThUh

1261 options.append(f"--include-path={path}") 2OfPfQfRfSfTft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! #

1262 if opts.pre_include is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1263 if isinstance(opts.pre_include, str): 2FhVhXh

1264 options.append(f"--pre-include={opts.pre_include}") 2Fh

1265 elif is_sequence(opts.pre_include): 2FhVhXh

1266 for header in opts.pre_include: 2FhVh

1267 options.append(f"--pre-include={header}") 2Fh

1268 if opts.no_source_include is not None and opts.no_source_include: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1269 options.append("--no-source-include") 23f

1270 if opts.std is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1271 options.append(f"--std={opts.std}") 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNct u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d: ; [d]d^d_d`d{d|d}d~daebecedeeefe= ? geheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJe@ [ KeLeMeNeOePeQeReSeTeUeVeWeXeYe] ^ Ze0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e

1272 if opts.builtin_move_forward is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

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

1274 if opts.builtin_initializer_list is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

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

1276 if opts.disable_warnings is not None and opts.disable_warnings: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1277 options.append("--disable-warnings") 2If

1278 if opts.restrict is not None and opts.restrict: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1279 options.append("--restrict") 2Jf

1280 if opts.device_as_default_execution_space is not None and opts.device_as_default_execution_space: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1281 options.append("--device-as-default-execution-space") 2Jf

1282 if opts.device_int128 is not None and opts.device_int128: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1283 options.append("--device-int128") 2Kf

1284 if opts.device_float128 is not None and opts.device_float128: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1285 options.append("--device-float128") 2Fh

1286 if opts.optimization_info is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

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

1288 if opts.no_display_error_number is not None and opts.no_display_error_number: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1289 options.append("--no-display-error-number") 2Wf

1290 if opts.diag_error is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1291 if isinstance(opts.diag_error, int): 2@e+

1292 options.append(f"--diag-error={opts.diag_error}") 2@e

1293 elif is_sequence(opts.diag_error): 1+

1294 for error in opts.diag_error: 1+

1295 options.append(f"--diag-error={error}") 1+

1296 if opts.diag_suppress is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1297 if isinstance(opts.diag_suppress, int): 2@e+

1298 options.append(f"--diag-suppress={opts.diag_suppress}") 2@e

1299 elif is_sequence(opts.diag_suppress): 1+

1300 for suppress in opts.diag_suppress: 1+

1301 options.append(f"--diag-suppress={suppress}") 1+

1302 if opts.diag_warn is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1303 if isinstance(opts.diag_warn, int): 2LfFh

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

1305 elif is_sequence(opts.diag_warn): 2Fh

1306 for w in opts.diag_warn: 2Fh

1307 options.append(f"--diag-warn={w}") 2Fh

1308 if opts.brief_diagnostics is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

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

1310 if opts.time is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1311 options.append(f"--time={opts.time}") 2Fh

1312 if opts.split_compile is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1313 options.append(f"--split-compile={opts.split_compile}") 2Fh

1314 if opts.fdevice_syntax_only is not None and opts.fdevice_syntax_only: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1315 options.append("--fdevice-syntax-only") 20f

1316 if opts.minimal is not None and opts.minimal: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1317 options.append("--minimal") 22f

1318 if opts.no_cache is not None and opts.no_cache: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1319 options.append("--no-cache") 24f

1320 if opts.fdevice_time_trace is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1321 options.append(f"--fdevice-time-trace={opts.fdevice_time_trace}") 1`

1322 if opts.frandom_seed is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1323 options.append(f"--frandom-seed={opts.frandom_seed}") 25f

1324 if opts.ofast_compile is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1325 options.append(f"--Ofast-compile={opts.ofast_compile}") 26f

1326 # PCH options (CUDA 12.8+) 

1327 if opts.pch is not None and opts.pch: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1328 options.append("--pch") 1s

1329 if opts.create_pch is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

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

1331 if opts.use_pch is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

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

1333 if opts.pch_dir is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1334 options.append(f"--pch-dir={opts.pch_dir}") 2Fh

1335 if opts.pch_verbose is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1336 options.append(f"--pch-verbose={_handle_boolean_option(opts.pch_verbose)}") 27f

1337 if opts.pch_messages is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1338 options.append(f"--pch-messages={_handle_boolean_option(opts.pch_messages)}") 28f

1339 if opts.instantiate_templates_in_pch is not None: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1340 options.append( 2Mf

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

1342 ) 

1343 if opts.numba_debug: 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1344 options.append("--numba-debug") 1f

1345 return [o.encode() for o in options] 2| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcOfPfQfRf?f@f[f]fSfTfMcNc^ft u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # OcPcQcRcScTcUcVcWcXcYcZc|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDf,fEfFf0c1c2c3c4c5c6c7c_f8c9c!c#c$c%c'c(c)c*c+c,c`f-c.c/c:cl m n - . / $ % ' {f|f;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d}f1d~fag2dbg3dcg4d5d6ddg7deg8d9d!d#d$d%d'd(d)d*dfg+dgg,dhg-dig.d/d:djg;dkg=d?d@dlg: mgngogpgqgrgsgtgug; vgwgxgygzg[d]d^d_d`d{d|d}d~daebeceAgdeBgeefeCg= DgEgFgGgHgIgJgKgLgMg? NgOgPgQgRggeheieSgjeTgkeUgleVgmeneoeWgpeXgqereseteuevewexeyezeYgAeZgBe0gCe1gDeEeFe2gGe3gHeIeJe4g@ 5g6g7g8g9g!g#g$g%g[ 'g(g)g*g+gKeLeMeNeOePeQeReSeTeUeVe,gWe-gXeYe.g] /g:g;g=g?g@g[g]g^g_g^ `g{g|g}g~gZe0e1eah2ebhchdh3eeh4efhgh5ehh6eih7ejh8ekh9elh!emh#enh$eoh%eph'eqh(erh)esh*eth+euhi _ j ` $fe f Gf_eHfUfVf{ * o p =e?eIfJfKfWf@e+ Lf,e-eXfYfZf0f1f2f3f4f5f6fs 7f8fMfFhwhr a h k [e.eb c +fRh9f!f, #fShThUhWhVhXhYh4h5h6h7h8h9h!h#h$h2h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{hzhxhyhAh( ChBhEhDh)

1346  

1347  

1348cpdef void _assert_single_dashed_nvvm_options(options: list[str]) except *: 

1349 """Guard against emitting a double-dashed option to libNVVM. 

1350  

1351 libNVVM's parser accepts only single-dashed options and rejects the 

1352 double-dashed spelling of every option with NVVM_ERROR_INVALID_OPTION 

1353 (see #2570). Every option on this path is generated from typed fields, so 

1354 a double dash can only mean a bug in ``cuda.core`` rather than bad user 

1355 input. Fail here, naming the option, instead of leaving the user with 

1356 libNVVM's opaque error. 

1357 """ 

1358 for option in options: 2:e;evhq ?jNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1359 if option.startswith("--"): 2:e;evhq ?jNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1360 raise RuntimeError( 2?j

1361 f"Internal error: NVVM option {option!r} is double-dashed. libNVVM accepts " 2?j

1362 f"only single-dashed options; emit {option[1:]!r} instead." 2?j

1363 ) 

1364  

1365  

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

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

1368 options = [] 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1369  

1370 # Options supported by NVVM 

1371 assert opts.arch is not None 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1372 arch = opts.arch 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1373 if arch.startswith("sm_"): 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1374 arch = f"compute_{arch[3:]}" 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1375 options.append(f"-arch={arch}") 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1376 if opts.debug is not None and opts.debug: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1377 options.append("-g") 2/eGhIhHh

1378 # libNVVM only accepts single-dashed options; the double-dashed spelling 

1379 # accepted by NVRTC is rejected with NVVM_ERROR_INVALID_OPTION. 

1380 if opts.numba_debug: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1381 options.append("-numba-debug") 2/eGhIh

1382 if opts.device_code_optimize is False: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1383 options.append("-opt=0") 2%f-f'f.f)f:f

1384 elif opts.device_code_optimize is True: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e(f/f]e`e^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1385 options.append("-opt=3") 2]e`e^e{eGhHh

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

1387 if opts.ftz is not None: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1388 options.append(f"-ftz={'1' if opts.ftz else '0'}") 2]e`e^e{eGhHh

1389 if opts.prec_sqrt is not None: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1390 options.append(f"-prec-sqrt={'1' if opts.prec_sqrt else '0'}") 2]e`e^e{eGh

1391 if opts.prec_div is not None: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1392 options.append(f"-prec-div={'1' if opts.prec_div else '0'}") 2]e`e^e{eGh

1393 if opts.fma is not None: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1394 options.append(f"-fma={'1' if opts.fma else '0'}") 2]e`e^e{eGh

1395  

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

1397 unsupported = [] 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1398 if opts.relocatable_device_code is not None: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1399 unsupported.append("relocatable_device_code") 2Hi

1400 if opts.extensible_whole_program is not None and opts.extensible_whole_program: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1401 unsupported.append("extensible_whole_program") 2ui

1402 if opts.lineinfo is not None and opts.lineinfo: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1403 unsupported.append("lineinfo") 2zi

1404 if opts.ptxas_options is not None: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1405 unsupported.append("ptxas_options") 2Gi

1406 if opts.max_register_count is not None: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1407 unsupported.append("max_register_count") 2Ai

1408 if opts.use_fast_math is not None and opts.use_fast_math: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1409 unsupported.append("use_fast_math") 2Ni

1410 if opts.extra_device_vectorization is not None and opts.extra_device_vectorization: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1411 unsupported.append("extra_device_vectorization") 2vi

1412 if opts.gen_opt_lto is not None and opts.gen_opt_lto: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1413 unsupported.append("gen_opt_lto") 2xi

1414 if opts.define_macro is not None: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1415 unsupported.append("define_macro") 2ni

1416 if opts.undefine_macro is not None: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1417 unsupported.append("undefine_macro") 2Mi

1418 if opts.include_path is not None: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1419 unsupported.append("include_path") 2yi

1420 if opts.use_bundled_headers: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1421 unsupported.append("use_bundled_headers") 2|h

1422 if opts.pre_include is not None: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1423 unsupported.append("pre_include") 2Fi

1424 if opts.no_source_include is not None and opts.no_source_include: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1425 unsupported.append("no_source_include") 2Di

1426 if opts.std is not None: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1427 unsupported.append("std") 2Ki

1428 if opts.builtin_move_forward is not None: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1429 unsupported.append("builtin_move_forward") 2mi

1430 if opts.builtin_initializer_list is not None: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1431 unsupported.append("builtin_initializer_list") 2li

1432 if opts.disable_warnings is not None and opts.disable_warnings: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1433 unsupported.append("disable_warnings") 2ti

1434 if opts.restrict is not None and opts.restrict: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1435 unsupported.append("restrict") 2Ii

1436 if opts.device_as_default_execution_space is not None and opts.device_as_default_execution_space: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1437 unsupported.append("device_as_default_execution_space") 2oi

1438 if opts.device_int128 is not None and opts.device_int128: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1439 unsupported.append("device_int128") 2pi

1440 if opts.optimization_info is not None: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1441 unsupported.append("optimization_info") 2Ei

1442 if opts.no_display_error_number is not None and opts.no_display_error_number: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1443 unsupported.append("no_display_error_number") 2Ci

1444 if opts.diag_error is not None: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1445 unsupported.append("diag_error") 2qi

1446 if opts.diag_suppress is not None: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1447 unsupported.append("diag_suppress") 2ri

1448 if opts.diag_warn is not None: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1449 unsupported.append("diag_warn") 2si

1450 if opts.brief_diagnostics is not None: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1451 unsupported.append("brief_diagnostics") 2ki

1452 if opts.time is not None: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1453 unsupported.append("time") 2Li

1454 if opts.split_compile is not None: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1455 unsupported.append("split_compile") 2Ji

1456 if opts.fdevice_syntax_only is not None and opts.fdevice_syntax_only: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1457 unsupported.append("fdevice_syntax_only") 2wi

1458 if opts.minimal is not None and opts.minimal: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1459 unsupported.append("minimal") 2Bi

1460 if unsupported: 2:e;evhq kiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMi|hNiNf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

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

1462  

1463 _assert_single_dashed_nvvm_options(options) 2:e;evhq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1464  

1465 if as_bytes: 2:e;evhq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1466 return [o.encode() for o in options] 2:e;evhq Nf/e%f-f'f.f(f/f]e`e)f:f^e{e*f;fGhIhd g HhJhKhLhMhNhZh0h1hOhPhQh

1467 else: 

1468 return options