Skip to content

Commit 3f24e57

Browse files
committed
Switch work-item intrinsics to native integer width.
1 parent 25efed2 commit 3f24e57

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

lib/intrinsics/src/work_item.jl

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,18 @@ for (julia_name, (spirv_name, offset)) in [
1717
:get_num_sub_groups => (:BuiltInNumSubgroups, 0),
1818
:get_enqueued_num_sub_groups => (:BuiltInNumEnqueuedSubgroups, 0)]
1919
gvar_name = Symbol("@__spirv_$(spirv_name)")
20+
width = Int === Int64 ? 64 : 32
2021
@eval begin
2122
export $julia_name
2223
@device_function $julia_name() =
2324
Base.llvmcall(
24-
$("""$gvar_name = external addrspace($(AS.Input)) global i32
25-
define i32 @entry() #0 {
26-
%val = load i32, i32 addrspace($(AS.Input))* $gvar_name
27-
ret i32 %val
25+
$("""$gvar_name = external addrspace($(AS.Input)) global i$(width)
26+
define i$(width) @entry() #0 {
27+
%val = load i$(width), i$(width) addrspace($(AS.Input))* $gvar_name
28+
ret i$(width) %val
2829
}
2930
attributes #0 = { alwaysinline }
30-
""", "entry"), UInt32, Tuple{}) % Int + $offset
31+
""", "entry"), UInt, Tuple{}) % Int + $offset
3132
end
3233
end
3334

@@ -44,17 +45,18 @@ for (julia_name, (spirv_name, offset)) in [
4445
:get_enqueued_local_size => (:BuiltInEnqueuedWorkgroupSize, 0),
4546
:get_num_groups => (:BuiltInNumWorkgroups, 0)]
4647
gvar_name = Symbol("@__spirv_$(spirv_name)")
48+
width = Int === Int64 ? 64 : 32
4749
@eval begin
4850
export $julia_name
4951
@device_function $julia_name(dimindx::Integer=1) =
5052
Base.llvmcall(
51-
$("""$gvar_name = external addrspace($(AS.Input)) global <3 x i32>
52-
define i32 @entry(i32 %idx) #0 {
53-
%val = load <3 x i32>, <3 x i32> addrspace($(AS.Input))* $gvar_name
54-
%element = extractelement <3 x i32> %val, i32 %idx
55-
ret i32 %element
53+
$("""$gvar_name = external addrspace($(AS.Input)) global <3 x i$(width)>
54+
define i$(width) @entry(i$(width) %idx) #0 {
55+
%val = load <3 x i$(width)>, <3 x i$(width)> addrspace($(AS.Input))* $gvar_name
56+
%element = extractelement <3 x i$(width)> %val, i$(width) %idx
57+
ret i$(width) %element
5658
}
5759
attributes #0 = { alwaysinline }
58-
""", "entry"), UInt32, Tuple{UInt32}, UInt32(dimindx - 1)) % Int + $offset
60+
""", "entry"), UInt64, Tuple{UInt64}, UInt64(dimindx - 1)) % Int + $offset
5961
end
6062
end

0 commit comments

Comments
 (0)