Skip to content

Commit 3def2c5

Browse files
committed
Proper for non-opaque types
1 parent 202e304 commit 3def2c5

1 file changed

Lines changed: 9 additions & 26 deletions

File tree

src/metal.jl

Lines changed: 9 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1032,22 +1032,13 @@ end
10321032
function 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

Comments
 (0)