blob: c961dd4f3cee10c6a1ae81c77c08a621d00cb178 [file]
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
; Bound: 132
; Schema: 0
OpCapability Shader
%37 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %f "f"
OpExecutionMode %f LocalSize 1 1 1
OpMemberName %Inner 0 "m"
OpName %Inner "Inner"
OpMemberName %Outer_tint_explicit_layout 0 "a"
OpName %Outer_tint_explicit_layout "Outer_tint_explicit_layout"
OpMemberName %a_block_tint_explicit_layout 0 "inner"
OpName %a_block_tint_explicit_layout "a_block_tint_explicit_layout"
OpName %counter "counter"
OpName %i "i"
OpName %f "f"
OpName %p_a "p_a"
OpName %p_a_i "p_a_i"
OpName %p_a_i_a "p_a_i_a"
OpName %p_a_i_a_i "p_a_i_a_i"
OpName %p_a_i_a_i_m "p_a_i_a_i_m"
OpName %p_a_i_a_i_m_i "p_a_i_a_i_m_i"
OpMemberName %Outer 0 "a"
OpName %Outer "Outer"
OpName %l_a "l_a"
OpName %l_a_i "l_a_i"
OpName %l_a_i_a "l_a_i_a"
OpName %l_a_i_a_i "l_a_i_a_i"
OpName %l_a_i_a_i_m "l_a_i_a_i_m"
OpName %l_a_i_a_i_m_i "l_a_i_a_i_m_i"
OpName %l_a_i_a_i_m_i_i "l_a_i_a_i_m_i_i"
OpName %tint_convert_explicit_layout "tint_convert_explicit_layout"
OpName %tint_source "tint_source"
OpName %tint_convert_explicit_layout_0 "tint_convert_explicit_layout"
OpName %tint_source_0 "tint_source"
OpName %tint_convert_explicit_layout_1 "tint_convert_explicit_layout"
OpName %tint_source_1 "tint_source"
OpMemberDecorate %Inner 0 Offset 0
OpMemberDecorate %Inner 0 ColMajor
OpMemberDecorate %Inner 0 MatrixStride 16
OpDecorate %_arr_Inner_uint_4 ArrayStride 64
OpMemberDecorate %Outer_tint_explicit_layout 0 Offset 0
OpDecorate %_arr_Outer_tint_explicit_layout_uint_4 ArrayStride 256
OpMemberDecorate %a_block_tint_explicit_layout 0 Offset 0
OpDecorate %a_block_tint_explicit_layout Block
OpDecorate %1 DescriptorSet 0
OpDecorate %1 Binding 0
OpDecorate %1 NonWritable
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%mat2v4float = OpTypeMatrix %v4float 2
%Inner = OpTypeStruct %mat2v4float
%uint = OpTypeInt 32 0
%uint_4 = OpConstant %uint 4
%_arr_Inner_uint_4 = OpTypeArray %Inner %uint_4
%Outer_tint_explicit_layout = OpTypeStruct %_arr_Inner_uint_4
%_arr_Outer_tint_explicit_layout_uint_4 = OpTypeArray %Outer_tint_explicit_layout %uint_4
%a_block_tint_explicit_layout = OpTypeStruct %_arr_Outer_tint_explicit_layout_uint_4
%_ptr_Uniform_a_block_tint_explicit_layout = OpTypePointer Uniform %a_block_tint_explicit_layout
%1 = OpVariable %_ptr_Uniform_a_block_tint_explicit_layout Uniform
%int = OpTypeInt 32 1
%_ptr_Private_int = OpTypePointer Private %int
%int_0 = OpConstant %int 0
%counter = OpVariable %_ptr_Private_int Private %int_0
%18 = OpTypeFunction %int
%int_1 = OpConstant %int 1
%void = OpTypeVoid
%29 = OpTypeFunction %void
%_ptr_Uniform__arr_Outer_tint_explicit_layout_uint_4 = OpTypePointer Uniform %_arr_Outer_tint_explicit_layout_uint_4
%uint_0 = OpConstant %uint 0
%uint_3 = OpConstant %uint 3
%_ptr_Uniform_Outer_tint_explicit_layout = OpTypePointer Uniform %Outer_tint_explicit_layout
%_ptr_Uniform__arr_Inner_uint_4 = OpTypePointer Uniform %_arr_Inner_uint_4
%_ptr_Uniform_Inner = OpTypePointer Uniform %Inner
%_ptr_Uniform_mat2v4float = OpTypePointer Uniform %mat2v4float
%uint_1 = OpConstant %uint 1
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%_arr_Inner_uint_4_0 = OpTypeArray %Inner %uint_4
%Outer = OpTypeStruct %_arr_Inner_uint_4_0
%_arr_Outer_uint_4 = OpTypeArray %Outer %uint_4
%_ptr_Uniform_float = OpTypePointer Uniform %float
%78 = OpTypeFunction %_arr_Inner_uint_4_0 %_arr_Inner_uint_4
%_ptr_Function__arr_Inner_uint_4 = OpTypePointer Function %_arr_Inner_uint_4
%_ptr_Function__arr_Inner_uint_4_0 = OpTypePointer Function %_arr_Inner_uint_4_0
%84 = OpConstantNull %_arr_Inner_uint_4_0
%bool = OpTypeBool
%_ptr_Function_Inner = OpTypePointer Function %Inner
%102 = OpTypeFunction %Outer %Outer_tint_explicit_layout
%108 = OpTypeFunction %_arr_Outer_uint_4 %_arr_Outer_tint_explicit_layout_uint_4
%_ptr_Function__arr_Outer_tint_explicit_layout_uint_4 = OpTypePointer Function %_arr_Outer_tint_explicit_layout_uint_4
%_ptr_Function__arr_Outer_uint_4 = OpTypePointer Function %_arr_Outer_uint_4
%114 = OpConstantNull %_arr_Outer_uint_4
%_ptr_Function_Outer_tint_explicit_layout = OpTypePointer Function %Outer_tint_explicit_layout
%_ptr_Function_Outer = OpTypePointer Function %Outer
%i = OpFunction %int None %18
%19 = OpLabel
%20 = OpLoad %int %counter None
%21 = OpBitcast %uint %20
%22 = OpBitcast %uint %int_1
%24 = OpIAdd %uint %21 %22
%25 = OpBitcast %int %24
OpStore %counter %25 None
%26 = OpLoad %int %counter None
OpReturnValue %26
OpFunctionEnd
%f = OpFunction %void None %29
%30 = OpLabel
%p_a = OpAccessChain %_ptr_Uniform__arr_Outer_tint_explicit_layout_uint_4 %1 %uint_0
%34 = OpFunctionCall %int %i
%35 = OpBitcast %uint %34
%36 = OpExtInst %uint %37 UMin %35 %uint_3
%p_a_i = OpAccessChain %_ptr_Uniform_Outer_tint_explicit_layout %p_a %36
%p_a_i_a = OpAccessChain %_ptr_Uniform__arr_Inner_uint_4 %p_a_i %uint_0
%43 = OpFunctionCall %int %i
%44 = OpBitcast %uint %43
%45 = OpExtInst %uint %37 UMin %44 %uint_3
%p_a_i_a_i = OpAccessChain %_ptr_Uniform_Inner %p_a_i_a %45
%p_a_i_a_i_m = OpAccessChain %_ptr_Uniform_mat2v4float %p_a_i_a_i %uint_0
%50 = OpFunctionCall %int %i
%51 = OpBitcast %uint %50
%52 = OpExtInst %uint %37 UMin %51 %uint_1
%p_a_i_a_i_m_i = OpAccessChain %_ptr_Uniform_v4float %p_a_i_a_i_m %52
%56 = OpLoad %_arr_Outer_tint_explicit_layout_uint_4 %p_a None
%l_a = OpFunctionCall %_arr_Outer_uint_4 %tint_convert_explicit_layout_1 %56
%62 = OpLoad %Outer_tint_explicit_layout %p_a_i None
%l_a_i = OpFunctionCall %Outer %tint_convert_explicit_layout_0 %62
%65 = OpLoad %_arr_Inner_uint_4 %p_a_i_a None
%l_a_i_a = OpFunctionCall %_arr_Inner_uint_4_0 %tint_convert_explicit_layout %65
%l_a_i_a_i = OpLoad %Inner %p_a_i_a_i None
%l_a_i_a_i_m = OpLoad %mat2v4float %p_a_i_a_i_m None
%l_a_i_a_i_m_i = OpLoad %v4float %p_a_i_a_i_m_i None
%71 = OpFunctionCall %int %i
%72 = OpBitcast %uint %71
%73 = OpExtInst %uint %37 UMin %72 %uint_3
%74 = OpAccessChain %_ptr_Uniform_float %p_a_i_a_i_m_i %73
%l_a_i_a_i_m_i_i = OpLoad %float %74 None
OpReturn
OpFunctionEnd
%tint_convert_explicit_layout = OpFunction %_arr_Inner_uint_4_0 None %78
%tint_source = OpFunctionParameter %_arr_Inner_uint_4
%79 = OpLabel
%80 = OpVariable %_ptr_Function__arr_Inner_uint_4 Function
%82 = OpVariable %_ptr_Function__arr_Inner_uint_4_0 Function %84
OpStore %80 %tint_source
OpBranch %85
%85 = OpLabel
OpBranch %88
%88 = OpLabel
%90 = OpPhi %uint %uint_0 %85 %91 %87
OpLoopMerge %89 %87 None
OpBranch %86
%86 = OpLabel
%93 = OpUGreaterThanEqual %bool %90 %uint_4
OpSelectionMerge %95 None
OpBranchConditional %93 %96 %95
%96 = OpLabel
OpBranch %89
%95 = OpLabel
%97 = OpAccessChain %_ptr_Function_Inner %80 %90
%99 = OpLoad %Inner %97 None
%100 = OpAccessChain %_ptr_Function_Inner %82 %90
OpStore %100 %99 None
OpBranch %87
%87 = OpLabel
%91 = OpIAdd %uint %90 %uint_1
OpBranch %88
%89 = OpLabel
%92 = OpLoad %_arr_Inner_uint_4_0 %82 None
OpReturnValue %92
OpFunctionEnd
%tint_convert_explicit_layout_0 = OpFunction %Outer None %102
%tint_source_0 = OpFunctionParameter %Outer_tint_explicit_layout
%103 = OpLabel
%104 = OpCompositeExtract %_arr_Inner_uint_4 %tint_source_0 0
%105 = OpFunctionCall %_arr_Inner_uint_4_0 %tint_convert_explicit_layout %104
%106 = OpCompositeConstruct %Outer %105
OpReturnValue %106
OpFunctionEnd
%tint_convert_explicit_layout_1 = OpFunction %_arr_Outer_uint_4 None %108
%tint_source_1 = OpFunctionParameter %_arr_Outer_tint_explicit_layout_uint_4
%109 = OpLabel
%110 = OpVariable %_ptr_Function__arr_Outer_tint_explicit_layout_uint_4 Function
%112 = OpVariable %_ptr_Function__arr_Outer_uint_4 Function %114
OpStore %110 %tint_source_1
OpBranch %115
%115 = OpLabel
OpBranch %118
%118 = OpLabel
%120 = OpPhi %uint %uint_0 %115 %121 %117
OpLoopMerge %119 %117 None
OpBranch %116
%116 = OpLabel
%123 = OpUGreaterThanEqual %bool %120 %uint_4
OpSelectionMerge %124 None
OpBranchConditional %123 %125 %124
%125 = OpLabel
OpBranch %119
%124 = OpLabel
%126 = OpAccessChain %_ptr_Function_Outer_tint_explicit_layout %110 %120
%128 = OpLoad %Outer_tint_explicit_layout %126 None
%129 = OpFunctionCall %Outer %tint_convert_explicit_layout_0 %128
%130 = OpAccessChain %_ptr_Function_Outer %112 %120
OpStore %130 %129 None
OpBranch %117
%117 = OpLabel
%121 = OpIAdd %uint %120 %uint_1
OpBranch %118
%119 = OpLabel
%122 = OpLoad %_arr_Outer_uint_4 %112 None
OpReturnValue %122
OpFunctionEnd