@@ -1032,22 +1032,13 @@ end
10321032function add_globals_metadata! (@nospecialize (job:: CompilerJob ), mod:: LLVM.Module )
10331033 # Iterate through arguments and create metadata for them
10341034 globs = globals (mod)
1035+ dl = datalayout (mod)
10351036
10361037 i = 1
10371038 for gv in globs
10381039 gv_typ = global_value_type (gv)
10391040 (isconstant (gv) && gv_typ isa LLVM. PointerType && addrspace (gv_typ) == 3 ) || continue
1040- # if job.config.optimize
1041- # @assert parameters(entry_ft)[arg.idx] isa LLVM.PointerType
1042- # else
1043- # parameters(entry_ft)[arg.idx] isa LLVM.PointerType || continue
1044- # end
1045-
1046- # # NOTE: we emit the bare minimum of argument metadata to support
1047- # # bindless argument encoding. Actually using the argument encoder
1048- # # APIs (deprecated in Metal 3) turned out too difficult, given the
1049- # # undocumented nature of the argument metadata, and the complex
1050- # # arguments we encounter with typical Julia kernels.
1041+
10511042 global_infos = Metadata[]
10521043
10531044 push! (global_infos, MDString (" air.global_binding" ))
@@ -1071,28 +1062,20 @@ function add_globals_metadata!(@nospecialize(job::CompilerJob), mod::LLVM.Module
10711062 push! (md, MDString (" air.address_space" ))
10721063 push! (md, Metadata (ConstantInt (Int32 (addrspace (global_value_type (gv))))))
10731064
1074- # val_type = global_value_type(gv)
1075- # val_type = if value_type(gv) <: Core.LLVMPtr
1076- # arg.typ.parameters[1]
1077- # else
1078- # arg.typ
1079- # end
1080-
1081- # @show gv_typ
1082- # @show isconstant(gv)
1083- # @show isconstant(gv_typ)
1084- # @show Int32(alignment(gv))
1065+ arg_type_name, arg_type_size = if ! is_opaque (gv_typ)
1066+ string (eltype (gv_typ)), Int (sizeof (dl, eltype (gv_typ)))
1067+ else
1068+ string (gv_typ), Int (sizeof (dl, gv_typ))
1069+ end
10851070
10861071 push! (md, MDString (" air.arg_type_size" ))
1087- push! (md, Metadata (ConstantInt (Int32 (4 ))))
1072+ push! (md, Metadata (ConstantInt (Int32 (arg_type_size ))))
10881073
10891074 push! (md, MDString (" air.arg_type_align_size" ))
10901075 push! (md, Metadata (ConstantInt (Int32 (alignment (gv)))))
10911076
10921077 push! (md, MDString (" air.arg_type_name" ))
1093- # XXX : Figure out how to get type
1094- push! (md, MDString (" float" ))
1095- # push!(md, MDString(repr(arg.typ)))
1078+ push! (md, MDString (arg_type_name))
10961079
10971080 push! (md, MDString (" air.arg_name" ))
10981081 push! (md, MDString (String (LLVM. name (gv))))
0 commit comments