blob: c500ab1af84a32149826252f25ea68b2fdfbe4e5 [file] [log] [blame]
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 "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 %m "m"
OpName %splat_4_0 "splat_4"
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_m "_2_m"
OpName %_3_splat_4 "_3_splat_4"
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_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 %8 Binding 0
OpDecorate %8 DescriptorSet 0
OpDecorate %splat_4 RelaxedPrecision
OpDecorate %m RelaxedPrecision
OpDecorate %38 RelaxedPrecision
OpDecorate %39 RelaxedPrecision
OpDecorate %40 RelaxedPrecision
OpDecorate %41 RelaxedPrecision
OpDecorate %50 RelaxedPrecision
OpDecorate %52 RelaxedPrecision
OpDecorate %55 RelaxedPrecision
OpDecorate %59 RelaxedPrecision
OpDecorate %60 RelaxedPrecision
OpDecorate %61 RelaxedPrecision
OpDecorate %62 RelaxedPrecision
OpDecorate %71 RelaxedPrecision
OpDecorate %73 RelaxedPrecision
OpDecorate %76 RelaxedPrecision
OpDecorate %80 RelaxedPrecision
OpDecorate %81 RelaxedPrecision
OpDecorate %82 RelaxedPrecision
OpDecorate %83 RelaxedPrecision
OpDecorate %90 RelaxedPrecision
OpDecorate %92 RelaxedPrecision
OpDecorate %95 RelaxedPrecision
OpDecorate %splat_4_0 RelaxedPrecision
OpDecorate %m_0 RelaxedPrecision
OpDecorate %109 RelaxedPrecision
OpDecorate %110 RelaxedPrecision
OpDecorate %111 RelaxedPrecision
OpDecorate %118 RelaxedPrecision
OpDecorate %120 RelaxedPrecision
OpDecorate %124 RelaxedPrecision
OpDecorate %125 RelaxedPrecision
OpDecorate %126 RelaxedPrecision
OpDecorate %132 RelaxedPrecision
OpDecorate %134 RelaxedPrecision
OpDecorate %140 RelaxedPrecision
OpDecorate %141 RelaxedPrecision
OpDecorate %142 RelaxedPrecision
OpDecorate %145 RelaxedPrecision
OpDecorate %147 RelaxedPrecision
OpDecorate %m_1 RelaxedPrecision
OpDecorate %177 RelaxedPrecision
OpDecorate %178 RelaxedPrecision
OpDecorate %179 RelaxedPrecision
OpDecorate %180 RelaxedPrecision
OpDecorate %181 RelaxedPrecision
OpDecorate %187 RelaxedPrecision
OpDecorate %189 RelaxedPrecision
OpDecorate %192 RelaxedPrecision
OpDecorate %195 RelaxedPrecision
OpDecorate %m_2 RelaxedPrecision
OpDecorate %219 RelaxedPrecision
OpDecorate %220 RelaxedPrecision
OpDecorate %221 RelaxedPrecision
OpDecorate %222 RelaxedPrecision
OpDecorate %223 RelaxedPrecision
OpDecorate %238 RelaxedPrecision
OpDecorate %240 RelaxedPrecision
OpDecorate %243 RelaxedPrecision
OpDecorate %246 RelaxedPrecision
OpDecorate %m_3 RelaxedPrecision
OpDecorate %258 RelaxedPrecision
OpDecorate %259 RelaxedPrecision
OpDecorate %260 RelaxedPrecision
OpDecorate %267 RelaxedPrecision
OpDecorate %269 RelaxedPrecision
OpDecorate %m_4 RelaxedPrecision
OpDecorate %281 RelaxedPrecision
OpDecorate %292 RelaxedPrecision
OpDecorate %293 RelaxedPrecision
OpDecorate %295 RelaxedPrecision
OpDecorate %296 RelaxedPrecision
OpDecorate %463 RelaxedPrecision
OpDecorate %466 RelaxedPrecision
OpDecorate %467 RelaxedPrecision
%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
%8 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
%void = OpTypeVoid
%13 = OpTypeFunction %void
%float_0 = OpConstant %float 0
%v2float = OpTypeVector %float 2
%17 = OpConstantComposite %v2float %float_0 %float_0
%_ptr_Function_v2float = OpTypePointer Function %v2float
%bool = OpTypeBool
%22 = OpTypeFunction %bool
%_ptr_Function_bool = OpTypePointer Function %bool
%true = OpConstantTrue %bool
%mat3v2float = OpTypeMatrix %v2float 3
%_ptr_Function_mat3v2float = OpTypePointer Function %mat3v2float
%float_4 = OpConstant %float 4
%31 = OpConstantComposite %v2float %float_4 %float_4
%32 = OpConstantComposite %mat3v2float %31 %31 %31
%float_2 = OpConstant %float 2
%35 = OpConstantComposite %v2float %float_2 %float_0
%36 = OpConstantComposite %v2float %float_0 %float_2
%37 = OpConstantComposite %mat3v2float %35 %36 %17
%false = OpConstantFalse %bool
%float_6 = OpConstant %float 6
%46 = OpConstantComposite %v2float %float_6 %float_4
%47 = OpConstantComposite %v2float %float_4 %float_6
%48 = OpConstantComposite %mat3v2float %46 %47 %31
%v2bool = OpTypeVector %bool 2
%float_n2 = OpConstant %float -2
%float_n4 = OpConstant %float -4
%67 = OpConstantComposite %v2float %float_n2 %float_n4
%68 = OpConstantComposite %v2float %float_n4 %float_n2
%69 = OpConstantComposite %v2float %float_n4 %float_n4
%70 = OpConstantComposite %mat3v2float %67 %68 %69
%float_0_5 = OpConstant %float 0.5
%87 = OpConstantComposite %v2float %float_0_5 %float_0
%88 = OpConstantComposite %v2float %float_0 %float_0_5
%89 = OpConstantComposite %mat3v2float %87 %88 %17
%v3float = OpTypeVector %float 3
%mat2v3float = OpTypeMatrix %v3float 2
%_ptr_Function_mat2v3float = OpTypePointer Function %mat2v3float
%103 = OpConstantComposite %v3float %float_4 %float_4 %float_4
%104 = OpConstantComposite %mat2v3float %103 %103
%106 = OpConstantComposite %v3float %float_2 %float_0 %float_0
%107 = OpConstantComposite %v3float %float_0 %float_2 %float_0
%108 = OpConstantComposite %mat2v3float %106 %107
%114 = OpConstantComposite %v3float %float_6 %float_4 %float_4
%115 = OpConstantComposite %v3float %float_4 %float_6 %float_4
%116 = OpConstantComposite %mat2v3float %114 %115
%v3bool = OpTypeVector %bool 3
%129 = OpConstantComposite %v3float %float_2 %float_4 %float_4
%130 = OpConstantComposite %v3float %float_4 %float_2 %float_4
%131 = OpConstantComposite %mat2v3float %129 %130
%138 = OpConstantComposite %v3float %float_2 %float_2 %float_2
%139 = OpConstantComposite %mat2v3float %138 %138
%mat4v3float = OpTypeMatrix %v3float 4
%_ptr_Function_mat4v3float = OpTypePointer Function %mat4v3float
%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
%163 = OpConstantComposite %v3float %float_1 %float_2 %float_3
%164 = OpConstantComposite %v3float %float_4 %float_5 %float_6
%165 = OpConstantComposite %v3float %float_7 %float_8 %float_9
%166 = OpConstantComposite %v3float %float_10 %float_11 %float_12
%167 = OpConstantComposite %mat4v3float %163 %164 %165 %166
%float_16 = OpConstant %float 16
%float_15 = OpConstant %float 15
%float_14 = OpConstant %float 14
%float_13 = OpConstant %float 13
%172 = OpConstantComposite %v3float %float_16 %float_15 %float_14
%173 = OpConstantComposite %v3float %float_13 %float_12 %float_11
%174 = OpConstantComposite %v3float %float_10 %float_9 %float_8
%175 = OpConstantComposite %v3float %float_7 %float_6 %float_5
%176 = OpConstantComposite %mat4v3float %172 %173 %174 %175
%float_17 = OpConstant %float 17
%185 = OpConstantComposite %v3float %float_17 %float_17 %float_17
%186 = OpConstantComposite %mat4v3float %185 %185 %185 %185
%mat4v2float = OpTypeMatrix %v2float 4
%_ptr_Function_mat4v2float = OpTypePointer Function %mat4v2float
%float_20 = OpConstant %float 20
%float_30 = OpConstant %float 30
%float_40 = OpConstant %float 40
%float_50 = OpConstant %float 50
%float_60 = OpConstant %float 60
%float_70 = OpConstant %float 70
%float_80 = OpConstant %float 80
%209 = OpConstantComposite %v2float %float_10 %float_20
%210 = OpConstantComposite %v2float %float_30 %float_40
%211 = OpConstantComposite %v2float %float_50 %float_60
%212 = OpConstantComposite %v2float %float_70 %float_80
%213 = OpConstantComposite %mat4v2float %209 %210 %211 %212
%214 = OpConstantComposite %v2float %float_1 %float_2
%215 = OpConstantComposite %v2float %float_3 %float_4
%216 = OpConstantComposite %v2float %float_5 %float_6
%217 = OpConstantComposite %v2float %float_7 %float_8
%218 = OpConstantComposite %mat4v2float %214 %215 %216 %217
%float_18 = OpConstant %float 18
%float_27 = OpConstant %float 27
%float_36 = OpConstant %float 36
%float_45 = OpConstant %float 45
%float_54 = OpConstant %float 54
%float_63 = OpConstant %float 63
%float_72 = OpConstant %float 72
%233 = OpConstantComposite %v2float %float_9 %float_18
%234 = OpConstantComposite %v2float %float_27 %float_36
%235 = OpConstantComposite %v2float %float_45 %float_54
%236 = OpConstantComposite %v2float %float_63 %float_72
%237 = OpConstantComposite %mat4v2float %233 %234 %235 %236
%mat2v4float = OpTypeMatrix %v4float 2
%_ptr_Function_mat2v4float = OpTypePointer Function %mat2v4float
%253 = OpConstantComposite %v4float %float_10 %float_20 %float_30 %float_40
%254 = OpConstantComposite %mat2v4float %253 %253
%255 = OpConstantComposite %v4float %float_10 %float_10 %float_10 %float_10
%256 = OpConstantComposite %v4float %float_5 %float_5 %float_5 %float_5
%257 = OpConstantComposite %mat2v4float %255 %256
%263 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
%264 = OpConstantComposite %v4float %float_2 %float_4 %float_6 %float_8
%265 = OpConstantComposite %mat2v4float %263 %264
%v4bool = OpTypeVector %bool 4
%274 = OpConstantComposite %v3float %float_7 %float_9 %float_11
%275 = OpConstantComposite %v3float %float_8 %float_10 %float_12
%276 = OpConstantComposite %mat2v3float %274 %275
%277 = OpConstantComposite %v2float %float_1 %float_4
%278 = OpConstantComposite %v2float %float_2 %float_5
%mat2v2float = OpTypeMatrix %v2float 2
%280 = OpConstantComposite %mat2v2float %277 %278
%float_39 = OpConstant %float 39
%float_49 = OpConstant %float 49
%float_59 = OpConstant %float 59
%float_68 = OpConstant %float 68
%float_82 = OpConstant %float 82
%289 = OpConstantComposite %v3float %float_39 %float_49 %float_59
%290 = OpConstantComposite %v3float %float_54 %float_68 %float_82
%291 = OpConstantComposite %mat2v3float %289 %290
%300 = 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 %13
%14 = OpLabel
%18 = OpVariable %_ptr_Function_v2float Function
OpStore %18 %17
%20 = OpFunctionCall %v4float %main %18
OpStore %sk_FragColor %20
OpReturn
OpFunctionEnd
%test_matrix_op_matrix_half_b = OpFunction %bool None %22
%23 = OpLabel
%ok = OpVariable %_ptr_Function_bool Function
%splat_4 = OpVariable %_ptr_Function_mat3v2float Function
%m = OpVariable %_ptr_Function_mat3v2float Function
%splat_4_0 = OpVariable %_ptr_Function_mat2v3float Function
%m_0 = OpVariable %_ptr_Function_mat2v3float Function
%m_1 = OpVariable %_ptr_Function_mat4v3float Function
%m_2 = OpVariable %_ptr_Function_mat4v2float Function
%m_3 = OpVariable %_ptr_Function_mat2v4float Function
%m_4 = OpVariable %_ptr_Function_mat2v3float Function
OpStore %ok %true
OpStore %splat_4 %32
OpStore %m %37
%38 = OpFAdd %v2float %35 %31
%39 = OpFAdd %v2float %36 %31
%40 = OpFAdd %v2float %17 %31
%41 = OpCompositeConstruct %mat3v2float %38 %39 %40
OpStore %m %41
OpSelectionMerge %44 None
OpBranchConditional %true %43 %44
%43 = OpLabel
%50 = OpFOrdEqual %v2bool %38 %46
%51 = OpAll %bool %50
%52 = OpFOrdEqual %v2bool %39 %47
%53 = OpAll %bool %52
%54 = OpLogicalAnd %bool %51 %53
%55 = OpFOrdEqual %v2bool %40 %31
%56 = OpAll %bool %55
%57 = OpLogicalAnd %bool %54 %56
OpBranch %44
%44 = OpLabel
%58 = OpPhi %bool %false %23 %57 %43
OpStore %ok %58
OpStore %m %37
%59 = OpFSub %v2float %35 %31
%60 = OpFSub %v2float %36 %31
%61 = OpFSub %v2float %17 %31
%62 = OpCompositeConstruct %mat3v2float %59 %60 %61
OpStore %m %62
OpSelectionMerge %64 None
OpBranchConditional %58 %63 %64
%63 = OpLabel
%71 = OpFOrdEqual %v2bool %59 %67
%72 = OpAll %bool %71
%73 = OpFOrdEqual %v2bool %60 %68
%74 = OpAll %bool %73
%75 = OpLogicalAnd %bool %72 %74
%76 = OpFOrdEqual %v2bool %61 %69
%77 = OpAll %bool %76
%78 = OpLogicalAnd %bool %75 %77
OpBranch %64
%64 = OpLabel
%79 = OpPhi %bool %false %44 %78 %63
OpStore %ok %79
OpStore %m %37
%80 = OpFDiv %v2float %35 %31
%81 = OpFDiv %v2float %36 %31
%82 = OpFDiv %v2float %17 %31
%83 = OpCompositeConstruct %mat3v2float %80 %81 %82
OpStore %m %83
OpSelectionMerge %85 None
OpBranchConditional %79 %84 %85
%84 = OpLabel
%90 = OpFOrdEqual %v2bool %80 %87
%91 = OpAll %bool %90
%92 = OpFOrdEqual %v2bool %81 %88
%93 = OpAll %bool %92
%94 = OpLogicalAnd %bool %91 %93
%95 = OpFOrdEqual %v2bool %82 %17
%96 = OpAll %bool %95
%97 = OpLogicalAnd %bool %94 %96
OpBranch %85
%85 = OpLabel
%98 = OpPhi %bool %false %64 %97 %84
OpStore %ok %98
OpStore %splat_4_0 %104
OpStore %m_0 %104
%109 = OpFAdd %v3float %103 %106
%110 = OpFAdd %v3float %103 %107
%111 = OpCompositeConstruct %mat2v3float %109 %110
OpStore %m_0 %111
OpSelectionMerge %113 None
OpBranchConditional %98 %112 %113
%112 = OpLabel
%118 = OpFOrdEqual %v3bool %109 %114
%119 = OpAll %bool %118
%120 = OpFOrdEqual %v3bool %110 %115
%121 = OpAll %bool %120
%122 = OpLogicalAnd %bool %119 %121
OpBranch %113
%113 = OpLabel
%123 = OpPhi %bool %false %85 %122 %112
OpStore %ok %123
OpStore %m_0 %104
%124 = OpFSub %v3float %103 %106
%125 = OpFSub %v3float %103 %107
%126 = OpCompositeConstruct %mat2v3float %124 %125
OpStore %m_0 %126
OpSelectionMerge %128 None
OpBranchConditional %123 %127 %128
%127 = OpLabel
%132 = OpFOrdEqual %v3bool %124 %129
%133 = OpAll %bool %132
%134 = OpFOrdEqual %v3bool %125 %130
%135 = OpAll %bool %134
%136 = OpLogicalAnd %bool %133 %135
OpBranch %128
%128 = OpLabel
%137 = OpPhi %bool %false %113 %136 %127
OpStore %ok %137
OpStore %m_0 %104
%140 = OpFDiv %v3float %103 %138
%141 = OpFDiv %v3float %103 %138
%142 = OpCompositeConstruct %mat2v3float %140 %141
OpStore %m_0 %142
OpSelectionMerge %144 None
OpBranchConditional %137 %143 %144
%143 = OpLabel
%145 = OpFOrdEqual %v3bool %140 %138
%146 = OpAll %bool %145
%147 = OpFOrdEqual %v3bool %141 %138
%148 = OpAll %bool %147
%149 = OpLogicalAnd %bool %146 %148
OpBranch %144
%144 = OpLabel
%150 = OpPhi %bool %false %128 %149 %143
OpStore %ok %150
OpStore %m_1 %167
%177 = OpFAdd %v3float %163 %172
%178 = OpFAdd %v3float %164 %173
%179 = OpFAdd %v3float %165 %174
%180 = OpFAdd %v3float %166 %175
%181 = OpCompositeConstruct %mat4v3float %177 %178 %179 %180
OpStore %m_1 %181
OpSelectionMerge %183 None
OpBranchConditional %150 %182 %183
%182 = OpLabel
%187 = OpFOrdEqual %v3bool %177 %185
%188 = OpAll %bool %187
%189 = OpFOrdEqual %v3bool %178 %185
%190 = OpAll %bool %189
%191 = OpLogicalAnd %bool %188 %190
%192 = OpFOrdEqual %v3bool %179 %185
%193 = OpAll %bool %192
%194 = OpLogicalAnd %bool %191 %193
%195 = OpFOrdEqual %v3bool %180 %185
%196 = OpAll %bool %195
%197 = OpLogicalAnd %bool %194 %196
OpBranch %183
%183 = OpLabel
%198 = OpPhi %bool %false %144 %197 %182
OpStore %ok %198
OpStore %m_2 %213
%219 = OpFSub %v2float %209 %214
%220 = OpFSub %v2float %210 %215
%221 = OpFSub %v2float %211 %216
%222 = OpFSub %v2float %212 %217
%223 = OpCompositeConstruct %mat4v2float %219 %220 %221 %222
OpStore %m_2 %223
OpSelectionMerge %225 None
OpBranchConditional %198 %224 %225
%224 = OpLabel
%238 = OpFOrdEqual %v2bool %219 %233
%239 = OpAll %bool %238
%240 = OpFOrdEqual %v2bool %220 %234
%241 = OpAll %bool %240
%242 = OpLogicalAnd %bool %239 %241
%243 = OpFOrdEqual %v2bool %221 %235
%244 = OpAll %bool %243
%245 = OpLogicalAnd %bool %242 %244
%246 = OpFOrdEqual %v2bool %222 %236
%247 = OpAll %bool %246
%248 = OpLogicalAnd %bool %245 %247
OpBranch %225
%225 = OpLabel
%249 = OpPhi %bool %false %183 %248 %224
OpStore %ok %249
OpStore %m_3 %254
%258 = OpFDiv %v4float %253 %255
%259 = OpFDiv %v4float %253 %256
%260 = OpCompositeConstruct %mat2v4float %258 %259
OpStore %m_3 %260
OpSelectionMerge %262 None
OpBranchConditional %249 %261 %262
%261 = OpLabel
%267 = OpFOrdEqual %v4bool %258 %263
%268 = OpAll %bool %267
%269 = OpFOrdEqual %v4bool %259 %264
%270 = OpAll %bool %269
%271 = OpLogicalAnd %bool %268 %270
OpBranch %262
%262 = OpLabel
%272 = OpPhi %bool %false %225 %271 %261
OpStore %ok %272
OpStore %m_4 %276
%281 = OpMatrixTimesMatrix %mat2v3float %276 %280
OpStore %m_4 %281
OpSelectionMerge %283 None
OpBranchConditional %272 %282 %283
%282 = OpLabel
%292 = OpCompositeExtract %v3float %281 0
%293 = OpFOrdEqual %v3bool %292 %289
%294 = OpAll %bool %293
%295 = OpCompositeExtract %v3float %281 1
%296 = OpFOrdEqual %v3bool %295 %290
%297 = OpAll %bool %296
%298 = OpLogicalAnd %bool %294 %297
OpBranch %283
%283 = OpLabel
%299 = OpPhi %bool %false %262 %298 %282
OpStore %ok %299
OpReturnValue %299
OpFunctionEnd
%main = OpFunction %v4float None %300
%301 = OpFunctionParameter %_ptr_Function_v2float
%302 = OpLabel
%_0_ok = OpVariable %_ptr_Function_bool Function
%_1_splat_4 = OpVariable %_ptr_Function_mat3v2float Function
%_2_m = OpVariable %_ptr_Function_mat3v2float Function
%_3_splat_4 = OpVariable %_ptr_Function_mat2v3float Function
%_4_m = OpVariable %_ptr_Function_mat2v3float Function
%_5_m = OpVariable %_ptr_Function_mat4v3float Function
%_6_m = OpVariable %_ptr_Function_mat4v2float Function
%_7_m = OpVariable %_ptr_Function_mat2v4float Function
%_8_m = OpVariable %_ptr_Function_mat2v3float Function
%454 = OpVariable %_ptr_Function_v4float Function
OpStore %_0_ok %true
OpStore %_1_splat_4 %32
OpStore %_2_m %37
%306 = OpFAdd %v2float %35 %31
%307 = OpFAdd %v2float %36 %31
%308 = OpFAdd %v2float %17 %31
%309 = OpCompositeConstruct %mat3v2float %306 %307 %308
OpStore %_2_m %309
OpSelectionMerge %311 None
OpBranchConditional %true %310 %311
%310 = OpLabel
%312 = OpFOrdEqual %v2bool %306 %46
%313 = OpAll %bool %312
%314 = OpFOrdEqual %v2bool %307 %47
%315 = OpAll %bool %314
%316 = OpLogicalAnd %bool %313 %315
%317 = OpFOrdEqual %v2bool %308 %31
%318 = OpAll %bool %317
%319 = OpLogicalAnd %bool %316 %318
OpBranch %311
%311 = OpLabel
%320 = OpPhi %bool %false %302 %319 %310
OpStore %_0_ok %320
OpStore %_2_m %37
%321 = OpFSub %v2float %35 %31
%322 = OpFSub %v2float %36 %31
%323 = OpFSub %v2float %17 %31
%324 = OpCompositeConstruct %mat3v2float %321 %322 %323
OpStore %_2_m %324
OpSelectionMerge %326 None
OpBranchConditional %320 %325 %326
%325 = OpLabel
%327 = OpFOrdEqual %v2bool %321 %67
%328 = OpAll %bool %327
%329 = OpFOrdEqual %v2bool %322 %68
%330 = OpAll %bool %329
%331 = OpLogicalAnd %bool %328 %330
%332 = OpFOrdEqual %v2bool %323 %69
%333 = OpAll %bool %332
%334 = OpLogicalAnd %bool %331 %333
OpBranch %326
%326 = OpLabel
%335 = OpPhi %bool %false %311 %334 %325
OpStore %_0_ok %335
OpStore %_2_m %37
%336 = OpFDiv %v2float %35 %31
%337 = OpFDiv %v2float %36 %31
%338 = OpFDiv %v2float %17 %31
%339 = OpCompositeConstruct %mat3v2float %336 %337 %338
OpStore %_2_m %339
OpSelectionMerge %341 None
OpBranchConditional %335 %340 %341
%340 = OpLabel
%342 = OpFOrdEqual %v2bool %336 %87
%343 = OpAll %bool %342
%344 = OpFOrdEqual %v2bool %337 %88
%345 = OpAll %bool %344
%346 = OpLogicalAnd %bool %343 %345
%347 = OpFOrdEqual %v2bool %338 %17
%348 = OpAll %bool %347
%349 = OpLogicalAnd %bool %346 %348
OpBranch %341
%341 = OpLabel
%350 = OpPhi %bool %false %326 %349 %340
OpStore %_0_ok %350
OpStore %_3_splat_4 %104
OpStore %_4_m %104
%353 = OpFAdd %v3float %103 %106
%354 = OpFAdd %v3float %103 %107
%355 = OpCompositeConstruct %mat2v3float %353 %354
OpStore %_4_m %355
OpSelectionMerge %357 None
OpBranchConditional %350 %356 %357
%356 = OpLabel
%358 = OpFOrdEqual %v3bool %353 %114
%359 = OpAll %bool %358
%360 = OpFOrdEqual %v3bool %354 %115
%361 = OpAll %bool %360
%362 = OpLogicalAnd %bool %359 %361
OpBranch %357
%357 = OpLabel
%363 = OpPhi %bool %false %341 %362 %356
OpStore %_0_ok %363
OpStore %_4_m %104
%364 = OpFSub %v3float %103 %106
%365 = OpFSub %v3float %103 %107
%366 = OpCompositeConstruct %mat2v3float %364 %365
OpStore %_4_m %366
OpSelectionMerge %368 None
OpBranchConditional %363 %367 %368
%367 = OpLabel
%369 = OpFOrdEqual %v3bool %364 %129
%370 = OpAll %bool %369
%371 = OpFOrdEqual %v3bool %365 %130
%372 = OpAll %bool %371
%373 = OpLogicalAnd %bool %370 %372
OpBranch %368
%368 = OpLabel
%374 = OpPhi %bool %false %357 %373 %367
OpStore %_0_ok %374
OpStore %_4_m %104
%375 = OpFDiv %v3float %103 %138
%376 = OpFDiv %v3float %103 %138
%377 = OpCompositeConstruct %mat2v3float %375 %376
OpStore %_4_m %377
OpSelectionMerge %379 None
OpBranchConditional %374 %378 %379
%378 = OpLabel
%380 = OpFOrdEqual %v3bool %375 %138
%381 = OpAll %bool %380
%382 = OpFOrdEqual %v3bool %376 %138
%383 = OpAll %bool %382
%384 = OpLogicalAnd %bool %381 %383
OpBranch %379
%379 = OpLabel
%385 = OpPhi %bool %false %368 %384 %378
OpStore %_0_ok %385
OpStore %_5_m %167
%387 = OpFAdd %v3float %163 %172
%388 = OpFAdd %v3float %164 %173
%389 = OpFAdd %v3float %165 %174
%390 = OpFAdd %v3float %166 %175
%391 = OpCompositeConstruct %mat4v3float %387 %388 %389 %390
OpStore %_5_m %391
OpSelectionMerge %393 None
OpBranchConditional %385 %392 %393
%392 = OpLabel
%394 = OpFOrdEqual %v3bool %387 %185
%395 = OpAll %bool %394
%396 = OpFOrdEqual %v3bool %388 %185
%397 = OpAll %bool %396
%398 = OpLogicalAnd %bool %395 %397
%399 = OpFOrdEqual %v3bool %389 %185
%400 = OpAll %bool %399
%401 = OpLogicalAnd %bool %398 %400
%402 = OpFOrdEqual %v3bool %390 %185
%403 = OpAll %bool %402
%404 = OpLogicalAnd %bool %401 %403
OpBranch %393
%393 = OpLabel
%405 = OpPhi %bool %false %379 %404 %392
OpStore %_0_ok %405
OpStore %_6_m %213
%407 = OpFSub %v2float %209 %214
%408 = OpFSub %v2float %210 %215
%409 = OpFSub %v2float %211 %216
%410 = OpFSub %v2float %212 %217
%411 = OpCompositeConstruct %mat4v2float %407 %408 %409 %410
OpStore %_6_m %411
OpSelectionMerge %413 None
OpBranchConditional %405 %412 %413
%412 = OpLabel
%414 = OpFOrdEqual %v2bool %407 %233
%415 = OpAll %bool %414
%416 = OpFOrdEqual %v2bool %408 %234
%417 = OpAll %bool %416
%418 = OpLogicalAnd %bool %415 %417
%419 = OpFOrdEqual %v2bool %409 %235
%420 = OpAll %bool %419
%421 = OpLogicalAnd %bool %418 %420
%422 = OpFOrdEqual %v2bool %410 %236
%423 = OpAll %bool %422
%424 = OpLogicalAnd %bool %421 %423
OpBranch %413
%413 = OpLabel
%425 = OpPhi %bool %false %393 %424 %412
OpStore %_0_ok %425
OpStore %_7_m %254
%427 = OpFDiv %v4float %253 %255
%428 = OpFDiv %v4float %253 %256
%429 = OpCompositeConstruct %mat2v4float %427 %428
OpStore %_7_m %429
OpSelectionMerge %431 None
OpBranchConditional %425 %430 %431
%430 = OpLabel
%432 = OpFOrdEqual %v4bool %427 %263
%433 = OpAll %bool %432
%434 = OpFOrdEqual %v4bool %428 %264
%435 = OpAll %bool %434
%436 = OpLogicalAnd %bool %433 %435
OpBranch %431
%431 = OpLabel
%437 = OpPhi %bool %false %413 %436 %430
OpStore %_0_ok %437
OpStore %_8_m %276
%439 = OpMatrixTimesMatrix %mat2v3float %276 %280
OpStore %_8_m %439
OpSelectionMerge %441 None
OpBranchConditional %437 %440 %441
%440 = OpLabel
%442 = OpCompositeExtract %v3float %439 0
%443 = OpFOrdEqual %v3bool %442 %289
%444 = OpAll %bool %443
%445 = OpCompositeExtract %v3float %439 1
%446 = OpFOrdEqual %v3bool %445 %290
%447 = OpAll %bool %446
%448 = OpLogicalAnd %bool %444 %447
OpBranch %441
%441 = OpLabel
%449 = OpPhi %bool %false %431 %448 %440
OpStore %_0_ok %449
OpSelectionMerge %451 None
OpBranchConditional %449 %450 %451
%450 = OpLabel
%452 = OpFunctionCall %bool %test_matrix_op_matrix_half_b
OpBranch %451
%451 = OpLabel
%453 = OpPhi %bool %false %441 %452 %450
OpSelectionMerge %458 None
OpBranchConditional %453 %456 %457
%456 = OpLabel
%459 = OpAccessChain %_ptr_Uniform_v4float %8 %int_1
%463 = OpLoad %v4float %459
OpStore %454 %463
OpBranch %458
%457 = OpLabel
%464 = OpAccessChain %_ptr_Uniform_v4float %8 %int_0
%466 = OpLoad %v4float %464
OpStore %454 %466
OpBranch %458
%458 = OpLabel
%467 = OpLoad %v4float %454
OpReturnValue %467
OpFunctionEnd