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

766 statements  

« prev     ^ index     » next       coverage.py v7.17.2, created at 2026-11-05 01:11 +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 ._rt 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 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: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfq r 6gs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g o 9dKgk C p E O F P G Q t y H R u z I S a b 0g7eXeYeLgMgegNgOgPgQgRgSgTgUgVgZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

69 raise RuntimeError("Program has been closed") 26g

70 return 0 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfq r s d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g o 9dKgk C p E O F P G Q t y H R u z I S a b 0g7eXeYeLgMgegNgOgPgQgRgSgTgUgVgZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

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) 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-g9gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/gq r 6gs d 4 :gn 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g Zgo 9dKgk C p E O F P G Q t y H R u z I S a b ;g'g!gWgXg0g7e%g?g=g$g+gXeYgYeLgMgegNgOgPgQgRgSgTgUgVgZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

93  

94 def close(self) -> None: 

95 """Destroy this program.""" 

96 if self._linker is not None: 2GeHe}gq r 6gs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g Zgo 9dKgk p E O F P G Q t y H R u z I S a b !gYgNgOgPgQgRgSgTgUgVgZ Ze0e

97 self._linker.close() 2YgNgOgPgQgRgSgTgUgVg

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

99 self._h_nvrtc.reset() 2GeHe}gq r 6gs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g Zgo 9dKgk p E O F P G Q t y H R u z I S a b !gYgNgOgPgQgRgSgTgUgVgZ Ze0e

100 self._h_nvvm.reset() 2GeHe}gq r 6gs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g Zgo 9dKgk p E O F P G Q t y H R u z I S a b !gYgNgOgPgQgRgSgTgUgVgZ Ze0e

101 self._cleanup_debug_source() 2GeHe}gq r 6gs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g Zgo 9dKgk p E O F P G Q t y H R u z I S a b !gYgNgOgPgQgRgSgTgUgVgZ Ze0e

102  

103 def __dealloc__(self): 

104 self._cleanup_debug_source() 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdfiKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~egihiSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlfii4dmf5dnfjiq r 6gs d 4 :gn 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g Zgo 9dKgk p E O F P G Q t y H R u z I S a b ;g'g!gWgXg0g%g?g=g$g+gXeYgYeLgMgegNgOgPgQgRgSgTgUgVgZ ZerfpfqfsfT uftf4g1g2g3g5gU 7g0e

105  

106 def _cleanup_debug_source(self): 

107 # Only a temp file this Program wrote may be removed, so its path is kept 

108 # in a dedicated attribute rather than derived from _nvrtc_name and 

109 # _options. When a Program dies inside a reference cycle, the cyclic 

110 # collector clears the object attributes of everything in the cycle 

111 # before __dealloc__ runs: _options may already be None, or the 

112 # ProgramOptions may already have lost its fields (#2876). A bytes 

113 # attribute is left alone by that clearing. 

114 path = self._debug_source 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd}gfiKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~egihiSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlfii4dmf5dnfjiq r 6gs d 4 :gn 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g Zgo 9dKgk p E O F P G Q t y H R u z I S a b ;g'g!gWgXg0g%g?g=g$g+gXeYgYeLgMgegNgOgPgQgRgSgTgUgVgZ ZerfpfqfsfT uftf4g1g2g3g5gU 7g0e

115 if path is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd}gfiKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~egihiSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlfii4dmf5dnfjiq r 6gs d 4 :gn 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g Zgo 9dKgk p E O F P G Q t y H R u z I S a b ;g'g!gWgXg0g%g?g=g$g+gXeYgYeLgMgegNgOgPgQgRgSgTgUgVgZ ZerfpfqfsfT uftf4g1g2g3g5gU 7g0e

116 self._debug_source = None 2i j c e f g WgXg

117 self._unlink_debug_source(path.decode()) 2i j c e f g WgXg

118  

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

120 try: 2i j c e l f g WgXg

121 os.unlink(path) 2i j c e l f g WgXg

122 except OSError: 1c

123 pass 1c

124  

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

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

127  

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

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

130  

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

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

133 """ 

134 frame = sys._getframe() 2i j c e l m f g WgXg

135 while frame and frame.f_globals.get("__name__", "").startswith("cuda.core"): 2i j c e l m f g WgXg

136 frame = frame.f_back 

137 caller = "program" 2i j c e l m f g WgXg

138 if frame: 2i j c e l m f g WgXg

139 caller = os.path.splitext(os.path.basename(frame.f_code.co_filename))[0] 2i j c e l m f g WgXg

140 match = re.search(r"__global__.*?(\w+)\s*\(", code, re.DOTALL) 2i j c e l m f g WgXg

141 prefix = re.sub(r"\W", "_", f"{caller}_{match.group(1) if match else 'kernel'}_") 2i j c e l m f g WgXg

142 try: 2i j c e l m f g WgXg

143 fd, path = tempfile.mkstemp(prefix=prefix, suffix=".cu") 2i j c e l m f g WgXg

144 except OSError: 1m

145 return None 1m

146 try: 2i j c e l f g WgXg

147 with os.fdopen(fd, "w", encoding="utf-8") as f: 2i j c e l f g WgXg

148 f.write(code) 2i j c e l f g WgXg

149 return path 2i j c e f g WgXg

150 except OSError: 1l

151 self._unlink_debug_source(path) 1l

152 return None 1l

153  

154 @property 

155 def is_closed(self) -> bool: 

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

157 if self._backend == "NVRTC": 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd}gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfq r 6gs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g o 9dKgk C p E O F P G Q t y H R u z I S a b 0g7eXeYeLgMgegNgOgPgQgRgSgTgUgVgZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

158 return self._h_nvrtc.get() == NULL 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd}gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnf6gs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 0g7eXeYeZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

159 if self._backend == "NVVM": 2q r o 9dKgk C p E O F P G Q t y H R u z I S a b LgMgegNgOgPgQgRgSgTgUgVg

160 return self._h_nvvm.get() == NULL 2q r o 9dKgk C p E O F P G Q t y H R u z I S a b

161 return self._linker is None or self._linker.is_closed 2LgMgegNgOgPgQgRgSgTgUgVg

162  

163 def compile( 

164 self, 

165 target_type: ObjectCodeFormatType | str, 

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

167 logs: object = None, 

168 *, 

169 cache: ProgramCacheResource | None = None, 

170 ) -> ObjectCode: 

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

172  

173 Parameters 

174 ---------- 

175 target_type : ObjectCodeFormatType | str 

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

177 name_expressions : tuple | list, optional 

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

179 Used for template instantiation and similar cases. 

180 logs : object, optional 

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

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

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

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

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

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

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

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

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

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

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

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

193 ``name_expressions`` together with ``cache=`` raises 

194 ``ValueError``: NVRTC populates 

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

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

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

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

199 ``pre_include``, ``pch``, ``use_pch``, ``pch_dir``, NVVM 

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

201 directory component) raise ``ValueError`` via 

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

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

204 pattern directly. 

205  

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

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

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

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

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

211 and vice-versa. 

212  

213 Returns 

214 ------- 

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

216 The compiled object code. 

217 """ 

218 Program_check_open(self) 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfq r 6gs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g o 9dKgk C p E O F P G Q t y H R u z I S a b 0g7eXeYeLgMgegNgOgPgQgRgSgTgUgVgZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

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

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

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

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

223 # lowercases too. 

224 target_type = str(target_type).lower() 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfq r s d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g o 9dKgk C p E O F P G Q t y H R u z I S a b 0g7eXeYeLgMgegNgOgPgQgRgSgTgUgVgZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

225  

226 if cache is None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfq r s d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g o 9dKgk C p E O F P G Q t y H R u z I S a b 0g7eXeYeLgMgegNgOgPgQgRgSgTgUgVgZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

227 return _program_compile_uncached(self, target_type, name_expressions, logs) 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfq r s d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g o 9dKgk C p E O F P G Q t y H R u z I S a b 0g7eXeYeLgMgegNgOgPgQgRgSgTgUgVgZ Ze7g0e

228  

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

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

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

232 # tests that monkeypatch make_program_cache_key via that path 

233 # intercept reliably. 

234 from cuda.core.utils._program_cache import ( 2rfpfqfsfT uftf4g1g2g3gwf5gvfU

235 ProgramCacheResource, 

236 make_program_cache_key, 

237 ) 

238  

239 if not isinstance(cache, ProgramCacheResource): 2rfpfqfsfT uftf4g1g2g3gwf5gvfU

240 raise TypeError( 24g

241 "cache must be an instance of " 24g

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

243 f"{type(cache).__name__}" 24g

244 ) 

245  

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

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

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

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

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

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

252 # would return one without -- silently breaking later 

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

254 # uncached path. Fail loud here instead. 

255 if name_expressions: 2rfpfqfsfT uftf1g2g3gwf5gvfU

256 raise ValueError( 25g

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

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

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

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

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

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

263 "hand from the cached ObjectCode." 

264 ) 

265  

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

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

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

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

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

