126 lines · plain
1; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s2; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %}3 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"21 22; CHECK-DAG: OpDecorate %[[#NW]] BuiltIn NumWorkgroups23; CHECK-DAG: OpDecorate %[[#WS]] BuiltIn WorkgroupSize24; CHECK-DAG: OpDecorate %[[#WI]] BuiltIn WorkgroupId25; CHECK-DAG: OpDecorate %[[#LLI]] BuiltIn LocalInvocationId26; CHECK-DAG: OpDecorate %[[#GII]] BuiltIn GlobalInvocationId27; CHECK-DAG: OpDecorate %[[#LLII]] BuiltIn LocalInvocationIndex28; CHECK-DAG: OpDecorate %[[#WD]] BuiltIn WorkDim29; CHECK-DAG: OpDecorate %[[#GS]] BuiltIn GlobalSize30; CHECK-DAG: OpDecorate %[[#EWS]] BuiltIn EnqueuedWorkgroupSize31; CHECK-DAG: OpDecorate %[[#GO]] BuiltIn GlobalOffset32; CHECK-DAG: OpDecorate %[[#GLI]] BuiltIn GlobalLinearId33; CHECK-DAG: OpDecorate %[[#SS]] BuiltIn SubgroupSize34; CHECK-DAG: OpDecorate %[[#SMS]] BuiltIn SubgroupMaxSize35; CHECK-DAG: OpDecorate %[[#NS]] BuiltIn NumSubgroups36; CHECK-DAG: OpDecorate %[[#NES]] BuiltIn NumEnqueuedSubgroups37; CHECK-DAG: OpDecorate %[[#SI]] BuiltIn SubgroupId38; CHECK-DAG: OpDecorate %[[#SLII]] BuiltIn SubgroupLocalInvocationId39 40; CHECK-DAG: %[[#SizeT:]] = OpTypeInt 64 041; CHECK-DAG: %[[#Int32:]] = OpTypeInt 32 042; CHECK-DAG: %[[#SizeTPtr:]] = OpTypePointer Input %[[#SizeT]]43; CHECK-DAG: %[[#Int32Ptr:]] = OpTypePointer Input %[[#Int32]]44 45; CHECK-DAG: %[[#GLI]] = OpVariable %[[#SizeTPtr]] Input46; CHECK-DAG: %[[#LLII]] = OpVariable %[[#SizeTPtr]] Input47; CHECK-DAG: %[[#WD]] = OpVariable %[[#Int32Ptr]] Input48; CHECK-DAG: %[[#SS]] = OpVariable %[[#Int32Ptr]] Input49; CHECK-DAG: %[[#SMS]] = OpVariable %[[#Int32Ptr]] Input50; CHECK-DAG: %[[#NS]] = OpVariable %[[#Int32Ptr]] Input51; CHECK-DAG: %[[#NES]] = OpVariable %[[#Int32Ptr]] Input52; CHECK-DAG: %[[#SI]] = OpVariable %[[#Int32Ptr]] Input53; CHECK-DAG: %[[#SLII]] = OpVariable %[[#Int32Ptr]] Input54 55; CHECK: OpFunction56; CHECK: %[[#]] = OpLoad %[[#SizeT]] %[[#GLI]]57; CHECK: %[[#]] = OpLoad %[[#SizeT]] %[[#LLII]]58; CHECK: %[[#]] = OpLoad %[[#Int32]] %[[#WD]]59; CHECK: %[[#]] = OpLoad %[[#Int32]] %[[#SS]]60; CHECK: %[[#]] = OpLoad %[[#Int32]] %[[#SMS]]61; CHECK: %[[#]] = OpLoad %[[#Int32]] %[[#NS]]62; CHECK: %[[#]] = OpLoad %[[#Int32]] %[[#NES]]63; CHECK: %[[#]] = OpLoad %[[#Int32]] %[[#SI]]64; CHECK: %[[#]] = OpLoad %[[#Int32]] %[[#SLII]]65 66@__spirv_BuiltInWorkDim = external addrspace(1) global i3267@__spirv_BuiltInGlobalSize = external addrspace(1) global <3 x i32>68@__spirv_BuiltInGlobalInvocationId = external addrspace(1) global <3 x i32>69@__spirv_BuiltInWorkgroupSize = external addrspace(1) global <3 x i32>70@__spirv_BuiltInEnqueuedWorkgroupSize = external addrspace(1) global <3 x i32>71@__spirv_BuiltInLocalInvocationId = external addrspace(1) global <3 x i32>72@__spirv_BuiltInNumWorkgroups = external addrspace(1) global <3 x i32>73@__spirv_BuiltInWorkgroupId = external addrspace(1) global <3 x i32>74@__spirv_BuiltInGlobalOffset = external addrspace(1) global <3 x i32>75@__spirv_BuiltInGlobalLinearId = external addrspace(1) global i3276@__spirv_BuiltInLocalInvocationIndex = external addrspace(1) global i3277@__spirv_BuiltInSubgroupSize = external addrspace(1) global i3278@__spirv_BuiltInSubgroupMaxSize = external addrspace(1) global i3279@__spirv_BuiltInNumSubgroups = external addrspace(1) global i3280@__spirv_BuiltInNumEnqueuedSubgroups = external addrspace(1) global i3281@__spirv_BuiltInSubgroupId = external addrspace(1) global i3282@__spirv_BuiltInSubgroupLocalInvocationId = external addrspace(1) global i3283 84@G_r1 = global i64 085@G_r2 = global i64 086@G_r3 = global i32 087@G_r4 = global i32 088@G_r5 = global i32 089@G_r6 = global i32 090@G_r7 = global i32 091@G_r8 = global i32 092@G_r9 = global i32 093 94define spir_kernel void @_Z1wv() {95entry:96 %r1 = tail call spir_func i64 @get_global_linear_id()97 store i64 %r1, i64* @G_r198 %r2 = tail call spir_func i64 @get_local_linear_id()99 store i64 %r2, i64* @G_r2100 %r3 = tail call spir_func i32 @get_work_dim()101 store i32 %r3, i32* @G_r3102 %r4 = tail call spir_func i32 @get_sub_group_size()103 store i32 %r4, i32* @G_r4104 %r5 = tail call spir_func i32 @get_max_sub_group_size()105 store i32 %r5, i32* @G_r5106 %r6 = tail call spir_func i32 @get_num_sub_groups()107 store i32 %r6, i32* @G_r6108 %r7 = tail call spir_func i32 @get_enqueued_num_sub_groups()109 store i32 %r7, i32* @G_r7110 %r8 = tail call spir_func i32 @get_sub_group_id()111 store i32 %r8, i32* @G_r8112 %r9 = tail call spir_func i32 @get_sub_group_local_id()113 store i32 %r9, i32* @G_r9114 ret void115}116 117declare spir_func i64 @get_global_linear_id()118declare spir_func i64 @get_local_linear_id()119declare spir_func i32 @get_work_dim()120declare spir_func i32 @get_sub_group_size()121declare spir_func i32 @get_max_sub_group_size()122declare spir_func i32 @get_num_sub_groups()123declare spir_func i32 @get_enqueued_num_sub_groups()124declare spir_func i32 @get_sub_group_id()125declare spir_func i32 @get_sub_group_local_id()126