blob: 92c20c3f314402be41f76483b03880081a98953a [file]
OpCapability Shader
%5 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main" %sk_GlobalInvocationID %sk_LocalInvocationID %sk_LocalInvocationIndex %sk_NumWorkgroups %sk_WorkgroupID
OpExecutionMode %main LocalSize 64 1 1
; Debug Information
OpName %outputs "outputs" ; id %11
OpMemberName %outputs 0 "outputBuffer"
OpName %sk_GlobalInvocationID "sk_GlobalInvocationID" ; id %13
OpName %sk_LocalInvocationID "sk_LocalInvocationID" ; id %16
OpName %sk_LocalInvocationIndex "sk_LocalInvocationIndex" ; id %17
OpName %sk_NumWorkgroups "sk_NumWorkgroups" ; id %19
OpName %sk_WorkgroupID "sk_WorkgroupID" ; id %20
OpName %helper_I "helper_I" ; id %6
OpName %main "main" ; id %7
; Annotations
OpDecorate %_runtimearr_uint ArrayStride 4
OpMemberDecorate %outputs 0 Offset 0
OpDecorate %outputs BufferBlock
OpDecorate %8 Binding 0
OpDecorate %8 DescriptorSet 0
OpDecorate %sk_GlobalInvocationID BuiltIn GlobalInvocationId
OpDecorate %sk_LocalInvocationID BuiltIn LocalInvocationId
OpDecorate %sk_LocalInvocationIndex BuiltIn LocalInvocationIndex
OpDecorate %sk_NumWorkgroups BuiltIn NumWorkgroups
OpDecorate %sk_WorkgroupID BuiltIn WorkgroupId
; Types, variables and constants
%int = OpTypeInt 32 1
%_ptr_Input_int = OpTypePointer Input %int
%uint = OpTypeInt 32 0
%_runtimearr_uint = OpTypeRuntimeArray %uint ; ArrayStride 4
%outputs = OpTypeStruct %_runtimearr_uint ; BufferBlock
%_ptr_Uniform_outputs = OpTypePointer Uniform %outputs
%8 = OpVariable %_ptr_Uniform_outputs Uniform ; Binding 0, DescriptorSet 0
%v3uint = OpTypeVector %uint 3
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
%sk_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input ; BuiltIn GlobalInvocationId
%sk_LocalInvocationID = OpVariable %_ptr_Input_v3uint Input ; BuiltIn LocalInvocationId
%_ptr_Input_uint = OpTypePointer Input %uint
%sk_LocalInvocationIndex = OpVariable %_ptr_Input_uint Input ; BuiltIn LocalInvocationIndex
%sk_NumWorkgroups = OpVariable %_ptr_Input_v3uint Input ; BuiltIn NumWorkgroups
%sk_WorkgroupID = OpVariable %_ptr_Input_v3uint Input ; BuiltIn WorkgroupId
%21 = OpTypeFunction %uint
%void = OpTypeVoid
%35 = OpTypeFunction %void
%int_0 = OpConstant %int 0
%_ptr_Uniform_uint = OpTypePointer Uniform %uint
; Function helper_I
%helper_I = OpFunction %uint None %21
%22 = OpLabel
%23 = OpLoad %v3uint %sk_NumWorkgroups
%24 = OpCompositeExtract %uint %23 0
%25 = OpLoad %v3uint %sk_WorkgroupID
%26 = OpCompositeExtract %uint %25 0
%27 = OpIAdd %uint %24 %26
%28 = OpLoad %v3uint %sk_LocalInvocationID
%29 = OpCompositeExtract %uint %28 0
%30 = OpIAdd %uint %27 %29
%31 = OpLoad %v3uint %sk_GlobalInvocationID
%32 = OpCompositeExtract %uint %31 0
%33 = OpIAdd %uint %30 %32
OpReturnValue %33
OpFunctionEnd
; Function main
%main = OpFunction %void None %35
%36 = OpLabel
%37 = OpFunctionCall %uint %helper_I
%39 = OpLoad %uint %sk_LocalInvocationIndex
%40 = OpAccessChain %_ptr_Uniform_uint %8 %int_0 %39
OpStore %40 %37
OpReturn
OpFunctionEnd