1 OpCapability Shader 2 %1 = OpExtInstImport "GLSL.std.450" 3 OpMemoryModel Logical GLSL450 4 OpEntryPoint Fragment %_entrypoint_v "_entrypoint" %sk_FragColor 5 OpExecutionMode %_entrypoint_v OriginUpperLeft 6 OpName %sk_FragColor "sk_FragColor" 7 OpName %_UniformBuffer "_UniformBuffer" 8 OpMemberName %_UniformBuffer 0 "colorGreen" 9 OpMemberName %_UniformBuffer 1 "colorRed" 10 OpMemberName %_UniformBuffer 2 "testMatrix3x3" 11 OpMemberName %_UniformBuffer 3 "testMatrix4x4" 12 OpName %_entrypoint_v "_entrypoint_v" 13 OpName %test4x4_b "test4x4_b" 14 OpName %matrix "matrix" 15 OpName %values "values" 16 OpName %index "index" 17 OpName %main "main" 18 OpName %_0_matrix "_0_matrix" 19 OpName %_1_values "_1_values" 20 OpName %_2_index "_2_index" 21 OpDecorate %sk_FragColor RelaxedPrecision 22 OpDecorate %sk_FragColor Location 0 23 OpDecorate %sk_FragColor Index 0 24 OpMemberDecorate %_UniformBuffer 0 Offset 0 25 OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision 26 OpMemberDecorate %_UniformBuffer 1 Offset 16 27 OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision 28 OpMemberDecorate %_UniformBuffer 2 Offset 32 29 OpMemberDecorate %_UniformBuffer 2 ColMajor 30 OpMemberDecorate %_UniformBuffer 2 MatrixStride 16 31 OpMemberDecorate %_UniformBuffer 3 Offset 80 32 OpMemberDecorate %_UniformBuffer 3 ColMajor 33 OpMemberDecorate %_UniformBuffer 3 MatrixStride 16 34 OpDecorate %_UniformBuffer Block 35 OpDecorate %8 Binding 0 36 OpDecorate %8 DescriptorSet 0 37 OpDecorate %155 RelaxedPrecision 38 OpDecorate %157 RelaxedPrecision 39 OpDecorate %158 RelaxedPrecision 40 %float = OpTypeFloat 32 41 %v4float = OpTypeVector %float 4 42%_ptr_Output_v4float = OpTypePointer Output %v4float 43%sk_FragColor = OpVariable %_ptr_Output_v4float Output 44 %v3float = OpTypeVector %float 3 45%mat3v3float = OpTypeMatrix %v3float 3 46%mat4v4float = OpTypeMatrix %v4float 4 47%_UniformBuffer = OpTypeStruct %v4float %v4float %mat3v3float %mat4v4float 48%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer 49 %8 = OpVariable %_ptr_Uniform__UniformBuffer Uniform 50 %void = OpTypeVoid 51 %16 = OpTypeFunction %void 52 %float_0 = OpConstant %float 0 53 %v2float = OpTypeVector %float 2 54 %20 = OpConstantComposite %v2float %float_0 %float_0 55%_ptr_Function_v2float = OpTypePointer Function %v2float 56 %bool = OpTypeBool 57 %25 = OpTypeFunction %bool 58%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float 59%_ptr_Function_v4float = OpTypePointer Function %v4float 60 %float_4 = OpConstant %float 4 61 %float_3 = OpConstant %float 3 62 %float_2 = OpConstant %float 2 63 %float_1 = OpConstant %float 1 64 %35 = OpConstantComposite %v4float %float_4 %float_3 %float_2 %float_1 65 %int = OpTypeInt 32 1 66%_ptr_Function_int = OpTypePointer Function %int 67 %int_0 = OpConstant %int 0 68 %int_4 = OpConstant %int 4 69 %61 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_4 70 %int_1 = OpConstant %int 1 71%_ptr_Uniform_mat4v4float = OpTypePointer Uniform %mat4v4float 72 %int_3 = OpConstant %int 3 73 %v4bool = OpTypeVector %bool 4 74 %91 = OpTypeFunction %v4float %_ptr_Function_v2float 75%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float 76%_ptr_Function_v3float = OpTypePointer Function %v3float 77 %98 = OpConstantComposite %v3float %float_3 %float_2 %float_1 78%_ptr_Function_float = OpTypePointer Function %float 79 %120 = OpConstantComposite %v3float %float_3 %float_3 %float_3 80 %false = OpConstantFalse %bool 81%_ptr_Uniform_mat3v3float = OpTypePointer Uniform %mat3v3float 82 %int_2 = OpConstant %int 2 83 %v3bool = OpTypeVector %bool 3 84%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float 85%_entrypoint_v = OpFunction %void None %16 86 %17 = OpLabel 87 %21 = OpVariable %_ptr_Function_v2float Function 88 OpStore %21 %20 89 %23 = OpFunctionCall %v4float %main %21 90 OpStore %sk_FragColor %23 91 OpReturn 92 OpFunctionEnd 93 %test4x4_b = OpFunction %bool None %25 94 %26 = OpLabel 95 %matrix = OpVariable %_ptr_Function_mat4v4float Function 96 %values = OpVariable %_ptr_Function_v4float Function 97 %index = OpVariable %_ptr_Function_int Function 98 OpStore %values %35 99 OpStore %index %int_0 100 OpBranch %40 101 %40 = OpLabel 102 OpLoopMerge %44 %43 None 103 OpBranch %41 104 %41 = OpLabel 105 %45 = OpLoad %int %index 106 %47 = OpSLessThan %bool %45 %int_4 107 OpBranchConditional %47 %42 %44 108 %42 = OpLabel 109 %48 = OpLoad %v4float %values 110 %49 = OpVectorShuffle %v2float %48 %48 0 3 111 %50 = OpLoad %int %index 112 %51 = OpAccessChain %_ptr_Function_v4float %matrix %50 113 %52 = OpLoad %v4float %51 114 %53 = OpVectorShuffle %v4float %52 %49 5 1 2 4 115 OpStore %51 %53 116 %54 = OpLoad %v4float %values 117 %55 = OpVectorShuffle %v2float %54 %54 1 2 118 %56 = OpLoad %int %index 119 %57 = OpAccessChain %_ptr_Function_v4float %matrix %56 120 %58 = OpLoad %v4float %57 121 %59 = OpVectorShuffle %v4float %58 %55 0 5 4 3 122 OpStore %57 %59 123 %60 = OpLoad %v4float %values 124 %62 = OpFAdd %v4float %60 %61 125 OpStore %values %62 126 OpBranch %43 127 %43 = OpLabel 128 %64 = OpLoad %int %index 129 %65 = OpIAdd %int %64 %int_1 130 OpStore %index %65 131 OpBranch %40 132 %44 = OpLabel 133 %66 = OpLoad %mat4v4float %matrix 134 %67 = OpAccessChain %_ptr_Uniform_mat4v4float %8 %int_3 135 %70 = OpLoad %mat4v4float %67 136 %72 = OpCompositeExtract %v4float %66 0 137 %73 = OpCompositeExtract %v4float %70 0 138 %74 = OpFOrdEqual %v4bool %72 %73 139 %75 = OpAll %bool %74 140 %76 = OpCompositeExtract %v4float %66 1 141 %77 = OpCompositeExtract %v4float %70 1 142 %78 = OpFOrdEqual %v4bool %76 %77 143 %79 = OpAll %bool %78 144 %80 = OpLogicalAnd %bool %75 %79 145 %81 = OpCompositeExtract %v4float %66 2 146 %82 = OpCompositeExtract %v4float %70 2 147 %83 = OpFOrdEqual %v4bool %81 %82 148 %84 = OpAll %bool %83 149 %85 = OpLogicalAnd %bool %80 %84 150 %86 = OpCompositeExtract %v4float %66 3 151 %87 = OpCompositeExtract %v4float %70 3 152 %88 = OpFOrdEqual %v4bool %86 %87 153 %89 = OpAll %bool %88 154 %90 = OpLogicalAnd %bool %85 %89 155 OpReturnValue %90 156 OpFunctionEnd 157 %main = OpFunction %v4float None %91 158 %92 = OpFunctionParameter %_ptr_Function_v2float 159 %93 = OpLabel 160 %_0_matrix = OpVariable %_ptr_Function_mat3v3float Function 161 %_1_values = OpVariable %_ptr_Function_v3float Function 162 %_2_index = OpVariable %_ptr_Function_int Function 163 %149 = OpVariable %_ptr_Function_v4float Function 164 OpStore %_1_values %98 165 OpStore %_2_index %int_0 166 OpBranch %100 167 %100 = OpLabel 168 OpLoopMerge %104 %103 None 169 OpBranch %101 170 %101 = OpLabel 171 %105 = OpLoad %int %_2_index 172 %106 = OpSLessThan %bool %105 %int_3 173 OpBranchConditional %106 %102 %104 174 %102 = OpLabel 175 %107 = OpLoad %v3float %_1_values 176 %108 = OpVectorShuffle %v2float %107 %107 0 2 177 %109 = OpLoad %int %_2_index 178 %110 = OpAccessChain %_ptr_Function_v3float %_0_matrix %109 179 %111 = OpLoad %v3float %110 180 %112 = OpVectorShuffle %v3float %111 %108 4 1 3 181 OpStore %110 %112 182 %113 = OpLoad %v3float %_1_values 183 %114 = OpCompositeExtract %float %113 1 184 %115 = OpLoad %int %_2_index 185 %116 = OpAccessChain %_ptr_Function_v3float %_0_matrix %115 186 %117 = OpAccessChain %_ptr_Function_float %116 %int_1 187 OpStore %117 %114 188 %119 = OpLoad %v3float %_1_values 189 %121 = OpFAdd %v3float %119 %120 190 OpStore %_1_values %121 191 OpBranch %103 192 %103 = OpLabel 193 %122 = OpLoad %int %_2_index 194 %123 = OpIAdd %int %122 %int_1 195 OpStore %_2_index %123 196 OpBranch %100 197 %104 = OpLabel 198 %125 = OpLoad %mat3v3float %_0_matrix 199 %126 = OpAccessChain %_ptr_Uniform_mat3v3float %8 %int_2 200 %129 = OpLoad %mat3v3float %126 201 %131 = OpCompositeExtract %v3float %125 0 202 %132 = OpCompositeExtract %v3float %129 0 203 %133 = OpFOrdEqual %v3bool %131 %132 204 %134 = OpAll %bool %133 205 %135 = OpCompositeExtract %v3float %125 1 206 %136 = OpCompositeExtract %v3float %129 1 207 %137 = OpFOrdEqual %v3bool %135 %136 208 %138 = OpAll %bool %137 209 %139 = OpLogicalAnd %bool %134 %138 210 %140 = OpCompositeExtract %v3float %125 2 211 %141 = OpCompositeExtract %v3float %129 2 212 %142 = OpFOrdEqual %v3bool %140 %141 213 %143 = OpAll %bool %142 214 %144 = OpLogicalAnd %bool %139 %143 215 OpSelectionMerge %146 None 216 OpBranchConditional %144 %145 %146 217 %145 = OpLabel 218 %147 = OpFunctionCall %bool %test4x4_b 219 OpBranch %146 220 %146 = OpLabel 221 %148 = OpPhi %bool %false %104 %147 %145 222 OpSelectionMerge %152 None 223 OpBranchConditional %148 %150 %151 224 %150 = OpLabel 225 %153 = OpAccessChain %_ptr_Uniform_v4float %8 %int_0 226 %155 = OpLoad %v4float %153 227 OpStore %149 %155 228 OpBranch %152 229 %151 = OpLabel 230 %156 = OpAccessChain %_ptr_Uniform_v4float %8 %int_1 231 %157 = OpLoad %v4float %156 232 OpStore %149 %157 233 OpBranch %152 234 %152 = OpLabel 235 %158 = OpLoad %v4float %149 236 OpReturnValue %158 237 OpFunctionEnd 238