@@ -1122,22 +1122,13 @@ end
11221122function add_globals_metadata! (@nospecialize (job:: CompilerJob ), mod:: LLVM.Module )
11231123 # Iterate through arguments and create metadata for them
11241124 globs = globals (mod)
1125+ dl = datalayout (mod)
11251126
11261127 i = 1
11271128 for gv in globs
11281129 gv_typ = global_value_type (gv)
11291130 (isconstant (gv) && gv_typ isa LLVM. PointerType && addrspace (gv_typ) == 3 ) || continue
1130- # if job.config.optimize
1131- # @assert parameters(entry_ft)[arg.idx] isa LLVM.PointerType
1132- # else
1133- # parameters(entry_ft)[arg.idx] isa LLVM.PointerType || continue
1134- # end
1135-
1136- # # NOTE: we emit the bare minimum of argument metadata to support
1137- # # bindless argument encoding. Actually using the argument encoder
1138- # # APIs (deprecated in Metal 3) turned out too difficult, given the
1139- # # undocumented nature of the argument metadata, and the complex
1140- # # arguments we encounter with typical Julia kernels.
1131+
11411132 global_infos = Metadata[]
11421133
11431134 push! (global_infos, MDString (" air.global_binding" ))
@@ -1161,28 +1152,20 @@ function add_globals_metadata!(@nospecialize(job::CompilerJob), mod::LLVM.Module
11611152 push! (md, MDString (" air.address_space" ))
11621153 push! (md, Metadata (ConstantInt (Int32 (addrspace (global_value_type (gv))))))
11631154
1164- # val_type = global_value_type(gv)
1165- # val_type = if value_type(gv) <: Core.LLVMPtr
1166- # arg.typ.parameters[1]
1167- # else
1168- # arg.typ
1169- # end
1170-
1171- # @show gv_typ
1172- # @show isconstant(gv)
1173- # @show isconstant(gv_typ)
1174- # @show Int32(alignment(gv))
1155+ arg_type_name, arg_type_size = if ! is_opaque (gv_typ)
1156+ string (eltype (gv_typ)), Int (sizeof (dl, eltype (gv_typ)))
1157+ else
1158+ string (gv_typ), Int (sizeof (dl, gv_typ))
1159+ end
11751160
11761161 push! (md, MDString (" air.arg_type_size" ))
1177- push! (md, Metadata (ConstantInt (Int32 (4 ))))
1162+ push! (md, Metadata (ConstantInt (Int32 (arg_type_size ))))
11781163
11791164 push! (md, MDString (" air.arg_type_align_size" ))
11801165 push! (md, Metadata (ConstantInt (Int32 (alignment (gv)))))
11811166
11821167 push! (md, MDString (" air.arg_type_name" ))
1183- # XXX : Figure out how to get type
1184- push! (md, MDString (" float" ))
1185- # push!(md, MDString(repr(arg.typ)))
1168+ push! (md, MDString (arg_type_name))
11861169
11871170 push! (md, MDString (" air.arg_name" ))
11881171 push! (md, MDString (String (LLVM. name (gv))))
0 commit comments