271 # safe; no try/except needed. 

272 code_for_key = self._code if self._code_type == "nvvm" else self._code.decode("utf-8") 2rfpfqfsfT uftf1g2g3gwfvfU

273  

274 key = make_program_cache_key( 2rfpfqfsfT uftf1g2g3gwfvfU

275 code=code_for_key, 

276 code_type=self._code_type, 

277 options=self._options, 

278 target_type=target_type, 2rfpfqfsfT uftf1g2g3gwfvfU

279 ) 

280 hit_bytes = cache.get(key) 2rfpfqfsfT uftfwfvfU

281 if hit_bytes is not None: 2rfpfqfsfT uftfvfU

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

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

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

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

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

287 # uncached call would have surfaced. 

288 if ( 2rfpfqfsfT U

289 self._backend == "NVRTC" 2rfpfqfsfT U

290 and target_type == "ptx" 2rfpfqfsfT U

291 and not _can_load_generated_ptx() 2pfqf

292 ): 

293 warn( 2pf

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

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

296 stacklevel=2, 

297 category=RuntimeWarning, 2pf

298 ) 

299 return ObjectCode._init(hit_bytes, target_type, name=self._nvrtc_name.decode()) 2rfpfqfsfT U

300 compiled = _program_compile_uncached(self, target_type, name_expressions, logs) 2rfT uftfvfU

301 cache[key] = compiled 2rfT tfvfU

302 return compiled 2rfT tfU

303  

304 @property 

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

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

307  

308 Possible values: 

309  

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

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

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

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

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

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

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

317  

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

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

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

321  

322 .. note:: 

323  

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

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

326 always returns ``None``. 

327 """ 

328 if self._pch_status is None: 1sd4h

329 return None 1s4

330 return PCHStatusType(self._pch_status) 1sdh

331  

332 @property 

333 def backend(self) -> CompilerBackendType: 

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

335 return CompilerBackendType(self._backend) 2q r n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeZgC p E O F P G Q t y H R u z I S a b 'g$gNgOgPgQgRgSgTgUgVg

336  

337 @property 

338 def handle(self) -> ProgramHandleT: 

339 """Return the underlying handle object. 

340  

341 .. note:: 

342  

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

344  

345 .. caution:: 

346  

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

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

349 """ 

350 if self._backend == "NVRTC": 2}gZgC %g$gYg

351 return as_py(self._h_nvrtc) 2}g%g$g

352 elif self._backend == "NVVM": 2ZgC Yg

353 return as_py(self._h_nvvm) # returns int (NVVM uses raw integers) 2ZgC

354 else: 

355 return self._linker.handle 2Yg

356  

357 def __repr__(self) -> str: 

358 return f"<Program backend='{self._backend}'>" 2}gsitiC

359  

360  

361# ============================================================================= 

362# Other Public Classes 

363# ============================================================================= 

364  

365  

366@dataclass 

367class ProgramOptions: 

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

369  

370 Attributes 

371 ---------- 

372 name : str, optional 

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

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

375 arch : str, optional 

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

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

378 will be used. 

379 relocatable_device_code : bool, optional 

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

381 Default: False 

382 extensible_whole_program : bool, optional 

383 Do extensible whole program compilation of device code. 

384 Default: False 

385 debug : bool, optional 

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

387 Default: False 

388 lineinfo: bool, optional 

389 Generate line-number information. 

390 Default: False 

391 device_code_optimize : bool, optional 

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

393 for optimized device code. 

394 Default: None 

395 ptxas_options : str | list[str], optional 

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

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

398 Default: None 

399 max_register_count : int, optional 

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

401 Default: None 

402 ftz : bool, optional 

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

404 values. 

405 Default: False 

406 prec_sqrt : bool, optional 

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

408 Default: True 

409 prec_div : bool, optional 

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

411 approximation. 

412 Default: True 

413 fma : bool, optional 

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

415 multiply-add operations. 

416 Default: True 

417 use_fast_math : bool, optional 

418 Make use of fast math operations. 

419 Default: False 

420 extra_device_vectorization : bool, optional 

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

422 Default: False 

423 link_time_optimization : bool, optional 

424 Generate intermediate code for later link-time optimization. 

425 Default: False 

426 gen_opt_lto : bool, optional 

427 Run the optimizer passes before generating the LTO IR. 

428 Default: False 

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

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

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

432 Default: None 

433 undefine_macro : str | list[str], optional 

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

435 Default: None 

436 include_path : str | list[str], optional 

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

438 Default: None 

439 use_bundled_headers : bool, optional 

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

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

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

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

444 directory to the include search path. NVRTC only. 

445 Default: False 

446 pre_include : str | list[str], optional 

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

448 Default: None 

449 no_source_include : bool, optional 

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

451 Default: False 

452 std : str, optional 

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

454 Default: c++17 

455 builtin_move_forward : bool, optional 

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

457 Default: True 

458 builtin_initializer_list : bool, optional 

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

460 Default: True 

461 disable_warnings : bool, optional 

462 Inhibit all warning messages. 

463 Default: False 

464 restrict : bool, optional 

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

466 Default: False 

467 device_as_default_execution_space : bool, optional 

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

469 Default: False 

470 device_int128 : bool, optional 

471 Allow the __int128 type in device code. 

472 Default: False 

473 optimization_info : str, optional 

474 Provide optimization reports for the specified kind of optimization. 

475 Default: None 

476 no_display_error_number : bool, optional 

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

478 Default: False 

479 diag_error : int | list[int], optional 

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

481 Default: None 

482 diag_suppress : int | list[int], optional 

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

484 Default: None 

485 diag_warn : int | list[int], optional 

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

487 Default: None 

488 brief_diagnostics : bool, optional 

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

490 Default: False 

491 time : str, optional 

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

493 Default: None 

494 split_compile : int, optional 

495 Perform compiler optimizations in parallel. 

496 Default: 1 

497 fdevice_syntax_only : bool, optional 

498 Ends device compilation after front-end syntax checking. 

499 Default: False 

500 minimal : bool, optional 

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

502 Default: False 

503 no_cache : bool, optional 

504 Disable compiler caching. 

505 Default: False 

506 fdevice_time_trace : str, optional 

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

508 Default: None 

509 device_float128 : bool, optional 

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

511 Default: False 

512 frandom_seed : str, optional 

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

514 Default: None 

515 ofast_compile : str, optional 

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

517 Default: None 

518 pch : bool, optional 

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

520 Default: False 

521 create_pch : str, optional 

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

523 Default: None 

524 use_pch : str, optional 

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

526 Default: None 

527 pch_dir : str, optional 

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

529 Default: None 

530 pch_verbose : bool, optional 

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

532 Default: False 

533 pch_messages : bool, optional 

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

535 Default: False 

536 instantiate_templates_in_pch : bool, optional 

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

538 Default: False 

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

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

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

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

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

544 Default: None 

545 use_libdevice : bool, optional 

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

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

548 Default: False 

549 numba_debug : bool, optional 

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

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

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

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

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

555 option is ignored. 

556 Default: None 

557 """ 

558  

559 name: str | None = "default_program" 

560 arch: str | None = None 

561 relocatable_device_code: bool | None = None 

562 extensible_whole_program: bool | None = None 

563 debug: bool | None = None 

564 lineinfo: bool | None = None 

565 device_code_optimize: bool | None = None 

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

567 max_register_count: int | None = None 

568 ftz: bool | None = None 

569 prec_sqrt: bool | None = None 

570 prec_div: bool | None = None 

571 fma: bool | None = None 

572 use_fast_math: bool | None = None 

573 extra_device_vectorization: bool | None = None 

574 link_time_optimization: bool | None = None 

575 gen_opt_lto: bool | None = None 

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

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

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

579 use_bundled_headers: bool | None = None 

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

581 no_source_include: bool | None = None 

582 std: str | None = None 

583 builtin_move_forward: bool | None = None 

584 builtin_initializer_list: bool | None = None 

585 disable_warnings: bool | None = None 

586 restrict: bool | None = None 

587 device_as_default_execution_space: bool | None = None 

588 device_int128: bool | None = None 

589 optimization_info: str | None = None 

590 no_display_error_number: bool | None = None 

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

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

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

594 brief_diagnostics: bool | None = None 

595 time: str | None = None 

596 split_compile: int | None = None 

597 fdevice_syntax_only: bool | None = None 

598 minimal: bool | None = None 

599 no_cache: bool | None = None 

600 fdevice_time_trace: str | None = None 

601 device_float128: bool | None = None 

602 frandom_seed: str | None = None 

603 ofast_compile: str | None = None 

604 pch: bool | None = None 

605 create_pch: str | None = None 

606 use_pch: str | None = None 

607 pch_dir: str | None = None 

608 pch_verbose: bool | None = None 

609 pch_messages: bool | None = None 

610 instantiate_templates_in_pch: bool | None = None 

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

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

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

614  

615 def __post_init__(self) -> None: 

616 # Set name to default if not provided 

