@@ -70,6 +70,12 @@ def check_nvjitlink_usable():
7070 return inner_nvjitlink ._inspect_function_pointer ("__nvJitLinkVersion" ) != 0
7171
7272
73+ def check_nvjitlink_get_linked_ltoir_usable ():
74+ from cuda .bindings ._internal import nvjitlink as inner_nvjitlink
75+
76+ return inner_nvjitlink ._inspect_function_pointer ("__nvJitLinkGetLinkedLTOIR" ) != 0
77+
78+
7379pytestmark = pytest .mark .skipif (
7480 not check_nvjitlink_usable (), reason = "nvJitLink not usable, maybe not installed or too old (<12.3)"
7581)
@@ -183,6 +189,21 @@ def test_get_linked_ptx(arch, get_dummy_ltoir):
183189 assert len (ptx ) == ptx_size
184190
185191
192+ @pytest .mark .parametrize ("arch" , ARCHITECTURES )
193+ @pytest .mark .skipif (
194+ not check_nvjitlink_get_linked_ltoir_usable (),
195+ reason = "nvJitLinkGetLinkedLTOIR not available in installed nvJitLink" ,
196+ )
197+ def test_get_linked_ltoir (arch , get_dummy_ltoir ):
198+ with nvjitlink_session (2 , [f"-arch={ arch } " , "-lto" ]) as handle :
199+ nvjitlink .add_data (handle , nvjitlink .InputType .LTOIR , get_dummy_ltoir , len (get_dummy_ltoir ), "test_data" )
200+ nvjitlink .complete (handle )
201+ ltoir_size = nvjitlink .get_linked_ltoir_size (handle )
202+ ltoir = bytearray (ltoir_size )
203+ nvjitlink .get_linked_ltoir (handle , ltoir )
204+ assert len (ltoir ) == ltoir_size
205+
206+
186207def test_package_version ():
187208 ver = nvjitlink .version ()
188209 assert len (ver ) == 2
0 commit comments