Skip to content

Commit 0d5ae36

Browse files
committed
[SPIR-V] Map SPIR-V friendly work-item function to built-in variables
This fixes pre-commit CI fail in intel/llvm#19359
1 parent b79c763 commit 0d5ae36

File tree

2 files changed

+122
-5
lines changed

2 files changed

+122
-5
lines changed

llvm/lib/Target/SPIRV/SPIRVBuiltins.td

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1364,7 +1364,24 @@ defm : DemangledGetBuiltin<"get_sub_group_gt_mask", OpenCL_std, Variable, Subgro
13641364
defm : DemangledGetBuiltin<"get_sub_group_le_mask", OpenCL_std, Variable, SubgroupLeMask>;
13651365
defm : DemangledGetBuiltin<"get_sub_group_lt_mask", OpenCL_std, Variable, SubgroupLtMask>;
13661366
defm : DemangledGetBuiltin<"__spirv_BuiltInGlobalLinearId", OpenCL_std, Variable, GlobalLinearId>;
1367-
defm : DemangledGetBuiltin<"__spirv_BuiltInGlobalInvocationId", OpenCL_std, Variable, GlobalInvocationId>;
1367+
defm : DemangledGetBuiltin<"__spirv_BuiltInLocalInvocationIndex", OpenCL_std, Variable, LocalInvocationIndex>;
1368+
defm : DemangledGetBuiltin<"__spirv_BuiltInWorkDim", OpenCL_std, Variable, WorkDim>;
1369+
defm : DemangledGetBuiltin<"__spirv_BuiltInSubgroupSize", OpenCL_std, Variable, SubgroupSize>;
1370+
defm : DemangledGetBuiltin<"__spirv_BuiltInSubgroupMaxSize", OpenCL_std, Variable, SubgroupMaxSize>;
1371+
defm : DemangledGetBuiltin<"__spirv_BuiltInNumSubgroups", OpenCL_std, Variable, NumSubgroups>;
1372+
defm : DemangledGetBuiltin<"__spirv_BuiltInNumEnqueuedSubgroups", OpenCL_std, Variable, NumEnqueuedSubgroups>;
1373+
defm : DemangledGetBuiltin<"__spirv_BuiltInSubgroupId", OpenCL_std, Variable, SubgroupId>;
1374+
defm : DemangledGetBuiltin<"__spirv_BuiltInSubgroupLocalInvocationId", OpenCL_std, Variable, SubgroupLocalInvocationId>;
1375+
defm : DemangledGetBuiltin<"__spirv_BuiltInSubgroupEqMask", OpenCL_std, Variable, SubgroupEqMask>;
1376+
defm : DemangledGetBuiltin<"__spirv_BuiltInSubgroupEqMaskKHR", OpenCL_std, Variable, SubgroupEqMask>;
1377+
defm : DemangledGetBuiltin<"__spirv_BuiltInSubgroupGeMask", OpenCL_std, Variable, SubgroupGeMask>;
1378+
defm : DemangledGetBuiltin<"__spirv_BuiltInSubgroupGeMaskKHR", OpenCL_std, Variable, SubgroupGeMask>;
1379+
defm : DemangledGetBuiltin<"__spirv_BuiltInSubgroupGtMask", OpenCL_std, Variable, SubgroupGtMask>;
1380+
defm : DemangledGetBuiltin<"__spirv_BuiltInSubgroupGtMaskKHR", OpenCL_std, Variable, SubgroupGtMask>;
1381+
defm : DemangledGetBuiltin<"__spirv_BuiltInSubgroupLeMask", OpenCL_std, Variable, SubgroupLeMask>;
1382+
defm : DemangledGetBuiltin<"__spirv_BuiltInSubgroupLeMaskKHR", OpenCL_std, Variable, SubgroupLeMask>;
1383+
defm : DemangledGetBuiltin<"__spirv_BuiltInSubgroupLtMask", OpenCL_std, Variable, SubgroupLtMask>;
1384+
defm : DemangledGetBuiltin<"__spirv_BuiltInSubgroupLtMaskKHR", OpenCL_std, Variable, SubgroupLtMask>;
13681385

