From 93eebdf29895a2dc0ce09566dc9e767994b1e7c3 Mon Sep 17 00:00:00 2001 From: Violet Date: Fri, 26 Sep 2025 10:09:24 -0700 Subject: [PATCH] No-op implementation of vprintf (#527) --- ptx/lib/zluda_ptx_impl.bc | Bin 25144 -> 25264 bytes ptx/lib/zluda_ptx_impl.cpp | 8 ++++++++ ptx/src/pass/llvm/emit.rs | 1 + ptx/src/pass/replace_known_functions.rs | 2 +- 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ptx/lib/zluda_ptx_impl.bc b/ptx/lib/zluda_ptx_impl.bc index fef08533c25992908b3538dc52859f68d213af89..f3cfd5234bd1a11e4ede4c834ba7ae9a08faced2 100644 GIT binary patch delta 6447 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 delta 6319 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 diff --git a/ptx/lib/zluda_ptx_impl.cpp b/ptx/lib/zluda_ptx_impl.cpp index c378d78..9f06df4 100644 --- a/ptx/lib/zluda_ptx_impl.cpp +++ b/ptx/lib/zluda_ptx_impl.cpp @@ -855,4 +855,12 @@ typedef uint32_t ShflSyncResult __attribute__((ext_vector_type(2))); return output.u32; } + + int FUNC(vprintf)(const char *format __attribute__((unused)), void *vlist __attribute__((unused))) + { + // TODO: replace calls to vprintf with a raising pass to printf when we have a mechanism + // to write SSA passes + // Use https://github.com/ROCm/llvm-project/blob/99a81d16b9d811cadd420190bed16981a0a57bc6/llvm/lib/Transforms/Utils/AMDGPUEmitPrintf.cpp#L426 + return -1; + } } diff --git a/ptx/src/pass/llvm/emit.rs b/ptx/src/pass/llvm/emit.rs index 2484440..2c8a6c4 100644 --- a/ptx/src/pass/llvm/emit.rs +++ b/ptx/src/pass/llvm/emit.rs @@ -2869,6 +2869,7 @@ impl<'a> MethodEmitContext<'a> { fn emit_trap(&mut self) -> Result<(), TranslateError> { self.emit_intrinsic(c"llvm.trap", None, None, vec![])?; + unsafe { LLVMBuildUnreachable(self.builder) }; Ok(()) } diff --git a/ptx/src/pass/replace_known_functions.rs b/ptx/src/pass/replace_known_functions.rs index 99509fe..4443275 100644 --- a/ptx/src/pass/replace_known_functions.rs +++ b/ptx/src/pass/replace_known_functions.rs @@ -21,7 +21,7 @@ fn replace_with_ptx_impl<'input>( resolver: &mut GlobalStringIdentResolver2<'input>, fn_name: SpirvWord, ) { - let known_names = ["__assertfail"]; + let known_names = ["__assertfail", "vprintf"]; if let Some(super::IdentEntry { name: Some(name), .. }) = resolver.ident_map.get_mut(&fn_name)