|
1 | 1 | ; RUN: llc -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s --check-prefix=CHECK-SPIRV
|
2 | 2 | ; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv32-unknown-unknown %s -o - -filetype=obj | spirv-val %}
|
3 | 3 |
|
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 %[[#]] Input |
| 28 | +; CHECK-SPIRV: %[[#Id1:]] = OpVariable %[[#]] Input |
| 29 | +; CHECK-SPIRV: %[[#Id2:]] = OpVariable %[[#]] Input |
| 30 | +; CHECK-SPIRV: %[[#Id3:]] = OpVariable %[[#]] Input |
| 31 | +; CHECK-SPIRV: %[[#Id4:]] = OpVariable %[[#]] Input |
| 32 | +; CHECK-SPIRV: %[[#Id5:]] = OpVariable %[[#]] Input |
| 33 | +; CHECK-SPIRV: %[[#Id6:]] = OpVariable %[[#]] Input |
| 34 | +; CHECK-SPIRV: %[[#Id7:]] = OpVariable %[[#]] Input |
| 35 | +; CHECK-SPIRV: %[[#Id8:]] = OpVariable %[[#]] Input |
| 36 | +; CHECK-SPIRV: %[[#Id9:]] = OpVariable %[[#]] Input |
| 37 | +; CHECK-SPIRV: %[[#Id10:]] = OpVariable %[[#]] Input |
| 38 | +; CHECK-SPIRV: %[[#Id11:]] = OpVariable %[[#]] Input |
| 39 | +; CHECK-SPIRV: %[[#Id12:]] = OpVariable %[[#]] Input |
| 40 | +; CHECK-SPIRV: %[[#Id13:]] = OpVariable %[[#]] Input |
| 41 | +; CHECK-SPIRV: %[[#Id14:]] = OpVariable %[[#]] Input |
| 42 | +; CHECK-SPIRV: %[[#Id15:]] = OpVariable %[[#]] Input |
| 43 | +; CHECK-SPIRV: %[[#Id16:]] = OpVariable %[[#]] Input |
| 44 | +; CHECK-SPIRV: %[[#Id17:]] = OpVariable %[[#]] Input |
| 45 | +; CHECK-SPIRV: %[[#Id18:]] = OpVariable %[[#]] Input |
| 46 | +; CHECK-SPIRV: %[[#Id19:]] = OpVariable %[[#]] Input |
| 47 | +; CHECK-SPIRV: %[[#Id20:]] = OpVariable %[[#]] Input |
| 48 | +; CHECK-SPIRV: %[[#Id21:]] = OpVariable %[[#]] Input |
8 | 49 |
|
9 | 50 | define spir_kernel void @f() {
|
10 | 51 | entry:
|
11 | 52 | %0 = call spir_func i32 @_Z29__spirv_BuiltInGlobalLinearIdv()
|
12 | 53 | %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 | + |
13 | 80 | ret void
|
14 | 81 | }
|
15 | 82 |
|
16 | 83 | declare spir_func i32 @_Z29__spirv_BuiltInGlobalLinearIdv()
|
17 | 84 | 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