13691386
// GetQuery builtin records:
13701387
defm : DemangledGetBuiltin<"get_local_id", OpenCL_std, GetQuery, LocalInvocationId>;
@@ -1375,6 +1392,14 @@ defm : DemangledGetBuiltin<"get_group_id", OpenCL_std, GetQuery, WorkgroupId>;
13751392
defm : DemangledGetBuiltin<"get_enqueued_local_size", OpenCL_std, GetQuery, EnqueuedWorkgroupSize>;
13761393
defm : DemangledGetBuiltin<"get_num_groups", OpenCL_std, GetQuery, NumWorkgroups>;
13771394
defm : DemangledGetBuiltin<"get_global_offset", OpenCL_std, GetQuery, GlobalOffset>;
1395+
defm : DemangledGetBuiltin<"__spirv_BuiltInLocalInvocationId", OpenCL_std, Variable, LocalInvocationId>;
1396+
defm : DemangledGetBuiltin<"__spirv_BuiltInGlobalInvocationId", OpenCL_std, Variable, GlobalInvocationId>;
1397+
defm : DemangledGetBuiltin<"__spirv_BuiltInWorkgroupSize", OpenCL_std, GetQuery, WorkgroupSize>;
1398+
defm : DemangledGetBuiltin<"__spirv_BuiltInGlobalSize", OpenCL_std, GetQuery, GlobalSize>;
1399+
defm : DemangledGetBuiltin<"__spirv_BuiltInWorkgroupId", OpenCL_std, GetQuery, WorkgroupId>;
1400+
defm : DemangledGetBuiltin<"__spirv_BuiltInEnqueuedWorkgroupSize", OpenCL_std, GetQuery, EnqueuedWorkgroupSize>;
1401+
defm : DemangledGetBuiltin<"__spirv_BuiltInNumWorkgroups", OpenCL_std, GetQuery, NumWorkgroups>;
1402+
defm : DemangledGetBuiltin<"__spirv_BuiltInGlobalOffset", OpenCL_std, GetQuery, GlobalOffset>;
13781403
defm : DemangledGetBuiltin<"__hlsl_wave_get_lane_index", GLSL_std_450, Wave, SubgroupLocalInvocationId>;
13791404

13801405
//===----------------------------------------------------------------------===//
Lines changed: 96 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,109 @@
11
; RUN: llc -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s --check-prefix=CHECK-SPIRV
22
; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv32-unknown-unknown %s -o - -filetype=obj | spirv-val %}
33

