blob: c52d4e336fac08330f57ecde829af6d92edfdfde [file] [log] [blame]
; 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 %Scalars 0 "f0"
OpMemberName %Scalars 1 "i1"
OpMemberName %Scalars 2 "i2"
OpMemberName %Scalars 3 "i3"
OpName %Scalars "Scalars"
OpMemberName %U_block 0 "inner"
OpName %U_block "U_block"
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"
OpMemberDecorate %Scalars 0 Offset 0
OpMemberDecorate %Scalars 1 Offset 16
OpMemberDecorate %Scalars 2 Offset 32
OpMemberDecorate %Scalars 3 Offset 48
OpMemberDecorate %U_block 0 Offset 0
OpDecorate %U_block 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
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%int = OpTypeInt 32 1
%v4int = OpTypeVector %int 4
%Scalars = OpTypeStruct %v4float %v4int %v4int %v4int
%U_block = OpTypeStruct %Scalars
%_ptr_Uniform_U_block = OpTypePointer Uniform %U_block
%1 = OpVariable %_ptr_Uniform_U_block Uniform
%uint = OpTypeInt 32 0
%11 = OpTypeImage %uint 2D 0 0 0 2 Rgba32ui
%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
%dst_image2d = OpVariable %_ptr_UniformConstant_11 UniformConstant
%15 = OpTypeImage %float 2D 0 0 0 1 Unknown
%_ptr_UniformConstant_15 = OpTypePointer UniformConstant %15
%src_image2d = OpVariable %_ptr_UniformConstant_15 UniformConstant
%v4uint = OpTypeVector %uint 4
%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
%32 = OpTypeFunction %void %v3uint %uint
%uint_256 = OpConstant %uint 256
%bool = OpTypeBool
%uint_2 = OpConstant %uint 2
%uint_264 = OpConstant %uint 264
%_ptr_Workgroup_v4uint = OpTypePointer Workgroup %v4uint
%58 = OpConstantNull %v4uint
%_ptr_Function_int = OpTypePointer Function %int
%_ptr_Uniform_v4int = OpTypePointer Uniform %v4int
%uint_0 = OpConstant %uint 0
%uint_3 = OpConstant %uint 3
%_ptr_Uniform_int = OpTypePointer Uniform %int
%int_8 = OpConstant %int 8
%int_0 = OpConstant %int 0
%v2uint = OpTypeVector %uint 2
%_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 %32
%lid = OpFunctionParameter %v3uint
%tint_local_index = OpFunctionParameter %uint
%33 = OpLabel
%S = OpVariable %_ptr_Function_int Function
%s_group = OpVariable %_ptr_Function_int Function
%result = OpVariable %_ptr_Function_v4uint Function
%34 = OpULessThan %bool %tint_local_index %uint_256
OpSelectionMerge %37 None
OpBranchConditional %34 %38 %37
%38 = OpLabel
%54 = OpUMod %uint %tint_local_index %uint_32
%55 = OpUDiv %uint %tint_local_index %uint_32
%56 = OpAccessChain %_ptr_Workgroup_v4uint %outputs %55 %54
OpStore %56 %58 None
OpBranch %37
%37 = OpLabel
OpControlBarrier %uint_2 %uint_2 %uint_264
%42 = OpCompositeExtract %uint %lid 2
%init = OpBitcast %int %42
OpBranch %44
%44 = OpLabel
OpStore %S %init
OpBranch %47
%47 = OpLabel
OpLoopMerge %48 %46 None
OpBranch %45
%45 = OpLabel
%61 = OpLoad %int %S None
%62 = OpAccessChain %_ptr_Uniform_v4int %1 %uint_0 %uint_3
%66 = OpAccessChain %_ptr_Uniform_int %62 %uint_0
%68 = OpLoad %int %66 None
%69 = OpSLessThan %bool %61 %68
OpSelectionMerge %70 None
OpBranchConditional %69 %70 %71
%71 = OpLabel
OpBranch %48
%70 = OpLabel
OpBranch %46
%46 = OpLabel
%72 = OpLoad %int %S None
%73 = OpBitcast %uint %72
%74 = OpBitcast %uint %int_8
%76 = OpIAdd %uint %73 %74
%77 = OpBitcast %int %76
OpStore %S %77 None
OpBranch %47
%48 = OpLabel
OpBranch %49
%49 = OpLabel
OpStore %s_group %int_0
OpBranch %52
%52 = OpLabel
OpLoopMerge %53 %51 None
OpBranch %50
%50 = OpLabel
%80 = OpLoad %int %s_group None
%81 = OpAccessChain %_ptr_Uniform_v4int %1 %uint_0 %uint_3
%82 = OpAccessChain %_ptr_Uniform_int %81 %uint_2
%83 = OpLoad %int %82 None
%84 = OpSLessThan %bool %80 %83
OpSelectionMerge %85 None
OpBranchConditional %84 %85 %86
%86 = OpLabel
OpBranch %53
%85 = OpLabel
%87 = OpCompositeExtract %uint %lid 2
%88 = OpCompositeExtract %uint %lid 0
%89 = OpAccessChain %_ptr_Workgroup_v4uint %outputs %87 %88
%90 = OpLoad %15 %src_image2d None
%91 = OpAccessChain %_ptr_Uniform_v4int %1 %uint_0 %uint_3
%92 = OpAccessChain %_ptr_Uniform_int %91 %uint_0
%93 = OpLoad %int %92 None
%94 = OpBitcast %uint %93
%96 = OpCompositeConstruct %v2uint %94 %94
%97 = OpImageFetch %v4float %90 %96 Lod %int_0
%98 = OpFunctionCall %v4uint %tint_v4f32_to_v4u32 %97
OpStore %89 %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 %11 %dst_image2d None
%108 = OpAccessChain %_ptr_Uniform_v4int %1 %uint_0 %uint_3
%109 = OpAccessChain %_ptr_Uniform_int %108 %uint_0
%110 = OpLoad %int %109 None
%111 = OpBitcast %uint %110
%112 = OpCompositeConstruct %v2uint %111 %111
%113 = OpLoad %v4uint %result None
OpImageWrite %107 %112 %113 None
OpBranch %51
%51 = OpLabel
%115 = OpLoad %int %s_group None
%116 = OpBitcast %uint %115
%117 = OpBitcast %uint %int_8
%118 = OpIAdd %uint %116 %117
%119 = OpBitcast %int %118
OpStore %s_group %119 None
OpBranch %52
%53 = 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