617 if self.name is None: 2^g7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-g9gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/gq r 6gs d 4 :gn 5 ~gah_g`gfhBfh ofD c e l m 'd8df g Zgo 9dKgk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p yfCfa b ;g@g[ggh]g'g!gWgXg0g7e%g?g=g$gdh{fAf#g(g8g)g*gihlhjh+gXeYgYeLgMgegZ ehhhZeDf|f}f~fbgagcgmhnhohphqhdggghgigjgrhshkgthlgmgngogfgpgqgrgEfuhvhwhsgFfxhGfyhzhAhtgBhChugvgwgHfDhEhxgygzgAgBgIfxfzfMfNfOfPfFhJfKfGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hCg(h)h*h+h,h-h.h/h:h;h=h?h{g|gDgEgFgGg@h[h]h^h_h`h{h|h}h~haibiHgciIgLfJgdirfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

618 self.name = "default_program" 2ih

619 self._name = self.name.encode() 2^g7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-g9gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/gq r 6gs d 4 :gn 5 ~gah_g`gfhBfh ofD c e l m 'd8df g Zgo 9dKgk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p yfCfa b ;g@g[ggh]g'g!gWgXg0g7e%g?g=g$gdh{fAf#g(g8g)g*gihlhjh+gXeYgYeLgMgegZ ehhhZeDf|f}f~fbgagcgmhnhohphqhdggghgigjgrhshkgthlgmgngogfgpgqgrgEfuhvhwhsgFfxhGfyhzhAhtgBhChugvgwgHfDhEhxgygzgAgBgIfxfzfMfNfOfPfFhJfKfGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hCg(h)h*h+h,h-h.h/h:h;h=h?h{g|gDgEgFgGg@h[h]h^h_h`h{h|h}h~haibiHgciIgLfJgdirfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

620 # Set arch to default if not provided 

621 if self.arch is None: 2^g7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-g9gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/gq r 6gs d 4 :gn 5 ~gah_g`gfhBfh ofD c e l m 'd8df g Zgo 9dKgk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p yfCfa b ;g@g[ggh]g'g!gWgXg0g7e%g?g=g$gdh{fAf#g(g8g)g*gihlhjh+gXeYgYeLgMgegZ ehhhZeDf|f}f~fbgagcgmhnhohphqhdggghgigjgrhshkgthlgmgngogfgpgqgrgEfuhvhwhsgFfxhGfyhzhAhtgBhChugvgwgHfDhEhxgygzgAgBgIfxfzfMfNfOfPfFhJfKfGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hCg(h)h*h+h,h-h.h/h:h;h=h?h{g|gDgEgFgGg@h[h]h^h_h`h{h|h}h~haibiHgciIgLfJgdirfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

622 self.arch = f"sm_{Device().arch}" 2^gGeHe(e)e*e)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7c0 1 2 L M N 8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,g=e?e@e[e]e^e_e3 `e{e|e}e~e-g9gafbfcfdfefffgfhfifjfkflf.gmfnf/g6gs 4 :gn 5 h ofD Zgo 9dKgC a b ;g'g!g0g7e%g?g=g$g+gXeYgYeLgMgegZ Ze

623 if self.use_bundled_headers: 2^g7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-g9gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/gq r 6gs d 4 :gn 5 ~gah_g`gfhBfh ofD c e l m 'd8df g Zgo 9dKgk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p yfCfa b ;g@g[ggh]g'g!gWgXg0g7e%g?g=g$gdh{fAf#g(g8g)g*gihlhjh+gXeYgYeLgMgegZ ehhhZeDf|f}f~fbgagcgmhnhohphqhdggghgigjgrhshkgthlgmgngogfgpgqgrgEfuhvhwhsgFfxhGfyhzhAhtgBhChugvgwgHfDhEhxgygzgAgBgIfxfzfMfNfOfPfFhJfKfGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hCg(h)h*h+h,h-h.h/h:h;h=h?h{g|gDgEgFgGg@h[h]h^h_h`h{h|h}h~haibiHgciIgLfJgdirfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

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

625 # introduced in NVRTC 13.3. 

626 nvrtc_major, nvrtc_minor = handle_return(nvrtc.nvrtcVersion()) 2QfZ ehhh

627 if (nvrtc_major, nvrtc_minor) < (13, 3): 2QfZ ehhh

628 raise RuntimeError( 2eh

629 "use_bundled_headers requires NVRTC >= 13.3, but found " 2eh

630 f"{nvrtc_major}.{nvrtc_minor}. Upgrade the CUDA Toolkit / driver providing " 2eh

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

632 ) 

633 if self.extra_sources is not None: 2^g7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-g9gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/gq r 6gs d 4 :gn 5 ~gah_g`gfhBfh ofD c e l m 'd8df g Zgo 9dKgk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p yfCfa b ;g@g[ggh]g'g!gWgXg0g7e%g?g=g$gdh{fAf#g(g8g)g*gihlhjh+gXeYgYeLgMgegZ hhZeDf|f}f~fbgagcgmhnhohphqhdggghgigjgrhshkgthlgmgngogfgpgqgrgEfuhvhwhsgFfxhGfyhzhAhtgBhChugvgwgHfDhEhxgygzgAgBgIfxfzfMfNfOfPfFhJfKfGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hCg(h)h*h+h,h-h.h/h:h;h=h?h{g|gDgEgFgGg@h[h]h^h_h`h{h|h}h~haibiHgciIgLfJgdirfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

634 if not is_sequence(self.extra_sources): 2:g~gah_g`gfha b @g[g]g+gxfzf{g|g

635 raise TypeError( 2fh

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

637 ) 

638 for i, module in enumerate(self.extra_sources): 2:g~gah_g`ga b @g[g]g+gxfzf{g|g

639 if not isinstance(module, tuple) or len(module) != 2: 2:g~gah_g`ga b @g[g]g+gxfzf{g|g

640 raise TypeError( 2ah

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

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

643 ) 

644  

645 module_name, module_source = module 2:g~g_g`ga b @g[g]g+gxfzf{g|g

646  

647 if not isinstance(module_name, str): 2:g~g_g`ga b @g[g]g+gxfzf{g|g

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

649  

650 if not isinstance(module_source, (str, bytes, bytearray)): 2:g_g`ga b @g[g]g+gxfzf{g|g

651 raise TypeError( 2_g

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

653 f"or bytearray, got {type(module_source).__name__}" 2_g

654 ) 

655  

656 if len(module_source) == 0: 2:g`ga b @g[g]g+gxfzf{g|g

657 raise ValueError(f"Module source for '{module_name}' (index {i}) cannot be empty") 2`g

658  

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

660 return _prepare_nvrtc_options_impl(self) 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{f#g(g8g)g*gXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

661  

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

663 return _prepare_nvvm_options_impl(self, as_bytes) 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

664  

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

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

667  

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

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

670 and formats even for the same conceptual options. 

671  

672 Parameters 

673 ---------- 

674 backend : CompilerBackendType | str 

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

676 target_type : ObjectCodeFormatType | str, optional 

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

678 require additional options based on the target type. 

679  

680 Returns 

681 ------- 

682 list[bytes] 

683 List of option strings encoded as bytes. 

684  

685 Raises 

686 ------ 

687 ValueError 

688 If an unknown backend is specified. 

689 CUDAError 

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

691  

692 Examples 

693 -------- 

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

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

696 """ 

697 backend = str(backend).lower() 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfq r s d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b 7edh{fAf#g(g8g)g*gXeYeZ ZeDf|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgEfsgFfGftgugvgwgHfxgygzgAgBgIfxfzfMfNfOfPfJfKfCgDgEgFgGgHgIgLfJgrfpfqfsfT uftfwfvfU 0e

698 if backend == "nvrtc": 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfq r s d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b 7edh{fAf#g(g8g)g*gXeYeZ ZeDf|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgEfsgFfGftgugvgwgHfxgygzgAgBgIfxfzfMfNfOfPfJfKfCgDgEgFgGgHgIgLfJgrfpfqfsfT uftfwfvfU 0e

699 return self._prepare_nvrtc_options() 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{f#g(g8g)g*gXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

700 elif backend == "nvvm": 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b dhAfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

701 options = self._prepare_nvvm_options(as_bytes=True) 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

702 if target_type == "ltoir" and b"-gen-lto" not in options: 2q r o 9dk C p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

703 options.append(b"-gen-lto") 1qrEFGtHuIa

704 return options 2q r o 9dk C p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

705 else: 

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

707  

708 def __repr__(self) -> str: 

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

710  

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

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

713 if self.extra_sources is None: 2a b @g[ggh]g

714 return None 2gh

715  

716 result = [] 2a b @g[g]g

717 for module_name, module_source in self.extra_sources: 2a b @g[g]g

718 name_bytes = module_name.encode("utf-8") 2a b @g[g]g

719 if isinstance(module_source, str): 2a b @g[g]g

720 source_bytes = module_source.encode("utf-8") 2a b ]g

721 elif isinstance(module_source, bytearray): 2@g[g

722 source_bytes = bytes(module_source) 2@g

723 else: 

724 source_bytes = module_source 2[g

725 result.append((name_bytes, source_bytes)) 2a b @g[g]g

726 return result 2a b @g[g]g

727  

728  

729# ============================================================================= 

730# Private Classes and Helper Functions 

731# ============================================================================= 

732  

733  

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

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

736  

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

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

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

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

741 outside the class. 

742 """ 

743 return Program_compile(program, target_type, name_expressions, logs) 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfq r s d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g o 9dKgk C p E O F P G Q t y H R u z I S a b 0g7eXeYeLgMgegNgOgPgQgRgSgTgUgVgZ ZeT U 0e

744  

745  

746# Module-level state for NVVM lazy loading 

747_nvvm_module = None 

748_nvvm_import_attempted = False 

749  

750  

751def _get_nvvm_module() -> object: 

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

753 global _nvvm_module, _nvvm_import_attempted 

754  

755 if _nvvm_module is not None: 2^g9gbhchkhq r Zgo pi9dKgk qiC p E O F P G Q t y H R u z I S a b ;gDfEfFfGfHfIfxfJfKfLf

756 return _nvvm_module 29gq r Zgo pi9dKgk qiC p E O F P G Q t y H R u z I S a b ;gDfEfFfGfHfIfxfJfKfLf

757 if _nvvm_import_attempted: 2^gbhchkh

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

759  

760 try: 2^gbhchkh

761 # Every cuda-bindings that cuda.core accepts provides cuda.bindings.nvvm. 

762 # The probe checks that libnvvm itself loads. 

763 nvvm = _optional_cuda_import( 2^gbhchkh

764 "cuda.bindings.nvvm", 

765 probe_function=lambda module: module.version(), # probe triggers libnvvm load 2^gbhchkh

766 ) 

767 if nvvm is None: 2^gbhch

768 raise RuntimeError( 2bhch

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: 2bhchkh

776 _nvvm_module = None 2bhch

777 _nvvm_import_attempted = True 2bhch

778 raise 2bhch

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 2rik

784 return find_bitcode_lib("device") 2rik

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): 26 W A B #g(g8g)g*g

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

791 return True 16

792 if isinstance(macro, tuple): 2W A B #g(g8g)g*g

793 if len(macro) != 2 or any(not isinstance(val, str) for val in macro): 2W A B #g8g)g*g

794 raise RuntimeError(f"Expected define_macro tuple[str, str], got {macro}") 2#g)g*g

795 options.append(f"--define-macro={macro[0]}={macro[1]}") 2W A B 8g

796 return True 2W A B 8g

797 return False 2A B #g(g8g

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]]" 26 W A B #g(g8g)g*g

803 if _process_define_macro_inner(options, macro): 26 W A B #g(g8g)g*g

804 return 16W

805 if is_nested_sequence(macro): 2A B #g(g8g

806 for seq_macro in macro: 2A B #g8g

807 if not _process_define_macro_inner(options, seq_macro): 2A B #g8g

808 raise RuntimeError(f"Expected define_macro {union_type}, got {seq_macro}") 28g

809 return 1AB

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

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)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeV qerev w x kiL liM miN niois d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeofD c e l m 'd8df g 7eXeYeZ pfqf

816 nvrtc_major, nvrtc_minor = handle_return(nvrtc.nvrtcVersion()) 2)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeV qerev w x kiL liM miN niois d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeofD c e l m 'd8df g 7eXeYeZ pfqf

817 return (nvrtc_major, nvrtc_minor, 0) <= drv 2)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeV qerev w x kiL liM miN niois d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeofD c e l m 'd8df g 7eXeYeZ pfqf

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: 2YgLgMgegNgOgPgQgRgSgTgUgVg

