Skip to content

Commit 5474bb2

Browse files
svenvhAlexeySotkin
authored andcommitted
Add kernel_arg_name regardless of unnamed arguments
If the user has requested `kernel_arg_name` metadata, always generate it even if some or all of the kernel arguments are unnamed. The `-spirv-gen-kernel-arg-name-md` option seems to be lacking tests so far, so add a new test.
1 parent 6d968d3 commit 5474bb2

File tree

2 files changed

+42
-10
lines changed

2 files changed

+42
-10
lines changed

lib/SPIRV/SPIRVReader.cpp

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2313,16 +2313,11 @@ bool SPIRVToLLVM::transKernelMetadata() {
23132313
});
23142314
// Generate metadata for kernel_arg_name
23152315
if (SPIRVGenKernelArgNameMD) {
2316-
bool ArgHasName = true;
2317-
BF->foreachArgument([&](SPIRVFunctionParameter *Arg) {
2318-
ArgHasName &= !Arg->getName().empty();
2319-
});
2320-
if (ArgHasName)
2321-
addOCLKernelArgumentMetadata(Context, SPIR_MD_KERNEL_ARG_NAME, BF, F,
2322-
[=](SPIRVFunctionParameter *Arg) {
2323-
return MDString::get(*Context,
2324-
Arg->getName());
2325-
});
2316+
addOCLKernelArgumentMetadata(Context, SPIR_MD_KERNEL_ARG_NAME, BF, F,
2317+
[=](SPIRVFunctionParameter *Arg) {
2318+
return MDString::get(*Context,
2319+
Arg->getName());
2320+
});
23262321
}
23272322
// Generate metadata for reqd_work_group_size
23282323
if (auto EM = BF->getExecutionMode(ExecutionModeLocalSize)) {
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
; RUN: llvm-as %s -o - | llvm-spirv -o %t.spv
2+
; RUN: llvm-spirv %t.spv -spirv-gen-kernel-arg-name-md -r -o - | llvm-dis -o - | FileCheck %s
3+
4+
; CHECK: spir_kernel void @named_arg(float %f) {{.*}} !kernel_arg_name ![[MD_named:[0-9]+]]
5+
; CHECK: spir_kernel void @unnamed_arg(float) {{.*}} !kernel_arg_name ![[MD_unnamed:[0-9]+]]
6+
; CHECK: spir_kernel void @one_unnamed_arg(i8 %a, i8 %b, i8) {{.*}} !kernel_arg_name ![[MD_one_unnamed:[0-9]+]]
7+
8+
; CHECK: ![[MD_unnamed]] = !{!""}
9+
; CHECK: ![[MD_named]] = !{!"f"}
10+
; CHECK: ![[MD_one_unnamed]] = !{!"a", !"b", !""}
11+
12+
; ModuleID = 'kernel_arg_name.ll'
13+
source_filename = "kernel_arg_name.ll"
14+
target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
15+
target triple = "spir"
16+
17+
; Function Attrs: norecurse nounwind readnone
18+
define spir_kernel void @named_arg(float %f) local_unnamed_addr #0 !kernel_arg_addr_space !0 !kernel_arg_access_qual !0 !kernel_arg_type !0 !kernel_arg_base_type !0 !kernel_arg_type_qual !0 {
19+
entry:
20+
ret void
21+
}
22+
23+
; Function Attrs: norecurse nounwind readnone
24+
define spir_kernel void @unnamed_arg(float) local_unnamed_addr #0 !kernel_arg_addr_space !0 !kernel_arg_access_qual !0 !kernel_arg_type !0 !kernel_arg_base_type !0 !kernel_arg_type_qual !0 {
25+
entry:
26+
ret void
27+
}
28+
29+
; Function Attrs: norecurse nounwind readnone
30+
define spir_kernel void @one_unnamed_arg(i8 %a, i8 %b, i8) local_unnamed_addr #0 !kernel_arg_addr_space !0 !kernel_arg_access_qual !0 !kernel_arg_type !0 !kernel_arg_base_type !0 !kernel_arg_type_qual !0 {
31+
entry:
32+
ret void
33+
}
34+
35+
attributes #0 = { norecurse nounwind readnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
36+
37+
!0 = !{}

0 commit comments

Comments
 (0)