blob: e8be529d58efd1de64690e330a6cb15bc011aeca [file] [log] [blame]
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 109
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %compute_main "compute_main" %local_invocation_index_1_param_1
OpExecutionMode %compute_main LocalSize 1 1 1
OpName %local_invocation_index_1_param_1 "local_invocation_index_1_param_1"
OpName %local_invocation_index_1 "local_invocation_index_1"
OpName %wg "wg"
OpName %tint_zero_workgroup_memory "tint_zero_workgroup_memory"
OpName %local_idx "local_idx"
OpName %idx_1 "idx_1"
OpName %tint_div "tint_div"
OpName %lhs "lhs"
OpName %rhs "rhs"
OpName %tint_mod "tint_mod"
OpName %lhs_0 "lhs"
OpName %rhs_0 "rhs"
OpName %compute_main_inner "compute_main_inner"
OpName %local_invocation_index_2 "local_invocation_index_2"
OpName %idx "idx"
OpName %compute_main_1 "compute_main_1"
OpName %compute_main_inner_1 "compute_main_inner_1"
OpName %local_invocation_index_1_param "local_invocation_index_1_param"
OpName %compute_main "compute_main"
OpDecorate %local_invocation_index_1_param_1 BuiltIn LocalInvocationIndex
OpDecorate %_arr_uint_uint_1 ArrayStride 4
OpDecorate %_arr__arr_uint_uint_1_uint_2 ArrayStride 4
OpDecorate %_arr__arr__arr_uint_uint_1_uint_2_uint_3 ArrayStride 8
%uint = OpTypeInt 32 0
%_ptr_Input_uint = OpTypePointer Input %uint
%local_invocation_index_1_param_1 = OpVariable %_ptr_Input_uint Input
%_ptr_Private_uint = OpTypePointer Private %uint
%6 = OpConstantNull %uint
%local_invocation_index_1 = OpVariable %_ptr_Private_uint Private %6
%uint_1 = OpConstant %uint 1
%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
%uint_2 = OpConstant %uint 2
%_arr__arr_uint_uint_1_uint_2 = OpTypeArray %_arr_uint_uint_1 %uint_2
%uint_3 = OpConstant %uint 3
%_arr__arr__arr_uint_uint_1_uint_2_uint_3 = OpTypeArray %_arr__arr_uint_uint_1_uint_2 %uint_3
%_ptr_Workgroup__arr__arr__arr_uint_uint_1_uint_2_uint_3 = OpTypePointer Workgroup %_arr__arr__arr_uint_uint_1_uint_2_uint_3
%wg = OpVariable %_ptr_Workgroup__arr__arr__arr_uint_uint_1_uint_2_uint_3 Workgroup
%void = OpTypeVoid
%15 = OpTypeFunction %void %uint
%_ptr_Function_uint = OpTypePointer Function %uint
%uint_6 = OpConstant %uint 6
%bool = OpTypeBool
%uint_0 = OpConstant %uint 0
%_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
%uint_264 = OpConstant %uint 264
%48 = OpTypeFunction %uint %uint %uint
%int = OpTypeInt 32 1
%int_2 = OpConstant %int 2
%int_1 = OpConstant %int 1
%93 = OpConstantNull %int
%95 = OpTypeFunction %void
%tint_zero_workgroup_memory = OpFunction %void None %15
%local_idx = OpFunctionParameter %uint
%19 = OpLabel
%idx_1 = OpVariable %_ptr_Function_uint Function %6
OpStore %idx_1 %local_idx
OpBranch %22
%22 = OpLabel
OpLoopMerge %23 %24 None
OpBranch %25
%25 = OpLabel
%27 = OpLoad %uint %idx_1
%29 = OpULessThan %bool %27 %uint_6
%26 = OpLogicalNot %bool %29
OpSelectionMerge %31 None
OpBranchConditional %26 %32 %31
%32 = OpLabel
OpBranch %23
%31 = OpLabel
%33 = OpLoad %uint %idx_1
%34 = OpUDiv %uint %33 %uint_2
%35 = OpLoad %uint %idx_1
%36 = OpUMod %uint %35 %uint_2
%37 = OpLoad %uint %idx_1
%38 = OpUMod %uint %37 %uint_1
%43 = OpAccessChain %_ptr_Workgroup_uint %wg %34 %36 %38
OpAtomicStore %43 %uint_2 %uint_0 %6
OpBranch %24
%24 = OpLabel
%44 = OpLoad %uint %idx_1
%45 = OpIAdd %uint %44 %uint_1
OpStore %idx_1 %45
OpBranch %22
%23 = OpLabel
OpControlBarrier %uint_2 %uint_2 %uint_264
OpReturn
OpFunctionEnd
%tint_div = OpFunction %uint None %48
%lhs = OpFunctionParameter %uint
%rhs = OpFunctionParameter %uint
%52 = OpLabel
%54 = OpIEqual %bool %rhs %6
%53 = OpSelect %uint %54 %uint_1 %rhs
%55 = OpUDiv %uint %lhs %53
OpReturnValue %55
OpFunctionEnd
%tint_mod = OpFunction %uint None %48
%lhs_0 = OpFunctionParameter %uint
%rhs_0 = OpFunctionParameter %uint
%59 = OpLabel
%61 = OpIEqual %bool %rhs_0 %6
%60 = OpSelect %uint %61 %uint_1 %rhs_0
%62 = OpUMod %uint %lhs_0 %60
OpReturnValue %62
OpFunctionEnd
%compute_main_inner = OpFunction %void None %15
%local_invocation_index_2 = OpFunctionParameter %uint
%65 = OpLabel
%idx = OpVariable %_ptr_Function_uint Function %6
OpStore %idx %6
OpStore %idx %local_invocation_index_2
OpBranch %67
%67 = OpLabel
OpLoopMerge %68 %69 None
OpBranch %70
%70 = OpLabel
%72 = OpLoad %uint %idx
%73 = OpULessThan %bool %72 %uint_6
%71 = OpLogicalNot %bool %73
OpSelectionMerge %74 None
OpBranchConditional %71 %75 %74
%75 = OpLabel
OpBranch %68
%74 = OpLabel
%76 = OpLoad %uint %idx
%77 = OpLoad %uint %idx
%78 = OpLoad %uint %idx
%81 = OpFunctionCall %uint %tint_div %76 %uint_2
%82 = OpFunctionCall %uint %tint_mod %77 %uint_2
%83 = OpFunctionCall %uint %tint_mod %78 %uint_1
%84 = OpAccessChain %_ptr_Workgroup_uint %wg %81 %82 %83
OpAtomicStore %84 %uint_2 %uint_0 %6
OpBranch %69
%69 = OpLabel
%85 = OpLoad %uint %idx
%86 = OpIAdd %uint %85 %uint_1
OpStore %idx %86
OpBranch %67
%68 = OpLabel
OpControlBarrier %uint_2 %uint_2 %uint_264
%94 = OpAccessChain %_ptr_Workgroup_uint %wg %int_2 %int_1 %93
OpAtomicStore %94 %uint_2 %uint_0 %uint_1
OpReturn
OpFunctionEnd
%compute_main_1 = OpFunction %void None %95
%97 = OpLabel
%98 = OpLoad %uint %local_invocation_index_1
%99 = OpFunctionCall %void %compute_main_inner %98
OpReturn
OpFunctionEnd
%compute_main_inner_1 = OpFunction %void None %15
%local_invocation_index_1_param = OpFunctionParameter %uint
%102 = OpLabel
%103 = OpFunctionCall %void %tint_zero_workgroup_memory %local_invocation_index_1_param
OpStore %local_invocation_index_1 %local_invocation_index_1_param
%104 = OpFunctionCall %void %compute_main_1
OpReturn
OpFunctionEnd
%compute_main = OpFunction %void None %95
%106 = OpLabel
%108 = OpLoad %uint %local_invocation_index_1_param_1
%107 = OpFunctionCall %void %compute_main_inner_1 %108
OpReturn
OpFunctionEnd