831 warn( 2eg

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, 2eg

835 stacklevel=4, 

836 ) 

837 return LinkerOptions( 2YgLgMgegNgOgPgQgRgSgTgUgVg

838 name=options.name, 2YgLgMgegNgOgPgQgRgSgTgUgVg

839 arch=options.arch, 2YgLgMgegNgOgPgQgRgSgTgUgVg

840 max_register_count=options.max_register_count, 2YgLgMgegNgOgPgQgRgSgTgUgVg

841 time=options.time, 2YgLgMgegNgOgPgQgRgSgTgUgVg

842 link_time_optimization=options.link_time_optimization, 2YgLgMgegNgOgPgQgRgSgTgUgVg

843 debug=options.debug, 2YgLgMgegNgOgPgQgRgSgTgUgVg

844 lineinfo=options.lineinfo, 2YgLgMgegNgOgPgQgRgSgTgUgVg

845 ftz=options.ftz, 2YgLgMgegNgOgPgQgRgSgTgUgVg

846 prec_div=options.prec_div, 2YgLgMgegNgOgPgQgRgSgTgUgVg

847 prec_sqrt=options.prec_sqrt, 2YgLgMgegNgOgPgQgRgSgTgUgVg

848 fma=options.fma, 2YgLgMgegNgOgPgQgRgSgTgUgVg

849 split_compile=options.split_compile, 2YgLgMgegNgOgPgQgRgSgTgUgVg

850 ptxas_options=options.ptxas_options, 2YgLgMgegNgOgPgQgRgSgTgUgVg

851 no_cache=options.no_cache, 2YgLgMgegNgOgPgQgRgSgTgUgVg

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") 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-g9gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/gq r 6gs d 4 :gn 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g Zgo 9dKgk C p E O F P G Q t y H R u z I S a b ;g'g!gWgXg0g7e%g?g=g$g+gXeYgYeLgMgegNgOgPgQgRgSgTgUgVgZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

868 code_type = code_type.lower() 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-g9gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/gq r 6gs d 4 :gn 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g Zgo 9dKgk C p E O F P G Q t y H R u z I S a b ;g'g!gWgXg0g7e%g?g=g$g+gXeYgYeLgMgegNgOgPgQgRgSgTgUgVgZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

869 self._code_type = code_type 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-g9gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/gq r 6gs d 4 :gn 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g Zgo 9dKgk C p E O F P G Q t y H R u z I S a b ;g'g!gWgXg0g7e%g?g=g$g+gXeYgYeLgMgegNgOgPgQgRgSgTgUgVgZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

870 self._compile_lock = threading.Lock() 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-g9gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/gq r 6gs d 4 :gn 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g Zgo 9dKgk C p E O F P G Q t y H R u z I S a b ;g'g!gWgXg0g7e%g?g=g$g+gXeYgYeLgMgegNgOgPgQgRgSgTgUgVgZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

871 self._use_libdevice = False 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-g9gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/gq r 6gs d 4 :gn 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g Zgo 9dKgk C p E O F P G Q t y H R u z I S a b ;g'g!gWgXg0g7e%g?g=g$g+gXeYgYeLgMgegNgOgPgQgRgSgTgUgVgZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

872 self._libdevice_added = False 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-g9gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/gq r 6gs d 4 :gn 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g Zgo 9dKgk C p E O F P G Q t y H R u z I S a b ;g'g!gWgXg0g7e%g?g=g$g+gXeYgYeLgMgegNgOgPgQgRgSgTgUgVgZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

873  

874 self._pch_status = None 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-g9gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/gq r 6gs d 4 :gn 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g Zgo 9dKgk C p E O F P G Q t y H R u z I S a b ;g'g!gWgXg0g7e%g?g=g$g+gXeYgYeLgMgegNgOgPgQgRgSgTgUgVgZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

875 self._nvrtc_name = options._name 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-g9gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/gq r 6gs d 4 :gn 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g Zgo 9dKgk C p E O F P G Q t y H R u z I S a b ;g'g!gWgXg0g7e%g?g=g$g+gXeYgYeLgMgegNgOgPgQgRgSgTgUgVgZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

876 self._extra_options = [] 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-g9gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/gq r 6gs d 4 :gn 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g Zgo 9dKgk C p E O F P G Q t y H R u z I S a b ;g'g!gWgXg0g7e%g?g=g$g+gXeYgYeLgMgegNgOgPgQgRgSgTgUgVgZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

877  

878 if code_type == "c++": 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-g9gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/gq r 6gs d 4 :gn 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g Zgo 9dKgk C p E O F P G Q t y H R u z I S a b ;g'g!gWgXg0g7e%g?g=g$g+gXeYgYeLgMgegNgOgPgQgRgSgTgUgVgZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

879 assert_type(code, str) 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/g6gs d 4 :gn 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 'g!gWgXg0g7e%g?g$gXeYeZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

880 if options.extra_sources is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/g6gs d 4 :gn 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 'g!gWgXg0g7e%g$gXeYeZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

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

882  

883 if (options.debug or options.lineinfo) and options.name == "default_program": 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/g6gs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 'g!gWgXg0g7e%g$gXeYeZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

884 debug_path = self._try_materialize_nvrtc_debug_source(code) 2i j c e l m f g WgXg

885 if debug_path is not None: 2i j c e l m f g WgXg

886 self._nvrtc_name = self._debug_source = debug_path.encode() 2i j c e f g WgXg

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: 2i j c e f g WgXg

891 include_dir = os.path.dirname(os.path.abspath(options.name)) 2i j c e f g WgXg

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()] 2i j c e f g WgXg

