blob: b58711a615b4b3139da28de59411532f6582e1a4 [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 %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_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 %splat_2 RelaxedPrecision
OpDecorate %m RelaxedPrecision
OpDecorate %43 RelaxedPrecision
OpDecorate %44 RelaxedPrecision
OpDecorate %45 RelaxedPrecision
OpDecorate %46 RelaxedPrecision
OpDecorate %56 RelaxedPrecision
OpDecorate %58 RelaxedPrecision
OpDecorate %61 RelaxedPrecision
OpDecorate %65 RelaxedPrecision
OpDecorate %66 RelaxedPrecision
OpDecorate %67 RelaxedPrecision
OpDecorate %68 RelaxedPrecision
OpDecorate %77 RelaxedPrecision
OpDecorate %79 RelaxedPrecision
OpDecorate %82 RelaxedPrecision
OpDecorate %86 RelaxedPrecision
OpDecorate %87 RelaxedPrecision
OpDecorate %88 RelaxedPrecision
OpDecorate %89 RelaxedPrecision
OpDecorate %97 RelaxedPrecision
OpDecorate %99 RelaxedPrecision
OpDecorate %102 RelaxedPrecision
OpDecorate %106 RelaxedPrecision
OpDecorate %107 RelaxedPrecision
OpDecorate %108 RelaxedPrecision
OpDecorate %109 RelaxedPrecision
OpDecorate %112 RelaxedPrecision
OpDecorate %114 RelaxedPrecision
OpDecorate %117 RelaxedPrecision
OpDecorate %121 RelaxedPrecision
OpDecorate %122 RelaxedPrecision
OpDecorate %123 RelaxedPrecision
OpDecorate %124 RelaxedPrecision
OpDecorate %131 RelaxedPrecision
OpDecorate %133 RelaxedPrecision
OpDecorate %136 RelaxedPrecision
OpDecorate %140 RelaxedPrecision
OpDecorate %141 RelaxedPrecision
OpDecorate %142 RelaxedPrecision
OpDecorate %143 RelaxedPrecision
OpDecorate %146 RelaxedPrecision
OpDecorate %148 RelaxedPrecision
OpDecorate %151 RelaxedPrecision
OpDecorate %m_0 RelaxedPrecision
OpDecorate %181 RelaxedPrecision
OpDecorate %182 RelaxedPrecision
OpDecorate %183 RelaxedPrecision
OpDecorate %184 RelaxedPrecision
OpDecorate %185 RelaxedPrecision
OpDecorate %192 RelaxedPrecision
OpDecorate %194 RelaxedPrecision
OpDecorate %197 RelaxedPrecision
OpDecorate %200 RelaxedPrecision
OpDecorate %m_1 RelaxedPrecision
OpDecorate %216 RelaxedPrecision
OpDecorate %217 RelaxedPrecision
OpDecorate %218 RelaxedPrecision
OpDecorate %228 RelaxedPrecision
OpDecorate %230 RelaxedPrecision
OpDecorate %m_2 RelaxedPrecision
OpDecorate %240 RelaxedPrecision
OpDecorate %241 RelaxedPrecision
OpDecorate %242 RelaxedPrecision
OpDecorate %247 RelaxedPrecision
OpDecorate %249 RelaxedPrecision
OpDecorate %m_3 RelaxedPrecision
OpDecorate %258 RelaxedPrecision
OpDecorate %266 RelaxedPrecision
OpDecorate %267 RelaxedPrecision
OpDecorate %269 RelaxedPrecision
OpDecorate %270 RelaxedPrecision
OpDecorate %m_4 RelaxedPrecision
OpDecorate %283 RelaxedPrecision
OpDecorate %299 RelaxedPrecision
OpDecorate %300 RelaxedPrecision
OpDecorate %302 RelaxedPrecision
OpDecorate %303 RelaxedPrecision
OpDecorate %306 RelaxedPrecision
OpDecorate %307 RelaxedPrecision
OpDecorate %493 RelaxedPrecision
OpDecorate %496 RelaxedPrecision
OpDecorate %497 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
%v3float = OpTypeVector %float 3
%mat3v3float = OpTypeMatrix %v3float 3
%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
%float_4 = OpConstant %float 4
%32 = OpConstantComposite %v3float %float_4 %float_4 %float_4
%33 = OpConstantComposite %mat3v3float %32 %32 %32
%float_2 = OpConstant %float 2
%36 = OpConstantComposite %v3float %float_2 %float_2 %float_2
%37 = OpConstantComposite %mat3v3float %36 %36 %36
%39 = OpConstantComposite %v3float %float_2 %float_0 %float_0
%40 = OpConstantComposite %v3float %float_0 %float_2 %float_0
%41 = OpConstantComposite %v3float %float_0 %float_0 %float_2
%42 = OpConstantComposite %mat3v3float %39 %40 %41
%false = OpConstantFalse %bool
%float_6 = OpConstant %float 6
%51 = OpConstantComposite %v3float %float_6 %float_4 %float_4
%52 = OpConstantComposite %v3float %float_4 %float_6 %float_4
%53 = OpConstantComposite %v3float %float_4 %float_4 %float_6
%54 = OpConstantComposite %mat3v3float %51 %52 %53
%v3bool = OpTypeVector %bool 3
%float_n2 = OpConstant %float -2
%float_n4 = OpConstant %float -4
%73 = OpConstantComposite %v3float %float_n2 %float_n4 %float_n4
%74 = OpConstantComposite %v3float %float_n4 %float_n2 %float_n4
%75 = OpConstantComposite %v3float %float_n4 %float_n4 %float_n2
%76 = OpConstantComposite %mat3v3float %73 %74 %75
%float_0_5 = OpConstant %float 0.5
%93 = OpConstantComposite %v3float %float_0_5 %float_0 %float_0
%94 = OpConstantComposite %v3float %float_0 %float_0_5 %float_0
%95 = OpConstantComposite %v3float %float_0 %float_0 %float_0_5
%96 = OpConstantComposite %mat3v3float %93 %94 %95
%127 = OpConstantComposite %v3float %float_2 %float_4 %float_4
%128 = OpConstantComposite %v3float %float_4 %float_2 %float_4
%129 = OpConstantComposite %v3float %float_4 %float_4 %float_2
%130 = OpConstantComposite %mat3v3float %127 %128 %129
%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
%171 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
%172 = OpConstantComposite %v4float %float_5 %float_6 %float_7 %float_8
%173 = OpConstantComposite %v4float %float_9 %float_10 %float_11 %float_12
%174 = OpConstantComposite %v4float %float_13 %float_14 %float_15 %float_16
%175 = OpConstantComposite %mat4v4float %171 %172 %173 %174
%176 = OpConstantComposite %v4float %float_16 %float_15 %float_14 %float_13
%177 = OpConstantComposite %v4float %float_12 %float_11 %float_10 %float_9
%178 = OpConstantComposite %v4float %float_8 %float_7 %float_6 %float_5
%179 = OpConstantComposite %v4float %float_4 %float_3 %float_2 %float_1
%180 = OpConstantComposite %mat4v4float %176 %177 %178 %179
%float_17 = OpConstant %float 17
%189 = OpConstantComposite %v4float %float_17 %float_17 %float_17 %float_17
%190 = OpConstantComposite %mat4v4float %189 %189 %189 %189
%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
%210 = OpConstantComposite %v2float %float_10 %float_20
%211 = OpConstantComposite %v2float %float_30 %float_40
%212 = OpConstantComposite %mat2v2float %210 %211
%213 = OpConstantComposite %v2float %float_1 %float_2
%214 = OpConstantComposite %v2float %float_3 %float_4
%215 = OpConstantComposite %mat2v2float %213 %214
%float_18 = OpConstant %float 18
%float_27 = OpConstant %float 27
%float_36 = OpConstant %float 36
%224 = OpConstantComposite %v2float %float_9 %float_18
%225 = OpConstantComposite %v2float %float_27 %float_36
%226 = OpConstantComposite %mat2v2float %224 %225
%v2bool = OpTypeVector %bool 2
%235 = OpConstantComposite %v2float %float_2 %float_4
%236 = OpConstantComposite %v2float %float_6 %float_8
%237 = OpConstantComposite %mat2v2float %235 %236
%238 = OpConstantComposite %v2float %float_2 %float_2
%239 = OpConstantComposite %mat2v2float %238 %235
%245 = OpConstantComposite %v2float %float_3 %float_2
%246 = OpConstantComposite %mat2v2float %213 %245
%254 = OpConstantComposite %v2float %float_7 %float_4
%255 = OpConstantComposite %mat2v2float %213 %254
%256 = OpConstantComposite %v2float %float_3 %float_5
%257 = OpConstantComposite %mat2v2float %256 %245
%float_38 = OpConstant %float 38
%float_26 = OpConstant %float 26
%263 = OpConstantComposite %v2float %float_38 %float_26
%264 = OpConstantComposite %v2float %float_17 %float_14
%265 = OpConstantComposite %mat2v2float %263 %264
%275 = OpConstantComposite %v3float %float_10 %float_4 %float_2
%276 = OpConstantComposite %v3float %float_20 %float_5 %float_3
%277 = OpConstantComposite %v3float %float_10 %float_6 %float_5
%278 = OpConstantComposite %mat3v3float %275 %276 %277
%279 = OpConstantComposite %v3float %float_3 %float_3 %float_4
%280 = OpConstantComposite %v3float %float_2 %float_3 %float_4
%281 = OpConstantComposite %v3float %float_4 %float_9 %float_2
%282 = OpConstantComposite %mat3v3float %279 %280 %281
%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
%295 = OpConstantComposite %v3float %float_130 %float_51 %float_35
%296 = OpConstantComposite %v3float %float_120 %float_47 %float_33
%297 = OpConstantComposite %v3float %float_240 %float_73 %float_45
%298 = OpConstantComposite %mat3v3float %295 %296 %297
%311 = 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_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 %33
OpStore %splat_2 %37
OpStore %m %42
%43 = OpFAdd %v3float %39 %32
%44 = OpFAdd %v3float %40 %32
%45 = OpFAdd %v3float %41 %32
%46 = OpCompositeConstruct %mat3v3float %43 %44 %45
OpStore %m %46
OpSelectionMerge %49 None
OpBranchConditional %true %48 %49
%48 = OpLabel
%56 = OpFOrdEqual %v3bool %43 %51
%57 = OpAll %bool %56
%58 = OpFOrdEqual %v3bool %44 %52
%59 = OpAll %bool %58
%60 = OpLogicalAnd %bool %57 %59
%61 = OpFOrdEqual %v3bool %45 %53
%62 = OpAll %bool %61
%63 = OpLogicalAnd %bool %60 %62
OpBranch %49
%49 = OpLabel
%64 = OpPhi %bool %false %23 %63 %48
OpStore %ok %64
OpStore %m %42
%65 = OpFSub %v3float %39 %32
%66 = OpFSub %v3float %40 %32
%67 = OpFSub %v3float %41 %32
%68 = OpCompositeConstruct %mat3v3float %65 %66 %67
OpStore %m %68
OpSelectionMerge %70 None
OpBranchConditional %64 %69 %70
%69 = OpLabel
%77 = OpFOrdEqual %v3bool %65 %73
%78 = OpAll %bool %77
%79 = OpFOrdEqual %v3bool %66 %74
%80 = OpAll %bool %79
%81 = OpLogicalAnd %bool %78 %80
%82 = OpFOrdEqual %v3bool %67 %75
%83 = OpAll %bool %82
%84 = OpLogicalAnd %bool %81 %83
OpBranch %70
%70 = OpLabel
%85 = OpPhi %bool %false %49 %84 %69
OpStore %ok %85
OpStore %m %42
%86 = OpFDiv %v3float %39 %32
%87 = OpFDiv %v3float %40 %32
%88 = OpFDiv %v3float %41 %32
%89 = OpCompositeConstruct %mat3v3float %86 %87 %88
OpStore %m %89
OpSelectionMerge %91 None
OpBranchConditional %85 %90 %91
%90 = OpLabel
%97 = OpFOrdEqual %v3bool %86 %93
%98 = OpAll %bool %97
%99 = OpFOrdEqual %v3bool %87 %94
%100 = OpAll %bool %99
%101 = OpLogicalAnd %bool %98 %100
%102 = OpFOrdEqual %v3bool %88 %95
%103 = OpAll %bool %102
%104 = OpLogicalAnd %bool %101 %103
OpBranch %91
%91 = OpLabel
%105 = OpPhi %bool %false %70 %104 %90
OpStore %ok %105
OpStore %m %33
%106 = OpFAdd %v3float %32 %39
%107 = OpFAdd %v3float %32 %40
%108 = OpFAdd %v3float %32 %41
%109 = OpCompositeConstruct %mat3v3float %106 %107 %108
OpStore %m %109
OpSelectionMerge %111 None
OpBranchConditional %105 %110 %111
%110 = OpLabel
%112 = OpFOrdEqual %v3bool %106 %51
%113 = OpAll %bool %112
%114 = OpFOrdEqual %v3bool %107 %52
%115 = OpAll %bool %114
%116 = OpLogicalAnd %bool %113 %115
%117 = OpFOrdEqual %v3bool %108 %53
%118 = OpAll %bool %117
%119 = OpLogicalAnd %bool %116 %118
OpBranch %111
%111 = OpLabel
%120 = OpPhi %bool %false %91 %119 %110
OpStore %ok %120
OpStore %m %33
%121 = OpFSub %v3float %32 %39
%122 = OpFSub %v3float %32 %40
%123 = OpFSub %v3float %32 %41
%124 = OpCompositeConstruct %mat3v3float %121 %122 %123
OpStore %m %124
OpSelectionMerge %126 None
OpBranchConditional %120 %125 %126
%125 = OpLabel
%131 = OpFOrdEqual %v3bool %121 %127
%132 = OpAll %bool %131
%133 = OpFOrdEqual %v3bool %122 %128
%134 = OpAll %bool %133
%135 = OpLogicalAnd %bool %132 %134
%136 = OpFOrdEqual %v3bool %123 %129
%137 = OpAll %bool %136
%138 = OpLogicalAnd %bool %135 %137
OpBranch %126
%126 = OpLabel
%139 = OpPhi %bool %false %111 %138 %125
OpStore %ok %139
OpStore %m %33
%140 = OpFDiv %v3float %32 %36
%141 = OpFDiv %v3float %32 %36
%142 = OpFDiv %v3float %32 %36
%143 = OpCompositeConstruct %mat3v3float %140 %141 %142
OpStore %m %143
OpSelectionMerge %145 None
OpBranchConditional %139 %144 %145
%144 = OpLabel
%146 = OpFOrdEqual %v3bool %140 %36
%147 = OpAll %bool %146
%148 = OpFOrdEqual %v3bool %141 %36
%149 = OpAll %bool %148
%150 = OpLogicalAnd %bool %147 %149
%151 = OpFOrdEqual %v3bool %142 %36
%152 = OpAll %bool %151
%153 = OpLogicalAnd %bool %150 %152
OpBranch %145
%145 = OpLabel
%154 = OpPhi %bool %false %126 %153 %144
OpStore %ok %154
OpStore %m_0 %175
%181 = OpFAdd %v4float %171 %176
%182 = OpFAdd %v4float %172 %177
%183 = OpFAdd %v4float %173 %178
%184 = OpFAdd %v4float %174 %179
%185 = OpCompositeConstruct %mat4v4float %181 %182 %183 %184
OpStore %m_0 %185
OpSelectionMerge %187 None
OpBranchConditional %154 %186 %187
%186 = OpLabel
%192 = OpFOrdEqual %v4bool %181 %189
%193 = OpAll %bool %192
%194 = OpFOrdEqual %v4bool %182 %189
%195 = OpAll %bool %194
%196 = OpLogicalAnd %bool %193 %195
%197 = OpFOrdEqual %v4bool %183 %189
%198 = OpAll %bool %197
%199 = OpLogicalAnd %bool %196 %198
%200 = OpFOrdEqual %v4bool %184 %189
%201 = OpAll %bool %200
%202 = OpLogicalAnd %bool %199 %201
OpBranch %187
%187 = OpLabel
%203 = OpPhi %bool %false %145 %202 %186
OpStore %ok %203
OpStore %m_1 %212
%216 = OpFSub %v2float %210 %213
%217 = OpFSub %v2float %211 %214
%218 = OpCompositeConstruct %mat2v2float %216 %217
OpStore %m_1 %218
OpSelectionMerge %220 None
OpBranchConditional %203 %219 %220
%219 = OpLabel
%228 = OpFOrdEqual %v2bool %216 %224
%229 = OpAll %bool %228
%230 = OpFOrdEqual %v2bool %217 %225
%231 = OpAll %bool %230
%232 = OpLogicalAnd %bool %229 %231
OpBranch %220
%220 = OpLabel
%233 = OpPhi %bool %false %187 %232 %219
OpStore %ok %233
OpStore %m_2 %237
%240 = OpFDiv %v2float %235 %238
%241 = OpFDiv %v2float %236 %235
%242 = OpCompositeConstruct %mat2v2float %240 %241
OpStore %m_2 %242
OpSelectionMerge %244 None
OpBranchConditional %233 %243 %244
%243 = OpLabel
%247 = OpFOrdEqual %v2bool %240 %213
%248 = OpAll %bool %247
%249 = OpFOrdEqual %v2bool %241 %245
%250 = OpAll %bool %249
%251 = OpLogicalAnd %bool %248 %250
OpBranch %244
%244 = OpLabel
%252 = OpPhi %bool %false %220 %251 %243
OpStore %ok %252
OpStore %m_3 %255
%258 = OpMatrixTimesMatrix %mat2v2float %255 %257
OpStore %m_3 %258
OpSelectionMerge %260 None
OpBranchConditional %252 %259 %260
%259 = OpLabel
%266 = OpCompositeExtract %v2float %258 0
%267 = OpFOrdEqual %v2bool %266 %263
%268 = OpAll %bool %267
%269 = OpCompositeExtract %v2float %258 1
%270 = OpFOrdEqual %v2bool %269 %264
%271 = OpAll %bool %270
%272 = OpLogicalAnd %bool %268 %271
OpBranch %260
%260 = OpLabel
%273 = OpPhi %bool %false %244 %272 %259
OpStore %ok %273
OpStore %m_4 %278
%283 = OpMatrixTimesMatrix %mat3v3float %278 %282
OpStore %m_4 %283
OpSelectionMerge %285 None
OpBranchConditional %273 %284 %285
%284 = OpLabel
%299 = OpCompositeExtract %v3float %283 0
%300 = OpFOrdEqual %v3bool %299 %295
%301 = OpAll %bool %300
%302 = OpCompositeExtract %v3float %283 1
%303 = OpFOrdEqual %v3bool %302 %296
%304 = OpAll %bool %303
%305 = OpLogicalAnd %bool %301 %304
%306 = OpCompositeExtract %v3float %283 2
%307 = OpFOrdEqual %v3bool %306 %297
%308 = OpAll %bool %307
%309 = OpLogicalAnd %bool %305 %308
OpBranch %285
%285 = OpLabel
%310 = OpPhi %bool %false %260 %309 %284
OpStore %ok %310
OpReturnValue %310
OpFunctionEnd
%main = OpFunction %v4float None %311
%312 = OpFunctionParameter %_ptr_Function_v2float
%313 = 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
%484 = OpVariable %_ptr_Function_v4float Function
OpStore %_0_ok %true
OpStore %_1_splat_4 %33
OpStore %_2_splat_2 %37
OpStore %_3_m %42
%318 = OpFAdd %v3float %39 %32
%319 = OpFAdd %v3float %40 %32
%320 = OpFAdd %v3float %41 %32
%321 = OpCompositeConstruct %mat3v3float %318 %319 %320
OpStore %_3_m %321
OpSelectionMerge %323 None
OpBranchConditional %true %322 %323
%322 = OpLabel
%324 = OpFOrdEqual %v3bool %318 %51
%325 = OpAll %bool %324
%326 = OpFOrdEqual %v3bool %319 %52
%327 = OpAll %bool %326
%328 = OpLogicalAnd %bool %325 %327
%329 = OpFOrdEqual %v3bool %320 %53
%330 = OpAll %bool %329
%331 = OpLogicalAnd %bool %328 %330
OpBranch %323
%323 = OpLabel
%332 = OpPhi %bool %false %313 %331 %322
OpStore %_0_ok %332
OpStore %_3_m %42
%333 = OpFSub %v3float %39 %32
%334 = OpFSub %v3float %40 %32
%335 = OpFSub %v3float %41 %32
%336 = OpCompositeConstruct %mat3v3float %333 %334 %335
OpStore %_3_m %336
OpSelectionMerge %338 None
OpBranchConditional %332 %337 %338
%337 = OpLabel
%339 = OpFOrdEqual %v3bool %333 %73
%340 = OpAll %bool %339
%341 = OpFOrdEqual %v3bool %334 %74
%342 = OpAll %bool %341
%343 = OpLogicalAnd %bool %340 %342
%344 = OpFOrdEqual %v3bool %335 %75
%345 = OpAll %bool %344
%346 = OpLogicalAnd %bool %343 %345
OpBranch %338
%338 = OpLabel
%347 = OpPhi %bool %false %323 %346 %337
OpStore %_0_ok %347
OpStore %_3_m %42
%348 = OpFDiv %v3float %39 %32
%349 = OpFDiv %v3float %40 %32
%350 = OpFDiv %v3float %41 %32
%351 = OpCompositeConstruct %mat3v3float %348 %349 %350
OpStore %_3_m %351
OpSelectionMerge %353 None
OpBranchConditional %347 %352 %353
%352 = OpLabel
%354 = OpFOrdEqual %v3bool %348 %93
%355 = OpAll %bool %354
%356 = OpFOrdEqual %v3bool %349 %94
%357 = OpAll %bool %356
%358 = OpLogicalAnd %bool %355 %357
%359 = OpFOrdEqual %v3bool %350 %95
%360 = OpAll %bool %359
%361 = OpLogicalAnd %bool %358 %360
OpBranch %353
%353 = OpLabel
%362 = OpPhi %bool %false %338 %361 %352
OpStore %_0_ok %362
OpStore %_3_m %33
%363 = OpFAdd %v3float %32 %39
%364 = OpFAdd %v3float %32 %40
%365 = OpFAdd %v3float %32 %41
%366 = OpCompositeConstruct %mat3v3float %363 %364 %365
OpStore %_3_m %366
OpSelectionMerge %368 None
OpBranchConditional %362 %367 %368
%367 = OpLabel
%369 = OpFOrdEqual %v3bool %363 %51
%370 = OpAll %bool %369
%371 = OpFOrdEqual %v3bool %364 %52
%372 = OpAll %bool %371
%373 = OpLogicalAnd %bool %370 %372
%374 = OpFOrdEqual %v3bool %365 %53
%375 = OpAll %bool %374
%376 = OpLogicalAnd %bool %373 %375
OpBranch %368
%368 = OpLabel
%377 = OpPhi %bool %false %353 %376 %367
OpStore %_0_ok %377
OpStore %_3_m %33
%378 = OpFSub %v3float %32 %39
%379 = OpFSub %v3float %32 %40
%380 = OpFSub %v3float %32 %41
%381 = OpCompositeConstruct %mat3v3float %378 %379 %380
OpStore %_3_m %381
OpSelectionMerge %383 None
OpBranchConditional %377 %382 %383
%382 = OpLabel
%384 = OpFOrdEqual %v3bool %378 %127
%385 = OpAll %bool %384
%386 = OpFOrdEqual %v3bool %379 %128
%387 = OpAll %bool %386
%388 = OpLogicalAnd %bool %385 %387
%389 = OpFOrdEqual %v3bool %380 %129
%390 = OpAll %bool %389
%391 = OpLogicalAnd %bool %388 %390
OpBranch %383
%383 = OpLabel
%392 = OpPhi %bool %false %368 %391 %382
OpStore %_0_ok %392
OpStore %_3_m %33
%393 = OpFDiv %v3float %32 %36
%394 = OpFDiv %v3float %32 %36
%395 = OpFDiv %v3float %32 %36
%396 = OpCompositeConstruct %mat3v3float %393 %394 %395
OpStore %_3_m %396
OpSelectionMerge %398 None
OpBranchConditional %392 %397 %398
%397 = OpLabel
%399 = OpFOrdEqual %v3bool %393 %36
%400 = OpAll %bool %399
%401 = OpFOrdEqual %v3bool %394 %36
%402 = OpAll %bool %401
%403 = OpLogicalAnd %bool %400 %402
%404 = OpFOrdEqual %v3bool %395 %36
%405 = OpAll %bool %404
%406 = OpLogicalAnd %bool %403 %405
OpBranch %398
%398 = OpLabel
%407 = OpPhi %bool %false %383 %406 %397
OpStore %_0_ok %407
OpStore %_4_m %175
%409 = OpFAdd %v4float %171 %176
%410 = OpFAdd %v4float %172 %177
%411 = OpFAdd %v4float %173 %178
%412 = OpFAdd %v4float %174 %179
%413 = OpCompositeConstruct %mat4v4float %409 %410 %411 %412
OpStore %_4_m %413
OpSelectionMerge %415 None
OpBranchConditional %407 %414 %415
%414 = OpLabel
%416 = OpFOrdEqual %v4bool %409 %189
%417 = OpAll %bool %416
%418 = OpFOrdEqual %v4bool %410 %189
%419 = OpAll %bool %418
%420 = OpLogicalAnd %bool %417 %419
%421 = OpFOrdEqual %v4bool %411 %189
%422 = OpAll %bool %421
%423 = OpLogicalAnd %bool %420 %422
%424 = OpFOrdEqual %v4bool %412 %189
%425 = OpAll %bool %424
%426 = OpLogicalAnd %bool %423 %425
OpBranch %415
%415 = OpLabel
%427 = OpPhi %bool %false %398 %426 %414
OpStore %_0_ok %427
OpStore %_5_m %212
%429 = OpFSub %v2float %210 %213
%430 = OpFSub %v2float %211 %214
%431 = OpCompositeConstruct %mat2v2float %429 %430
OpStore %_5_m %431
OpSelectionMerge %433 None
OpBranchConditional %427 %432 %433
%432 = OpLabel
%434 = OpFOrdEqual %v2bool %429 %224
%435 = OpAll %bool %434
%436 = OpFOrdEqual %v2bool %430 %225
%437 = OpAll %bool %436
%438 = OpLogicalAnd %bool %435 %437
OpBranch %433
%433 = OpLabel
%439 = OpPhi %bool %false %415 %438 %432
OpStore %_0_ok %439
OpStore %_6_m %237
%441 = OpFDiv %v2float %235 %238
%442 = OpFDiv %v2float %236 %235
%443 = OpCompositeConstruct %mat2v2float %441 %442
OpStore %_6_m %443
OpSelectionMerge %445 None
OpBranchConditional %439 %444 %445
%444 = OpLabel
%446 = OpFOrdEqual %v2bool %441 %213
%447 = OpAll %bool %446
%448 = OpFOrdEqual %v2bool %442 %245
%449 = OpAll %bool %448
%450 = OpLogicalAnd %bool %447 %449
OpBranch %445
%445 = OpLabel
%451 = OpPhi %bool %false %433 %450 %444
OpStore %_0_ok %451
OpStore %_7_m %255
%453 = OpMatrixTimesMatrix %mat2v2float %255 %257
OpStore %_7_m %453
OpSelectionMerge %455 None
OpBranchConditional %451 %454 %455
%454 = OpLabel
%456 = OpCompositeExtract %v2float %453 0
%457 = OpFOrdEqual %v2bool %456 %263
%458 = OpAll %bool %457
%459 = OpCompositeExtract %v2float %453 1
%460 = OpFOrdEqual %v2bool %459 %264
%461 = OpAll %bool %460
%462 = OpLogicalAnd %bool %458 %461
OpBranch %455
%455 = OpLabel
%463 = OpPhi %bool %false %445 %462 %454
OpStore %_0_ok %463
OpStore %_8_m %278
%465 = OpMatrixTimesMatrix %mat3v3float %278 %282
OpStore %_8_m %465
OpSelectionMerge %467 None
OpBranchConditional %463 %466 %467
%466 = OpLabel
%468 = OpCompositeExtract %v3float %465 0
%469 = OpFOrdEqual %v3bool %468 %295
%470 = OpAll %bool %469
%471 = OpCompositeExtract %v3float %465 1
%472 = OpFOrdEqual %v3bool %471 %296
%473 = OpAll %bool %472
%474 = OpLogicalAnd %bool %470 %473
%475 = OpCompositeExtract %v3float %465 2
%476 = OpFOrdEqual %v3bool %475 %297
%477 = OpAll %bool %476
%478 = OpLogicalAnd %bool %474 %477
OpBranch %467
%467 = OpLabel
%479 = OpPhi %bool %false %455 %478 %466
OpStore %_0_ok %479
OpSelectionMerge %481 None
OpBranchConditional %479 %480 %481
%480 = OpLabel
%482 = OpFunctionCall %bool %test_matrix_op_matrix_half_b
OpBranch %481
%481 = OpLabel
%483 = OpPhi %bool %false %467 %482 %480
OpSelectionMerge %488 None
OpBranchConditional %483 %486 %487
%486 = OpLabel
%489 = OpAccessChain %_ptr_Uniform_v4float %8 %int_1
%493 = OpLoad %v4float %489
OpStore %484 %493
OpBranch %488
%487 = OpLabel
%494 = OpAccessChain %_ptr_Uniform_v4float %8 %int_0
%496 = OpLoad %v4float %494
OpStore %484 %496
OpBranch %488
%488 = OpLabel
%497 = OpLoad %v4float %484
OpReturnValue %497
OpFunctionEnd