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 "testInput" 10OpMemberName %_UniformBuffer 1 "testMatrix2x2" 11OpMemberName %_UniformBuffer 2 "colorGreen" 12OpMemberName %_UniformBuffer 3 "colorRed" 13OpName %_entrypoint_v "_entrypoint_v" 14OpName %main "main" 15OpName %inputVal "inputVal" 16OpName %expectedB "expectedB" 17OpDecorate %sk_FragColor RelaxedPrecision 18OpDecorate %sk_FragColor Location 0 19OpDecorate %sk_FragColor Index 0 20OpDecorate %sk_Clockwise BuiltIn FrontFacing 21OpMemberDecorate %_UniformBuffer 0 Offset 0 22OpMemberDecorate %_UniformBuffer 1 Offset 16 23OpMemberDecorate %_UniformBuffer 1 ColMajor 24OpMemberDecorate %_UniformBuffer 1 MatrixStride 16 25OpMemberDecorate %_UniformBuffer 2 Offset 48 26OpMemberDecorate %_UniformBuffer 2 RelaxedPrecision 27OpMemberDecorate %_UniformBuffer 3 Offset 64 28OpMemberDecorate %_UniformBuffer 3 RelaxedPrecision 29OpDecorate %_UniformBuffer Block 30OpDecorate %10 Binding 0 31OpDecorate %10 DescriptorSet 0 32OpDecorate %95 RelaxedPrecision 33OpDecorate %98 RelaxedPrecision 34OpDecorate %99 RelaxedPrecision 35%float = OpTypeFloat 32 36%v4float = OpTypeVector %float 4 37%_ptr_Output_v4float = OpTypePointer Output %v4float 38%sk_FragColor = OpVariable %_ptr_Output_v4float Output 39%bool = OpTypeBool 40%_ptr_Input_bool = OpTypePointer Input %bool 41%sk_Clockwise = OpVariable %_ptr_Input_bool Input 42%v2float = OpTypeVector %float 2 43%mat2v2float = OpTypeMatrix %v2float 2 44%_UniformBuffer = OpTypeStruct %float %mat2v2float %v4float %v4float 45%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer 46%10 = OpVariable %_ptr_Uniform__UniformBuffer Uniform 47%void = OpTypeVoid 48%17 = OpTypeFunction %void 49%float_0 = OpConstant %float 0 50%20 = OpConstantComposite %v2float %float_0 %float_0 51%_ptr_Function_v2float = OpTypePointer Function %v2float 52%24 = OpTypeFunction %v4float %_ptr_Function_v2float 53%_ptr_Function_v4float = OpTypePointer Function %v4float 54%_ptr_Uniform_mat2v2float = OpTypePointer Uniform %mat2v2float 55%int = OpTypeInt 32 1 56%int_1 = OpConstant %int 1 57%float_1 = OpConstant %float 1 58%float_n1 = OpConstant %float -1 59%41 = OpConstantComposite %v4float %float_1 %float_1 %float_n1 %float_n1 60%v4int = OpTypeVector %int 4 61%_ptr_Function_v4int = OpTypePointer Function %v4int 62%int_1065353216 = OpConstant %int 1065353216 63%int_1073741824 = OpConstant %int 1073741824 64%int_n1069547520 = OpConstant %int -1069547520 65%int_n1065353216 = OpConstant %int -1065353216 66%50 = OpConstantComposite %v4int %int_1065353216 %int_1073741824 %int_n1069547520 %int_n1065353216 67%false = OpConstantFalse %bool 68%v2int = OpTypeVector %int 2 69%62 = OpConstantComposite %v2int %int_1065353216 %int_1073741824 70%v2bool = OpTypeVector %bool 2 71%v3float = OpTypeVector %float 3 72%v3int = OpTypeVector %int 3 73%74 = OpConstantComposite %v3int %int_1065353216 %int_1073741824 %int_n1069547520 74%v3bool = OpTypeVector %bool 3 75%v4bool = OpTypeVector %bool 4 76%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float 77%int_2 = OpConstant %int 2 78%int_3 = OpConstant %int 3 79%_entrypoint_v = OpFunction %void None %17 80%18 = OpLabel 81%21 = OpVariable %_ptr_Function_v2float Function 82OpStore %21 %20 83%23 = OpFunctionCall %v4float %main %21 84OpStore %sk_FragColor %23 85OpReturn 86OpFunctionEnd 87%main = OpFunction %v4float None %24 88%25 = OpFunctionParameter %_ptr_Function_v2float 89%26 = OpLabel 90%inputVal = OpVariable %_ptr_Function_v4float Function 91%expectedB = OpVariable %_ptr_Function_v4int Function 92%88 = OpVariable %_ptr_Function_v4float Function 93%29 = OpAccessChain %_ptr_Uniform_mat2v2float %10 %int_1 94%33 = OpLoad %mat2v2float %29 95%34 = OpCompositeExtract %float %33 0 0 96%35 = OpCompositeExtract %float %33 0 1 97%36 = OpCompositeExtract %float %33 1 0 98%37 = OpCompositeExtract %float %33 1 1 99%38 = OpCompositeConstruct %v4float %34 %35 %36 %37 100%42 = OpFMul %v4float %38 %41 101OpStore %inputVal %42 102OpStore %expectedB %50 103%53 = OpLoad %v4float %inputVal 104%54 = OpCompositeExtract %float %53 0 105%52 = OpBitcast %int %54 106%55 = OpIEqual %bool %52 %int_1065353216 107OpSelectionMerge %57 None 108OpBranchConditional %55 %56 %57 109%56 = OpLabel 110%59 = OpLoad %v4float %inputVal 111%60 = OpVectorShuffle %v2float %59 %59 0 1 112%58 = OpBitcast %v2int %60 113%63 = OpIEqual %v2bool %58 %62 114%65 = OpAll %bool %63 115OpBranch %57 116%57 = OpLabel 117%66 = OpPhi %bool %false %26 %65 %56 118OpSelectionMerge %68 None 119OpBranchConditional %66 %67 %68 120%67 = OpLabel 121%70 = OpLoad %v4float %inputVal 122%71 = OpVectorShuffle %v3float %70 %70 0 1 2 123%69 = OpBitcast %v3int %71 124%75 = OpIEqual %v3bool %69 %74 125%77 = OpAll %bool %75 126OpBranch %68 127%68 = OpLabel 128%78 = OpPhi %bool %false %57 %77 %67 129OpSelectionMerge %80 None 130OpBranchConditional %78 %79 %80 131%79 = OpLabel 132%82 = OpLoad %v4float %inputVal 133%81 = OpBitcast %v4int %82 134%83 = OpLoad %v4int %expectedB 135%84 = OpIEqual %v4bool %81 %83 136%86 = OpAll %bool %84 137OpBranch %80 138%80 = OpLabel 139%87 = OpPhi %bool %false %68 %86 %79 140OpSelectionMerge %91 None 141OpBranchConditional %87 %89 %90 142%89 = OpLabel 143%92 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2 144%95 = OpLoad %v4float %92 145OpStore %88 %95 146OpBranch %91 147%90 = OpLabel 148%96 = OpAccessChain %_ptr_Uniform_v4float %10 %int_3 149%98 = OpLoad %v4float %96 150OpStore %88 %98 151OpBranch %91 152%91 = OpLabel 153%99 = OpLoad %v4float %88 154OpReturnValue %99 155OpFunctionEnd 156