897  

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

899 code_bytes = code.encode() 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/g6gs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 'g!gWgXg0g7e%g$gXeYeZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

900 code_ptr = <const char*>code_bytes 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/g6gs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 'g!gWgXg0g7e%g$gXeYeZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

901 name_ptr = <const char*>self._nvrtc_name 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/g6gs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 'g!gWgXg0g7e%g$gXeYeZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

902  

903 with nogil: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/g6gs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 'g!gWgXg0g7e%g$gXeYeZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

904 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcCreateProgram( 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/g6gs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 'g!gWgXg0g7e%g$gXeYeZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

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

906 self._h_nvrtc = create_nvrtc_program_handle(nvrtc_prog) 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/g6gs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 'g!gWgXg0g7e%g$gXeYeZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

907 self._code = code_bytes 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/g6gs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 'g!gWgXg0g7e%g$gXeYeZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

908 self._backend = str(CompilerBackendType.NVRTC) 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/g6gs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 'g!gWgXg0g7e%g$gXeYeZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

909 self._linker = None 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/g6gs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 'g!gWgXg0g7e%g$gXeYeZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

910  

911 elif code_type == "ptx": 29gq r Zgo 9dKgk C p E O F P G Q t y H R u z I S a b ;g=g+gYgLgMgegNgOgPgQgRgSgTgUgVg

912 assert_type(code, str) 2+gYgLgMgegNgOgPgQgRgSgTgUgVg

913 if options.extra_sources is not None: 2+gYgLgMgegNgOgPgQgRgSgTgUgVg

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

915 code_bytes = code.encode() 2YgLgMgegNgOgPgQgRgSgTgUgVg

916 self._code = code_bytes 2YgLgMgegNgOgPgQgRgSgTgUgVg

917 self._linker = Linker( 2YgLgMgegNgOgPgQgRgSgTgUgVg

918 ObjectCode._init(code_bytes, code_type), options=_translate_program_options(options) 2YgLgMgegNgOgPgQgRgSgTgUgVg

919 ) 

920 self._backend = str(Linker.which_backend()) 2YgLgMgegNgOgPgQgRgSgTgUgVg

921  

922 elif code_type == "nvvm": 29gq r Zgo 9dKgk C p E O F P G Q t y H R u z I S a b ;g=g

923 _get_nvvm_module() # Validate NVVM availability 29gq r Zgo 9dKgk C p E O F P G Q t y H R u z I S a b ;g

924 if isinstance(code, str): 29gq r Zgo 9dKgk C p E O F P G Q t y H R u z I S a b ;g

925 code = code.encode("utf-8") 29go 9dKgk C p E O F P G Q t y H R u z I S a b

926 elif not isinstance(code, (bytes, bytearray)): 2q r Zg;g

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

928 self._code = bytes(code) # Coerce bytearray -> bytes so retention type is stable 29gq r Zgo 9dKgk C p E O F P G Q t y H R u z I S a b

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 29gq r Zgo 9dKgk C p E O F P G Q t y H R u z I S a b

933 name_ptr = <const char*>options._name 29gq r Zgo 9dKgk C p E O F P G Q t y H R u z I S a b

934 code_len = len(self._code) 29gq r Zgo 9dKgk C p E O F P G Q t y H R u z I S a b

935  

936 with nogil: 29gq r Zgo 9dKgk C p E O F P G Q t y H R u z I S a b

937 HANDLE_RETURN_NVVM(NULL, cynvvm.nvvmCreateProgram(&nvvm_prog)) 29gq r Zgo 9dKgk C p E O F P G Q t y H R u z I S a b

938 self._h_nvvm = create_nvvm_program_handle(nvvm_prog) # RAII from here 29gq r Zgo 9dKgk C p E O F P G Q t y H R u z I S a b

939 with nogil: 29gq r Zgo 9dKgk C p E O F P G Q t y H R u z I S a b

940 HANDLE_RETURN_NVVM(nvvm_prog, cynvvm.nvvmAddModuleToProgram(nvvm_prog, code_ptr, code_len, name_ptr)) 29gq r Zgo 9dKgk C p E O F P G Q t y H R u z I S a b

941  

942 # Add extra modules if provided 

943 if options.extra_sources is not None: 29gq r Zgo 9dKgk C p E O F P G Q t y H R u z I S a b

944 extra_sources_bytes = options._prepare_extra_sources_bytes() 1ab

945 for module_name_bytes, module_bytes in extra_sources_bytes: 1ab

946 module_ptr = <const char*>module_bytes 1ab

947 module_len = len(module_bytes) 1ab

948 module_name_ptr = <const char*>module_name_bytes 1ab

949 with nogil: 1ab

950 HANDLE_RETURN_NVVM(nvvm_prog, cynvvm.nvvmAddModuleToProgram( 1ab

951 nvvm_prog, module_ptr, module_len, module_name_ptr)) 

952  

953 # Store use_libdevice flag 

954 if options.use_libdevice: 29gq r Zgo 9dKgk C p E O F P G Q t y H R u z I S a b

955 self._use_libdevice = True 1k

956  

957 self._backend = str(CompilerBackendType.NVVM) 29gq r Zgo 9dKgk C p E O F P G Q t y H R u z I S a b

958 self._linker = None 29gq r Zgo 9dKgk C p E O F P G Q t y H R u z I S a b

959  

960 else: 

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

962 if options.use_libdevice: 2=g

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

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

965  

966 return 0 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJd,gKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~e-g9gSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf.g4dmf5dnf/gq r 6gs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g Zgo 9dKgk C p E O F P G Q t y H R u z I S a b 'g!gWgXg0g7e%g$gXeYgYeLgMgegNgOgPgQgRgSgTgUgVgZ ZerfpfqfsfT uftf4g1g2g3gwf5gvfU 7g0e

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 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 7eXeYeZ ZeT U 0e

979 cdef size_t logsize = 0 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 7eXeYeZ ZeT U 0e

980 cdef vector[const char*] options_vec 

981 cdef char* data_ptr = NULL 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 7eXeYeZ ZeT U 0e

982 cdef bytes name_bytes 

983 cdef const char* name_ptr = NULL 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 7eXeYeZ ZeT U 0e

984 cdef const char* lowered_name = NULL 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 7eXeYeZ ZeT U 0e

985 cdef dict symbol_mapping = {} 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 7eXeYeZ ZeT U 0e

986  

987 # Add name expressions before compilation 

988 if name_expressions: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 7eXeYeZ ZeT U 0e

989 for n in name_expressions: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ 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~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcJ K xcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7cv w x 0 1 2 L M N 8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPd3 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d

990 name_bytes = n.encode() if isinstance(n, str) else n 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ 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~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcJ K xcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7cv w x 0 1 2 L M N 8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPd3 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d

991 name_ptr = <const char*>name_bytes 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ 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~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcJ K xcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7cv w x 0 1 2 L M N 8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPd3 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d

992 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcAddNameExpression(prog, name_ptr)) 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ 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~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcJ K xcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7cv w x 0 1 2 L M N 8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPd3 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d

993  

994 # Build options array 

995 options_vec.resize(len(options_list)) 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 7eXeYeZ ZeT U 0e

996 for i in range(len(options_list)): 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 7eXeYeZ ZeT U 0e

997 options_vec[i] = <const char*>(<bytes>options_list[i]) 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 7eXeYeZ ZeT U 0e

998  

999 # Compile 

1000 with nogil: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 7eXeYeZ ZeT U 0e

1001 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcCompileProgram(prog, <int>options_vec.size(), options_vec.data())) 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 7eXeYeZ ZeT U 0e

1002  

1003 # Get compiled output based on target type 

1004 if target_type == "ptx": 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh D c e l m 'd8df g 7eXeYeZ ZeT U 0e

1005 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPTXSize(prog, &output_size)) 2)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeV qerev w x L M N s d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeD c e l m 'd8df g 7eXeYeZ

1006 data = bytearray(output_size) 2)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeV qerev w x L M N s d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeD c e l m 'd8df g 7eXeYeZ

1007 data_ptr = <char*>(<bytearray>data) 2)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeV qerev w x L M N s d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeD c e l m 'd8df g 7eXeYeZ

1008 with nogil: 2)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeV qerev w x L M N s d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeD c e l m 'd8df g 7eXeYeZ

1009 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPTX(prog, data_ptr)) 2)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeV qerev w x L M N s d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeD c e l m 'd8df g 7eXeYeZ

1010 elif target_type == "cubin": 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc2e3e4e5e6e!dV +e,e-eJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfh ZeT U 0e

1011 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetCUBINSize(prog, &output_size)) 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc!d+e,e-eJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfh ZeT U 0e

1012 data = bytearray(output_size) 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc!d+e,e-eJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfh ZeT U 0e

