blob: ac24de3d3d2bd495dc7a5693b0598e093abfdafd [file]
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
; Bound: 135
; Schema: 0
OpCapability Shader
%124 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main" %main_local_invocation_id_Input %main_local_invocation_index_Input
OpExecutionMode %main LocalSize 32 1 8
OpMemberName %U_block_tint_explicit_layout 0 "inner"
OpName %U_block_tint_explicit_layout "U_block_tint_explicit_layout"
OpName %dst_image2d "dst_image2d"
OpName %src_image2d "src_image2d"
OpName %outputs "outputs"
OpName %main_local_invocation_id_Input "main_local_invocation_id_Input"
OpName %main_local_invocation_index_Input "main_local_invocation_index_Input"
OpName %main_inner "main_inner"
OpName %lid "lid"
OpName %tint_local_index "tint_local_index"
OpName %init "init"
OpName %S "S"
OpName %s_group "s_group"
OpName %result "result"
OpName %tint_v4f32_to_v4u32 "tint_v4f32_to_v4u32"
OpName %value "value"
OpName %main "main"
OpDecorate %_arr_v4uint_uint_4 ArrayStride 16
OpMemberDecorate %U_block_tint_explicit_layout 0 Offset 0
OpDecorate %U_block_tint_explicit_layout Block
OpDecorate %1 DescriptorSet 0
OpDecorate %1 Binding 3
OpDecorate %1 NonWritable
OpDecorate %dst_image2d DescriptorSet 0
OpDecorate %dst_image2d Binding 1
OpDecorate %dst_image2d NonReadable
OpDecorate %src_image2d DescriptorSet 0
OpDecorate %src_image2d Binding 2
OpDecorate %main_local_invocation_id_Input BuiltIn LocalInvocationId
OpDecorate %main_local_invocation_index_Input BuiltIn LocalInvocationIndex
%uint = OpTypeInt 32 0
%v4uint = OpTypeVector %uint 4
%uint_4 = OpConstant %uint 4
%_arr_v4uint_uint_4 = OpTypeArray %v4uint %uint_4
%U_block_tint_explicit_layout = OpTypeStruct %_arr_v4uint_uint_4
%_ptr_Uniform_U_block_tint_explicit_layout = OpTypePointer Uniform %U_block_tint_explicit_layout
%1 = OpVariable %_ptr_Uniform_U_block_tint_explicit_layout Uniform
%10 = OpTypeImage %uint 2D 0 0 0 2 Rgba32ui
%_ptr_UniformConstant_10 = OpTypePointer UniformConstant %10
%dst_image2d = OpVariable %_ptr_UniformConstant_10 UniformConstant
%float = OpTypeFloat 32
%13 = OpTypeImage %float 2D 0 0 0 1 Unknown
%_ptr_UniformConstant_13 = OpTypePointer UniformConstant %13
%src_image2d = OpVariable %_ptr_UniformConstant_13 UniformConstant
%uint_32 = OpConstant %uint 32
%_arr_v4uint_uint_32 = OpTypeArray %v4uint %uint_32
%uint_8 = OpConstant %uint 8
%_arr__arr_v4uint_uint_32_uint_8 = OpTypeArray %_arr_v4uint_uint_32 %uint_8
%_ptr_Workgroup__arr__arr_v4uint_uint_32_uint_8 = OpTypePointer Workgroup %_arr__arr_v4uint_uint_32_uint_8
%outputs = OpVariable %_ptr_Workgroup__arr__arr_v4uint_uint_32_uint_8 Workgroup
%v3uint = OpTypeVector %uint 3
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
%main_local_invocation_id_Input = OpVariable %_ptr_Input_v3uint Input
%_ptr_Input_uint = OpTypePointer Input %uint
%main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
%void = OpTypeVoid
%30 = OpTypeFunction %void %v3uint %uint
%uint_256 = OpConstant %uint 256
%bool = OpTypeBool
%uint_2 = OpConstant %uint 2
%uint_264 = OpConstant %uint 264
%int = OpTypeInt 32 1
%_ptr_Workgroup_v4uint = OpTypePointer Workgroup %v4uint
%57 = OpConstantNull %v4uint
%_ptr_Function_int = OpTypePointer Function %int
%_ptr_Uniform_v4uint = OpTypePointer Uniform %v4uint
%uint_0 = OpConstant %uint 0
%uint_3 = OpConstant %uint 3
%int_0 = OpConstant %int 0
%v2uint = OpTypeVector %uint 2
%v4float = OpTypeVector %float 4
%_ptr_Function_v4uint = OpTypePointer Function %v4uint
%121 = OpTypeFunction %v4uint %v4float
%125 = OpConstantNull %v4float
%float_4_29496704e_09 = OpConstant %float 4.29496704e+09
%126 = OpConstantComposite %v4float %float_4_29496704e_09 %float_4_29496704e_09 %float_4_29496704e_09 %float_4_29496704e_09
%130 = OpTypeFunction %void
%main_inner = OpFunction %void None %30
%lid = OpFunctionParameter %v3uint
%tint_local_index = OpFunctionParameter %uint
%31 = OpLabel
%S = OpVariable %_ptr_Function_int Function
%s_group = OpVariable %_ptr_Function_int Function
%result = OpVariable %_ptr_Function_v4uint Function
%32 = OpULessThan %bool %tint_local_index %uint_256
OpSelectionMerge %35 None
OpBranchConditional %32 %36 %35
%36 = OpLabel
%53 = OpUMod %uint %tint_local_index %uint_32
%54 = OpUDiv %uint %tint_local_index %uint_32
%55 = OpAccessChain %_ptr_Workgroup_v4uint %outputs %54 %53
OpStore %55 %57 None
OpBranch %35
%35 = OpLabel
OpControlBarrier %uint_2 %uint_2 %uint_264
%40 = OpCompositeExtract %uint %lid 2
%init = OpBitcast %int %40
OpBranch %43
%43 = OpLabel
OpStore %S %init
OpBranch %46
%46 = OpLabel
OpLoopMerge %47 %45 None
OpBranch %44
%44 = OpLabel
%60 = OpLoad %int %S None
%61 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_3
%65 = OpLoad %v4uint %61 None
%66 = OpCompositeExtract %uint %65 0
%67 = OpBitcast %int %66
%68 = OpSLessThan %bool %60 %67
OpSelectionMerge %69 None
OpBranchConditional %68 %69 %70
%70 = OpLabel
OpBranch %47
%69 = OpLabel
OpBranch %45
%45 = OpLabel
%71 = OpLoad %int %S None
%72 = OpBitcast %uint %71
%73 = OpIAdd %uint %72 %uint_8
%74 = OpBitcast %int %73
OpStore %S %74 None
OpBranch %46
%47 = OpLabel
OpBranch %48
%48 = OpLabel
OpStore %s_group %int_0
OpBranch %51
%51 = OpLabel
OpLoopMerge %52 %50 None
OpBranch %49
%49 = OpLabel
%77 = OpLoad %int %s_group None
%78 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_3
%79 = OpLoad %v4uint %78 None
%80 = OpCompositeExtract %uint %79 2
%81 = OpBitcast %int %80
%82 = OpSLessThan %bool %77 %81
OpSelectionMerge %83 None
OpBranchConditional %82 %83 %84
%84 = OpLabel
OpBranch %52
%83 = OpLabel
%85 = OpCompositeExtract %uint %lid 2
%86 = OpCompositeExtract %uint %lid 0
%87 = OpAccessChain %_ptr_Workgroup_v4uint %outputs %85 %86
%88 = OpLoad %13 %src_image2d None
%89 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_3
%90 = OpLoad %v4uint %89 None
%91 = OpCompositeExtract %uint %90 0
%92 = OpBitcast %int %91
%93 = OpBitcast %uint %92
%95 = OpCompositeConstruct %v2uint %93 %93
%96 = OpImageFetch %v4float %88 %95 Lod %int_0
%98 = OpFunctionCall %v4uint %tint_v4f32_to_v4u32 %96
OpStore %87 %98 None
OpControlBarrier %uint_2 %uint_2 %uint_264
%101 = OpCompositeExtract %uint %lid 2
%102 = OpCompositeExtract %uint %lid 0
%103 = OpAccessChain %_ptr_Workgroup_v4uint %outputs %101 %102
%104 = OpLoad %v4uint %103 None
OpStore %result %104
%107 = OpLoad %10 %dst_image2d None
%108 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_3
%109 = OpLoad %v4uint %108 None
%110 = OpCompositeExtract %uint %109 0
%111 = OpBitcast %int %110
%112 = OpBitcast %uint %111
%113 = OpCompositeConstruct %v2uint %112 %112
%114 = OpLoad %v4uint %result None
OpImageWrite %107 %113 %114 None
OpBranch %50
%50 = OpLabel
%116 = OpLoad %int %s_group None
%117 = OpBitcast %uint %116
%118 = OpIAdd %uint %117 %uint_8
%119 = OpBitcast %int %118
OpStore %s_group %119 None
OpBranch %51
%52 = OpLabel
OpReturn
OpFunctionEnd
%tint_v4f32_to_v4u32 = OpFunction %v4uint None %121
%value = OpFunctionParameter %v4float
%122 = OpLabel
%123 = OpExtInst %v4float %124 NClamp %value %125 %126
%128 = OpConvertFToU %v4uint %123
OpReturnValue %128
OpFunctionEnd
%main = OpFunction %void None %130
%131 = OpLabel
%132 = OpLoad %v3uint %main_local_invocation_id_Input None
%133 = OpLoad %uint %main_local_invocation_index_Input None
%134 = OpFunctionCall %void %main_inner %132 %133
OpReturn
OpFunctionEnd