1OpCapability Shader 2%1 = OpExtInstImport "GLSL.std.450" 3OpMemoryModel Logical GLSL450 4OpEntryPoint Fragment %_entrypoint_v "_entrypoint" %sk_FragColor %sk_Clockwise 5OpExecutionMode %_entrypoint_v OriginUpperLeft 6OpName %sk_FragColor "sk_FragColor" 7OpName %sk_Clockwise "sk_Clockwise" 8OpName %_UniformBuffer "_UniformBuffer" 9OpMemberName %_UniformBuffer 0 "testMatrix2x2" 10OpMemberName %_UniformBuffer 1 "colorGreen" 11OpMemberName %_UniformBuffer 2 "colorRed" 12OpName %_entrypoint_v "_entrypoint_v" 13OpName %main "main" 14OpDecorate %sk_FragColor RelaxedPrecision 15OpDecorate %sk_FragColor Location 0 16OpDecorate %sk_FragColor Index 0 17OpDecorate %sk_Clockwise BuiltIn FrontFacing 18OpMemberDecorate %_UniformBuffer 0 Offset 0 19OpMemberDecorate %_UniformBuffer 0 ColMajor 20OpMemberDecorate %_UniformBuffer 0 MatrixStride 16 21OpMemberDecorate %_UniformBuffer 1 Offset 32 22OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision 23OpMemberDecorate %_UniformBuffer 2 Offset 48 24OpMemberDecorate %_UniformBuffer 2 RelaxedPrecision 25OpDecorate %_UniformBuffer Block 26OpDecorate %10 Binding 0 27OpDecorate %10 DescriptorSet 0 28OpDecorate %43 RelaxedPrecision 29OpDecorate %46 RelaxedPrecision 30OpDecorate %47 RelaxedPrecision 31%float = OpTypeFloat 32 32%v4float = OpTypeVector %float 4 33%_ptr_Output_v4float = OpTypePointer Output %v4float 34%sk_FragColor = OpVariable %_ptr_Output_v4float Output 35%bool = OpTypeBool 36%_ptr_Input_bool = OpTypePointer Input %bool 37%sk_Clockwise = OpVariable %_ptr_Input_bool Input 38%v2float = OpTypeVector %float 2 39%mat2v2float = OpTypeMatrix %v2float 2 40%_UniformBuffer = OpTypeStruct %mat2v2float %v4float %v4float 41%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer 42%10 = OpVariable %_ptr_Uniform__UniformBuffer Uniform 43%void = OpTypeVoid 44%17 = OpTypeFunction %void 45%float_0 = OpConstant %float 0 46%20 = OpConstantComposite %v2float %float_0 %float_0 47%_ptr_Function_v2float = OpTypePointer Function %v2float 48%24 = OpTypeFunction %v4float %_ptr_Function_v2float 49%_ptr_Uniform_mat2v2float = OpTypePointer Uniform %mat2v2float 50%int = OpTypeInt 32 1 51%int_0 = OpConstant %int 0 52%float_n2 = OpConstant %float -2 53%_ptr_Function_v4float = OpTypePointer Function %v4float 54%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float 55%int_1 = OpConstant %int 1 56%int_2 = OpConstant %int 2 57%_entrypoint_v = OpFunction %void None %17 58%18 = OpLabel 59%21 = OpVariable %_ptr_Function_v2float Function 60OpStore %21 %20 61%23 = OpFunctionCall %v4float %main %21 62OpStore %sk_FragColor %23 63OpReturn 64OpFunctionEnd 65%main = OpFunction %v4float None %24 66%25 = OpFunctionParameter %_ptr_Function_v2float 67%26 = OpLabel 68%35 = OpVariable %_ptr_Function_v4float Function 69%28 = OpAccessChain %_ptr_Uniform_mat2v2float %10 %int_0 70%32 = OpLoad %mat2v2float %28 71%27 = OpExtInst %float %1 Determinant %32 72%34 = OpFOrdEqual %bool %27 %float_n2 73OpSelectionMerge %39 None 74OpBranchConditional %34 %37 %38 75%37 = OpLabel 76%40 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1 77%43 = OpLoad %v4float %40 78OpStore %35 %43 79OpBranch %39 80%38 = OpLabel 81%44 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2 82%46 = OpLoad %v4float %44 83OpStore %35 %46 84OpBranch %39 85%39 = OpLabel 86%47 = OpLoad %v4float %35 87OpReturnValue %47 88OpFunctionEnd 89