1013 data_ptr = <char*>(<bytearray>data) 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc!d+e,e-eJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfh ZeT U 0e

1014 with nogil: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc!d+e,e-eJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfh ZeT U 0e

1015 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetCUBIN(prog, data_ptr)) 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc!d+e,e-eJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfh ZeT U 0e

1016 else: # ltoir 

1017 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLTOIRSize(prog, &output_size)) 22e3e4e5e6e!dV 0 1 2 ~e

1018 data = bytearray(output_size) 22e3e4e5e6e!dV 0 1 2 ~e

1019 data_ptr = <char*>(<bytearray>data) 22e3e4e5e6e!dV 0 1 2 ~e

1020 with nogil: 22e3e4e5e6e!dV 0 1 2 ~e

1021 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLTOIR(prog, data_ptr)) 22e3e4e5e6e!dV 0 1 2 ~e

1022  

1023 # Get lowered names after compilation 

1024 if name_expressions: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh D c e l m 'd8df g 7eXeYeZ ZeT U 0e

1025 for n in name_expressions: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ 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~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcJ K xcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7cv w x 0 1 2 L M N 8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPd3 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d

1026 name_bytes = n.encode() if isinstance(n, str) else n 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ 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~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcJ K xcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7cv w x 0 1 2 L M N 8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPd3 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d

1027 name_ptr = <const char*>name_bytes 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ 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~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcJ K xcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7cv w x 0 1 2 L M N 8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPd3 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d

1028 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLoweredName(prog, name_ptr, &lowered_name)) 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ 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~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcJ K xcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7cv w x 0 1 2 L M N 8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPd3 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d

1029 symbol_mapping[n] = lowered_name if lowered_name != NULL else None 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ 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~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcJ K xcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7cv w x 0 1 2 L M N 8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPd3 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d

1030  

1031 # Get compilation log if requested 

1032 if logs is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh D c e l m 'd8df g 7eXeYeZ ZeT U 0e

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

1034 if logsize > 1: 1hD

1035 log = bytearray(logsize) 1hD

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

1037 with nogil: 1hD

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

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

1040  

1041 return ObjectCode._init(bytes(data), target_type, symbol_mapping=symbol_mapping, name=name) 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh D c e l m 'd8df g 7eXeYeZ ZeT U 0e

1042  

1043  

1044cdef object _read_pch_status(cynvrtc.nvrtcProgram prog): 

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

1046 cdef cynvrtc.nvrtcResult err 

1047 with nogil: 1sdnYh

1048 err = cynvrtc.nvrtcGetPCHCreateStatus(prog) 1sdnYh

1049 if err == cynvrtc.nvrtcResult.NVRTC_SUCCESS: 1sdnYh

1050 return PCHStatusType.CREATED 1sdnYh

1051 if err == cynvrtc.nvrtcResult.NVRTC_ERROR_PCH_CREATE_HEAP_EXHAUSTED: 1dh

1052 return None # sentinel: caller should auto-retry 1d

1053 if err == cynvrtc.nvrtcResult.NVRTC_ERROR_NO_PCH_CREATE_ATTEMPTED: 1h

1054 return PCHStatusType.NOT_ATTEMPTED 1h

1055 return PCHStatusType.FAILED 

1056  

1057  

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

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

1060 cdef cynvrtc.nvrtcProgram prog = as_cu(self._h_nvrtc) 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 7eXeYeZ ZeT U 0e

1061 cdef list options_list = self._options.as_bytes("nvrtc", target_type) + self._extra_options 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 7eXeYeZ ZeT U 0e

1062  

1063 result = _nvrtc_compile_and_extract( 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 7eXeYeZ ZeT U 0e

1064 prog, target_type, name_expressions, logs, options_list, self._nvrtc_name.decode(), 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 7eXeYeZ ZeT U 0e

1065 ) 

1066  

1067 cdef bint pch_creation_possible = self._options.create_pch or self._options.pch 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh D c e l m 'd8df g 7eXeYeZ ZeT U 0e

1068 if not pch_creation_possible: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh D c e l m 'd8df g 7eXeYeZ ZeT U 0e

1069 self._pch_status = None 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnf4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeVeWeyeD c e l m 'd8df g 7eXeYeZ ZeT U 0e

1070 return result 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnf4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeVeWeyeD c e l m 'd8df g 7eXeYeZ ZeT U 0e

1071  

1072 try: 1sdnYh

1073 status = _read_pch_status(prog) 1sdnYh

1074 except RuntimeError as e: 

1075 raise RuntimeError( 

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

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

1078 ) from e 

1079  

1080 if status is not None: 1sdnYh

1081 self._pch_status = str(status) 1snYh

1082 return result 1snYh

1083  

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

1085 cdef size_t required = 0 1d

1086 with nogil: 1d

1087 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPCHHeapSizeRequired(prog, &required)) 1d

1088 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcSetPCHHeapSize(required)) 1d

1089  

1090 cdef cynvrtc.nvrtcProgram retry_prog 

1091 cdef const char* code_ptr = <const char*>self._code 1d

1092 cdef const char* name_ptr = <const char*>self._nvrtc_name 1d

1093 with nogil: 1d

1094 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcCreateProgram( 1d

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

1096 self._h_nvrtc = create_nvrtc_program_handle(retry_prog) 1d

1097  

1098 result = _nvrtc_compile_and_extract( 1d

1099 retry_prog, target_type, name_expressions, logs, options_list, self._nvrtc_name.decode(), 1d

1100 ) 

1101  

1102 status = _read_pch_status(retry_prog) 1d

1103 self._pch_status = str(status) if status is not None else str(PCHStatusType.FAILED) 1d

1104 return result 1d

1105  

1106  

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

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

1109 cdef cynvvm.nvvmProgram prog = as_cu(self._h_nvvm) 2q r o 9dk C p E O F P G Q t y H R u z I S a b

1110 cdef size_t output_size = 0 2q r o 9dk C p E O F P G Q t y H R u z I S a b

1111 cdef size_t logsize = 0 2q r o 9dk C p E O F P G Q t y H R u z I S a b

1112 cdef vector[const char*] options_vec 

1113 cdef char* data_ptr = NULL 2q r o 9dk C p E O F P G Q t y H R u z I S a b

1114 cdef bytes libdevice_bytes 

1115 cdef const char* libdevice_ptr 

1116 cdef size_t libdevice_len 

1117 # Build options array 

1118 options_list = self._options.as_bytes("nvvm", target_type) 2q r o 9dk C p E O F P G Q t y H R u z I S a b

1119 options_vec.resize(len(options_list)) 2q r o 9dk C p E O F P G Q t y H R u z I S a b

1120 for i in range(len(options_list)): 2q r o 9dk C p E O F P G Q t y H R u z I S a b

1121 options_vec[i] = <const char*>(<bytes>options_list[i]) 2q r o 9dk C p E O F P G Q t y H R u z I S a b

1122  

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

1124 with self._compile_lock: 2q r o 9dk C p E O F P G Q t y H R u z I S a b

1125 with nogil: 2q r o 9dk C p E O F P G Q t y H R u z I S a b

1126 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmVerifyProgram(prog, <int>options_vec.size(), options_vec.data())) 2q r o 9dk C p E O F P G Q t y H R u z I S a b

1127  

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

1129 if self._use_libdevice and not self._libdevice_added: 1qrokCpEOFPGQtyHRuzISab

1130 libdevice_path = _find_libdevice_path() 1k

1131 with open(libdevice_path, "rb") as f: 1k

1132 libdevice_bytes = f.read() 1k

1133 libdevice_ptr = <const char*>libdevice_bytes 1k

1134 libdevice_len = len(libdevice_bytes) 1k

1135 with nogil: 1k

1136 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmLazyAddModuleToProgram( 1k

1137 prog, libdevice_ptr, libdevice_len, NULL)) 

1138 self._libdevice_added = True 1k

1139  

1140 with nogil: 1qrokCpEOFPGQtyHRuzISab

1141 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmCompileProgram(prog, <int>options_vec.size(), options_vec.data())) 1qrokCpEOFPGQtyHRuzISab

1142  

1143 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetCompiledResultSize(prog, &output_size)) 1qrokCpEOFPGQtyHRuzISab

1144 data = bytearray(output_size) 1qrokCpEOFPGQtyHRuzISab

1145 data_ptr = <char*>(<bytearray>data) 1qrokCpEOFPGQtyHRuzISab

1146 with nogil: 1qrokCpEOFPGQtyHRuzISab

1147 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetCompiledResult(prog, data_ptr)) 1qrokCpEOFPGQtyHRuzISab

1148  

1149 # Get compilation log if requested 

1150 if logs is not None: 1qrokCpEOFPGQtyHRuzISab

1151 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetProgramLogSize(prog, &logsize)) 1o

1152 if logsize > 1: 1o

1153 log = bytearray(logsize) 

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

1155 with nogil: 

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

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

1158  

1159 return ObjectCode._init(bytes(data), target_type, name=self._options.name) 1qrokCpEOFPGQtyHRuzISab

