Skip to content

Commit ab9a5ad

Browse files
committed
Proper for non-opaque types
1 parent 6778a5f commit ab9a5ad

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
@@ -1122,22 +1122,13 @@ end
11221122
function 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

Comments
 (0)