| ; SPIR-V |
| ; Version: 1.3 |
| ; Generator: Google Tint Compiler; 1 |
| ; Bound: 89 |
| ; Schema: 0 |
| OpCapability Shader |
| OpMemoryModel Logical GLSL450 |
| OpEntryPoint GLCompute %f "f" %f_local_invocation_index_Input |
| OpExecutionMode %f LocalSize 1 1 1 |
| OpMemberName %u_block_tint_explicit_layout 0 "inner" |
| OpName %u_block_tint_explicit_layout "u_block_tint_explicit_layout" |
| OpName %w "w" |
| OpName %f_local_invocation_index_Input "f_local_invocation_index_Input" |
| OpName %f_inner "f_inner" |
| OpName %tint_local_index "tint_local_index" |
| OpName %f "f" |
| OpName %tint_convert_explicit_layout "tint_convert_explicit_layout" |
| OpName %tint_source "tint_source" |
| OpDecorate %_arr_mat2v4float_uint_4 ArrayStride 32 |
| OpMemberDecorate %u_block_tint_explicit_layout 0 Offset 0 |
| OpMemberDecorate %u_block_tint_explicit_layout 0 ColMajor |
| OpMemberDecorate %u_block_tint_explicit_layout 0 MatrixStride 16 |
| OpDecorate %u_block_tint_explicit_layout Block |
| OpDecorate %1 DescriptorSet 0 |
| OpDecorate %1 Binding 0 |
| OpDecorate %1 NonWritable |
| OpDecorate %f_local_invocation_index_Input BuiltIn LocalInvocationIndex |
| %float = OpTypeFloat 32 |
| %v4float = OpTypeVector %float 4 |
| %mat2v4float = OpTypeMatrix %v4float 2 |
| %uint = OpTypeInt 32 0 |
| %uint_4 = OpConstant %uint 4 |
| %_arr_mat2v4float_uint_4 = OpTypeArray %mat2v4float %uint_4 |
| %u_block_tint_explicit_layout = OpTypeStruct %_arr_mat2v4float_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 |
| %_arr_mat2v4float_uint_4_0 = OpTypeArray %mat2v4float %uint_4 |
| %_ptr_Workgroup__arr_mat2v4float_uint_4_0 = OpTypePointer Workgroup %_arr_mat2v4float_uint_4_0 |
| %w = OpVariable %_ptr_Workgroup__arr_mat2v4float_uint_4_0 Workgroup |
| %_ptr_Input_uint = OpTypePointer Input %uint |
| %f_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input |
| %void = OpTypeVoid |
| %18 = OpTypeFunction %void %uint |
| %uint_2 = OpConstant %uint 2 |
| %uint_264 = OpConstant %uint 264 |
| %_ptr_Uniform__arr_mat2v4float_uint_4 = OpTypePointer Uniform %_arr_mat2v4float_uint_4 |
| %uint_0 = OpConstant %uint 0 |
| %_ptr_Workgroup_mat2v4float = OpTypePointer Workgroup %mat2v4float |
| %uint_1 = OpConstant %uint 1 |
| %_ptr_Uniform_mat2v4float = OpTypePointer Uniform %mat2v4float |
| %_ptr_Workgroup_v4float = OpTypePointer Workgroup %v4float |
| %_ptr_Uniform_v4float = OpTypePointer Uniform %v4float |
| %_ptr_Uniform_float = OpTypePointer Uniform %float |
| %_ptr_Workgroup_float = OpTypePointer Workgroup %float |
| %bool = OpTypeBool |
| %60 = OpConstantNull %mat2v4float |
| %62 = OpTypeFunction %void |
| %67 = OpTypeFunction %_arr_mat2v4float_uint_4_0 %_arr_mat2v4float_uint_4 |
| %_ptr_Function__arr_mat2v4float_uint_4 = OpTypePointer Function %_arr_mat2v4float_uint_4 |
| %_ptr_Function__arr_mat2v4float_uint_4_0 = OpTypePointer Function %_arr_mat2v4float_uint_4_0 |
| %73 = OpConstantNull %_arr_mat2v4float_uint_4_0 |
| %_ptr_Function_mat2v4float = OpTypePointer Function %mat2v4float |
| %f_inner = OpFunction %void None %18 |
| %tint_local_index = OpFunctionParameter %uint |
| %19 = OpLabel |
| OpBranch %20 |
| %20 = OpLabel |
| OpBranch %23 |
| %23 = OpLabel |
| %25 = OpPhi %uint %tint_local_index %20 %26 %22 |
| OpLoopMerge %24 %22 None |
| OpBranch %21 |
| %21 = OpLabel |
| %55 = OpUGreaterThanEqual %bool %25 %uint_4 |
| OpSelectionMerge %57 None |
| OpBranchConditional %55 %58 %57 |
| %58 = OpLabel |
| OpBranch %24 |
| %57 = OpLabel |
| %59 = OpAccessChain %_ptr_Workgroup_mat2v4float %w %25 |
| OpStore %59 %60 None |
| OpBranch %22 |
| %22 = OpLabel |
| %26 = OpIAdd %uint %25 %uint_1 |
| OpBranch %23 |
| %24 = OpLabel |
| OpControlBarrier %uint_2 %uint_2 %uint_264 |
| %30 = OpAccessChain %_ptr_Uniform__arr_mat2v4float_uint_4 %1 %uint_0 |
| %33 = OpLoad %_arr_mat2v4float_uint_4 %30 None |
| %34 = OpFunctionCall %_arr_mat2v4float_uint_4_0 %tint_convert_explicit_layout %33 |
| OpStore %w %34 None |
| %36 = OpAccessChain %_ptr_Workgroup_mat2v4float %w %uint_1 |
| %39 = OpAccessChain %_ptr_Uniform_mat2v4float %1 %uint_0 %uint_2 |
| %41 = OpLoad %mat2v4float %39 None |
| OpStore %36 %41 None |
| %42 = OpAccessChain %_ptr_Workgroup_v4float %w %uint_1 %uint_0 |
| %44 = OpAccessChain %_ptr_Uniform_v4float %1 %uint_0 %uint_0 %uint_1 |
| %46 = OpLoad %v4float %44 None |
| %47 = OpVectorShuffle %v4float %46 %46 1 3 0 2 |
| OpStore %42 %47 None |
| %48 = OpAccessChain %_ptr_Workgroup_v4float %w %uint_1 %uint_0 |
| %49 = OpAccessChain %_ptr_Uniform_v4float %1 %uint_0 %uint_0 %uint_1 |
| %50 = OpAccessChain %_ptr_Uniform_float %49 %uint_0 |
| %52 = OpLoad %float %50 None |
| %53 = OpAccessChain %_ptr_Workgroup_float %48 %uint_0 |
| OpStore %53 %52 None |
| OpReturn |
| OpFunctionEnd |
| %f = OpFunction %void None %62 |
| %63 = OpLabel |
| %64 = OpLoad %uint %f_local_invocation_index_Input None |
| %65 = OpFunctionCall %void %f_inner %64 |
| OpReturn |
| OpFunctionEnd |
| %tint_convert_explicit_layout = OpFunction %_arr_mat2v4float_uint_4_0 None %67 |
| %tint_source = OpFunctionParameter %_arr_mat2v4float_uint_4 |
| %68 = OpLabel |
| %69 = OpVariable %_ptr_Function__arr_mat2v4float_uint_4 Function |
| %71 = OpVariable %_ptr_Function__arr_mat2v4float_uint_4_0 Function %73 |
| OpStore %69 %tint_source |
| OpBranch %74 |
| %74 = OpLabel |
| OpBranch %77 |
| %77 = OpLabel |
| %79 = OpPhi %uint %uint_0 %74 %80 %76 |
| OpLoopMerge %78 %76 None |
| OpBranch %75 |
| %75 = OpLabel |
| %82 = OpUGreaterThanEqual %bool %79 %uint_4 |
| OpSelectionMerge %83 None |
| OpBranchConditional %82 %84 %83 |
| %84 = OpLabel |
| OpBranch %78 |
| %83 = OpLabel |
| %85 = OpAccessChain %_ptr_Function_mat2v4float %69 %79 |
| %87 = OpLoad %mat2v4float %85 None |
| %88 = OpAccessChain %_ptr_Function_mat2v4float %71 %79 |
| OpStore %88 %87 None |
| OpBranch %76 |
| %76 = OpLabel |
| %80 = OpIAdd %uint %79 %uint_1 |
| OpBranch %77 |
| %78 = OpLabel |
| %81 = OpLoad %_arr_mat2v4float_uint_4_0 %71 None |
| OpReturnValue %81 |
| OpFunctionEnd |