1160  

1161# Supported target types per backend 

1162cdef dict SUPPORTED_TARGETS = { 

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

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

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

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

1167} 

1168  

1169  

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

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

1172 # Validate target_type for this backend 

1173 supported = SUPPORTED_TARGETS.get(self._backend) 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfq r s d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g o 9dKgk C p E O F P G Q t y H R u z I S a b 0g7eXeYeLgMgegNgOgPgQgRgSgTgUgVgZ ZeT U 0e

1174 if supported is None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfq r s d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g o 9dKgk C p E O F P G Q t y H R u z I S a b 0g7eXeYeLgMgegNgOgPgQgRgSgTgUgVgZ ZeT U 0e

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

1176 if target_type not in supported: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfq r s d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g o 9dKgk C p E O F P G Q t y H R u z I S a b 0g7eXeYeLgMgegNgOgPgQgRgSgTgUgVgZ ZeT U 0e

1177 raise ValueError( 2Kg0g

1178 f'Unsupported target_type="{target_type}" for {self._backend} ' 2Kg0g

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

1180 ) 

1181  

1182 if self._backend == "NVRTC": 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfq r s d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g o 9dk C p E O F P G Q t y H R u z I S a b 7eXeYeLgMgegNgOgPgQgRgSgTgUgVgZ ZeT U 0e

1183 if target_type == "ptx" and not _can_load_generated_ptx(): 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 7eXeYeZ ZeT U 0e

1184 warn( 2)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeV qerev w x L M N s d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeofD c e l m 'd8df g 7eXeYeZ

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

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

1187 stacklevel=2, 

1188 category=RuntimeWarning, 2)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeV qerev w x L M N s d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeofD c e l m 'd8df g 7eXeYeZ

1189 ) 

1190 return Program_compile_nvrtc(self, target_type, name_expressions, logs) 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeh ofD c e l m 'd8df g 7eXeYeZ ZeT U 0e

1191  

1192 elif self._backend == "NVVM": 2q r o 9dk C p E O F P G Q t y H R u z I S a b LgMgegNgOgPgQgRgSgTgUgVg

1193 return Program_compile_nvvm(self, target_type, logs) 2q r o 9dk C p E O F P G Q t y H R u z I S a b

1194  

1195 else: 

1196 return self._linker.link(target_type) 2LgMgegNgOgPgQgRgSgTgUgVg

1197  

1198  

1199cdef inline list _prepare_nvrtc_options_impl(object opts): 

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

