OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Fragment %_entrypoint_v "_entrypoint" %sk_FragColor OpExecutionMode %_entrypoint_v OriginUpperLeft OpName %sk_FragColor "sk_FragColor" OpName %_UniformBuffer "_UniformBuffer" OpMemberName %_UniformBuffer 0 "colorGreen" OpMemberName %_UniformBuffer 1 "colorRed" OpMemberName %_UniformBuffer 2 "testMatrix2x2" OpMemberName %_UniformBuffer 3 "testMatrix3x3" OpName %_entrypoint_v "_entrypoint_v" OpName %main "main" OpName %_0_ok "_0_ok" OpName %_1_zero "_1_zero" OpName %_2_one "_2_one" OpName %_3_two "_3_two" OpName %_4_nine "_4_nine" OpName %_5_m "_5_m" OpDecorate %sk_FragColor RelaxedPrecision OpDecorate %sk_FragColor Location 0 OpDecorate %sk_FragColor Index 0 OpMemberDecorate %_UniformBuffer 0 Offset 0 OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision OpMemberDecorate %_UniformBuffer 1 Offset 16 OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision OpMemberDecorate %_UniformBuffer 2 Offset 32 OpMemberDecorate %_UniformBuffer 2 ColMajor OpMemberDecorate %_UniformBuffer 2 MatrixStride 16 OpMemberDecorate %_UniformBuffer 2 RelaxedPrecision OpMemberDecorate %_UniformBuffer 3 Offset 64 OpMemberDecorate %_UniformBuffer 3 ColMajor OpMemberDecorate %_UniformBuffer 3 MatrixStride 16 OpMemberDecorate %_UniformBuffer 3 RelaxedPrecision OpDecorate %_UniformBuffer Block OpDecorate %7 Binding 0 OpDecorate %7 DescriptorSet 0 OpDecorate %37 RelaxedPrecision OpDecorate %46 RelaxedPrecision OpDecorate %47 RelaxedPrecision OpDecorate %49 RelaxedPrecision OpDecorate %50 RelaxedPrecision OpDecorate %59 RelaxedPrecision OpDecorate %70 RelaxedPrecision OpDecorate %71 RelaxedPrecision OpDecorate %73 RelaxedPrecision OpDecorate %74 RelaxedPrecision OpDecorate %77 RelaxedPrecision OpDecorate %78 RelaxedPrecision OpDecorate %85 RelaxedPrecision OpDecorate %90 RelaxedPrecision OpDecorate %91 RelaxedPrecision OpDecorate %93 RelaxedPrecision OpDecorate %94 RelaxedPrecision OpDecorate %101 RelaxedPrecision OpDecorate %106 RelaxedPrecision OpDecorate %107 RelaxedPrecision OpDecorate %109 RelaxedPrecision OpDecorate %110 RelaxedPrecision OpDecorate %113 RelaxedPrecision OpDecorate %114 RelaxedPrecision OpDecorate %123 RelaxedPrecision OpDecorate %124 RelaxedPrecision OpDecorate %127 RelaxedPrecision OpDecorate %128 RelaxedPrecision OpDecorate %421 RelaxedPrecision OpDecorate %422 RelaxedPrecision OpDecorate %423 RelaxedPrecision OpDecorate %424 RelaxedPrecision OpDecorate %425 RelaxedPrecision OpDecorate %426 RelaxedPrecision OpDecorate %437 RelaxedPrecision OpDecorate %438 RelaxedPrecision OpDecorate %439 RelaxedPrecision OpDecorate %440 RelaxedPrecision OpDecorate %441 RelaxedPrecision OpDecorate %442 RelaxedPrecision OpDecorate %446 RelaxedPrecision OpDecorate %447 RelaxedPrecision OpDecorate %448 RelaxedPrecision OpDecorate %449 RelaxedPrecision OpDecorate %450 RelaxedPrecision OpDecorate %451 RelaxedPrecision OpDecorate %458 RelaxedPrecision OpDecorate %459 RelaxedPrecision OpDecorate %460 RelaxedPrecision OpDecorate %461 RelaxedPrecision OpDecorate %462 RelaxedPrecision OpDecorate %463 RelaxedPrecision OpDecorate %567 RelaxedPrecision OpDecorate %569 RelaxedPrecision OpDecorate %570 RelaxedPrecision %float = OpTypeFloat 32 %v4float = OpTypeVector %float 4 %_ptr_Output_v4float = OpTypePointer Output %v4float %sk_FragColor = OpVariable %_ptr_Output_v4float Output %v2float = OpTypeVector %float 2 %mat2v2float = OpTypeMatrix %v2float 2 %v3float = OpTypeVector %float 3 %mat3v3float = OpTypeMatrix %v3float 3 %_UniformBuffer = OpTypeStruct %v4float %v4float %mat2v2float %mat3v3float %_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer %7 = OpVariable %_ptr_Uniform__UniformBuffer Uniform %void = OpTypeVoid %16 = OpTypeFunction %void %float_0 = OpConstant %float 0 %19 = OpConstantComposite %v2float %float_0 %float_0 %_ptr_Function_v2float = OpTypePointer Function %v2float %23 = OpTypeFunction %v4float %_ptr_Function_v2float %bool = OpTypeBool %_ptr_Function_bool = OpTypePointer Function %bool %true = OpConstantTrue %bool %false = OpConstantFalse %bool %_ptr_Uniform_mat2v2float = OpTypePointer Uniform %mat2v2float %int = OpTypeInt 32 1 %int_2 = OpConstant %int 2 %float_1 = OpConstant %float 1 %float_2 = OpConstant %float 2 %float_3 = OpConstant %float 3 %float_4 = OpConstant %float 4 %42 = OpConstantComposite %v2float %float_1 %float_2 %43 = OpConstantComposite %v2float %float_3 %float_4 %44 = OpConstantComposite %mat2v2float %42 %43 %v2bool = OpTypeVector %bool 2 %_ptr_Uniform_mat3v3float = OpTypePointer Uniform %mat3v3float %int_3 = OpConstant %int 3 %float_5 = OpConstant %float 5 %float_6 = OpConstant %float 6 %float_7 = OpConstant %float 7 %float_8 = OpConstant %float 8 %float_9 = OpConstant %float 9 %65 = OpConstantComposite %v3float %float_1 %float_2 %float_3 %66 = OpConstantComposite %v3float %float_4 %float_5 %float_6 %67 = OpConstantComposite %v3float %float_7 %float_8 %float_9 %68 = OpConstantComposite %mat3v3float %65 %66 %67 %v3bool = OpTypeVector %bool 3 %float_100 = OpConstant %float 100 %87 = OpConstantComposite %v2float %float_100 %float_0 %88 = OpConstantComposite %v2float %float_0 %float_100 %89 = OpConstantComposite %mat2v2float %87 %88 %102 = OpConstantComposite %v3float %float_9 %float_8 %float_7 %103 = OpConstantComposite %v3float %float_6 %float_5 %float_4 %104 = OpConstantComposite %v3float %float_3 %float_2 %float_1 %105 = OpConstantComposite %mat3v3float %102 %103 %104 %_ptr_Function_float = OpTypePointer Function %float %_ptr_Uniform_v4float = OpTypePointer Uniform %v4float %int_0 = OpConstant %int 0 %138 = OpConstantComposite %v2float %float_1 %float_0 %139 = OpConstantComposite %v2float %float_0 %float_1 %140 = OpConstantComposite %mat2v2float %138 %139 %174 = OpConstantComposite %mat2v2float %19 %19 %float_n1 = OpConstant %float -1 %188 = OpConstantComposite %v2float %float_n1 %float_0 %189 = OpConstantComposite %v2float %float_0 %float_n1 %190 = OpConstantComposite %mat2v2float %188 %189 %float_n0 = OpConstant %float -0 %203 = OpConstantComposite %v2float %float_n0 %float_0 %204 = OpConstantComposite %v2float %float_0 %float_n0 %205 = OpConstantComposite %mat2v2float %203 %204 %291 = OpConstantComposite %v3float %float_1 %float_0 %float_0 %292 = OpConstantComposite %v3float %float_0 %float_1 %float_0 %293 = OpConstantComposite %v3float %float_0 %float_0 %float_1 %294 = OpConstantComposite %mat3v3float %291 %292 %293 %310 = OpConstantComposite %v2float %float_9 %float_0 %311 = OpConstantComposite %v2float %float_0 %float_9 %312 = OpConstantComposite %mat2v2float %310 %311 %313 = OpConstantComposite %v3float %float_9 %float_0 %float_0 %314 = OpConstantComposite %v3float %float_0 %float_9 %float_0 %315 = OpConstantComposite %mat3v3float %313 %314 %293 %429 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4 %v4bool = OpTypeVector %bool 4 %466 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 %_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float %_ptr_Function_v3float = OpTypePointer Function %v3float %int_1 = OpConstant %int 1 %_ptr_Function_v4float = OpTypePointer Function %v4float %_entrypoint_v = OpFunction %void None %16 %17 = OpLabel %20 = OpVariable %_ptr_Function_v2float Function OpStore %20 %19 %22 = OpFunctionCall %v4float %main %20 OpStore %sk_FragColor %22 OpReturn OpFunctionEnd %main = OpFunction %v4float None %23 %24 = OpFunctionParameter %_ptr_Function_v2float %25 = OpLabel %_0_ok = OpVariable %_ptr_Function_bool Function %_1_zero = OpVariable %_ptr_Function_float Function %_2_one = OpVariable %_ptr_Function_float Function %_3_two = OpVariable %_ptr_Function_float Function %_4_nine = OpVariable %_ptr_Function_float Function %_5_m = OpVariable %_ptr_Function_mat3v3float Function %561 = OpVariable %_ptr_Function_v4float Function OpStore %_0_ok %true OpSelectionMerge %32 None OpBranchConditional %true %31 %32 %31 = OpLabel %33 = OpAccessChain %_ptr_Uniform_mat2v2float %7 %int_2 %37 = OpLoad %mat2v2float %33 %46 = OpCompositeExtract %v2float %37 0 %47 = OpFOrdEqual %v2bool %46 %42 %48 = OpAll %bool %47 %49 = OpCompositeExtract %v2float %37 1 %50 = OpFOrdEqual %v2bool %49 %43 %51 = OpAll %bool %50 %52 = OpLogicalAnd %bool %48 %51 OpBranch %32 %32 = OpLabel %53 = OpPhi %bool %false %25 %52 %31 OpStore %_0_ok %53 OpSelectionMerge %55 None OpBranchConditional %53 %54 %55 %54 = OpLabel %56 = OpAccessChain %_ptr_Uniform_mat3v3float %7 %int_3 %59 = OpLoad %mat3v3float %56 %70 = OpCompositeExtract %v3float %59 0 %71 = OpFOrdEqual %v3bool %70 %65 %72 = OpAll %bool %71 %73 = OpCompositeExtract %v3float %59 1 %74 = OpFOrdEqual %v3bool %73 %66 %75 = OpAll %bool %74 %76 = OpLogicalAnd %bool %72 %75 %77 = OpCompositeExtract %v3float %59 2 %78 = OpFOrdEqual %v3bool %77 %67 %79 = OpAll %bool %78 %80 = OpLogicalAnd %bool %76 %79 OpBranch %55 %55 = OpLabel %81 = OpPhi %bool %false %32 %80 %54 OpStore %_0_ok %81 OpSelectionMerge %83 None OpBranchConditional %81 %82 %83 %82 = OpLabel %84 = OpAccessChain %_ptr_Uniform_mat2v2float %7 %int_2 %85 = OpLoad %mat2v2float %84 %90 = OpCompositeExtract %v2float %85 0 %91 = OpFUnordNotEqual %v2bool %90 %87 %92 = OpAny %bool %91 %93 = OpCompositeExtract %v2float %85 1 %94 = OpFUnordNotEqual %v2bool %93 %88 %95 = OpAny %bool %94 %96 = OpLogicalOr %bool %92 %95 OpBranch %83 %83 = OpLabel %97 = OpPhi %bool %false %55 %96 %82 OpStore %_0_ok %97 OpSelectionMerge %99 None OpBranchConditional %97 %98 %99 %98 = OpLabel %100 = OpAccessChain %_ptr_Uniform_mat3v3float %7 %int_3 %101 = OpLoad %mat3v3float %100 %106 = OpCompositeExtract %v3float %101 0 %107 = OpFUnordNotEqual %v3bool %106 %102 %108 = OpAny %bool %107 %109 = OpCompositeExtract %v3float %101 1 %110 = OpFUnordNotEqual %v3bool %109 %103 %111 = OpAny %bool %110 %112 = OpLogicalOr %bool %108 %111 %113 = OpCompositeExtract %v3float %101 2 %114 = OpFUnordNotEqual %v3bool %113 %104 %115 = OpAny %bool %114 %116 = OpLogicalOr %bool %112 %115 OpBranch %99 %99 = OpLabel %117 = OpPhi %bool %false %83 %116 %98 OpStore %_0_ok %117 %120 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0 %123 = OpLoad %v4float %120 %124 = OpCompositeExtract %float %123 0 OpStore %_1_zero %124 %126 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0 %127 = OpLoad %v4float %126 %128 = OpCompositeExtract %float %127 1 OpStore %_2_one %128 %130 = OpFMul %float %float_2 %128 OpStore %_3_two %130 %132 = OpFMul %float %float_9 %128 OpStore %_4_nine %132 OpSelectionMerge %134 None OpBranchConditional %117 %133 %134 %133 = OpLabel %135 = OpCompositeConstruct %v2float %128 %124 %136 = OpCompositeConstruct %v2float %124 %128 %137 = OpCompositeConstruct %mat2v2float %135 %136 %141 = OpFOrdEqual %v2bool %135 %138 %142 = OpAll %bool %141 %143 = OpFOrdEqual %v2bool %136 %139 %144 = OpAll %bool %143 %145 = OpLogicalAnd %bool %142 %144 OpBranch %134 %134 = OpLabel %146 = OpPhi %bool %false %99 %145 %133 OpStore %_0_ok %146 OpSelectionMerge %148 None OpBranchConditional %146 %147 %148 %147 = OpLabel %149 = OpCompositeConstruct %v2float %128 %128 %150 = OpCompositeConstruct %v2float %128 %124 %151 = OpCompositeConstruct %mat2v2float %150 %149 %152 = OpFUnordNotEqual %v2bool %150 %138 %153 = OpAny %bool %152 %154 = OpFUnordNotEqual %v2bool %149 %139 %155 = OpAny %bool %154 %156 = OpLogicalOr %bool %153 %155 OpBranch %148 %148 = OpLabel %157 = OpPhi %bool %false %134 %156 %147 OpStore %_0_ok %157 OpSelectionMerge %159 None OpBranchConditional %157 %158 %159 %158 = OpLabel %160 = OpCompositeConstruct %v2float %128 %float_0 %161 = OpCompositeConstruct %v2float %float_0 %128 %162 = OpCompositeConstruct %mat2v2float %160 %161 %163 = OpFOrdEqual %v2bool %160 %138 %164 = OpAll %bool %163 %165 = OpFOrdEqual %v2bool %161 %139 %166 = OpAll %bool %165 %167 = OpLogicalAnd %bool %164 %166 OpBranch %159 %159 = OpLabel %168 = OpPhi %bool %false %148 %167 %158 OpStore %_0_ok %168 OpSelectionMerge %170 None OpBranchConditional %168 %169 %170 %169 = OpLabel %171 = OpCompositeConstruct %v2float %128 %float_0 %172 = OpCompositeConstruct %v2float %float_0 %128 %173 = OpCompositeConstruct %mat2v2float %171 %172 %175 = OpFUnordNotEqual %v2bool %171 %19 %176 = OpAny %bool %175 %177 = OpFUnordNotEqual %v2bool %172 %19 %178 = OpAny %bool %177 %179 = OpLogicalOr %bool %176 %178 OpBranch %170 %170 = OpLabel %180 = OpPhi %bool %false %159 %179 %169 OpStore %_0_ok %180 OpSelectionMerge %182 None OpBranchConditional %180 %181 %182 %181 = OpLabel %183 = OpFNegate %float %128 %184 = OpCompositeConstruct %v2float %183 %float_0 %185 = OpCompositeConstruct %v2float %float_0 %183 %186 = OpCompositeConstruct %mat2v2float %184 %185 %191 = OpFOrdEqual %v2bool %184 %188 %192 = OpAll %bool %191 %193 = OpFOrdEqual %v2bool %185 %189 %194 = OpAll %bool %193 %195 = OpLogicalAnd %bool %192 %194 OpBranch %182 %182 = OpLabel %196 = OpPhi %bool %false %170 %195 %181 OpStore %_0_ok %196 OpSelectionMerge %198 None OpBranchConditional %196 %197 %198 %197 = OpLabel %199 = OpCompositeConstruct %v2float %124 %float_0 %200 = OpCompositeConstruct %v2float %float_0 %124 %201 = OpCompositeConstruct %mat2v2float %199 %200 %206 = OpFOrdEqual %v2bool %199 %203 %207 = OpAll %bool %206 %208 = OpFOrdEqual %v2bool %200 %204 %209 = OpAll %bool %208 %210 = OpLogicalAnd %bool %207 %209 OpBranch %198 %198 = OpLabel %211 = OpPhi %bool %false %182 %210 %197 OpStore %_0_ok %211 OpSelectionMerge %213 None OpBranchConditional %211 %212 %213 %212 = OpLabel %214 = OpFNegate %float %128 %215 = OpCompositeConstruct %v2float %214 %float_0 %216 = OpCompositeConstruct %v2float %float_0 %214 %217 = OpCompositeConstruct %mat2v2float %215 %216 %218 = OpFNegate %v2float %215 %219 = OpFNegate %v2float %216 %220 = OpCompositeConstruct %mat2v2float %218 %219 %221 = OpFOrdEqual %v2bool %218 %138 %222 = OpAll %bool %221 %223 = OpFOrdEqual %v2bool %219 %139 %224 = OpAll %bool %223 %225 = OpLogicalAnd %bool %222 %224 OpBranch %213 %213 = OpLabel %226 = OpPhi %bool %false %198 %225 %212 OpStore %_0_ok %226 OpSelectionMerge %228 None OpBranchConditional %226 %227 %228 %227 = OpLabel %229 = OpCompositeConstruct %v2float %124 %float_0 %230 = OpCompositeConstruct %v2float %float_0 %124 %231 = OpCompositeConstruct %mat2v2float %229 %230 %232 = OpFNegate %v2float %229 %233 = OpFNegate %v2float %230 %234 = OpCompositeConstruct %mat2v2float %232 %233 %235 = OpFOrdEqual %v2bool %232 %203 %236 = OpAll %bool %235 %237 = OpFOrdEqual %v2bool %233 %204 %238 = OpAll %bool %237 %239 = OpLogicalAnd %bool %236 %238 OpBranch %228 %228 = OpLabel %240 = OpPhi %bool %false %213 %239 %227 OpStore %_0_ok %240 OpSelectionMerge %242 None OpBranchConditional %240 %241 %242 %241 = OpLabel %243 = OpCompositeConstruct %v2float %128 %float_0 %244 = OpCompositeConstruct %v2float %float_0 %128 %245 = OpCompositeConstruct %mat2v2float %243 %244 %246 = OpFOrdEqual %v2bool %243 %138 %247 = OpAll %bool %246 %248 = OpFOrdEqual %v2bool %244 %139 %249 = OpAll %bool %248 %250 = OpLogicalAnd %bool %247 %249 OpBranch %242 %242 = OpLabel %251 = OpPhi %bool %false %228 %250 %241 OpStore %_0_ok %251 OpSelectionMerge %253 None OpBranchConditional %251 %252 %253 %252 = OpLabel %254 = OpCompositeConstruct %v2float %130 %float_0 %255 = OpCompositeConstruct %v2float %float_0 %130 %256 = OpCompositeConstruct %mat2v2float %254 %255 %257 = OpFUnordNotEqual %v2bool %254 %138 %258 = OpAny %bool %257 %259 = OpFUnordNotEqual %v2bool %255 %139 %260 = OpAny %bool %259 %261 = OpLogicalOr %bool %258 %260 OpBranch %253 %253 = OpLabel %262 = OpPhi %bool %false %242 %261 %252 OpStore %_0_ok %262 OpSelectionMerge %264 None OpBranchConditional %262 %263 %264 %263 = OpLabel %265 = OpCompositeConstruct %v2float %128 %float_0 %266 = OpCompositeConstruct %v2float %float_0 %128 %267 = OpCompositeConstruct %mat2v2float %265 %266 %268 = OpFOrdEqual %v2bool %265 %138 %269 = OpAll %bool %268 %270 = OpFOrdEqual %v2bool %266 %139 %271 = OpAll %bool %270 %272 = OpLogicalAnd %bool %269 %271 OpBranch %264 %264 = OpLabel %273 = OpPhi %bool %false %253 %272 %263 OpStore %_0_ok %273 OpSelectionMerge %275 None OpBranchConditional %273 %274 %275 %274 = OpLabel %276 = OpCompositeConstruct %v2float %128 %float_0 %277 = OpCompositeConstruct %v2float %float_0 %128 %278 = OpCompositeConstruct %mat2v2float %276 %277 %279 = OpFUnordNotEqual %v2bool %276 %19 %280 = OpAny %bool %279 %281 = OpFUnordNotEqual %v2bool %277 %19 %282 = OpAny %bool %281 %283 = OpLogicalOr %bool %280 %282 OpBranch %275 %275 = OpLabel %284 = OpPhi %bool %false %264 %283 %274 OpStore %_0_ok %284 OpSelectionMerge %286 None OpBranchConditional %284 %285 %286 %285 = OpLabel %287 = OpCompositeConstruct %v3float %128 %124 %124 %288 = OpCompositeConstruct %v3float %124 %128 %124 %289 = OpCompositeConstruct %v3float %124 %124 %128 %290 = OpCompositeConstruct %mat3v3float %287 %288 %289 %295 = OpFOrdEqual %v3bool %287 %291 %296 = OpAll %bool %295 %297 = OpFOrdEqual %v3bool %288 %292 %298 = OpAll %bool %297 %299 = OpLogicalAnd %bool %296 %298 %300 = OpFOrdEqual %v3bool %289 %293 %301 = OpAll %bool %300 %302 = OpLogicalAnd %bool %299 %301 OpBranch %286 %286 = OpLabel %303 = OpPhi %bool %false %275 %302 %285 OpStore %_0_ok %303 OpSelectionMerge %305 None OpBranchConditional %303 %304 %305 %304 = OpLabel %306 = OpCompositeConstruct %v3float %132 %124 %124 %307 = OpCompositeConstruct %v3float %124 %132 %124 %308 = OpCompositeConstruct %v3float %124 %124 %128 %309 = OpCompositeConstruct %mat3v3float %306 %307 %308 %316 = OpFOrdEqual %v3bool %306 %313 %317 = OpAll %bool %316 %318 = OpFOrdEqual %v3bool %307 %314 %319 = OpAll %bool %318 %320 = OpLogicalAnd %bool %317 %319 %321 = OpFOrdEqual %v3bool %308 %293 %322 = OpAll %bool %321 %323 = OpLogicalAnd %bool %320 %322 OpBranch %305 %305 = OpLabel %324 = OpPhi %bool %false %286 %323 %304 OpStore %_0_ok %324 OpSelectionMerge %326 None OpBranchConditional %324 %325 %326 %325 = OpLabel %327 = OpCompositeConstruct %v3float %128 %float_0 %float_0 %328 = OpCompositeConstruct %v3float %float_0 %128 %float_0 %329 = OpCompositeConstruct %v3float %float_0 %float_0 %128 %330 = OpCompositeConstruct %mat3v3float %327 %328 %329 %331 = OpFOrdEqual %v3bool %327 %291 %332 = OpAll %bool %331 %333 = OpFOrdEqual %v3bool %328 %292 %334 = OpAll %bool %333 %335 = OpLogicalAnd %bool %332 %334 %336 = OpFOrdEqual %v3bool %329 %293 %337 = OpAll %bool %336 %338 = OpLogicalAnd %bool %335 %337 OpBranch %326 %326 = OpLabel %339 = OpPhi %bool %false %305 %338 %325 OpStore %_0_ok %339 OpSelectionMerge %341 None OpBranchConditional %339 %340 %341 %340 = OpLabel %342 = OpCompositeConstruct %v3float %132 %float_0 %float_0 %343 = OpCompositeConstruct %v3float %float_0 %132 %float_0 %344 = OpCompositeConstruct %v3float %float_0 %float_0 %128 %345 = OpCompositeConstruct %mat3v3float %342 %343 %344 %346 = OpFOrdEqual %v3bool %342 %313 %347 = OpAll %bool %346 %348 = OpFOrdEqual %v3bool %343 %314 %349 = OpAll %bool %348 %350 = OpLogicalAnd %bool %347 %349 %351 = OpFOrdEqual %v3bool %344 %293 %352 = OpAll %bool %351 %353 = OpLogicalAnd %bool %350 %352 OpBranch %341 %341 = OpLabel %354 = OpPhi %bool %false %326 %353 %340 OpStore %_0_ok %354 OpSelectionMerge %356 None OpBranchConditional %354 %355 %356 %355 = OpLabel %357 = OpCompositeConstruct %v3float %128 %float_0 %float_0 %358 = OpCompositeConstruct %v3float %float_0 %128 %float_0 %359 = OpCompositeConstruct %v3float %float_0 %float_0 %128 %360 = OpCompositeConstruct %mat3v3float %357 %358 %359 %361 = OpVectorShuffle %v2float %357 %357 0 1 %362 = OpVectorShuffle %v2float %358 %358 0 1 %363 = OpCompositeConstruct %mat2v2float %361 %362 %364 = OpFOrdEqual %v2bool %361 %138 %365 = OpAll %bool %364 %366 = OpFOrdEqual %v2bool %362 %139 %367 = OpAll %bool %366 %368 = OpLogicalAnd %bool %365 %367 OpBranch %356 %356 = OpLabel %369 = OpPhi %bool %false %341 %368 %355 OpStore %_0_ok %369 OpSelectionMerge %371 None OpBranchConditional %369 %370 %371 %370 = OpLabel %372 = OpCompositeConstruct %v3float %128 %float_0 %float_0 %373 = OpCompositeConstruct %v3float %float_0 %128 %float_0 %374 = OpCompositeConstruct %v3float %float_0 %float_0 %128 %375 = OpCompositeConstruct %mat3v3float %372 %373 %374 %376 = OpVectorShuffle %v2float %372 %372 0 1 %377 = OpVectorShuffle %v2float %373 %373 0 1 %378 = OpCompositeConstruct %mat2v2float %376 %377 %379 = OpFOrdEqual %v2bool %376 %138 %380 = OpAll %bool %379 %381 = OpFOrdEqual %v2bool %377 %139 %382 = OpAll %bool %381 %383 = OpLogicalAnd %bool %380 %382 OpBranch %371 %371 = OpLabel %384 = OpPhi %bool %false %356 %383 %370 OpStore %_0_ok %384 OpSelectionMerge %386 None OpBranchConditional %384 %385 %386 %385 = OpLabel %387 = OpCompositeConstruct %v2float %128 %124 %388 = OpCompositeConstruct %v2float %124 %128 %389 = OpCompositeConstruct %mat2v2float %387 %388 %390 = OpFOrdEqual %v2bool %387 %138 %391 = OpAll %bool %390 %392 = OpFOrdEqual %v2bool %388 %139 %393 = OpAll %bool %392 %394 = OpLogicalAnd %bool %391 %393 OpBranch %386 %386 = OpLabel %395 = OpPhi %bool %false %371 %394 %385 OpStore %_0_ok %395 OpSelectionMerge %397 None OpBranchConditional %395 %396 %397 %396 = OpLabel %398 = OpCompositeConstruct %v2float %128 %124 %399 = OpCompositeConstruct %v2float %124 %128 %400 = OpCompositeConstruct %mat2v2float %398 %399 %401 = OpFOrdEqual %v2bool %398 %138 %402 = OpAll %bool %401 %403 = OpFOrdEqual %v2bool %399 %139 %404 = OpAll %bool %403 %405 = OpLogicalAnd %bool %402 %404 OpBranch %397 %397 = OpLabel %406 = OpPhi %bool %false %386 %405 %396 OpStore %_0_ok %406 OpSelectionMerge %408 None OpBranchConditional %406 %407 %408 %407 = OpLabel %409 = OpCompositeConstruct %v2float %128 %124 %410 = OpCompositeConstruct %v2float %124 %128 %411 = OpCompositeConstruct %mat2v2float %409 %410 %412 = OpFOrdEqual %v2bool %409 %138 %413 = OpAll %bool %412 %414 = OpFOrdEqual %v2bool %410 %139 %415 = OpAll %bool %414 %416 = OpLogicalAnd %bool %413 %415 OpBranch %408 %408 = OpLabel %417 = OpPhi %bool %false %397 %416 %407 OpStore %_0_ok %417 OpSelectionMerge %419 None OpBranchConditional %417 %418 %419 %418 = OpLabel %420 = OpAccessChain %_ptr_Uniform_mat2v2float %7 %int_2 %421 = OpLoad %mat2v2float %420 %422 = OpCompositeExtract %float %421 0 0 %423 = OpCompositeExtract %float %421 0 1 %424 = OpCompositeExtract %float %421 1 0 %425 = OpCompositeExtract %float %421 1 1 %426 = OpCompositeConstruct %v4float %422 %423 %424 %425 %427 = OpCompositeConstruct %v4float %128 %128 %128 %128 %428 = OpFMul %v4float %426 %427 %430 = OpFOrdEqual %v4bool %428 %429 %432 = OpAll %bool %430 OpBranch %419 %419 = OpLabel %433 = OpPhi %bool %false %408 %432 %418 OpStore %_0_ok %433 OpSelectionMerge %435 None OpBranchConditional %433 %434 %435 %434 = OpLabel %436 = OpAccessChain %_ptr_Uniform_mat2v2float %7 %int_2 %437 = OpLoad %mat2v2float %436 %438 = OpCompositeExtract %float %437 0 0 %439 = OpCompositeExtract %float %437 0 1 %440 = OpCompositeExtract %float %437 1 0 %441 = OpCompositeExtract %float %437 1 1 %442 = OpCompositeConstruct %v4float %438 %439 %440 %441 %443 = OpCompositeConstruct %v4float %128 %128 %128 %128 %444 = OpFMul %v4float %442 %443 %445 = OpAccessChain %_ptr_Uniform_mat2v2float %7 %int_2 %446 = OpLoad %mat2v2float %445 %447 = OpCompositeExtract %float %446 0 0 %448 = OpCompositeExtract %float %446 0 1 %449 = OpCompositeExtract %float %446 1 0 %450 = OpCompositeExtract %float %446 1 1 %451 = OpCompositeConstruct %v4float %447 %448 %449 %450 %452 = OpFOrdEqual %v4bool %444 %451 %453 = OpAll %bool %452 OpBranch %435 %435 = OpLabel %454 = OpPhi %bool %false %419 %453 %434 OpStore %_0_ok %454 OpSelectionMerge %456 None OpBranchConditional %454 %455 %456 %455 = OpLabel %457 = OpAccessChain %_ptr_Uniform_mat2v2float %7 %int_2 %458 = OpLoad %mat2v2float %457 %459 = OpCompositeExtract %float %458 0 0 %460 = OpCompositeExtract %float %458 0 1 %461 = OpCompositeExtract %float %458 1 0 %462 = OpCompositeExtract %float %458 1 1 %463 = OpCompositeConstruct %v4float %459 %460 %461 %462 %464 = OpCompositeConstruct %v4float %124 %124 %124 %124 %465 = OpFMul %v4float %463 %464 %467 = OpFOrdEqual %v4bool %465 %466 %468 = OpAll %bool %467 OpBranch %456 %456 = OpLabel %469 = OpPhi %bool %false %435 %468 %455 OpStore %_0_ok %469 %472 = OpCompositeConstruct %v3float %128 %130 %float_3 %473 = OpCompositeConstruct %v3float %float_7 %float_8 %132 %474 = OpCompositeConstruct %mat3v3float %472 %66 %473 OpStore %_5_m %474 OpSelectionMerge %476 None OpBranchConditional %469 %475 %476 %475 = OpLabel %477 = OpAccessChain %_ptr_Function_v3float %_5_m %int_0 %479 = OpLoad %v3float %477 %480 = OpFOrdEqual %v3bool %479 %65 %481 = OpAll %bool %480 OpBranch %476 %476 = OpLabel %482 = OpPhi %bool %false %456 %481 %475 OpStore %_0_ok %482 OpSelectionMerge %484 None OpBranchConditional %482 %483 %484 %483 = OpLabel %486 = OpAccessChain %_ptr_Function_v3float %_5_m %int_1 %487 = OpLoad %v3float %486 %488 = OpFOrdEqual %v3bool %487 %66 %489 = OpAll %bool %488 OpBranch %484 %484 = OpLabel %490 = OpPhi %bool %false %476 %489 %483 OpStore %_0_ok %490 OpSelectionMerge %492 None OpBranchConditional %490 %491 %492 %491 = OpLabel %493 = OpAccessChain %_ptr_Function_v3float %_5_m %int_2 %494 = OpLoad %v3float %493 %495 = OpFOrdEqual %v3bool %494 %67 %496 = OpAll %bool %495 OpBranch %492 %492 = OpLabel %497 = OpPhi %bool %false %484 %496 %491 OpStore %_0_ok %497 OpSelectionMerge %499 None OpBranchConditional %497 %498 %499 %498 = OpLabel %500 = OpAccessChain %_ptr_Function_v3float %_5_m %int_0 %501 = OpLoad %v3float %500 %502 = OpCompositeExtract %float %501 0 %503 = OpFOrdEqual %bool %502 %float_1 OpBranch %499 %499 = OpLabel %504 = OpPhi %bool %false %492 %503 %498 OpStore %_0_ok %504 OpSelectionMerge %506 None OpBranchConditional %504 %505 %506 %505 = OpLabel %507 = OpAccessChain %_ptr_Function_v3float %_5_m %int_0 %508 = OpLoad %v3float %507 %509 = OpCompositeExtract %float %508 1 %510 = OpFOrdEqual %bool %509 %float_2 OpBranch %506 %506 = OpLabel %511 = OpPhi %bool %false %499 %510 %505 OpStore %_0_ok %511 OpSelectionMerge %513 None OpBranchConditional %511 %512 %513 %512 = OpLabel %514 = OpAccessChain %_ptr_Function_v3float %_5_m %int_0 %515 = OpLoad %v3float %514 %516 = OpCompositeExtract %float %515 2 %517 = OpFOrdEqual %bool %516 %float_3 OpBranch %513 %513 = OpLabel %518 = OpPhi %bool %false %506 %517 %512 OpStore %_0_ok %518 OpSelectionMerge %520 None OpBranchConditional %518 %519 %520 %519 = OpLabel %521 = OpAccessChain %_ptr_Function_v3float %_5_m %int_1 %522 = OpLoad %v3float %521 %523 = OpCompositeExtract %float %522 0 %524 = OpFOrdEqual %bool %523 %float_4 OpBranch %520 %520 = OpLabel %525 = OpPhi %bool %false %513 %524 %519 OpStore %_0_ok %525 OpSelectionMerge %527 None OpBranchConditional %525 %526 %527 %526 = OpLabel %528 = OpAccessChain %_ptr_Function_v3float %_5_m %int_1 %529 = OpLoad %v3float %528 %530 = OpCompositeExtract %float %529 1 %531 = OpFOrdEqual %bool %530 %float_5 OpBranch %527 %527 = OpLabel %532 = OpPhi %bool %false %520 %531 %526 OpStore %_0_ok %532 OpSelectionMerge %534 None OpBranchConditional %532 %533 %534 %533 = OpLabel %535 = OpAccessChain %_ptr_Function_v3float %_5_m %int_1 %536 = OpLoad %v3float %535 %537 = OpCompositeExtract %float %536 2 %538 = OpFOrdEqual %bool %537 %float_6 OpBranch %534 %534 = OpLabel %539 = OpPhi %bool %false %527 %538 %533 OpStore %_0_ok %539 OpSelectionMerge %541 None OpBranchConditional %539 %540 %541 %540 = OpLabel %542 = OpAccessChain %_ptr_Function_v3float %_5_m %int_2 %543 = OpLoad %v3float %542 %544 = OpCompositeExtract %float %543 0 %545 = OpFOrdEqual %bool %544 %float_7 OpBranch %541 %541 = OpLabel %546 = OpPhi %bool %false %534 %545 %540 OpStore %_0_ok %546 OpSelectionMerge %548 None OpBranchConditional %546 %547 %548 %547 = OpLabel %549 = OpAccessChain %_ptr_Function_v3float %_5_m %int_2 %550 = OpLoad %v3float %549 %551 = OpCompositeExtract %float %550 1 %552 = OpFOrdEqual %bool %551 %float_8 OpBranch %548 %548 = OpLabel %553 = OpPhi %bool %false %541 %552 %547 OpStore %_0_ok %553 OpSelectionMerge %555 None OpBranchConditional %553 %554 %555 %554 = OpLabel %556 = OpAccessChain %_ptr_Function_v3float %_5_m %int_2 %557 = OpLoad %v3float %556 %558 = OpCompositeExtract %float %557 2 %559 = OpFOrdEqual %bool %558 %float_9 OpBranch %555 %555 = OpLabel %560 = OpPhi %bool %false %548 %559 %554 OpStore %_0_ok %560 OpSelectionMerge %565 None OpBranchConditional %560 %563 %564 %563 = OpLabel %566 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0 %567 = OpLoad %v4float %566 OpStore %561 %567 OpBranch %565 %564 = OpLabel %568 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1 %569 = OpLoad %v4float %568 OpStore %561 %569 OpBranch %565 %565 = OpLabel %570 = OpLoad %v4float %561 OpReturnValue %570 OpFunctionEnd