OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %_entrypoint_v "_entrypoint" %sk_Clockwise %sk_FragColor
OpExecutionMode %_entrypoint_v OriginUpperLeft
OpName %sk_Clockwise "sk_Clockwise"
OpName %sk_FragColor "sk_FragColor"
OpName %_UniformBuffer "_UniformBuffer"
OpMemberName %_UniformBuffer 0 "colorRed"
OpMemberName %_UniformBuffer 1 "colorGreen"
OpName %_entrypoint_v "_entrypoint_v"
OpName %test_matrix_op_matrix_half_b "test_matrix_op_matrix_half_b"
OpName %ok "ok"
OpName %splat_4 "splat_4"
OpName %splat_2 "splat_2"
OpName %m "m"
OpName %m_0 "m"
OpName %m_1 "m"
OpName %m_2 "m"
OpName %m_3 "m"
OpName %m_4 "m"
OpName %main "main"
OpName %_0_ok "_0_ok"
OpName %_1_splat_4 "_1_splat_4"
OpName %_2_splat_2 "_2_splat_2"
OpName %_3_m "_3_m"
OpName %_4_m "_4_m"
OpName %_5_m "_5_m"
OpName %_6_m "_6_m"
OpName %_7_m "_7_m"
OpName %_8_m "_8_m"
OpDecorate %sk_Clockwise BuiltIn FrontFacing
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
OpDecorate %_UniformBuffer Block
OpDecorate %11 Binding 0
OpDecorate %11 DescriptorSet 0
OpDecorate %splat_4 RelaxedPrecision
OpDecorate %splat_2 RelaxedPrecision
OpDecorate %m RelaxedPrecision
OpDecorate %45 RelaxedPrecision
OpDecorate %46 RelaxedPrecision
OpDecorate %47 RelaxedPrecision
OpDecorate %48 RelaxedPrecision
OpDecorate %58 RelaxedPrecision
OpDecorate %60 RelaxedPrecision
OpDecorate %63 RelaxedPrecision
OpDecorate %67 RelaxedPrecision
OpDecorate %68 RelaxedPrecision
OpDecorate %69 RelaxedPrecision
OpDecorate %70 RelaxedPrecision
OpDecorate %79 RelaxedPrecision
OpDecorate %81 RelaxedPrecision
OpDecorate %84 RelaxedPrecision
OpDecorate %88 RelaxedPrecision
OpDecorate %89 RelaxedPrecision
OpDecorate %90 RelaxedPrecision
OpDecorate %91 RelaxedPrecision
OpDecorate %99 RelaxedPrecision
OpDecorate %101 RelaxedPrecision
OpDecorate %104 RelaxedPrecision
OpDecorate %108 RelaxedPrecision
OpDecorate %109 RelaxedPrecision
OpDecorate %110 RelaxedPrecision
OpDecorate %111 RelaxedPrecision
OpDecorate %114 RelaxedPrecision
OpDecorate %116 RelaxedPrecision
OpDecorate %119 RelaxedPrecision
OpDecorate %123 RelaxedPrecision
OpDecorate %124 RelaxedPrecision
OpDecorate %125 RelaxedPrecision
OpDecorate %126 RelaxedPrecision
OpDecorate %133 RelaxedPrecision
OpDecorate %135 RelaxedPrecision
OpDecorate %138 RelaxedPrecision
OpDecorate %142 RelaxedPrecision
OpDecorate %143 RelaxedPrecision
OpDecorate %144 RelaxedPrecision
OpDecorate %145 RelaxedPrecision
OpDecorate %148 RelaxedPrecision
OpDecorate %150 RelaxedPrecision
OpDecorate %153 RelaxedPrecision
OpDecorate %m_0 RelaxedPrecision
OpDecorate %183 RelaxedPrecision
OpDecorate %184 RelaxedPrecision
OpDecorate %185 RelaxedPrecision
OpDecorate %186 RelaxedPrecision
OpDecorate %187 RelaxedPrecision
OpDecorate %194 RelaxedPrecision
OpDecorate %196 RelaxedPrecision
OpDecorate %199 RelaxedPrecision
OpDecorate %202 RelaxedPrecision
OpDecorate %m_1 RelaxedPrecision
OpDecorate %218 RelaxedPrecision
OpDecorate %219 RelaxedPrecision
OpDecorate %220 RelaxedPrecision
OpDecorate %230 RelaxedPrecision
OpDecorate %232 RelaxedPrecision
OpDecorate %m_2 RelaxedPrecision
OpDecorate %242 RelaxedPrecision
OpDecorate %243 RelaxedPrecision
OpDecorate %244 RelaxedPrecision
OpDecorate %249 RelaxedPrecision
OpDecorate %251 RelaxedPrecision
OpDecorate %m_3 RelaxedPrecision
OpDecorate %260 RelaxedPrecision
OpDecorate %268 RelaxedPrecision
OpDecorate %269 RelaxedPrecision
OpDecorate %271 RelaxedPrecision
OpDecorate %272 RelaxedPrecision
OpDecorate %m_4 RelaxedPrecision
OpDecorate %285 RelaxedPrecision
OpDecorate %301 RelaxedPrecision
OpDecorate %302 RelaxedPrecision
OpDecorate %304 RelaxedPrecision
OpDecorate %305 RelaxedPrecision
OpDecorate %308 RelaxedPrecision
OpDecorate %309 RelaxedPrecision
OpDecorate %495 RelaxedPrecision
OpDecorate %498 RelaxedPrecision
OpDecorate %499 RelaxedPrecision
%bool = OpTypeBool
%_ptr_Input_bool = OpTypePointer Input %bool
%sk_Clockwise = OpVariable %_ptr_Input_bool Input
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
%sk_FragColor = OpVariable %_ptr_Output_v4float Output
%_UniformBuffer = OpTypeStruct %v4float %v4float
%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
%11 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
%void = OpTypeVoid
%16 = OpTypeFunction %void
%float_0 = OpConstant %float 0
%v2float = OpTypeVector %float 2
%20 = OpConstantComposite %v2float %float_0 %float_0
%_ptr_Function_v2float = OpTypePointer Function %v2float
%24 = OpTypeFunction %bool
%_ptr_Function_bool = OpTypePointer Function %bool
%true = OpConstantTrue %bool
%v3float = OpTypeVector %float 3
%mat3v3float = OpTypeMatrix %v3float 3
%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
%float_4 = OpConstant %float 4
%34 = OpConstantComposite %v3float %float_4 %float_4 %float_4
%35 = OpConstantComposite %mat3v3float %34 %34 %34
%float_2 = OpConstant %float 2
%38 = OpConstantComposite %v3float %float_2 %float_2 %float_2
%39 = OpConstantComposite %mat3v3float %38 %38 %38
%41 = OpConstantComposite %v3float %float_2 %float_0 %float_0
%42 = OpConstantComposite %v3float %float_0 %float_2 %float_0
%43 = OpConstantComposite %v3float %float_0 %float_0 %float_2
%44 = OpConstantComposite %mat3v3float %41 %42 %43
%false = OpConstantFalse %bool
%float_6 = OpConstant %float 6
%53 = OpConstantComposite %v3float %float_6 %float_4 %float_4
%54 = OpConstantComposite %v3float %float_4 %float_6 %float_4
%55 = OpConstantComposite %v3float %float_4 %float_4 %float_6
%56 = OpConstantComposite %mat3v3float %53 %54 %55
%v3bool = OpTypeVector %bool 3
%float_n2 = OpConstant %float -2
%float_n4 = OpConstant %float -4
%75 = OpConstantComposite %v3float %float_n2 %float_n4 %float_n4
%76 = OpConstantComposite %v3float %float_n4 %float_n2 %float_n4
%77 = OpConstantComposite %v3float %float_n4 %float_n4 %float_n2
%78 = OpConstantComposite %mat3v3float %75 %76 %77
%float_0_5 = OpConstant %float 0.5
%95 = OpConstantComposite %v3float %float_0_5 %float_0 %float_0
%96 = OpConstantComposite %v3float %float_0 %float_0_5 %float_0
%97 = OpConstantComposite %v3float %float_0 %float_0 %float_0_5
%98 = OpConstantComposite %mat3v3float %95 %96 %97
%129 = OpConstantComposite %v3float %float_2 %float_4 %float_4
%130 = OpConstantComposite %v3float %float_4 %float_2 %float_4
%131 = OpConstantComposite %v3float %float_4 %float_4 %float_2
%132 = OpConstantComposite %mat3v3float %129 %130 %131
%mat4v4float = OpTypeMatrix %v4float 4
%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
%float_1 = OpConstant %float 1
%float_3 = OpConstant %float 3
%float_5 = OpConstant %float 5
%float_7 = OpConstant %float 7
%float_8 = OpConstant %float 8
%float_9 = OpConstant %float 9
%float_10 = OpConstant %float 10
%float_11 = OpConstant %float 11
%float_12 = OpConstant %float 12
%float_13 = OpConstant %float 13
%float_14 = OpConstant %float 14
%float_15 = OpConstant %float 15
%float_16 = OpConstant %float 16
%173 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
%174 = OpConstantComposite %v4float %float_5 %float_6 %float_7 %float_8
%175 = OpConstantComposite %v4float %float_9 %float_10 %float_11 %float_12
%176 = OpConstantComposite %v4float %float_13 %float_14 %float_15 %float_16
%177 = OpConstantComposite %mat4v4float %173 %174 %175 %176
%178 = OpConstantComposite %v4float %float_16 %float_15 %float_14 %float_13
%179 = OpConstantComposite %v4float %float_12 %float_11 %float_10 %float_9
%180 = OpConstantComposite %v4float %float_8 %float_7 %float_6 %float_5
%181 = OpConstantComposite %v4float %float_4 %float_3 %float_2 %float_1
%182 = OpConstantComposite %mat4v4float %178 %179 %180 %181
%float_17 = OpConstant %float 17
%191 = OpConstantComposite %v4float %float_17 %float_17 %float_17 %float_17
%192 = OpConstantComposite %mat4v4float %191 %191 %191 %191
%v4bool = OpTypeVector %bool 4
%mat2v2float = OpTypeMatrix %v2float 2
%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
%float_20 = OpConstant %float 20
%float_30 = OpConstant %float 30
%float_40 = OpConstant %float 40
%212 = OpConstantComposite %v2float %float_10 %float_20
%213 = OpConstantComposite %v2float %float_30 %float_40
%214 = OpConstantComposite %mat2v2float %212 %213
%215 = OpConstantComposite %v2float %float_1 %float_2
%216 = OpConstantComposite %v2float %float_3 %float_4
%217 = OpConstantComposite %mat2v2float %215 %216
%float_18 = OpConstant %float 18
%float_27 = OpConstant %float 27
%float_36 = OpConstant %float 36
%226 = OpConstantComposite %v2float %float_9 %float_18
%227 = OpConstantComposite %v2float %float_27 %float_36
%228 = OpConstantComposite %mat2v2float %226 %227
%v2bool = OpTypeVector %bool 2
%237 = OpConstantComposite %v2float %float_2 %float_4
%238 = OpConstantComposite %v2float %float_6 %float_8
%239 = OpConstantComposite %mat2v2float %237 %238
%240 = OpConstantComposite %v2float %float_2 %float_2
%241 = OpConstantComposite %mat2v2float %240 %237
%247 = OpConstantComposite %v2float %float_3 %float_2
%248 = OpConstantComposite %mat2v2float %215 %247
%256 = OpConstantComposite %v2float %float_7 %float_4
%257 = OpConstantComposite %mat2v2float %215 %256
%258 = OpConstantComposite %v2float %float_3 %float_5
%259 = OpConstantComposite %mat2v2float %258 %247
%float_38 = OpConstant %float 38
%float_26 = OpConstant %float 26
%265 = OpConstantComposite %v2float %float_38 %float_26
%266 = OpConstantComposite %v2float %float_17 %float_14
%267 = OpConstantComposite %mat2v2float %265 %266
%277 = OpConstantComposite %v3float %float_10 %float_4 %float_2
%278 = OpConstantComposite %v3float %float_20 %float_5 %float_3
%279 = OpConstantComposite %v3float %float_10 %float_6 %float_5
%280 = OpConstantComposite %mat3v3float %277 %278 %279
%281 = OpConstantComposite %v3float %float_3 %float_3 %float_4
%282 = OpConstantComposite %v3float %float_2 %float_3 %float_4
%283 = OpConstantComposite %v3float %float_4 %float_9 %float_2
%284 = OpConstantComposite %mat3v3float %281 %282 %283
%float_130 = OpConstant %float 130
%float_51 = OpConstant %float 51
%float_35 = OpConstant %float 35
%float_120 = OpConstant %float 120
%float_47 = OpConstant %float 47
%float_33 = OpConstant %float 33
%float_240 = OpConstant %float 240
%float_73 = OpConstant %float 73
%float_45 = OpConstant %float 45
%297 = OpConstantComposite %v3float %float_130 %float_51 %float_35
%298 = OpConstantComposite %v3float %float_120 %float_47 %float_33
%299 = OpConstantComposite %v3float %float_240 %float_73 %float_45
%300 = OpConstantComposite %mat3v3float %297 %298 %299
%313 = OpTypeFunction %v4float %_ptr_Function_v2float
%_ptr_Function_v4float = OpTypePointer Function %v4float
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%int = OpTypeInt 32 1
%int_1 = OpConstant %int 1
%int_0 = OpConstant %int 0
%_entrypoint_v = OpFunction %void None %16
%17 = OpLabel
%21 = OpVariable %_ptr_Function_v2float Function
OpStore %21 %20
%23 = OpFunctionCall %v4float %main %21
OpStore %sk_FragColor %23
OpReturn
OpFunctionEnd
%test_matrix_op_matrix_half_b = OpFunction %bool None %24
%25 = OpLabel
%ok = OpVariable %_ptr_Function_bool Function
%splat_4 = OpVariable %_ptr_Function_mat3v3float Function
%splat_2 = OpVariable %_ptr_Function_mat3v3float Function
%m = OpVariable %_ptr_Function_mat3v3float Function
%m_0 = OpVariable %_ptr_Function_mat4v4float Function
%m_1 = OpVariable %_ptr_Function_mat2v2float Function
%m_2 = OpVariable %_ptr_Function_mat2v2float Function
%m_3 = OpVariable %_ptr_Function_mat2v2float Function
%m_4 = OpVariable %_ptr_Function_mat3v3float Function
OpStore %ok %true
OpStore %splat_4 %35
OpStore %splat_2 %39
OpStore %m %44
%45 = OpFAdd %v3float %41 %34
%46 = OpFAdd %v3float %42 %34
%47 = OpFAdd %v3float %43 %34
%48 = OpCompositeConstruct %mat3v3float %45 %46 %47
OpStore %m %48
OpSelectionMerge %51 None
OpBranchConditional %true %50 %51
%50 = OpLabel
%58 = OpFOrdEqual %v3bool %45 %53
%59 = OpAll %bool %58
%60 = OpFOrdEqual %v3bool %46 %54
%61 = OpAll %bool %60
%62 = OpLogicalAnd %bool %59 %61
%63 = OpFOrdEqual %v3bool %47 %55
%64 = OpAll %bool %63
%65 = OpLogicalAnd %bool %62 %64
OpBranch %51
%51 = OpLabel
%66 = OpPhi %bool %false %25 %65 %50
OpStore %ok %66
OpStore %m %44
%67 = OpFSub %v3float %41 %34
%68 = OpFSub %v3float %42 %34
%69 = OpFSub %v3float %43 %34
%70 = OpCompositeConstruct %mat3v3float %67 %68 %69
OpStore %m %70
OpSelectionMerge %72 None
OpBranchConditional %66 %71 %72
%71 = OpLabel
%79 = OpFOrdEqual %v3bool %67 %75
%80 = OpAll %bool %79
%81 = OpFOrdEqual %v3bool %68 %76
%82 = OpAll %bool %81
%83 = OpLogicalAnd %bool %80 %82
%84 = OpFOrdEqual %v3bool %69 %77
%85 = OpAll %bool %84
%86 = OpLogicalAnd %bool %83 %85
OpBranch %72
%72 = OpLabel
%87 = OpPhi %bool %false %51 %86 %71
OpStore %ok %87
OpStore %m %44
%88 = OpFDiv %v3float %41 %34
%89 = OpFDiv %v3float %42 %34
%90 = OpFDiv %v3float %43 %34
%91 = OpCompositeConstruct %mat3v3float %88 %89 %90
OpStore %m %91
OpSelectionMerge %93 None
OpBranchConditional %87 %92 %93
%92 = OpLabel
%99 = OpFOrdEqual %v3bool %88 %95
%100 = OpAll %bool %99
%101 = OpFOrdEqual %v3bool %89 %96
%102 = OpAll %bool %101
%103 = OpLogicalAnd %bool %100 %102
%104 = OpFOrdEqual %v3bool %90 %97
%105 = OpAll %bool %104
%106 = OpLogicalAnd %bool %103 %105
OpBranch %93
%93 = OpLabel
%107 = OpPhi %bool %false %72 %106 %92
OpStore %ok %107
OpStore %m %35
%108 = OpFAdd %v3float %34 %41
%109 = OpFAdd %v3float %34 %42
%110 = OpFAdd %v3float %34 %43
%111 = OpCompositeConstruct %mat3v3float %108 %109 %110
OpStore %m %111
OpSelectionMerge %113 None
OpBranchConditional %107 %112 %113
%112 = OpLabel
%114 = OpFOrdEqual %v3bool %108 %53
%115 = OpAll %bool %114
%116 = OpFOrdEqual %v3bool %109 %54
%117 = OpAll %bool %116
%118 = OpLogicalAnd %bool %115 %117
%119 = OpFOrdEqual %v3bool %110 %55
%120 = OpAll %bool %119
%121 = OpLogicalAnd %bool %118 %120
OpBranch %113
%113 = OpLabel
%122 = OpPhi %bool %false %93 %121 %112
OpStore %ok %122
OpStore %m %35
%123 = OpFSub %v3float %34 %41
%124 = OpFSub %v3float %34 %42
%125 = OpFSub %v3float %34 %43
%126 = OpCompositeConstruct %mat3v3float %123 %124 %125
OpStore %m %126
OpSelectionMerge %128 None
OpBranchConditional %122 %127 %128
%127 = OpLabel
%133 = OpFOrdEqual %v3bool %123 %129
%134 = OpAll %bool %133
%135 = OpFOrdEqual %v3bool %124 %130
%136 = OpAll %bool %135
%137 = OpLogicalAnd %bool %134 %136
%138 = OpFOrdEqual %v3bool %125 %131
%139 = OpAll %bool %138
%140 = OpLogicalAnd %bool %137 %139
OpBranch %128
%128 = OpLabel
%141 = OpPhi %bool %false %113 %140 %127
OpStore %ok %141
OpStore %m %35
%142 = OpFDiv %v3float %34 %38
%143 = OpFDiv %v3float %34 %38
%144 = OpFDiv %v3float %34 %38
%145 = OpCompositeConstruct %mat3v3float %142 %143 %144
OpStore %m %145
OpSelectionMerge %147 None
OpBranchConditional %141 %146 %147
%146 = OpLabel
%148 = OpFOrdEqual %v3bool %142 %38
%149 = OpAll %bool %148
%150 = OpFOrdEqual %v3bool %143 %38
%151 = OpAll %bool %150
%152 = OpLogicalAnd %bool %149 %151
%153 = OpFOrdEqual %v3bool %144 %38
%154 = OpAll %bool %153
%155 = OpLogicalAnd %bool %152 %154
OpBranch %147
%147 = OpLabel
%156 = OpPhi %bool %false %128 %155 %146
OpStore %ok %156
OpStore %m_0 %177
%183 = OpFAdd %v4float %173 %178
%184 = OpFAdd %v4float %174 %179
%185 = OpFAdd %v4float %175 %180
%186 = OpFAdd %v4float %176 %181
%187 = OpCompositeConstruct %mat4v4float %183 %184 %185 %186
OpStore %m_0 %187
OpSelectionMerge %189 None
OpBranchConditional %156 %188 %189
%188 = OpLabel
%194 = OpFOrdEqual %v4bool %183 %191
%195 = OpAll %bool %194
%196 = OpFOrdEqual %v4bool %184 %191
%197 = OpAll %bool %196
%198 = OpLogicalAnd %bool %195 %197
%199 = OpFOrdEqual %v4bool %185 %191
%200 = OpAll %bool %199
%201 = OpLogicalAnd %bool %198 %200
%202 = OpFOrdEqual %v4bool %186 %191
%203 = OpAll %bool %202
%204 = OpLogicalAnd %bool %201 %203
OpBranch %189
%189 = OpLabel
%205 = OpPhi %bool %false %147 %204 %188
OpStore %ok %205
OpStore %m_1 %214
%218 = OpFSub %v2float %212 %215
%219 = OpFSub %v2float %213 %216
%220 = OpCompositeConstruct %mat2v2float %218 %219
OpStore %m_1 %220
OpSelectionMerge %222 None
OpBranchConditional %205 %221 %222
%221 = OpLabel
%230 = OpFOrdEqual %v2bool %218 %226
%231 = OpAll %bool %230
%232 = OpFOrdEqual %v2bool %219 %227
%233 = OpAll %bool %232
%234 = OpLogicalAnd %bool %231 %233
OpBranch %222
%222 = OpLabel
%235 = OpPhi %bool %false %189 %234 %221
OpStore %ok %235
OpStore %m_2 %239
%242 = OpFDiv %v2float %237 %240
%243 = OpFDiv %v2float %238 %237
%244 = OpCompositeConstruct %mat2v2float %242 %243
OpStore %m_2 %244
OpSelectionMerge %246 None
OpBranchConditional %235 %245 %246
%245 = OpLabel
%249 = OpFOrdEqual %v2bool %242 %215
%250 = OpAll %bool %249
%251 = OpFOrdEqual %v2bool %243 %247
%252 = OpAll %bool %251
%253 = OpLogicalAnd %bool %250 %252
OpBranch %246
%246 = OpLabel
%254 = OpPhi %bool %false %222 %253 %245
OpStore %ok %254
OpStore %m_3 %257
%260 = OpMatrixTimesMatrix %mat2v2float %257 %259
OpStore %m_3 %260
OpSelectionMerge %262 None
OpBranchConditional %254 %261 %262
%261 = OpLabel
%268 = OpCompositeExtract %v2float %260 0
%269 = OpFOrdEqual %v2bool %268 %265
%270 = OpAll %bool %269
%271 = OpCompositeExtract %v2float %260 1
%272 = OpFOrdEqual %v2bool %271 %266
%273 = OpAll %bool %272
%274 = OpLogicalAnd %bool %270 %273
OpBranch %262
%262 = OpLabel
%275 = OpPhi %bool %false %246 %274 %261
OpStore %ok %275
OpStore %m_4 %280
%285 = OpMatrixTimesMatrix %mat3v3float %280 %284
OpStore %m_4 %285
OpSelectionMerge %287 None
OpBranchConditional %275 %286 %287
%286 = OpLabel
%301 = OpCompositeExtract %v3float %285 0
%302 = OpFOrdEqual %v3bool %301 %297
%303 = OpAll %bool %302
%304 = OpCompositeExtract %v3float %285 1
%305 = OpFOrdEqual %v3bool %304 %298
%306 = OpAll %bool %305
%307 = OpLogicalAnd %bool %303 %306
%308 = OpCompositeExtract %v3float %285 2
%309 = OpFOrdEqual %v3bool %308 %299
%310 = OpAll %bool %309
%311 = OpLogicalAnd %bool %307 %310
OpBranch %287
%287 = OpLabel
%312 = OpPhi %bool %false %262 %311 %286
OpStore %ok %312
OpReturnValue %312
OpFunctionEnd
%main = OpFunction %v4float None %313
%314 = OpFunctionParameter %_ptr_Function_v2float
%315 = OpLabel
%_0_ok = OpVariable %_ptr_Function_bool Function
%_1_splat_4 = OpVariable %_ptr_Function_mat3v3float Function
%_2_splat_2 = OpVariable %_ptr_Function_mat3v3float Function
%_3_m = OpVariable %_ptr_Function_mat3v3float Function
%_4_m = OpVariable %_ptr_Function_mat4v4float Function
%_5_m = OpVariable %_ptr_Function_mat2v2float Function
%_6_m = OpVariable %_ptr_Function_mat2v2float Function
%_7_m = OpVariable %_ptr_Function_mat2v2float Function
%_8_m = OpVariable %_ptr_Function_mat3v3float Function
%486 = OpVariable %_ptr_Function_v4float Function
OpStore %_0_ok %true
OpStore %_1_splat_4 %35
OpStore %_2_splat_2 %39
OpStore %_3_m %44
%320 = OpFAdd %v3float %41 %34
%321 = OpFAdd %v3float %42 %34
%322 = OpFAdd %v3float %43 %34
%323 = OpCompositeConstruct %mat3v3float %320 %321 %322
OpStore %_3_m %323
OpSelectionMerge %325 None
OpBranchConditional %true %324 %325
%324 = OpLabel
%326 = OpFOrdEqual %v3bool %320 %53
%327 = OpAll %bool %326
%328 = OpFOrdEqual %v3bool %321 %54
%329 = OpAll %bool %328
%330 = OpLogicalAnd %bool %327 %329
%331 = OpFOrdEqual %v3bool %322 %55
%332 = OpAll %bool %331
%333 = OpLogicalAnd %bool %330 %332
OpBranch %325
%325 = OpLabel
%334 = OpPhi %bool %false %315 %333 %324
OpStore %_0_ok %334
OpStore %_3_m %44
%335 = OpFSub %v3float %41 %34
%336 = OpFSub %v3float %42 %34
%337 = OpFSub %v3float %43 %34
%338 = OpCompositeConstruct %mat3v3float %335 %336 %337
OpStore %_3_m %338
OpSelectionMerge %340 None
OpBranchConditional %334 %339 %340
%339 = OpLabel
%341 = OpFOrdEqual %v3bool %335 %75
%342 = OpAll %bool %341
%343 = OpFOrdEqual %v3bool %336 %76
%344 = OpAll %bool %343
%345 = OpLogicalAnd %bool %342 %344
%346 = OpFOrdEqual %v3bool %337 %77
%347 = OpAll %bool %346
%348 = OpLogicalAnd %bool %345 %347
OpBranch %340
%340 = OpLabel
%349 = OpPhi %bool %false %325 %348 %339
OpStore %_0_ok %349
OpStore %_3_m %44
%350 = OpFDiv %v3float %41 %34
%351 = OpFDiv %v3float %42 %34
%352 = OpFDiv %v3float %43 %34
%353 = OpCompositeConstruct %mat3v3float %350 %351 %352
OpStore %_3_m %353
OpSelectionMerge %355 None
OpBranchConditional %349 %354 %355
%354 = OpLabel
%356 = OpFOrdEqual %v3bool %350 %95
%357 = OpAll %bool %356
%358 = OpFOrdEqual %v3bool %351 %96
%359 = OpAll %bool %358
%360 = OpLogicalAnd %bool %357 %359
%361 = OpFOrdEqual %v3bool %352 %97
%362 = OpAll %bool %361
%363 = OpLogicalAnd %bool %360 %362
OpBranch %355
%355 = OpLabel
%364 = OpPhi %bool %false %340 %363 %354
OpStore %_0_ok %364
OpStore %_3_m %35
%365 = OpFAdd %v3float %34 %41
%366 = OpFAdd %v3float %34 %42
%367 = OpFAdd %v3float %34 %43
%368 = OpCompositeConstruct %mat3v3float %365 %366 %367
OpStore %_3_m %368
OpSelectionMerge %370 None
OpBranchConditional %364 %369 %370
%369 = OpLabel
%371 = OpFOrdEqual %v3bool %365 %53
%372 = OpAll %bool %371
%373 = OpFOrdEqual %v3bool %366 %54
%374 = OpAll %bool %373
%375 = OpLogicalAnd %bool %372 %374
%376 = OpFOrdEqual %v3bool %367 %55
%377 = OpAll %bool %376
%378 = OpLogicalAnd %bool %375 %377
OpBranch %370
%370 = OpLabel
%379 = OpPhi %bool %false %355 %378 %369
OpStore %_0_ok %379
OpStore %_3_m %35
%380 = OpFSub %v3float %34 %41
%381 = OpFSub %v3float %34 %42
%382 = OpFSub %v3float %34 %43
%383 = OpCompositeConstruct %mat3v3float %380 %381 %382
OpStore %_3_m %383
OpSelectionMerge %385 None
OpBranchConditional %379 %384 %385
%384 = OpLabel
%386 = OpFOrdEqual %v3bool %380 %129
%387 = OpAll %bool %386
%388 = OpFOrdEqual %v3bool %381 %130
%389 = OpAll %bool %388
%390 = OpLogicalAnd %bool %387 %389
%391 = OpFOrdEqual %v3bool %382 %131
%392 = OpAll %bool %391
%393 = OpLogicalAnd %bool %390 %392
OpBranch %385
%385 = OpLabel
%394 = OpPhi %bool %false %370 %393 %384
OpStore %_0_ok %394
OpStore %_3_m %35
%395 = OpFDiv %v3float %34 %38
%396 = OpFDiv %v3float %34 %38
%397 = OpFDiv %v3float %34 %38
%398 = OpCompositeConstruct %mat3v3float %395 %396 %397
OpStore %_3_m %398
OpSelectionMerge %400 None
OpBranchConditional %394 %399 %400
%399 = OpLabel
%401 = OpFOrdEqual %v3bool %395 %38
%402 = OpAll %bool %401
%403 = OpFOrdEqual %v3bool %396 %38
%404 = OpAll %bool %403
%405 = OpLogicalAnd %bool %402 %404
%406 = OpFOrdEqual %v3bool %397 %38
%407 = OpAll %bool %406
%408 = OpLogicalAnd %bool %405 %407
OpBranch %400
%400 = OpLabel
%409 = OpPhi %bool %false %385 %408 %399
OpStore %_0_ok %409
OpStore %_4_m %177
%411 = OpFAdd %v4float %173 %178
%412 = OpFAdd %v4float %174 %179
%413 = OpFAdd %v4float %175 %180
%414 = OpFAdd %v4float %176 %181
%415 = OpCompositeConstruct %mat4v4float %411 %412 %413 %414
OpStore %_4_m %415
OpSelectionMerge %417 None
OpBranchConditional %409 %416 %417
%416 = OpLabel
%418 = OpFOrdEqual %v4bool %411 %191
%419 = OpAll %bool %418
%420 = OpFOrdEqual %v4bool %412 %191
%421 = OpAll %bool %420
%422 = OpLogicalAnd %bool %419 %421
%423 = OpFOrdEqual %v4bool %413 %191
%424 = OpAll %bool %423
%425 = OpLogicalAnd %bool %422 %424
%426 = OpFOrdEqual %v4bool %414 %191
%427 = OpAll %bool %426
%428 = OpLogicalAnd %bool %425 %427
OpBranch %417
%417 = OpLabel
%429 = OpPhi %bool %false %400 %428 %416
OpStore %_0_ok %429
OpStore %_5_m %214
%431 = OpFSub %v2float %212 %215
%432 = OpFSub %v2float %213 %216
%433 = OpCompositeConstruct %mat2v2float %431 %432
OpStore %_5_m %433
OpSelectionMerge %435 None
OpBranchConditional %429 %434 %435
%434 = OpLabel
%436 = OpFOrdEqual %v2bool %431 %226
%437 = OpAll %bool %436
%438 = OpFOrdEqual %v2bool %432 %227
%439 = OpAll %bool %438
%440 = OpLogicalAnd %bool %437 %439
OpBranch %435
%435 = OpLabel
%441 = OpPhi %bool %false %417 %440 %434
OpStore %_0_ok %441
OpStore %_6_m %239
%443 = OpFDiv %v2float %237 %240
%444 = OpFDiv %v2float %238 %237
%445 = OpCompositeConstruct %mat2v2float %443 %444
OpStore %_6_m %445
OpSelectionMerge %447 None
OpBranchConditional %441 %446 %447
%446 = OpLabel
%448 = OpFOrdEqual %v2bool %443 %215
%449 = OpAll %bool %448
%450 = OpFOrdEqual %v2bool %444 %247
%451 = OpAll %bool %450
%452 = OpLogicalAnd %bool %449 %451
OpBranch %447
%447 = OpLabel
%453 = OpPhi %bool %false %435 %452 %446
OpStore %_0_ok %453
OpStore %_7_m %257
%455 = OpMatrixTimesMatrix %mat2v2float %257 %259
OpStore %_7_m %455
OpSelectionMerge %457 None
OpBranchConditional %453 %456 %457
%456 = OpLabel
%458 = OpCompositeExtract %v2float %455 0
%459 = OpFOrdEqual %v2bool %458 %265
%460 = OpAll %bool %459
%461 = OpCompositeExtract %v2float %455 1
%462 = OpFOrdEqual %v2bool %461 %266
%463 = OpAll %bool %462
%464 = OpLogicalAnd %bool %460 %463
OpBranch %457
%457 = OpLabel
%465 = OpPhi %bool %false %447 %464 %456
OpStore %_0_ok %465
OpStore %_8_m %280
%467 = OpMatrixTimesMatrix %mat3v3float %280 %284
OpStore %_8_m %467
OpSelectionMerge %469 None
OpBranchConditional %465 %468 %469
%468 = OpLabel
%470 = OpCompositeExtract %v3float %467 0
%471 = OpFOrdEqual %v3bool %470 %297
%472 = OpAll %bool %471
%473 = OpCompositeExtract %v3float %467 1
%474 = OpFOrdEqual %v3bool %473 %298
%475 = OpAll %bool %474
%476 = OpLogicalAnd %bool %472 %475
%477 = OpCompositeExtract %v3float %467 2
%478 = OpFOrdEqual %v3bool %477 %299
%479 = OpAll %bool %478
%480 = OpLogicalAnd %bool %476 %479
OpBranch %469
%469 = OpLabel
%481 = OpPhi %bool %false %457 %480 %468
OpStore %_0_ok %481
OpSelectionMerge %483 None
OpBranchConditional %481 %482 %483
%482 = OpLabel
%484 = OpFunctionCall %bool %test_matrix_op_matrix_half_b
OpBranch %483
%483 = OpLabel
%485 = OpPhi %bool %false %469 %484 %482
OpSelectionMerge %490 None
OpBranchConditional %485 %488 %489
%488 = OpLabel
%491 = OpAccessChain %_ptr_Uniform_v4float %11 %int_1
%495 = OpLoad %v4float %491
OpStore %486 %495
OpBranch %490
%489 = OpLabel
%496 = OpAccessChain %_ptr_Uniform_v4float %11 %int_0
%498 = OpLoad %v4float %496
OpStore %486 %498
OpBranch %490
%490 = OpLabel
%499 = OpLoad %v4float %486
OpReturnValue %499
OpFunctionEnd