1201 options = [f"-arch={opts.arch}"] 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{f#g(g8g)g*gXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1202 if opts.relocatable_device_code is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{f#g(g8g)g*gXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1203 options.append(f"--relocatable-device-code={_handle_boolean_option(opts.relocatable_device_code)}") 2)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepe!dV qere:e;ese

1204 if opts.extensible_whole_program is not None and opts.extensible_whole_program: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{f#g(g8g)g*gXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1205 options.append("--extensible-whole-program") 2Ne

1206 if opts.debug is not None and opts.debug: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{f#g(g8g)g*gXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1207 options.append("--device-debug") 2i j c e l m 8df g {f

1208 if opts.lineinfo is not None and opts.lineinfo: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{f#g(g8g)g*gXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1209 options.append("--generate-line-info") 2{f

1210 if opts.device_code_optimize is not None and opts.device_code_optimize: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{f#g(g8g)g*gXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1211 options.append("--dopt=on") 1i

1212 if opts.ptxas_options is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{f#g(g8g)g*gXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1213 opt_name = "--ptxas-options" 26d7dBf

1214 if isinstance(opts.ptxas_options, str): 26d7dBf

1215 options.append(f"{opt_name}={opts.ptxas_options}") 2Bf

1216 elif is_sequence(opts.ptxas_options): 26d7d

1217 for opt_value in opts.ptxas_options: 26d7d

1218 options.append(f"{opt_name}={opt_value}") 26d7d

1219 if opts.max_register_count is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{f#g(g8g)g*gXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1220 options.append(f"--maxrregcount={opts.max_register_count}") 2se

1221 if opts.ftz is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{f#g(g8g)g*gXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1222 options.append(f"--ftz={_handle_boolean_option(opts.ftz)}") 2(d{f

1223 if opts.prec_sqrt is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{f#g(g8g)g*gXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

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

1225 if opts.prec_div is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{f#g(g8g)g*gXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

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

1227 if opts.fma is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{f#g(g8g)g*gXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

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

1229 if opts.use_fast_math is not None and opts.use_fast_math: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{f#g(g8g)g*gXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1230 options.append("--use_fast_math") 2tefg

1231 if opts.extra_device_vectorization is not None and opts.extra_device_vectorization: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{f#g(g8g)g*gXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1232 options.append("--extra-device-vectorization") 2Ie

1233 if opts.link_time_optimization is not None and opts.link_time_optimization: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{f#g(g8g)g*gXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1234 options.append("--dlink-time-opt") 22e3e4e5e6e!dV 0 1 2 Je

1235 if opts.gen_opt_lto is not None and opts.gen_opt_lto: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{f#g(g8g)g*gXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1236 options.append("--gen-opt-lto") 2Pe

1237 if opts.define_macro is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{f#g(g8g)g*gXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1238 _process_define_macro(options, opts.define_macro) 26 W A B #g(g8g)g*g

1239 if opts.undefine_macro is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1240 if isinstance(opts.undefine_macro, str): 2#d$d

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

1242 elif is_sequence(opts.undefine_macro): 2#d

1243 for macro in opts.undefine_macro: 2#d

1244 options.append(f"--undefine-macro={macro}") 2#d

1245 if opts.use_bundled_headers: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

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

1247 if opts.include_path is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1248 if isinstance(opts.include_path, str): 2zeAeBeCeDeEeFeJ K $dh |f}f~fbgdg

1249 options.append(f"--include-path={opts.include_path}") 2$ddg

1250 elif is_sequence(opts.include_path): 2zeAeBeCeDeEeFeJ K h |f}f~fbg

1251 for path in opts.include_path: 2zeAeBeCeDeEeFeJ K h |f}f~f

1252 options.append(f"--include-path={path}") 2zeAeBeCeDeEeFeJ K h

1253 if opts.pre_include is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1254 if isinstance(opts.pre_include, str): 2Bfagcg

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

1256 elif is_sequence(opts.pre_include): 2Bfagcg

1257 for header in opts.pre_include: 2Bfag

1258 options.append(f"--pre-include={header}") 2Bf

1259 if opts.no_source_include is not None and opts.no_source_include: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1260 options.append("--no-source-include") 2Re

1261 if opts.std is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1262 options.append(f"--std={opts.std}") 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFevcwcJ K xcyczcAcBcCcDcEcFcGcHcIc+e,e-eKdLdMdNdOdPd3 QdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d0e

1263 if opts.builtin_move_forward is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

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

1265 if opts.builtin_initializer_list is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

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

1267 if opts.disable_warnings is not None and opts.disable_warnings: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1268 options.append("--disable-warnings") 2ue

1269 if opts.restrict is not None and opts.restrict: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1270 options.append("--restrict") 2ve

1271 if opts.device_as_default_execution_space is not None and opts.device_as_default_execution_space: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1272 options.append("--device-as-default-execution-space") 2ve

1273 if opts.device_int128 is not None and opts.device_int128: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1274 options.append("--device-int128") 2we

1275 if opts.device_float128 is not None and opts.device_float128: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1276 options.append("--device-float128") 2Bf

1277 if opts.optimization_info is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

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

1279 if opts.no_display_error_number is not None and opts.no_display_error_number: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1280 options.append("--no-display-error-number") 2Ke

1281 if opts.diag_error is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1282 if isinstance(opts.diag_error, int): 2%dX

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

1284 elif is_sequence(opts.diag_error): 1X

1285 for error in opts.diag_error: 1X

1286 options.append(f"--diag-error={error}") 1X

1287 if opts.diag_suppress is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1288 if isinstance(opts.diag_suppress, int): 2%dX

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

1290 elif is_sequence(opts.diag_suppress): 1X

1291 for suppress in opts.diag_suppress: 1X

1292 options.append(f"--diag-suppress={suppress}") 1X

1293 if opts.diag_warn is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1294 if isinstance(opts.diag_warn, int): 2xeBf

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

1296 elif is_sequence(opts.diag_warn): 2Bf

1297 for w in opts.diag_warn: 2Bf

1298 options.append(f"--diag-warn={w}") 2Bf

1299 if opts.brief_diagnostics is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

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

1301 if opts.time is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1302 options.append(f"--time={opts.time}") 2Bf

1303 if opts.split_compile is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

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

1305 if opts.fdevice_syntax_only is not None and opts.fdevice_syntax_only: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1306 options.append("--fdevice-syntax-only") 2Oe

1307 if opts.minimal is not None and opts.minimal: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1308 options.append("--minimal") 2Qe

1309 if opts.no_cache is not None and opts.no_cache: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1310 options.append("--no-cache") 2Se

1311 if opts.fdevice_time_trace is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1312 options.append(f"--fdevice-time-trace={opts.fdevice_time_trace}") 15

1313 if opts.frandom_seed is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

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

1315 if opts.ofast_compile is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

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

1317 # PCH options (CUDA 12.8+) 

1318 if opts.pch is not None and opts.pch: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1319 options.append("--pch") 2Y h {f

1320 if opts.create_pch is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

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

1322 if opts.use_pch is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

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

1324 if opts.pch_dir is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

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

1326 if opts.pch_verbose is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

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

1328 if opts.pch_messages is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

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

1330 if opts.instantiate_templates_in_pch is not None: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1331 options.append( 2ye

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

1333 ) 

1334 if opts.numba_debug: 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1335 options.append("--numba-debug") 1j

1336 return [o.encode() for o in options] 27 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b8e.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~b9eacbcccdc!eecfcgchcicjckclcmcncocpcqcrcsctcuczeAeBeCeDe#e$e%e'eEeFeGeHevcwc(eJ )e*eK xcyczcAcBcCcDcEcFcGcHcIc)d2e*d+d,d3e4e-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe5epe6e!dV qe+e,e-ereJcKcLcMcNcOcPcQcRc.eScTcUcVcWcXcYcZc0c1c2c3c/e4c5c6c7cv w x 0 1 2 L M N :e;e8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKd=eLd?e@eMd[eNd]eOd^ePd_e3 `e{eQd|eRd}e~eSdafTdbfUdcfVddfWdefXdffYdgfZdhf0dif1djf2dkf3dlf4dmf5dnfs d 4 n 5 1ei j se(dteIeJe6 W A B #d$dueveweKe%dX xe6d7dLeMeNeOePeQeReSeTeUeY VeWeyeBfh ofD c e l m 'd8df g 7e{fXeYeZ Ze|f}f~fbgagcgdggghgigjgkglgmgngogfgpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrfpfqfsfT uftfwfvfU 0e

1337  

1338  

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

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

1341  

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

1343 double-dashed spelling of every option with NVVM_ERROR_INVALID_OPTION 

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

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

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

1347 libNVVM's opaque error. 

1348 """ 

1349 for option in options: 2q r o 9dk eiC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1350 if option.startswith("--"): 2q r o 9dk eiC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1351 raise RuntimeError( 2ei

1352 f"Internal error: NVVM option {option!r} is double-dashed. libNVVM accepts " 2ei

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

1354 ) 

1355  

1356  

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

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

1359 options = [] 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1360  

1361 # Options supported by NVVM 

1362 if opts.arch is None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1363 raise RuntimeError("internal cuda.core error, please report: ProgramOptions.arch is None") 

1364 arch = opts.arch 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1365 if arch.startswith("sm_"): 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1366 arch = f"compute_{arch[3:]}" 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1367 options.append(f"-arch={arch}") 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1368 if opts.debug is not None and opts.debug: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1369 options.append("-g") 2p yfCfAf

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

1371 # accepted by NVRTC is rejected with NVVM_ERROR_INVALID_OPTION. 

1372 if opts.numba_debug: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1373 options.append("-numba-debug") 2p yfCf

1374 if opts.device_code_optimize is False: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1375 options.append("-opt=0") 1EOFPHR

1376 elif opts.device_code_optimize is True: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p G Q t y u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1377 options.append("-opt=3") 2t y u z yfAf

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

1379 if opts.ftz is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1380 options.append(f"-ftz={'1' if opts.ftz else '0'}") 2t y u z yfAf

1381 if opts.prec_sqrt is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1382 options.append(f"-prec-sqrt={'1' if opts.prec_sqrt else '0'}") 2t y u z yf

1383 if opts.prec_div is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1384 options.append(f"-prec-div={'1' if opts.prec_div else '0'}") 2t y u z yf

1385 if opts.fma is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1386 options.append(f"-fma={'1' if opts.fma else '0'}") 2t y u z yf

1387  

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

1389 unsupported = [] 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1390 if opts.relocatable_device_code is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1391 unsupported.append("relocatable_device_code") 2=f

1392 if opts.extensible_whole_program is not None and opts.extensible_whole_program: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1393 unsupported.append("extensible_whole_program") 23f

1394 if opts.lineinfo is not None and opts.lineinfo: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1395 unsupported.append("lineinfo") 2#f

1396 if opts.ptxas_options is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1397 unsupported.append("ptxas_options") 2;f

1398 if opts.max_register_count is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1399 unsupported.append("max_register_count") 2$f

1400 if opts.use_fast_math is not None and opts.use_fast_math: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1401 unsupported.append("use_fast_math") 2_f

1402 if opts.extra_device_vectorization is not None and opts.extra_device_vectorization: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1403 unsupported.append("extra_device_vectorization") 24f

1404 if opts.gen_opt_lto is not None and opts.gen_opt_lto: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1405 unsupported.append("gen_opt_lto") 28f

1406 if opts.define_macro is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1407 unsupported.append("define_macro") 2Vf

1408 if opts.undefine_macro is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1409 unsupported.append("undefine_macro") 2^f

1410 if opts.include_path is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1411 unsupported.append("include_path") 29f

1412 if opts.use_bundled_headers: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1413 unsupported.append("use_bundled_headers") 2Qf

1414 if opts.pre_include is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1415 unsupported.append("pre_include") 2:f

1416 if opts.no_source_include is not None and opts.no_source_include: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1417 unsupported.append("no_source_include") 2)f

1418 if opts.std is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1419 unsupported.append("std") 2[f

1420 if opts.builtin_move_forward is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1421 unsupported.append("builtin_move_forward") 2Tf

1422 if opts.builtin_initializer_list is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1423 unsupported.append("builtin_initializer_list") 2Sf

1424 if opts.disable_warnings is not None and opts.disable_warnings: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1425 unsupported.append("disable_warnings") 22f

1426 if opts.restrict is not None and opts.restrict: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1427 unsupported.append("restrict") 2?f

1428 if opts.device_as_default_execution_space is not None and opts.device_as_default_execution_space: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1429 unsupported.append("device_as_default_execution_space") 2Wf

1430 if opts.device_int128 is not None and opts.device_int128: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1431 unsupported.append("device_int128") 2Yf

1432 if opts.optimization_info is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1433 unsupported.append("optimization_info") 2+f

1434 if opts.no_display_error_number is not None and opts.no_display_error_number: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1435 unsupported.append("no_display_error_number") 2(f

1436 if opts.diag_error is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1437 unsupported.append("diag_error") 2Zf

1438 if opts.diag_suppress is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1439 unsupported.append("diag_suppress") 20f

1440 if opts.diag_warn is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1441 unsupported.append("diag_warn") 21f

1442 if opts.brief_diagnostics is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1443 unsupported.append("brief_diagnostics") 2Rf

1444 if opts.time is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1445 unsupported.append("time") 2]f

1446 if opts.split_compile is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1447 unsupported.append("split_compile") 2@f

1448 if opts.fdevice_syntax_only is not None and opts.fdevice_syntax_only: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1449 unsupported.append("fdevice_syntax_only") 25f

1450 if opts.minimal is not None and opts.minimal: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1451 unsupported.append("minimal") 2%f

1452 if opts.no_cache is not None and opts.no_cache: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1453 unsupported.append("no_cache") 2'f

1454 if opts.fdevice_time_trace is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1455 unsupported.append("fdevice_time_trace") 26f

1456 if opts.device_float128 is not None and opts.device_float128: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1457 unsupported.append("device_float128") 2Xf

1458 if opts.frandom_seed is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1459 unsupported.append("frandom_seed") 27f

1460 if opts.ofast_compile is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1461 unsupported.append("ofast_compile") 2*f

1462 if opts.pch is not None and opts.pch: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1463 unsupported.append("pch") 2,f

1464 if opts.create_pch is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1465 unsupported.append("create_pch") 2Uf

1466 if opts.use_pch is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1467 unsupported.append("use_pch") 2`f

1468 if opts.pch_dir is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1469 unsupported.append("pch_dir") 2-f

1470 if opts.pch_verbose is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1471 unsupported.append("pch_verbose") 2/f

1472 if opts.pch_messages is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1473 unsupported.append("pch_messages") 2.f

1474 if opts.instantiate_templates_in_pch is not None: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1475 unsupported.append("instantiate_templates_in_pch") 2!f

1476 if unsupported: 2q r o 9dk RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`fC p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1477 raise CUDAError(f"The following options are not supported by NVVM backend: {', '.join(unsupported)}") 2RfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^fQf_f`f

1478  

1479 _assert_single_dashed_nvvm_options(options) 2q r o 9dk C p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1480  

1481 if as_bytes: 2q r o 9dk C p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1482 return [o.encode() for o in options] 2q r o 9dk C p E O F P G Q t y H R u z I S yfCfa b AfDfEfFfGfHfIfxfzfMfNfOfPfJfKfLf

1483 else: 

1484 return options