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 %100 RelaxedPrecision 33OpDecorate %103 RelaxedPrecision 34OpDecorate %104 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%uint = OpTypeInt 32 0 61%v4uint = OpTypeVector %uint 4 62%_ptr_Function_v4uint = OpTypePointer Function %v4uint 63%uint_1065353216 = OpConstant %uint 1065353216 64%uint_1073741824 = OpConstant %uint 1073741824 65%uint_3225419776 = OpConstant %uint 3225419776 66%uint_3229614080 = OpConstant %uint 3229614080 67%51 = OpConstantComposite %v4uint %uint_1065353216 %uint_1073741824 %uint_3225419776 %uint_3229614080 68%false = OpConstantFalse %bool 69%v2uint = OpTypeVector %uint 2 70%v2bool = OpTypeVector %bool 2 71%v3float = OpTypeVector %float 3 72%v3uint = OpTypeVector %uint 3 73%v3bool = OpTypeVector %bool 3 74%v4bool = OpTypeVector %bool 4 75%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float 76%int_2 = OpConstant %int 2 77%int_3 = OpConstant %int 3 78%_entrypoint_v = OpFunction %void None %17 79%18 = OpLabel 80%21 = OpVariable %_ptr_Function_v2float Function 81OpStore %21 %20 82%23 = OpFunctionCall %v4float %main %21 83OpStore %sk_FragColor %23 84OpReturn 85OpFunctionEnd 86%main = OpFunction %v4float None %24 87%25 = OpFunctionParameter %_ptr_Function_v2float 88%26 = OpLabel 89%inputVal = OpVariable %_ptr_Function_v4float Function 90%expectedB = OpVariable %_ptr_Function_v4uint Function 91%93 = OpVariable %_ptr_Function_v4float Function 92%29 = OpAccessChain %_ptr_Uniform_mat2v2float %10 %int_1 93%33 = OpLoad %mat2v2float %29 94%34 = OpCompositeExtract %float %33 0 0 95%35 = OpCompositeExtract %float %33 0 1 96%36 = OpCompositeExtract %float %33 1 0 97%37 = OpCompositeExtract %float %33 1 1 98%38 = OpCompositeConstruct %v4float %34 %35 %36 %37 99%42 = OpFMul %v4float %38 %41 100OpStore %inputVal %42 101OpStore %expectedB %51 102%53 = OpLoad %v4float %inputVal 103%54 = OpCompositeExtract %float %53 0 104%56 = OpLoad %v4uint %expectedB 105%57 = OpCompositeExtract %uint %56 0 106%55 = OpBitcast %float %57 107%58 = OpFOrdEqual %bool %54 %55 108OpSelectionMerge %60 None 109OpBranchConditional %58 %59 %60 110%59 = OpLabel 111%61 = OpLoad %v4float %inputVal 112%62 = OpVectorShuffle %v2float %61 %61 0 1 113%64 = OpLoad %v4uint %expectedB 114%65 = OpVectorShuffle %v2uint %64 %64 0 1 115%63 = OpBitcast %v2float %65 116%67 = OpFOrdEqual %v2bool %62 %63 117%69 = OpAll %bool %67 118OpBranch %60 119%60 = OpLabel 120%70 = OpPhi %bool %false %26 %69 %59 121OpSelectionMerge %72 None 122OpBranchConditional %70 %71 %72 123%71 = OpLabel 124%73 = OpLoad %v4float %inputVal 125%74 = OpVectorShuffle %v3float %73 %73 0 1 2 126%77 = OpLoad %v4uint %expectedB 127%78 = OpVectorShuffle %v3uint %77 %77 0 1 2 128%76 = OpBitcast %v3float %78 129%80 = OpFOrdEqual %v3bool %74 %76 130%82 = OpAll %bool %80 131OpBranch %72 132%72 = OpLabel 133%83 = OpPhi %bool %false %60 %82 %71 134OpSelectionMerge %85 None 135OpBranchConditional %83 %84 %85 136%84 = OpLabel 137%86 = OpLoad %v4float %inputVal 138%88 = OpLoad %v4uint %expectedB 139%87 = OpBitcast %v4float %88 140%89 = OpFOrdEqual %v4bool %86 %87 141%91 = OpAll %bool %89 142OpBranch %85 143%85 = OpLabel 144%92 = OpPhi %bool %false %72 %91 %84 145OpSelectionMerge %96 None 146OpBranchConditional %92 %94 %95 147%94 = OpLabel 148%97 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2 149%100 = OpLoad %v4float %97 150OpStore %93 %100 151OpBranch %96 152%95 = OpLabel 153%101 = OpAccessChain %_ptr_Uniform_v4float %10 %int_3 154%103 = OpLoad %v4float %101 155OpStore %93 %103 156OpBranch %96 157%96 = OpLabel 158%104 = OpLoad %v4float %93 159OpReturnValue %104 160OpFunctionEnd 161