blob: 7962ba0dab5457b725e40119b2994bff2dc7cd31 [file] [log] [blame]
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main" %sk_GlobalInvocationID
OpExecutionMode %main LocalSize 256 1 1
OpName %inputs "inputs"
OpMemberName %inputs 0 "in_data"
OpName %outputs "outputs"
OpMemberName %outputs 0 "out_data"
OpName %sk_GlobalInvocationID "sk_GlobalInvocationID"
OpName %shared_data "shared_data"
OpName %store_vIf "store_vIf"
OpName %main "main"
OpName %id "id"
OpName %rd_id "rd_id"
OpName %wr_id "wr_id"
OpName %mask "mask"
OpName %step "step"
OpDecorate %_runtimearr_float ArrayStride 16
OpMemberDecorate %inputs 0 Offset 0
OpDecorate %inputs BufferBlock
OpDecorate %4 Binding 0
OpDecorate %4 DescriptorSet 0
OpMemberDecorate %outputs 0 Offset 0
OpDecorate %outputs BufferBlock
OpDecorate %9 Binding 1
OpDecorate %9 DescriptorSet 0
OpDecorate %sk_GlobalInvocationID BuiltIn GlobalInvocationId
OpDecorate %_arr_float_int_512 ArrayStride 16
%float = OpTypeFloat 32
%_runtimearr_float = OpTypeRuntimeArray %float
%inputs = OpTypeStruct %_runtimearr_float
%_ptr_Uniform_inputs = OpTypePointer Uniform %inputs
%4 = OpVariable %_ptr_Uniform_inputs Uniform
%outputs = OpTypeStruct %_runtimearr_float
%_ptr_Uniform_outputs = OpTypePointer Uniform %outputs
%9 = OpVariable %_ptr_Uniform_outputs Uniform
%uint = OpTypeInt 32 0
%v3uint = OpTypeVector %uint 3
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
%sk_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
%int = OpTypeInt 32 1
%int_512 = OpConstant %int 512
%_arr_float_int_512 = OpTypeArray %float %int_512
%_ptr_Workgroup__arr_float_int_512 = OpTypePointer Workgroup %_arr_float_int_512
%shared_data = OpVariable %_ptr_Workgroup__arr_float_int_512 Workgroup
%void = OpTypeVoid
%_ptr_Function_uint = OpTypePointer Function %uint
%_ptr_Function_float = OpTypePointer Function %float
%24 = OpTypeFunction %void %_ptr_Function_uint %_ptr_Function_float
%_ptr_Workgroup_float = OpTypePointer Workgroup %float
%32 = OpTypeFunction %void
%int_0 = OpConstant %int 0
%uint_2 = OpConstant %uint 2
%_ptr_Uniform_float = OpTypePointer Uniform %float
%uint_1 = OpConstant %uint 1
%uint_264 = OpConstant %uint 264
%uint_0 = OpConstant %uint 0
%uint_9 = OpConstant %uint 9
%bool = OpTypeBool
%store_vIf = OpFunction %void None %24
%25 = OpFunctionParameter %_ptr_Function_uint
%26 = OpFunctionParameter %_ptr_Function_float
%27 = OpLabel
%28 = OpLoad %float %26
%29 = OpLoad %uint %25
%30 = OpAccessChain %_ptr_Workgroup_float %shared_data %29
OpStore %30 %28
OpReturn
OpFunctionEnd
%main = OpFunction %void None %32
%33 = OpLabel
%id = OpVariable %_ptr_Function_uint Function
%rd_id = OpVariable %_ptr_Function_uint Function
%wr_id = OpVariable %_ptr_Function_uint Function
%mask = OpVariable %_ptr_Function_uint Function
%step = OpVariable %_ptr_Function_uint Function
%85 = OpVariable %_ptr_Function_uint Function
%91 = OpVariable %_ptr_Function_float Function
%35 = OpLoad %v3uint %sk_GlobalInvocationID
%36 = OpCompositeExtract %uint %35 0
OpStore %id %36
%42 = OpIMul %uint %36 %uint_2
%43 = OpAccessChain %_ptr_Uniform_float %4 %int_0 %42
%45 = OpLoad %float %43
%46 = OpIMul %uint %36 %uint_2
%47 = OpAccessChain %_ptr_Workgroup_float %shared_data %46
OpStore %47 %45
%48 = OpLoad %uint %id
%49 = OpIMul %uint %48 %uint_2
%51 = OpIAdd %uint %49 %uint_1
%52 = OpAccessChain %_ptr_Uniform_float %4 %int_0 %51
%53 = OpLoad %float %52
%54 = OpLoad %uint %id
%55 = OpIMul %uint %54 %uint_2
%56 = OpIAdd %uint %55 %uint_1
%57 = OpAccessChain %_ptr_Workgroup_float %shared_data %56
OpStore %57 %53
OpControlBarrier %uint_2 %uint_2 %uint_264
OpStore %step %uint_0
OpBranch %62
%62 = OpLabel
OpLoopMerge %66 %65 None
OpBranch %63
%63 = OpLabel
%67 = OpLoad %uint %step
%69 = OpULessThan %bool %67 %uint_9
OpBranchConditional %69 %64 %66
%64 = OpLabel
%71 = OpLoad %uint %step
%72 = OpShiftLeftLogical %uint %uint_1 %71
%73 = OpISub %uint %72 %uint_1
OpStore %mask %73
%74 = OpLoad %uint %id
%75 = OpLoad %uint %step
%76 = OpShiftRightLogical %uint %74 %75
%77 = OpLoad %uint %step
%78 = OpIAdd %uint %77 %uint_1
%79 = OpShiftLeftLogical %uint %76 %78
%80 = OpIAdd %uint %79 %73
OpStore %rd_id %80
%81 = OpIAdd %uint %80 %uint_1
%82 = OpLoad %uint %id
%83 = OpBitwiseAnd %uint %82 %73
%84 = OpIAdd %uint %81 %83
OpStore %wr_id %84
OpStore %85 %84
%86 = OpAccessChain %_ptr_Workgroup_float %shared_data %84
%87 = OpLoad %float %86
%88 = OpAccessChain %_ptr_Workgroup_float %shared_data %80
%89 = OpLoad %float %88
%90 = OpFAdd %float %87 %89
OpStore %91 %90
%92 = OpFunctionCall %void %store_vIf %85 %91
OpControlBarrier %uint_2 %uint_2 %uint_264
OpBranch %65
%65 = OpLabel
%94 = OpLoad %uint %step
%95 = OpIAdd %uint %94 %uint_1
OpStore %step %95
OpBranch %62
%66 = OpLabel
%96 = OpLoad %uint %id
%97 = OpIMul %uint %96 %uint_2
%98 = OpAccessChain %_ptr_Workgroup_float %shared_data %97
%99 = OpLoad %float %98
%100 = OpLoad %uint %id
%101 = OpIMul %uint %100 %uint_2
%102 = OpAccessChain %_ptr_Uniform_float %9 %int_0 %101
OpStore %102 %99
%103 = OpLoad %uint %id
%104 = OpIMul %uint %103 %uint_2
%105 = OpIAdd %uint %104 %uint_1
%106 = OpAccessChain %_ptr_Workgroup_float %shared_data %105
%107 = OpLoad %float %106
%108 = OpLoad %uint %id
%109 = OpIMul %uint %108 %uint_2
%110 = OpIAdd %uint %109 %uint_1
%111 = OpAccessChain %_ptr_Uniform_float %9 %int_0 %110
OpStore %111 %107
OpReturn
OpFunctionEnd