@@ -18,38 +18,13 @@ export @mtlprintf
1818
1919 if arg == Cchar || arg == Cshort
2020 return :(Cint (arg))
21+ elseif arg == Cfloat
22+ return :(Cdouble (arg))
2123 else
2224 return :(arg)
2325 end
2426end
2527
26- @generated function tag_doubles (arg)
27- @dispose ctx= Context () begin
28- ret = arg == Cfloat ? Cdouble : arg
29- T_arg = convert (LLVMType, arg)
30- T_ret = convert (LLVMType, ret)
31-
32- f, ft = create_function (T_ret, [T_arg])
33-
34- @dispose builder= IRBuilder () begin
35- entry = BasicBlock (f, " entry" )
36- position! (builder, entry)
37-
38- p1 = parameters (f)[1 ]
39-
40- if arg == Cfloat
41- res = fpext! (builder, p1, LLVM. DoubleType ())
42- metadata (res)[" ir_check_ignore" ] = MDNode ([])
43- ret! (builder, res)
44- else
45- ret! (builder, p1)
46- end
47- end
48-
49- call_function (f, ret, Tuple{arg}, :arg )
50- end
51- end
52-
5328function valist_size (dl, param_types)
5429 size = 0
5530 for pty in param_types
@@ -76,7 +51,7 @@ macro mtlprintf(fmt::String, args...)
7651 if metal_version () < sv " 3.2"
7752 @print_and_throw " @mtlprintf requires Metal 3.2 (macOS 15) or higher"
7853 else
79- _mtlprintf ($ fmt_val, $ (map (arg -> :(tag_doubles ( promote_c_argument ($ arg) )), esc .(args))... ))
54+ _mtlprintf ($ fmt_val, $ (map (arg -> :(promote_c_argument ($ arg)), esc .(args))... ))
8055 end
8156 end
8257end
148123 entry = BasicBlock (wrapper_f, " entry" )
149124 position! (builder, entry)
150125
151- call = call! (builder, llvm_ft, llvm_f, collect (parameters (wrapper_f)))
152- metadata (call)[" ir_check_ignore" ] = MDNode ([])
126+ call! (builder, llvm_ft, llvm_f, collect (parameters (wrapper_f)))
153127
154128 ret! (builder)
155129 end
0 commit comments