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