|
1 |
| -; RUN: llc -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s |
| 1 | +; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s |
| 2 | +; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %} |
2 | 3 |
|
3 |
| -; CHECK: OpName %[[#WD:]] "__spirv_BuiltInWorkDim" |
4 |
| -; CHECK: OpName %[[#GS:]] "__spirv_BuiltInGlobalSize" |
5 |
| -; CHECK: OpName %[[#GII:]] "__spirv_BuiltInGlobalInvocationId" |
6 |
| -; CHECK: OpName %[[#WS:]] "__spirv_BuiltInWorkgroupSize" |
7 |
| -; CHECK: OpName %[[#EWS:]] "__spirv_BuiltInEnqueuedWorkgroupSize" |
8 |
| -; CHECK: OpName %[[#LLI:]] "__spirv_BuiltInLocalInvocationId" |
9 |
| -; CHECK: OpName %[[#NW:]] "__spirv_BuiltInNumWorkgroups" |
10 |
| -; CHECK: OpName %[[#WI:]] "__spirv_BuiltInWorkgroupId" |
11 |
| -; CHECK: OpName %[[#GO:]] "__spirv_BuiltInGlobalOffset" |
12 |
| -; CHECK: OpName %[[#GLI:]] "__spirv_BuiltInGlobalLinearId" |
13 |
| -; CHECK: OpName %[[#LLII:]] "__spirv_BuiltInLocalInvocationIndex" |
14 |
| -; CHECK: OpName %[[#SS:]] "__spirv_BuiltInSubgroupSize" |
15 |
| -; CHECK: OpName %[[#SMS:]] "__spirv_BuiltInSubgroupMaxSize" |
16 |
| -; CHECK: OpName %[[#NS:]] "__spirv_BuiltInNumSubgroups" |
17 |
| -; CHECK: OpName %[[#NES:]] "__spirv_BuiltInNumEnqueuedSubgroups" |
18 |
| -; CHECK: OpName %[[#SI:]] "__spirv_BuiltInSubgroupId" |
19 |
| -; CHECK: OpName %[[#SLII:]] "__spirv_BuiltInSubgroupLocalInvocationId" |
| 4 | +; CHECK-DAG: OpName %[[#WD:]] "__spirv_BuiltInWorkDim" |
| 5 | +; CHECK-DAG: OpName %[[#GS:]] "__spirv_BuiltInGlobalSize" |
| 6 | +; CHECK-DAG: OpName %[[#GII:]] "__spirv_BuiltInGlobalInvocationId" |
| 7 | +; CHECK-DAG: OpName %[[#WS:]] "__spirv_BuiltInWorkgroupSize" |
| 8 | +; CHECK-DAG: OpName %[[#EWS:]] "__spirv_BuiltInEnqueuedWorkgroupSize" |
| 9 | +; CHECK-DAG: OpName %[[#LLI:]] "__spirv_BuiltInLocalInvocationId" |
| 10 | +; CHECK-DAG: OpName %[[#NW:]] "__spirv_BuiltInNumWorkgroups" |
| 11 | +; CHECK-DAG: OpName %[[#WI:]] "__spirv_BuiltInWorkgroupId" |
| 12 | +; CHECK-DAG: OpName %[[#GO:]] "__spirv_BuiltInGlobalOffset" |
| 13 | +; CHECK-DAG: OpName %[[#GLI:]] "__spirv_BuiltInGlobalLinearId" |
| 14 | +; CHECK-DAG: OpName %[[#LLII:]] "__spirv_BuiltInLocalInvocationIndex" |
| 15 | +; CHECK-DAG: OpName %[[#SS:]] "__spirv_BuiltInSubgroupSize" |
| 16 | +; CHECK-DAG: OpName %[[#SMS:]] "__spirv_BuiltInSubgroupMaxSize" |
| 17 | +; CHECK-DAG: OpName %[[#NS:]] "__spirv_BuiltInNumSubgroups" |
| 18 | +; CHECK-DAG: OpName %[[#NES:]] "__spirv_BuiltInNumEnqueuedSubgroups" |
| 19 | +; CHECK-DAG: OpName %[[#SI:]] "__spirv_BuiltInSubgroupId" |
| 20 | +; CHECK-DAG: OpName %[[#SLII:]] "__spirv_BuiltInSubgroupLocalInvocationId" |
20 | 21 |
|
21 | 22 | ; CHECK-DAG: OpDecorate %[[#NW]] BuiltIn NumWorkgroups
|
22 | 23 | ; CHECK-DAG: OpDecorate %[[#WS]] BuiltIn WorkgroupSize
|
|
35 | 36 | ; CHECK-DAG: OpDecorate %[[#NES]] BuiltIn NumEnqueuedSubgroups
|
36 | 37 | ; CHECK-DAG: OpDecorate %[[#SI]] BuiltIn SubgroupId
|
37 | 38 | ; CHECK-DAG: OpDecorate %[[#SLII]] BuiltIn SubgroupLocalInvocationId
|
| 39 | + |
| 40 | +; CHECK-DAG: %[[#SizeT:]] = OpTypeInt 64 0 |
| 41 | +; CHECK-DAG: %[[#Int32:]] = OpTypeInt 32 0 |
| 42 | + |
| 43 | +; CHECK: OpFunction |
| 44 | +; CHECK: %[[#]] = OpLoad %[[#SizeT]] %[[#GLI]] |
| 45 | +; CHECK: %[[#]] = OpLoad %[[#SizeT]] %[[#LLII]] |
| 46 | +; CHECK: %[[#]] = OpLoad %[[#Int32]] %[[#WD]] |
| 47 | +; CHECK: %[[#]] = OpLoad %[[#Int32]] %[[#SS]] |
| 48 | +; CHECK: %[[#]] = OpLoad %[[#Int32]] %[[#SMS]] |
| 49 | +; CHECK: %[[#]] = OpLoad %[[#Int32]] %[[#NS]] |
| 50 | +; CHECK: %[[#]] = OpLoad %[[#Int32]] %[[#NES]] |
| 51 | +; CHECK: %[[#]] = OpLoad %[[#Int32]] %[[#SI]] |
| 52 | +; CHECK: %[[#]] = OpLoad %[[#Int32]] %[[#SLII]] |
| 53 | + |
38 | 54 | @__spirv_BuiltInWorkDim = external addrspace(1) global i32
|
39 | 55 | @__spirv_BuiltInGlobalSize = external addrspace(1) global <3 x i32>
|
40 | 56 | @__spirv_BuiltInGlobalInvocationId = external addrspace(1) global <3 x i32>
|
|
55 | 71 |
|
56 | 72 | define spir_kernel void @_Z1wv() {
|
57 | 73 | entry:
|
| 74 | + %r1 = tail call spir_func i64 @get_global_linear_id() |
| 75 | + %r2 = tail call spir_func i64 @get_local_linear_id() |
| 76 | + %r3 = tail call spir_func i32 @get_work_dim() |
| 77 | + %r4 = tail call spir_func i32 @get_sub_group_size() |
| 78 | + %r5 = tail call spir_func i32 @get_max_sub_group_size() |
| 79 | + %r6 = tail call spir_func i32 @get_num_sub_groups() |
| 80 | + %r7 = tail call spir_func i32 @get_enqueued_num_sub_groups() |
| 81 | + %r8 = tail call spir_func i32 @get_sub_group_id() |
| 82 | + %r9 = tail call spir_func i32 @get_sub_group_local_id() |
58 | 83 | ret void
|
59 | 84 | }
|
| 85 | + |
| 86 | +declare spir_func i64 @get_global_linear_id() |
| 87 | +declare spir_func i64 @get_local_linear_id() |
| 88 | +declare spir_func i32 @get_work_dim() |
| 89 | +declare spir_func i32 @get_sub_group_size() |
| 90 | +declare spir_func i32 @get_max_sub_group_size() |
| 91 | +declare spir_func i32 @get_num_sub_groups() |
| 92 | +declare spir_func i32 @get_enqueued_num_sub_groups() |
| 93 | +declare spir_func i32 @get_sub_group_id() |
| 94 | +declare spir_func i32 @get_sub_group_local_id() |
0 commit comments