OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Fragment %_entrypoint_v "_entrypoint" %sk_FragColor OpExecutionMode %_entrypoint_v OriginUpperLeft OpName %sk_FragColor "sk_FragColor" OpName %_UniformBuffer "_UniformBuffer" OpMemberName %_UniformBuffer 0 "colorGreen" OpMemberName %_UniformBuffer 1 "colorRed" OpMemberName %_UniformBuffer 2 "testInputs" OpName %_entrypoint_v "_entrypoint_v" OpName %test_bifffff22 "test_bifffff22" OpName %one "one" OpName %m2 "m2" OpName %divisionTest_b "divisionTest_b" OpName %ten "ten" OpName %mat "mat" OpName %div "div" OpName %main "main" OpName %f1 "f1" OpName %f2 "f2" OpName %f3 "f3" OpName %f4 "f4" OpName %_0_expected "_0_expected" OpName %_1_one "_1_one" OpName %_2_m2 "_2_m2" OpDecorate %sk_FragColor RelaxedPrecision OpDecorate %sk_FragColor Location 0 OpDecorate %sk_FragColor Index 0 OpMemberDecorate %_UniformBuffer 0 Offset 0 OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision OpMemberDecorate %_UniformBuffer 1 Offset 16 OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision OpMemberDecorate %_UniformBuffer 2 Offset 32 OpDecorate %_UniformBuffer Block OpDecorate %9 Binding 0 OpDecorate %9 DescriptorSet 0 OpDecorate %40 RelaxedPrecision OpDecorate %41 RelaxedPrecision OpDecorate %121 RelaxedPrecision OpDecorate %122 RelaxedPrecision OpDecorate %124 RelaxedPrecision OpDecorate %171 RelaxedPrecision OpDecorate %172 RelaxedPrecision OpDecorate %175 RelaxedPrecision OpDecorate %176 RelaxedPrecision OpDecorate %177 RelaxedPrecision OpDecorate %181 RelaxedPrecision OpDecorate %182 RelaxedPrecision OpDecorate %183 RelaxedPrecision OpDecorate %187 RelaxedPrecision OpDecorate %188 RelaxedPrecision OpDecorate %189 RelaxedPrecision OpDecorate %200 RelaxedPrecision OpDecorate %201 RelaxedPrecision OpDecorate %313 RelaxedPrecision OpDecorate %315 RelaxedPrecision OpDecorate %316 RelaxedPrecision %float = OpTypeFloat 32 %v4float = OpTypeVector %float 4 %_ptr_Output_v4float = OpTypePointer Output %v4float %sk_FragColor = OpVariable %_ptr_Output_v4float Output %_UniformBuffer = OpTypeStruct %v4float %v4float %v4float %_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer %9 = OpVariable %_ptr_Uniform__UniformBuffer Uniform %void = OpTypeVoid %14 = OpTypeFunction %void %float_0 = OpConstant %float 0 %v2float = OpTypeVector %float 2 %18 = OpConstantComposite %v2float %float_0 %float_0 %_ptr_Function_v2float = OpTypePointer Function %v2float %bool = OpTypeBool %int = OpTypeInt 32 1 %_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_float = OpTypePointer Function %float %mat2v2float = OpTypeMatrix %v2float 2 %_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float %28 = OpTypeFunction %bool %_ptr_Function_int %_ptr_Function_float %_ptr_Function_float %_ptr_Function_float %_ptr_Function_float %_ptr_Function_mat2v2float %_ptr_Uniform_v4float = OpTypePointer Uniform %v4float %int_1 = OpConstant %int 1 %float_1 = OpConstant %float 1 %61 = OpConstantComposite %v2float %float_1 %float_1 %62 = OpConstantComposite %mat2v2float %61 %61 %float_2 = OpConstant %float 2 %float_0_5 = OpConstant %float 0.5 %false = OpConstantFalse %bool %int_0 = OpConstant %int 0 %117 = OpTypeFunction %bool %float_10 = OpConstant %float 10 %int_2 = OpConstant %int 2 %float_8 = OpConstant %float 8 %149 = OpConstantComposite %v4float %float_8 %float_8 %float_8 %float_8 %float_0_00999999978 = OpConstant %float 0.00999999978 %152 = OpConstantComposite %v4float %float_0_00999999978 %float_0_00999999978 %float_0_00999999978 %float_0_00999999978 %v4bool = OpTypeVector %bool 4 %166 = OpTypeFunction %v4float %_ptr_Function_v2float %float_3 = OpConstant %float 3 %float_4 = OpConstant %float 4 %int_3 = OpConstant %int 3 %int_4 = OpConstant %int 4 %_ptr_Function_v4float = OpTypePointer Function %v4float %_entrypoint_v = OpFunction %void None %14 %15 = OpLabel %19 = OpVariable %_ptr_Function_v2float Function OpStore %19 %18 %21 = OpFunctionCall %v4float %main %19 OpStore %sk_FragColor %21 OpReturn OpFunctionEnd %test_bifffff22 = OpFunction %bool None %28 %29 = OpFunctionParameter %_ptr_Function_int %30 = OpFunctionParameter %_ptr_Function_float %31 = OpFunctionParameter %_ptr_Function_float %32 = OpFunctionParameter %_ptr_Function_float %33 = OpFunctionParameter %_ptr_Function_float %34 = OpFunctionParameter %_ptr_Function_mat2v2float %35 = OpLabel %one = OpVariable %_ptr_Function_float Function %m2 = OpVariable %_ptr_Function_mat2v2float Function %37 = OpAccessChain %_ptr_Uniform_v4float %9 %int_1 %40 = OpLoad %v4float %37 %41 = OpCompositeExtract %float %40 0 OpStore %one %41 %43 = OpLoad %float %30 %44 = OpFMul %float %43 %41 %45 = OpLoad %float %31 %46 = OpFMul %float %45 %41 %47 = OpLoad %float %32 %48 = OpFMul %float %47 %41 %49 = OpLoad %float %33 %50 = OpFMul %float %49 %41 %51 = OpCompositeConstruct %v2float %44 %46 %52 = OpCompositeConstruct %v2float %48 %50 %53 = OpCompositeConstruct %mat2v2float %51 %52 OpStore %m2 %53 %54 = OpLoad %int %29 OpSelectionMerge %55 None OpSwitch %54 %55 1 %56 2 %57 3 %58 4 %59 %56 = OpLabel %63 = OpFAdd %v2float %61 %51 %64 = OpFAdd %v2float %61 %52 %65 = OpCompositeConstruct %mat2v2float %63 %64 OpStore %m2 %65 OpBranch %55 %57 = OpLabel %66 = OpLoad %mat2v2float %m2 %67 = OpCompositeExtract %v2float %66 0 %68 = OpFSub %v2float %67 %61 %69 = OpCompositeExtract %v2float %66 1 %70 = OpFSub %v2float %69 %61 %71 = OpCompositeConstruct %mat2v2float %68 %70 OpStore %m2 %71 OpBranch %55 %58 = OpLabel %72 = OpLoad %mat2v2float %m2 %74 = OpMatrixTimesScalar %mat2v2float %72 %float_2 OpStore %m2 %74 OpBranch %55 %59 = OpLabel %75 = OpLoad %mat2v2float %m2 %77 = OpMatrixTimesScalar %mat2v2float %75 %float_0_5 OpStore %m2 %77 OpBranch %55 %55 = OpLabel %80 = OpAccessChain %_ptr_Function_v2float %m2 %int_0 %81 = OpLoad %v2float %80 %82 = OpCompositeExtract %float %81 0 %83 = OpAccessChain %_ptr_Function_v2float %34 %int_0 %84 = OpLoad %v2float %83 %85 = OpCompositeExtract %float %84 0 %86 = OpFOrdEqual %bool %82 %85 OpSelectionMerge %88 None OpBranchConditional %86 %87 %88 %87 = OpLabel %89 = OpAccessChain %_ptr_Function_v2float %m2 %int_0 %90 = OpLoad %v2float %89 %91 = OpCompositeExtract %float %90 1 %92 = OpAccessChain %_ptr_Function_v2float %34 %int_0 %93 = OpLoad %v2float %92 %94 = OpCompositeExtract %float %93 1 %95 = OpFOrdEqual %bool %91 %94 OpBranch %88 %88 = OpLabel %96 = OpPhi %bool %false %55 %95 %87 OpSelectionMerge %98 None OpBranchConditional %96 %97 %98 %97 = OpLabel %99 = OpAccessChain %_ptr_Function_v2float %m2 %int_1 %100 = OpLoad %v2float %99 %101 = OpCompositeExtract %float %100 0 %102 = OpAccessChain %_ptr_Function_v2float %34 %int_1 %103 = OpLoad %v2float %102 %104 = OpCompositeExtract %float %103 0 %105 = OpFOrdEqual %bool %101 %104 OpBranch %98 %98 = OpLabel %106 = OpPhi %bool %false %88 %105 %97 OpSelectionMerge %108 None OpBranchConditional %106 %107 %108 %107 = OpLabel %109 = OpAccessChain %_ptr_Function_v2float %m2 %int_1 %110 = OpLoad %v2float %109 %111 = OpCompositeExtract %float %110 1 %112 = OpAccessChain %_ptr_Function_v2float %34 %int_1 %113 = OpLoad %v2float %112 %114 = OpCompositeExtract %float %113 1 %115 = OpFOrdEqual %bool %111 %114 OpBranch %108 %108 = OpLabel %116 = OpPhi %bool %false %98 %115 %107 OpReturnValue %116 OpFunctionEnd %divisionTest_b = OpFunction %bool None %117 %118 = OpLabel %ten = OpVariable %_ptr_Function_float Function %mat = OpVariable %_ptr_Function_mat2v2float Function %div = OpVariable %_ptr_Function_mat2v2float Function %120 = OpAccessChain %_ptr_Uniform_v4float %9 %int_1 %121 = OpLoad %v4float %120 %122 = OpCompositeExtract %float %121 0 %124 = OpFMul %float %122 %float_10 OpStore %ten %124 %126 = OpCompositeConstruct %v2float %124 %124 %127 = OpCompositeConstruct %mat2v2float %126 %126 OpStore %mat %127 %129 = OpAccessChain %_ptr_Uniform_v4float %9 %int_2 %131 = OpLoad %v4float %129 %132 = OpCompositeExtract %float %131 0 %133 = OpFDiv %float %float_1 %132 %134 = OpMatrixTimesScalar %mat2v2float %127 %133 OpStore %div %134 %135 = OpAccessChain %_ptr_Uniform_v4float %9 %int_2 %136 = OpLoad %v4float %135 %137 = OpCompositeExtract %float %136 0 %138 = OpFDiv %float %float_1 %137 %139 = OpMatrixTimesScalar %mat2v2float %127 %138 OpStore %mat %139 %143 = OpCompositeExtract %float %134 0 0 %144 = OpCompositeExtract %float %134 0 1 %145 = OpCompositeExtract %float %134 1 0 %146 = OpCompositeExtract %float %134 1 1 %147 = OpCompositeConstruct %v4float %143 %144 %145 %146 %150 = OpFAdd %v4float %147 %149 %142 = OpExtInst %v4float %1 FAbs %150 %141 = OpFOrdLessThan %v4bool %142 %152 %140 = OpAll %bool %141 OpSelectionMerge %155 None OpBranchConditional %140 %154 %155 %154 = OpLabel %159 = OpCompositeExtract %float %139 0 0 %160 = OpCompositeExtract %float %139 0 1 %161 = OpCompositeExtract %float %139 1 0 %162 = OpCompositeExtract %float %139 1 1 %163 = OpCompositeConstruct %v4float %159 %160 %161 %162 %164 = OpFAdd %v4float %163 %149 %158 = OpExtInst %v4float %1 FAbs %164 %157 = OpFOrdLessThan %v4bool %158 %152 %156 = OpAll %bool %157 OpBranch %155 %155 = OpLabel %165 = OpPhi %bool %false %118 %156 %154 OpReturnValue %165 OpFunctionEnd %main = OpFunction %v4float None %166 %167 = OpFunctionParameter %_ptr_Function_v2float %168 = OpLabel %f1 = OpVariable %_ptr_Function_float Function %f2 = OpVariable %_ptr_Function_float Function %f3 = OpVariable %_ptr_Function_float Function %f4 = OpVariable %_ptr_Function_float Function %_0_expected = OpVariable %_ptr_Function_mat2v2float Function %_1_one = OpVariable %_ptr_Function_float Function %_2_m2 = OpVariable %_ptr_Function_mat2v2float Function %252 = OpVariable %_ptr_Function_int Function %253 = OpVariable %_ptr_Function_float Function %254 = OpVariable %_ptr_Function_float Function %255 = OpVariable %_ptr_Function_float Function %256 = OpVariable %_ptr_Function_float Function %264 = OpVariable %_ptr_Function_mat2v2float Function %270 = OpVariable %_ptr_Function_int Function %271 = OpVariable %_ptr_Function_float Function %272 = OpVariable %_ptr_Function_float Function %273 = OpVariable %_ptr_Function_float Function %274 = OpVariable %_ptr_Function_float Function %282 = OpVariable %_ptr_Function_mat2v2float Function %288 = OpVariable %_ptr_Function_int Function %289 = OpVariable %_ptr_Function_float Function %290 = OpVariable %_ptr_Function_float Function %291 = OpVariable %_ptr_Function_float Function %292 = OpVariable %_ptr_Function_float Function %300 = OpVariable %_ptr_Function_mat2v2float Function %307 = OpVariable %_ptr_Function_v4float Function %170 = OpAccessChain %_ptr_Uniform_v4float %9 %int_0 %171 = OpLoad %v4float %170 %172 = OpCompositeExtract %float %171 1 OpStore %f1 %172 %174 = OpAccessChain %_ptr_Uniform_v4float %9 %int_0 %175 = OpLoad %v4float %174 %176 = OpCompositeExtract %float %175 1 %177 = OpFMul %float %float_2 %176 OpStore %f2 %177 %180 = OpAccessChain %_ptr_Uniform_v4float %9 %int_0 %181 = OpLoad %v4float %180 %182 = OpCompositeExtract %float %181 1 %183 = OpFMul %float %float_3 %182 OpStore %f3 %183 %186 = OpAccessChain %_ptr_Uniform_v4float %9 %int_0 %187 = OpLoad %v4float %186 %188 = OpCompositeExtract %float %187 1 %189 = OpFMul %float %float_4 %188 OpStore %f4 %189 %191 = OpFAdd %float %172 %float_1 %192 = OpFAdd %float %177 %float_1 %193 = OpFAdd %float %183 %float_1 %194 = OpFAdd %float %189 %float_1 %195 = OpCompositeConstruct %v2float %191 %192 %196 = OpCompositeConstruct %v2float %193 %194 %197 = OpCompositeConstruct %mat2v2float %195 %196 OpStore %_0_expected %197 %199 = OpAccessChain %_ptr_Uniform_v4float %9 %int_1 %200 = OpLoad %v4float %199 %201 = OpCompositeExtract %float %200 0 OpStore %_1_one %201 %203 = OpFMul %float %172 %201 %204 = OpFMul %float %177 %201 %205 = OpFMul %float %183 %201 %206 = OpFMul %float %189 %201 %207 = OpCompositeConstruct %v2float %203 %204 %208 = OpCompositeConstruct %v2float %205 %206 %209 = OpCompositeConstruct %mat2v2float %207 %208 OpStore %_2_m2 %209 %210 = OpFAdd %v2float %61 %207 %211 = OpFAdd %v2float %61 %208 %212 = OpCompositeConstruct %mat2v2float %210 %211 OpStore %_2_m2 %212 %213 = OpAccessChain %_ptr_Function_v2float %_2_m2 %int_0 %214 = OpLoad %v2float %213 %215 = OpCompositeExtract %float %214 0 %216 = OpAccessChain %_ptr_Function_v2float %_0_expected %int_0 %217 = OpLoad %v2float %216 %218 = OpCompositeExtract %float %217 0 %219 = OpFOrdEqual %bool %215 %218 OpSelectionMerge %221 None OpBranchConditional %219 %220 %221 %220 = OpLabel %222 = OpAccessChain %_ptr_Function_v2float %_2_m2 %int_0 %223 = OpLoad %v2float %222 %224 = OpCompositeExtract %float %223 1 %225 = OpAccessChain %_ptr_Function_v2float %_0_expected %int_0 %226 = OpLoad %v2float %225 %227 = OpCompositeExtract %float %226 1 %228 = OpFOrdEqual %bool %224 %227 OpBranch %221 %221 = OpLabel %229 = OpPhi %bool %false %168 %228 %220 OpSelectionMerge %231 None OpBranchConditional %229 %230 %231 %230 = OpLabel %232 = OpAccessChain %_ptr_Function_v2float %_2_m2 %int_1 %233 = OpLoad %v2float %232 %234 = OpCompositeExtract %float %233 0 %235 = OpAccessChain %_ptr_Function_v2float %_0_expected %int_1 %236 = OpLoad %v2float %235 %237 = OpCompositeExtract %float %236 0 %238 = OpFOrdEqual %bool %234 %237 OpBranch %231 %231 = OpLabel %239 = OpPhi %bool %false %221 %238 %230 OpSelectionMerge %241 None OpBranchConditional %239 %240 %241 %240 = OpLabel %242 = OpAccessChain %_ptr_Function_v2float %_2_m2 %int_1 %243 = OpLoad %v2float %242 %244 = OpCompositeExtract %float %243 1 %245 = OpAccessChain %_ptr_Function_v2float %_0_expected %int_1 %246 = OpLoad %v2float %245 %247 = OpCompositeExtract %float %246 1 %248 = OpFOrdEqual %bool %244 %247 OpBranch %241 %241 = OpLabel %249 = OpPhi %bool %false %231 %248 %240 OpSelectionMerge %251 None OpBranchConditional %249 %250 %251 %250 = OpLabel OpStore %252 %int_2 OpStore %253 %172 OpStore %254 %177 OpStore %255 %183 OpStore %256 %189 %257 = OpFSub %float %172 %float_1 %258 = OpFSub %float %177 %float_1 %259 = OpFSub %float %183 %float_1 %260 = OpFSub %float %189 %float_1 %261 = OpCompositeConstruct %v2float %257 %258 %262 = OpCompositeConstruct %v2float %259 %260 %263 = OpCompositeConstruct %mat2v2float %261 %262 OpStore %264 %263 %265 = OpFunctionCall %bool %test_bifffff22 %252 %253 %254 %255 %256 %264 OpBranch %251 %251 = OpLabel %266 = OpPhi %bool %false %241 %265 %250 OpSelectionMerge %268 None OpBranchConditional %266 %267 %268 %267 = OpLabel OpStore %270 %int_3 OpStore %271 %172 OpStore %272 %177 OpStore %273 %183 OpStore %274 %189 %275 = OpFMul %float %172 %float_2 %276 = OpFMul %float %177 %float_2 %277 = OpFMul %float %183 %float_2 %278 = OpFMul %float %189 %float_2 %279 = OpCompositeConstruct %v2float %275 %276 %280 = OpCompositeConstruct %v2float %277 %278 %281 = OpCompositeConstruct %mat2v2float %279 %280 OpStore %282 %281 %283 = OpFunctionCall %bool %test_bifffff22 %270 %271 %272 %273 %274 %282 OpBranch %268 %268 = OpLabel %284 = OpPhi %bool %false %251 %283 %267 OpSelectionMerge %286 None OpBranchConditional %284 %285 %286 %285 = OpLabel OpStore %288 %int_4 OpStore %289 %172 OpStore %290 %177 OpStore %291 %183 OpStore %292 %189 %293 = OpFMul %float %172 %float_0_5 %294 = OpFMul %float %177 %float_0_5 %295 = OpFMul %float %183 %float_0_5 %296 = OpFMul %float %189 %float_0_5 %297 = OpCompositeConstruct %v2float %293 %294 %298 = OpCompositeConstruct %v2float %295 %296 %299 = OpCompositeConstruct %mat2v2float %297 %298 OpStore %300 %299 %301 = OpFunctionCall %bool %test_bifffff22 %288 %289 %290 %291 %292 %300 OpBranch %286 %286 = OpLabel %302 = OpPhi %bool %false %268 %301 %285 OpSelectionMerge %304 None OpBranchConditional %302 %303 %304 %303 = OpLabel %305 = OpFunctionCall %bool %divisionTest_b OpBranch %304 %304 = OpLabel %306 = OpPhi %bool %false %286 %305 %303 OpSelectionMerge %311 None OpBranchConditional %306 %309 %310 %309 = OpLabel %312 = OpAccessChain %_ptr_Uniform_v4float %9 %int_0 %313 = OpLoad %v4float %312 OpStore %307 %313 OpBranch %311 %310 = OpLabel %314 = OpAccessChain %_ptr_Uniform_v4float %9 %int_1 %315 = OpLoad %v4float %314 OpStore %307 %315 OpBranch %311 %311 = OpLabel %316 = OpLoad %v4float %307 OpReturnValue %316 OpFunctionEnd