4-
; CHECK-SPIRV-DAG: OpDecorate %[[#Id:]] BuiltIn GlobalInvocationId
5-
; CHECK-SPIRV-DAG: OpDecorate %[[#Id:]] BuiltIn GlobalLinearId
6-
; CHECK-SPIRV: %[[#Id:]] = OpVariable %[[#]]
7-
; CHECK-SPIRV: %[[#Id:]] = OpVariable %[[#]]
4+
; CHECK-SPIRV-DAG: OpDecorate %[[#Id0:]] BuiltIn GlobalLinearId
5+
; CHECK-SPIRV-DAG: OpDecorate %[[#Id1:]] BuiltIn GlobalInvocationId
6+
; CHECK-SPIRV-DAG: OpDecorate %[[#Id2:]] BuiltIn LocalInvocationIndex
7+
; CHECK-SPIRV-DAG: OpDecorate %[[#Id3:]] BuiltIn WorkDim
8+
; CHECK-SPIRV-DAG: OpDecorate %[[#Id4:]] BuiltIn SubgroupSize
9+
; CHECK-SPIRV-DAG: OpDecorate %[[#Id5:]] BuiltIn SubgroupMaxSize
10+
; CHECK-SPIRV-DAG: OpDecorate %[[#Id6:]] BuiltIn NumSubgroups
11+
; CHECK-SPIRV-DAG: OpDecorate %[[#Id7:]] BuiltIn NumEnqueuedSubgroups
12+
; CHECK-SPIRV-DAG: OpDecorate %[[#Id8:]] BuiltIn SubgroupId
13+
; CHECK-SPIRV-DAG: OpDecorate %[[#Id9:]] BuiltIn SubgroupLocalInvocationId
14+
; CHECK-SPIRV-DAG: OpDecorate %[[#Id10:]] BuiltIn SubgroupEqMask
15+
; CHECK-SPIRV-DAG: OpDecorate %[[#Id11:]] BuiltIn SubgroupGeMask
16+
; CHECK-SPIRV-DAG: OpDecorate %[[#Id12:]] BuiltIn SubgroupGtMask
17+
; CHECK-SPIRV-DAG: OpDecorate %[[#Id13:]] BuiltIn SubgroupLeMask
18+
; CHECK-SPIRV-DAG: OpDecorate %[[#Id14:]] BuiltIn SubgroupLtMask
19+
; CHECK-SPIRV-DAG: OpDecorate %[[#Id15:]] BuiltIn LocalInvocationId
20+
; CHECK-SPIRV-DAG: OpDecorate %[[#Id16:]] BuiltIn WorkgroupSize
21+
; CHECK-SPIRV-DAG: OpDecorate %[[#Id17:]] BuiltIn GlobalSize
22+
; CHECK-SPIRV-DAG: OpDecorate %[[#Id18:]] BuiltIn WorkgroupId
23+
; CHECK-SPIRV-DAG: OpDecorate %[[#Id19:]] BuiltIn EnqueuedWorkgroupSize
24+
; CHECK-SPIRV-DAG: OpDecorate %[[#Id20:]] BuiltIn NumWorkgroups
25+
; CHECK-SPIRV-DAG: OpDecorate %[[#Id21:]] BuiltIn GlobalOffset
26+
27+
; CHECK-SPIRV: %[[#Id0:]] = OpVariable %[[#]]
28+
; CHECK-SPIRV: %[[#Id1:]] = OpVariable %[[#]]
29+
; CHECK-SPIRV: %[[#Id2:]] = OpVariable %[[#]]
30+
; CHECK-SPIRV: %[[#Id3:]] = OpVariable %[[#]]
31+
; CHECK-SPIRV: %[[#Id4:]] = OpVariable %[[#]]
32+
; CHECK-SPIRV: %[[#Id5:]] = OpVariable %[[#]]
33+
; CHECK-SPIRV: %[[#Id6:]] = OpVariable %[[#]]
34+
; CHECK-SPIRV: %[[#Id7:]] = OpVariable %[[#]]
35+
; CHECK-SPIRV: %[[#Id8:]] = OpVariable %[[#]]
36+
; CHECK-SPIRV: %[[#Id9:]] = OpVariable %[[#]]
37+
; CHECK-SPIRV: %[[#Id10:]] = OpVariable %[[#]]
38+
; CHECK-SPIRV: %[[#Id11:]] = OpVariable %[[#]]
39+
; CHECK-SPIRV: %[[#Id12:]] = OpVariable %[[#]]
40+
; CHECK-SPIRV: %[[#Id13:]] = OpVariable %[[#]]
41+
; CHECK-SPIRV: %[[#Id14:]] = OpVariable %[[#]]
42+
; CHECK-SPIRV: %[[#Id15:]] = OpVariable %[[#]]
43+
; CHECK-SPIRV: %[[#Id16:]] = OpVariable %[[#]]
44+
; CHECK-SPIRV: %[[#Id17:]] = OpVariable %[[#]]
45+
; CHECK-SPIRV: %[[#Id18:]] = OpVariable %[[#]]
46+
; CHECK-SPIRV: %[[#Id19:]] = OpVariable %[[#]]
47+
; CHECK-SPIRV: %[[#Id20:]] = OpVariable %[[#]]
48+
; CHECK-SPIRV: %[[#Id21:]] = OpVariable %[[#]]
849

950
define spir_kernel void @f() {
1051
entry:
1152
%0 = call spir_func i32 @_Z29__spirv_BuiltInGlobalLinearIdv()
1253
%1 = call spir_func i64 @_Z33__spirv_BuiltInGlobalInvocationIdi(i32 1)
54+
%2 = call spir_func i64 @_Z35__spirv_BuiltInLocalInvocationIndexv()
55+
%3 = call spir_func i32 @_Z22__spirv_BuiltInWorkDimv()
56+
%4 = call spir_func i32 @_Z27__spirv_BuiltInSubgroupSizev()
57+
%5 = call spir_func i32 @_Z30__spirv_BuiltInSubgroupMaxSizev()
58+
%6 = call spir_func i32 @_Z27__spirv_BuiltInNumSubgroupsv()
59+
%7 = call spir_func i32 @_Z35__spirv_BuiltInNumEnqueuedSubgroupsv()
60+
%8 = call spir_func i32 @_Z25__spirv_BuiltInSubgroupIdv()
61+
%9 = call spir_func i32 @_Z40__spirv_BuiltInSubgroupLocalInvocationIdv()
62+
%10 = call spir_func <4 x i32> @_Z29__spirv_BuiltInSubgroupEqMaskv()
63+
%11 = call spir_func <4 x i32> @_Z32__spirv_BuiltInSubgroupEqMaskKHRv()
64+
%12 = call spir_func <4 x i32> @_Z29__spirv_BuiltInSubgroupGeMaskv()
65+
%13 = call spir_func <4 x i32> @_Z32__spirv_BuiltInSubgroupGeMaskKHRv()
66+
%14 = call spir_func <4 x i32> @_Z29__spirv_BuiltInSubgroupGtMaskv()
67+
%15 = call spir_func <4 x i32> @_Z32__spirv_BuiltInSubgroupGtMaskKHRv()
68+
%16 = call spir_func <4 x i32> @_Z29__spirv_BuiltInSubgroupLeMaskv()
69+
%17 = call spir_func <4 x i32> @_Z32__spirv_BuiltInSubgroupLeMaskKHRv()
70+
%18 = call spir_func <4 x i32> @_Z29__spirv_BuiltInSubgroupLtMaskv()
71+
%19 = call spir_func <4 x i32> @_Z32__spirv_BuiltInSubgroupLtMaskKHRv()
72+
%20 = call spir_func i64 @_Z32__spirv_BuiltInLocalInvocationIdi(i32 0)
73+
%21 = call spir_func i64 @_Z28__spirv_BuiltInWorkgroupSizei(i32 0)
74+
%22 = call spir_func i64 @_Z25__spirv_BuiltInGlobalSizei(i32 0)
75+
%23 = call spir_func i64 @_Z26__spirv_BuiltInWorkgroupIdi(i32 0)
76+
%24 = call spir_func i64 @_Z36__spirv_BuiltInEnqueuedWorkgroupSizei(i32 0)
77+
%25 = call spir_func i64 @_Z28__spirv_BuiltInNumWorkgroupsi(i32 0)
78+
%26 = call spir_func i64 @_Z27__spirv_BuiltInGlobalOffseti(i32 0)
79+
1380
ret void
1481
}
1582

1683
declare spir_func i32 @_Z29__spirv_BuiltInGlobalLinearIdv()
1784
declare spir_func i64 @_Z33__spirv_BuiltInGlobalInvocationIdi(i32)
85+
declare spir_func i64 @_Z35__spirv_BuiltInLocalInvocationIndexv()
86+
declare spir_func i32 @_Z22__spirv_BuiltInWorkDimv()
87+
declare spir_func i32 @_Z27__spirv_BuiltInSubgroupSizev()
88+
declare spir_func i32 @_Z30__spirv_BuiltInSubgroupMaxSizev()
89+
declare spir_func i32 @_Z27__spirv_BuiltInNumSubgroupsv()
90+
declare spir_func i32 @_Z35__spirv_BuiltInNumEnqueuedSubgroupsv()
91+
declare spir_func i32 @_Z25__spirv_BuiltInSubgroupIdv()
92+
declare spir_func i32 @_Z40__spirv_BuiltInSubgroupLocalInvocationIdv()
93+
declare spir_func <4 x i32> @_Z29__spirv_BuiltInSubgroupEqMaskv()
94+
declare spir_func <4 x i32> @_Z32__spirv_BuiltInSubgroupEqMaskKHRv()
95+
declare spir_func <4 x i32> @_Z29__spirv_BuiltInSubgroupGeMaskv()
96+
declare spir_func <4 x i32> @_Z32__spirv_BuiltInSubgroupGeMaskKHRv()
97+
declare spir_func <4 x i32> @_Z29__spirv_BuiltInSubgroupGtMaskv()
98+
declare spir_func <4 x i32> @_Z32__spirv_BuiltInSubgroupGtMaskKHRv()
99+
declare spir_func <4 x i32> @_Z29__spirv_BuiltInSubgroupLeMaskv()
100+
declare spir_func <4 x i32> @_Z32__spirv_BuiltInSubgroupLeMaskKHRv()
101+
declare spir_func <4 x i32> @_Z29__spirv_BuiltInSubgroupLtMaskv()
102+
declare spir_func <4 x i32> @_Z32__spirv_BuiltInSubgroupLtMaskKHRv()
103+
declare spir_func i64 @_Z32__spirv_BuiltInLocalInvocationIdi(i32)
104+
declare spir_func i64 @_Z28__spirv_BuiltInWorkgroupSizei(i32)
105+
declare spir_func i64 @_Z25__spirv_BuiltInGlobalSizei(i32)
106+
declare spir_func i64 @_Z26__spirv_BuiltInWorkgroupIdi(i32)
107+
declare spir_func i64 @_Z36__spirv_BuiltInEnqueuedWorkgroupSizei(i32)
108+
declare spir_func i64 @_Z28__spirv_BuiltInNumWorkgroupsi(i32)
109+
declare spir_func i64 @_Z27__spirv_BuiltInGlobalOffseti(i32)

0 commit comments

Comments
 (0)