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 %infiniteValue "infiniteValue" 14 OpName %finiteValue "finiteValue" 15 OpDecorate %sk_FragColor RelaxedPrecision 16 OpDecorate %sk_FragColor Location 0 17 OpDecorate %sk_FragColor Index 0 18 OpMemberDecorate %_UniformBuffer 0 Offset 0 19 OpMemberDecorate %_UniformBuffer 0 ColMajor 20 OpMemberDecorate %_UniformBuffer 0 MatrixStride 16 21 OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision 22 OpMemberDecorate %_UniformBuffer 1 Offset 32 23 OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision 24 OpMemberDecorate %_UniformBuffer 2 Offset 48 25 OpMemberDecorate %_UniformBuffer 2 RelaxedPrecision 26 OpDecorate %_UniformBuffer Block 27 OpDecorate %7 Binding 0 28 OpDecorate %7 DescriptorSet 0 29 OpDecorate %infiniteValue RelaxedPrecision 30 OpDecorate %30 RelaxedPrecision 31 OpDecorate %31 RelaxedPrecision 32 OpDecorate %32 RelaxedPrecision 33 OpDecorate %33 RelaxedPrecision 34 OpDecorate %34 RelaxedPrecision 35 OpDecorate %35 RelaxedPrecision 36 OpDecorate %39 RelaxedPrecision 37 OpDecorate %40 RelaxedPrecision 38 OpDecorate %42 RelaxedPrecision 39 OpDecorate %43 RelaxedPrecision 40 OpDecorate %finiteValue RelaxedPrecision 41 OpDecorate %46 RelaxedPrecision 42 OpDecorate %47 RelaxedPrecision 43 OpDecorate %48 RelaxedPrecision 44 OpDecorate %49 RelaxedPrecision 45 OpDecorate %50 RelaxedPrecision 46 OpDecorate %51 RelaxedPrecision 47 OpDecorate %53 RelaxedPrecision 48 OpDecorate %54 RelaxedPrecision 49 OpDecorate %55 RelaxedPrecision 50 OpDecorate %56 RelaxedPrecision 51 OpDecorate %60 RelaxedPrecision 52 OpDecorate %65 RelaxedPrecision 53 OpDecorate %72 RelaxedPrecision 54 OpDecorate %86 RelaxedPrecision 55 OpDecorate %93 RelaxedPrecision 56 OpDecorate %100 RelaxedPrecision 57 OpDecorate %113 RelaxedPrecision 58 OpDecorate %116 RelaxedPrecision 59 OpDecorate %117 RelaxedPrecision 60 %float = OpTypeFloat 32 61 %v4float = OpTypeVector %float 4 62%_ptr_Output_v4float = OpTypePointer Output %v4float 63%sk_FragColor = OpVariable %_ptr_Output_v4float Output 64 %v2float = OpTypeVector %float 2 65%mat2v2float = OpTypeMatrix %v2float 2 66%_UniformBuffer = OpTypeStruct %mat2v2float %v4float %v4float 67%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer 68 %7 = OpVariable %_ptr_Uniform__UniformBuffer Uniform 69 %void = OpTypeVoid 70 %14 = OpTypeFunction %void 71 %float_0 = OpConstant %float 0 72 %17 = OpConstantComposite %v2float %float_0 %float_0 73%_ptr_Function_v2float = OpTypePointer Function %v2float 74 %21 = OpTypeFunction %v4float %_ptr_Function_v2float 75%_ptr_Function_v4float = OpTypePointer Function %v4float 76%_ptr_Uniform_mat2v2float = OpTypePointer Uniform %mat2v2float 77 %int = OpTypeInt 32 1 78 %int_0 = OpConstant %int 0 79%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float 80 %int_1 = OpConstant %int 1 81 %float_1 = OpConstant %float 1 82 %bool = OpTypeBool 83 %false = OpConstantFalse %bool 84 %v2bool = OpTypeVector %bool 2 85 %v3float = OpTypeVector %float 3 86 %v3bool = OpTypeVector %bool 3 87 %v4bool = OpTypeVector %bool 4 88 %int_2 = OpConstant %int 2 89%_entrypoint_v = OpFunction %void None %14 90 %15 = OpLabel 91 %18 = OpVariable %_ptr_Function_v2float Function 92 OpStore %18 %17 93 %20 = OpFunctionCall %v4float %main %18 94 OpStore %sk_FragColor %20 95 OpReturn 96 OpFunctionEnd 97 %main = OpFunction %v4float None %21 98 %22 = OpFunctionParameter %_ptr_Function_v2float 99 %23 = OpLabel 100%infiniteValue = OpVariable %_ptr_Function_v4float Function 101%finiteValue = OpVariable %_ptr_Function_v4float Function 102 %108 = OpVariable %_ptr_Function_v4float Function 103 %26 = OpAccessChain %_ptr_Uniform_mat2v2float %7 %int_0 104 %30 = OpLoad %mat2v2float %26 105 %31 = OpCompositeExtract %float %30 0 0 106 %32 = OpCompositeExtract %float %30 0 1 107 %33 = OpCompositeExtract %float %30 1 0 108 %34 = OpCompositeExtract %float %30 1 1 109 %35 = OpCompositeConstruct %v4float %31 %32 %33 %34 110 %36 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1 111 %39 = OpLoad %v4float %36 112 %40 = OpCompositeExtract %float %39 0 113 %42 = OpFDiv %float %float_1 %40 114 %43 = OpVectorTimesScalar %v4float %35 %42 115 OpStore %infiniteValue %43 116 %45 = OpAccessChain %_ptr_Uniform_mat2v2float %7 %int_0 117 %46 = OpLoad %mat2v2float %45 118 %47 = OpCompositeExtract %float %46 0 0 119 %48 = OpCompositeExtract %float %46 0 1 120 %49 = OpCompositeExtract %float %46 1 0 121 %50 = OpCompositeExtract %float %46 1 1 122 %51 = OpCompositeConstruct %v4float %47 %48 %49 %50 123 %52 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1 124 %53 = OpLoad %v4float %52 125 %54 = OpCompositeExtract %float %53 1 126 %55 = OpFDiv %float %float_1 %54 127 %56 = OpVectorTimesScalar %v4float %51 %55 128 OpStore %finiteValue %56 129 %60 = OpCompositeExtract %float %43 0 130 %59 = OpIsInf %bool %60 131 OpSelectionMerge %62 None 132 OpBranchConditional %59 %61 %62 133 %61 = OpLabel 134 %65 = OpVectorShuffle %v2float %43 %43 0 1 135 %64 = OpIsInf %v2bool %65 136 %63 = OpAll %bool %64 137 OpBranch %62 138 %62 = OpLabel 139 %67 = OpPhi %bool %false %23 %63 %61 140 OpSelectionMerge %69 None 141 OpBranchConditional %67 %68 %69 142 %68 = OpLabel 143 %72 = OpVectorShuffle %v3float %43 %43 0 1 2 144 %71 = OpIsInf %v3bool %72 145 %70 = OpAll %bool %71 146 OpBranch %69 147 %69 = OpLabel 148 %75 = OpPhi %bool %false %62 %70 %68 149 OpSelectionMerge %77 None 150 OpBranchConditional %75 %76 %77 151 %76 = OpLabel 152 %79 = OpIsInf %v4bool %43 153 %78 = OpAll %bool %79 154 OpBranch %77 155 %77 = OpLabel 156 %81 = OpPhi %bool %false %69 %78 %76 157 OpSelectionMerge %83 None 158 OpBranchConditional %81 %82 %83 159 %82 = OpLabel 160 %86 = OpCompositeExtract %float %56 0 161 %85 = OpIsInf %bool %86 162 %84 = OpLogicalNot %bool %85 163 OpBranch %83 164 %83 = OpLabel 165 %87 = OpPhi %bool %false %77 %84 %82 166 OpSelectionMerge %89 None 167 OpBranchConditional %87 %88 %89 168 %88 = OpLabel 169 %93 = OpVectorShuffle %v2float %56 %56 0 1 170 %92 = OpIsInf %v2bool %93 171 %91 = OpAny %bool %92 172 %90 = OpLogicalNot %bool %91 173 OpBranch %89 174 %89 = OpLabel 175 %94 = OpPhi %bool %false %83 %90 %88 176 OpSelectionMerge %96 None 177 OpBranchConditional %94 %95 %96 178 %95 = OpLabel 179 %100 = OpVectorShuffle %v3float %56 %56 0 1 2 180 %99 = OpIsInf %v3bool %100 181 %98 = OpAny %bool %99 182 %97 = OpLogicalNot %bool %98 183 OpBranch %96 184 %96 = OpLabel 185 %101 = OpPhi %bool %false %89 %97 %95 186 OpSelectionMerge %103 None 187 OpBranchConditional %101 %102 %103 188 %102 = OpLabel 189 %106 = OpIsInf %v4bool %56 190 %105 = OpAny %bool %106 191 %104 = OpLogicalNot %bool %105 192 OpBranch %103 193 %103 = OpLabel 194 %107 = OpPhi %bool %false %96 %104 %102 195 OpSelectionMerge %111 None 196 OpBranchConditional %107 %109 %110 197 %109 = OpLabel 198 %112 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1 199 %113 = OpLoad %v4float %112 200 OpStore %108 %113 201 OpBranch %111 202 %110 = OpLabel 203 %114 = OpAccessChain %_ptr_Uniform_v4float %7 %int_2 204 %116 = OpLoad %v4float %114 205 OpStore %108 %116 206 OpBranch %111 207 %111 = OpLabel 208 %117 = OpLoad %v4float %108 209 OpReturnValue %117 210 OpFunctionEnd 211