Add support for componentwise matrix divide in SPIR-V.
All the pieces of the puzzle were already here to support componentwise addition and subtraction of matrices. Division was just a forgotten gap in the implementation and is now patched up to match + and -. NOTE: if you read the SPIR-V output very closely, you may be surprised that there are fewer FDiv operations than you'd expect from reading the input SkSL. As it turns out, a preexisting optimization is rewriting `mat / 4` into `mat * 0.25` (see line 2689), and this rewritten form can use the dedicated MatrixTimesScalar op. So we only get componentwise FDivs for the `4 / mat` lines in the source. Change-Id: I011c859f5b3a031fbb95a2956f1194a5f3b3794b Bug: skia:11985 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/408639 Auto-Submit: John Stiles <johnstiles@google.com> Commit-Queue: John Stiles <johnstiles@google.com> Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
This commit is contained in:
parent
c1f6411045
commit
bdf3bb7b5f
@ -41,6 +41,9 @@ bool test_float() {
|
|||||||
ok = ok && (m32 == float3x2(2, -2,
|
ok = ok && (m32 == float3x2(2, -2,
|
||||||
-2, 2,
|
-2, 2,
|
||||||
-2, -2));
|
-2, -2));
|
||||||
|
m24 /= 4;
|
||||||
|
ok = ok && (m24 == float2x4(0.75, 0, 0, 0,
|
||||||
|
0, 0.75, 0, 0));
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,6 +88,9 @@ bool test_half() {
|
|||||||
ok = ok && (m32 == half3x2(2, -2,
|
ok = ok && (m32 == half3x2(2, -2,
|
||||||
-2, 2,
|
-2, 2,
|
||||||
-2, -2));
|
-2, -2));
|
||||||
|
m24 /= 4;
|
||||||
|
ok = ok && (m24 == half2x4(0.75, 0, 0, 0,
|
||||||
|
0, 0.75, 0, 0));
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2528,6 +2528,10 @@ SpvId SPIRVCodeGenerator::writeBinaryExpression(const Type& leftType, SpvId lhs,
|
|||||||
return this->writeBinaryOperation(resultType, *operandType, lhs, rhs, SpvOpFMul,
|
return this->writeBinaryOperation(resultType, *operandType, lhs, rhs, SpvOpFMul,
|
||||||
SpvOpIMul, SpvOpIMul, SpvOpUndef, out);
|
SpvOpIMul, SpvOpIMul, SpvOpUndef, out);
|
||||||
case Token::Kind::TK_SLASH:
|
case Token::Kind::TK_SLASH:
|
||||||
|
if (leftType.isMatrix() && rightType.isMatrix()) {
|
||||||
|
SkASSERT(leftType == rightType);
|
||||||
|
return this->writeComponentwiseMatrixBinary(leftType, lhs, rhs, SpvOpFDiv, out);
|
||||||
|
}
|
||||||
return this->writeBinaryOperation(resultType, *operandType, lhs, rhs, SpvOpFDiv,
|
return this->writeBinaryOperation(resultType, *operandType, lhs, rhs, SpvOpFDiv,
|
||||||
SpvOpSDiv, SpvOpUDiv, SpvOpUndef, out);
|
SpvOpSDiv, SpvOpUDiv, SpvOpUndef, out);
|
||||||
case Token::Kind::TK_PERCENT:
|
case Token::Kind::TK_PERCENT:
|
||||||
|
@ -145,19 +145,35 @@ OpDecorate %283 RelaxedPrecision
|
|||||||
OpDecorate %284 RelaxedPrecision
|
OpDecorate %284 RelaxedPrecision
|
||||||
OpDecorate %285 RelaxedPrecision
|
OpDecorate %285 RelaxedPrecision
|
||||||
OpDecorate %301 RelaxedPrecision
|
OpDecorate %301 RelaxedPrecision
|
||||||
|
OpDecorate %302 RelaxedPrecision
|
||||||
|
OpDecorate %303 RelaxedPrecision
|
||||||
|
OpDecorate %304 RelaxedPrecision
|
||||||
|
OpDecorate %305 RelaxedPrecision
|
||||||
|
OpDecorate %306 RelaxedPrecision
|
||||||
|
OpDecorate %307 RelaxedPrecision
|
||||||
|
OpDecorate %308 RelaxedPrecision
|
||||||
|
OpDecorate %309 RelaxedPrecision
|
||||||
OpDecorate %310 RelaxedPrecision
|
OpDecorate %310 RelaxedPrecision
|
||||||
OpDecorate %331 RelaxedPrecision
|
OpDecorate %311 RelaxedPrecision
|
||||||
OpDecorate %353 RelaxedPrecision
|
OpDecorate %314 RelaxedPrecision
|
||||||
|
OpDecorate %316 RelaxedPrecision
|
||||||
|
OpDecorate %317 RelaxedPrecision
|
||||||
|
OpDecorate %318 RelaxedPrecision
|
||||||
|
OpDecorate %329 RelaxedPrecision
|
||||||
|
OpDecorate %338 RelaxedPrecision
|
||||||
|
OpDecorate %359 RelaxedPrecision
|
||||||
OpDecorate %381 RelaxedPrecision
|
OpDecorate %381 RelaxedPrecision
|
||||||
OpDecorate %410 RelaxedPrecision
|
OpDecorate %409 RelaxedPrecision
|
||||||
OpDecorate %443 RelaxedPrecision
|
OpDecorate %438 RelaxedPrecision
|
||||||
OpDecorate %464 RelaxedPrecision
|
OpDecorate %471 RelaxedPrecision
|
||||||
OpDecorate %497 RelaxedPrecision
|
OpDecorate %492 RelaxedPrecision
|
||||||
OpDecorate %527 RelaxedPrecision
|
OpDecorate %525 RelaxedPrecision
|
||||||
OpDecorate %550 RelaxedPrecision
|
OpDecorate %555 RelaxedPrecision
|
||||||
OpDecorate %564 RelaxedPrecision
|
OpDecorate %588 RelaxedPrecision
|
||||||
OpDecorate %567 RelaxedPrecision
|
OpDecorate %605 RelaxedPrecision
|
||||||
OpDecorate %568 RelaxedPrecision
|
OpDecorate %619 RelaxedPrecision
|
||||||
|
OpDecorate %622 RelaxedPrecision
|
||||||
|
OpDecorate %623 RelaxedPrecision
|
||||||
%float = OpTypeFloat 32
|
%float = OpTypeFloat 32
|
||||||
%v4float = OpTypeVector %float 4
|
%v4float = OpTypeVector %float 4
|
||||||
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
||||||
@ -205,7 +221,8 @@ OpDecorate %568 RelaxedPrecision
|
|||||||
%float_35 = OpConstant %float 35
|
%float_35 = OpConstant %float 35
|
||||||
%float_1 = OpConstant %float 1
|
%float_1 = OpConstant %float 1
|
||||||
%float_n2 = OpConstant %float -2
|
%float_n2 = OpConstant %float -2
|
||||||
%302 = OpTypeFunction %v4float %_ptr_Function_v2float
|
%float_0_75 = OpConstant %float 0.75
|
||||||
|
%330 = OpTypeFunction %v4float %_ptr_Function_v2float
|
||||||
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
||||||
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
|
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
|
||||||
%int = OpTypeInt 32 1
|
%int = OpTypeInt 32 1
|
||||||
@ -512,12 +529,44 @@ OpBranch %279
|
|||||||
%279 = OpLabel
|
%279 = OpLabel
|
||||||
%300 = OpPhi %bool %false %249 %299 %278
|
%300 = OpPhi %bool %false %249 %299 %278
|
||||||
OpStore %ok %300
|
OpStore %ok %300
|
||||||
%301 = OpLoad %bool %ok
|
%301 = OpLoad %mat2v4float %m24
|
||||||
OpReturnValue %301
|
%302 = OpCompositeConstruct %v4float %float_4 %float_4 %float_4 %float_4
|
||||||
|
%303 = OpCompositeConstruct %mat2v4float %302 %302
|
||||||
|
%304 = OpCompositeExtract %v4float %301 0
|
||||||
|
%305 = OpCompositeExtract %v4float %303 0
|
||||||
|
%306 = OpFDiv %v4float %304 %305
|
||||||
|
%307 = OpCompositeExtract %v4float %301 1
|
||||||
|
%308 = OpCompositeExtract %v4float %303 1
|
||||||
|
%309 = OpFDiv %v4float %307 %308
|
||||||
|
%310 = OpCompositeConstruct %mat2v4float %306 %309
|
||||||
|
OpStore %m24 %310
|
||||||
|
%311 = OpLoad %bool %ok
|
||||||
|
OpSelectionMerge %313 None
|
||||||
|
OpBranchConditional %311 %312 %313
|
||||||
|
%312 = OpLabel
|
||||||
|
%314 = OpLoad %mat2v4float %m24
|
||||||
|
%317 = OpCompositeConstruct %v4float %float_0_75 %float_0 %float_0 %float_0
|
||||||
|
%318 = OpCompositeConstruct %v4float %float_0 %float_0_75 %float_0 %float_0
|
||||||
|
%316 = OpCompositeConstruct %mat2v4float %317 %318
|
||||||
|
%319 = OpCompositeExtract %v4float %314 0
|
||||||
|
%320 = OpCompositeExtract %v4float %316 0
|
||||||
|
%321 = OpFOrdEqual %v4bool %319 %320
|
||||||
|
%322 = OpAll %bool %321
|
||||||
|
%323 = OpCompositeExtract %v4float %314 1
|
||||||
|
%324 = OpCompositeExtract %v4float %316 1
|
||||||
|
%325 = OpFOrdEqual %v4bool %323 %324
|
||||||
|
%326 = OpAll %bool %325
|
||||||
|
%327 = OpLogicalAnd %bool %322 %326
|
||||||
|
OpBranch %313
|
||||||
|
%313 = OpLabel
|
||||||
|
%328 = OpPhi %bool %false %279 %327 %312
|
||||||
|
OpStore %ok %328
|
||||||
|
%329 = OpLoad %bool %ok
|
||||||
|
OpReturnValue %329
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%main = OpFunction %v4float None %302
|
%main = OpFunction %v4float None %330
|
||||||
%303 = OpFunctionParameter %_ptr_Function_v2float
|
%331 = OpFunctionParameter %_ptr_Function_v2float
|
||||||
%304 = OpLabel
|
%332 = OpLabel
|
||||||
%_0_ok = OpVariable %_ptr_Function_bool Function
|
%_0_ok = OpVariable %_ptr_Function_bool Function
|
||||||
%_1_m23 = OpVariable %_ptr_Function_mat2v3float Function
|
%_1_m23 = OpVariable %_ptr_Function_mat2v3float Function
|
||||||
%_2_m24 = OpVariable %_ptr_Function_mat2v4float Function
|
%_2_m24 = OpVariable %_ptr_Function_mat2v4float Function
|
||||||
@ -526,311 +575,343 @@ OpFunctionEnd
|
|||||||
%_6_m43 = OpVariable %_ptr_Function_mat4v3float Function
|
%_6_m43 = OpVariable %_ptr_Function_mat4v3float Function
|
||||||
%_7_m22 = OpVariable %_ptr_Function_mat2v2float Function
|
%_7_m22 = OpVariable %_ptr_Function_mat2v2float Function
|
||||||
%_8_m33 = OpVariable %_ptr_Function_mat3v3float Function
|
%_8_m33 = OpVariable %_ptr_Function_mat3v3float Function
|
||||||
%555 = OpVariable %_ptr_Function_v4float Function
|
%610 = OpVariable %_ptr_Function_v4float Function
|
||||||
OpStore %_0_ok %true
|
OpStore %_0_ok %true
|
||||||
%308 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
%336 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||||
%309 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
%337 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||||
%307 = OpCompositeConstruct %mat2v3float %308 %309
|
%335 = OpCompositeConstruct %mat2v3float %336 %337
|
||||||
OpStore %_1_m23 %307
|
OpStore %_1_m23 %335
|
||||||
%310 = OpLoad %bool %_0_ok
|
%338 = OpLoad %bool %_0_ok
|
||||||
OpSelectionMerge %312 None
|
OpSelectionMerge %340 None
|
||||||
OpBranchConditional %310 %311 %312
|
OpBranchConditional %338 %339 %340
|
||||||
%311 = OpLabel
|
%339 = OpLabel
|
||||||
%313 = OpLoad %mat2v3float %_1_m23
|
%341 = OpLoad %mat2v3float %_1_m23
|
||||||
%315 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
%343 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||||
%316 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
%344 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||||
%314 = OpCompositeConstruct %mat2v3float %315 %316
|
%342 = OpCompositeConstruct %mat2v3float %343 %344
|
||||||
%317 = OpCompositeExtract %v3float %313 0
|
%345 = OpCompositeExtract %v3float %341 0
|
||||||
%318 = OpCompositeExtract %v3float %314 0
|
%346 = OpCompositeExtract %v3float %342 0
|
||||||
%319 = OpFOrdEqual %v3bool %317 %318
|
%347 = OpFOrdEqual %v3bool %345 %346
|
||||||
%320 = OpAll %bool %319
|
%348 = OpAll %bool %347
|
||||||
%321 = OpCompositeExtract %v3float %313 1
|
%349 = OpCompositeExtract %v3float %341 1
|
||||||
%322 = OpCompositeExtract %v3float %314 1
|
%350 = OpCompositeExtract %v3float %342 1
|
||||||
%323 = OpFOrdEqual %v3bool %321 %322
|
%351 = OpFOrdEqual %v3bool %349 %350
|
||||||
%324 = OpAll %bool %323
|
%352 = OpAll %bool %351
|
||||||
%325 = OpLogicalAnd %bool %320 %324
|
%353 = OpLogicalAnd %bool %348 %352
|
||||||
OpBranch %312
|
OpBranch %340
|
||||||
%312 = OpLabel
|
%340 = OpLabel
|
||||||
%326 = OpPhi %bool %false %304 %325 %311
|
%354 = OpPhi %bool %false %332 %353 %339
|
||||||
OpStore %_0_ok %326
|
OpStore %_0_ok %354
|
||||||
%329 = OpCompositeConstruct %v4float %float_3 %float_0 %float_0 %float_0
|
%357 = OpCompositeConstruct %v4float %float_3 %float_0 %float_0 %float_0
|
||||||
%330 = OpCompositeConstruct %v4float %float_0 %float_3 %float_0 %float_0
|
%358 = OpCompositeConstruct %v4float %float_0 %float_3 %float_0 %float_0
|
||||||
%328 = OpCompositeConstruct %mat2v4float %329 %330
|
%356 = OpCompositeConstruct %mat2v4float %357 %358
|
||||||
OpStore %_2_m24 %328
|
OpStore %_2_m24 %356
|
||||||
%331 = OpLoad %bool %_0_ok
|
%359 = OpLoad %bool %_0_ok
|
||||||
OpSelectionMerge %333 None
|
OpSelectionMerge %361 None
|
||||||
OpBranchConditional %331 %332 %333
|
OpBranchConditional %359 %360 %361
|
||||||
%332 = OpLabel
|
%360 = OpLabel
|
||||||
%334 = OpLoad %mat2v4float %_2_m24
|
%362 = OpLoad %mat2v4float %_2_m24
|
||||||
%336 = OpCompositeConstruct %v4float %float_3 %float_0 %float_0 %float_0
|
%364 = OpCompositeConstruct %v4float %float_3 %float_0 %float_0 %float_0
|
||||||
%337 = OpCompositeConstruct %v4float %float_0 %float_3 %float_0 %float_0
|
%365 = OpCompositeConstruct %v4float %float_0 %float_3 %float_0 %float_0
|
||||||
%335 = OpCompositeConstruct %mat2v4float %336 %337
|
%363 = OpCompositeConstruct %mat2v4float %364 %365
|
||||||
%338 = OpCompositeExtract %v4float %334 0
|
%366 = OpCompositeExtract %v4float %362 0
|
||||||
%339 = OpCompositeExtract %v4float %335 0
|
%367 = OpCompositeExtract %v4float %363 0
|
||||||
%340 = OpFOrdEqual %v4bool %338 %339
|
%368 = OpFOrdEqual %v4bool %366 %367
|
||||||
%341 = OpAll %bool %340
|
%369 = OpAll %bool %368
|
||||||
%342 = OpCompositeExtract %v4float %334 1
|
%370 = OpCompositeExtract %v4float %362 1
|
||||||
%343 = OpCompositeExtract %v4float %335 1
|
%371 = OpCompositeExtract %v4float %363 1
|
||||||
%344 = OpFOrdEqual %v4bool %342 %343
|
%372 = OpFOrdEqual %v4bool %370 %371
|
||||||
%345 = OpAll %bool %344
|
|
||||||
%346 = OpLogicalAnd %bool %341 %345
|
|
||||||
OpBranch %333
|
|
||||||
%333 = OpLabel
|
|
||||||
%347 = OpPhi %bool %false %312 %346 %332
|
|
||||||
OpStore %_0_ok %347
|
|
||||||
%350 = OpCompositeConstruct %v2float %float_4 %float_0
|
|
||||||
%351 = OpCompositeConstruct %v2float %float_0 %float_4
|
|
||||||
%352 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
||||||
%349 = OpCompositeConstruct %mat3v2float %350 %351 %352
|
|
||||||
OpStore %_3_m32 %349
|
|
||||||
%353 = OpLoad %bool %_0_ok
|
|
||||||
OpSelectionMerge %355 None
|
|
||||||
OpBranchConditional %353 %354 %355
|
|
||||||
%354 = OpLabel
|
|
||||||
%356 = OpLoad %mat3v2float %_3_m32
|
|
||||||
%358 = OpCompositeConstruct %v2float %float_4 %float_0
|
|
||||||
%359 = OpCompositeConstruct %v2float %float_0 %float_4
|
|
||||||
%360 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
||||||
%357 = OpCompositeConstruct %mat3v2float %358 %359 %360
|
|
||||||
%361 = OpCompositeExtract %v2float %356 0
|
|
||||||
%362 = OpCompositeExtract %v2float %357 0
|
|
||||||
%363 = OpFOrdEqual %v2bool %361 %362
|
|
||||||
%364 = OpAll %bool %363
|
|
||||||
%365 = OpCompositeExtract %v2float %356 1
|
|
||||||
%366 = OpCompositeExtract %v2float %357 1
|
|
||||||
%367 = OpFOrdEqual %v2bool %365 %366
|
|
||||||
%368 = OpAll %bool %367
|
|
||||||
%369 = OpLogicalAnd %bool %364 %368
|
|
||||||
%370 = OpCompositeExtract %v2float %356 2
|
|
||||||
%371 = OpCompositeExtract %v2float %357 2
|
|
||||||
%372 = OpFOrdEqual %v2bool %370 %371
|
|
||||||
%373 = OpAll %bool %372
|
%373 = OpAll %bool %372
|
||||||
%374 = OpLogicalAnd %bool %369 %373
|
%374 = OpLogicalAnd %bool %369 %373
|
||||||
OpBranch %355
|
OpBranch %361
|
||||||
%355 = OpLabel
|
%361 = OpLabel
|
||||||
%375 = OpPhi %bool %false %333 %374 %354
|
%375 = OpPhi %bool %false %340 %374 %360
|
||||||
OpStore %_0_ok %375
|
OpStore %_0_ok %375
|
||||||
%378 = OpCompositeConstruct %v4float %float_5 %float_0 %float_0 %float_0
|
%378 = OpCompositeConstruct %v2float %float_4 %float_0
|
||||||
%379 = OpCompositeConstruct %v4float %float_0 %float_5 %float_0 %float_0
|
%379 = OpCompositeConstruct %v2float %float_0 %float_4
|
||||||
%380 = OpCompositeConstruct %v4float %float_0 %float_0 %float_5 %float_0
|
%380 = OpCompositeConstruct %v2float %float_0 %float_0
|
||||||
%377 = OpCompositeConstruct %mat3v4float %378 %379 %380
|
%377 = OpCompositeConstruct %mat3v2float %378 %379 %380
|
||||||
OpStore %_4_m34 %377
|
OpStore %_3_m32 %377
|
||||||
%381 = OpLoad %bool %_0_ok
|
%381 = OpLoad %bool %_0_ok
|
||||||
OpSelectionMerge %383 None
|
OpSelectionMerge %383 None
|
||||||
OpBranchConditional %381 %382 %383
|
OpBranchConditional %381 %382 %383
|
||||||
%382 = OpLabel
|
%382 = OpLabel
|
||||||
%384 = OpLoad %mat3v4float %_4_m34
|
%384 = OpLoad %mat3v2float %_3_m32
|
||||||
%386 = OpCompositeConstruct %v4float %float_5 %float_0 %float_0 %float_0
|
%386 = OpCompositeConstruct %v2float %float_4 %float_0
|
||||||
%387 = OpCompositeConstruct %v4float %float_0 %float_5 %float_0 %float_0
|
%387 = OpCompositeConstruct %v2float %float_0 %float_4
|
||||||
%388 = OpCompositeConstruct %v4float %float_0 %float_0 %float_5 %float_0
|
%388 = OpCompositeConstruct %v2float %float_0 %float_0
|
||||||
%385 = OpCompositeConstruct %mat3v4float %386 %387 %388
|
%385 = OpCompositeConstruct %mat3v2float %386 %387 %388
|
||||||
%389 = OpCompositeExtract %v4float %384 0
|
%389 = OpCompositeExtract %v2float %384 0
|
||||||
%390 = OpCompositeExtract %v4float %385 0
|
%390 = OpCompositeExtract %v2float %385 0
|
||||||
%391 = OpFOrdEqual %v4bool %389 %390
|
%391 = OpFOrdEqual %v2bool %389 %390
|
||||||
%392 = OpAll %bool %391
|
%392 = OpAll %bool %391
|
||||||
%393 = OpCompositeExtract %v4float %384 1
|
%393 = OpCompositeExtract %v2float %384 1
|
||||||
%394 = OpCompositeExtract %v4float %385 1
|
%394 = OpCompositeExtract %v2float %385 1
|
||||||
%395 = OpFOrdEqual %v4bool %393 %394
|
%395 = OpFOrdEqual %v2bool %393 %394
|
||||||
%396 = OpAll %bool %395
|
%396 = OpAll %bool %395
|
||||||
%397 = OpLogicalAnd %bool %392 %396
|
%397 = OpLogicalAnd %bool %392 %396
|
||||||
%398 = OpCompositeExtract %v4float %384 2
|
%398 = OpCompositeExtract %v2float %384 2
|
||||||
%399 = OpCompositeExtract %v4float %385 2
|
%399 = OpCompositeExtract %v2float %385 2
|
||||||
%400 = OpFOrdEqual %v4bool %398 %399
|
%400 = OpFOrdEqual %v2bool %398 %399
|
||||||
%401 = OpAll %bool %400
|
%401 = OpAll %bool %400
|
||||||
%402 = OpLogicalAnd %bool %397 %401
|
%402 = OpLogicalAnd %bool %397 %401
|
||||||
OpBranch %383
|
OpBranch %383
|
||||||
%383 = OpLabel
|
%383 = OpLabel
|
||||||
%403 = OpPhi %bool %false %355 %402 %382
|
%403 = OpPhi %bool %false %361 %402 %382
|
||||||
OpStore %_0_ok %403
|
OpStore %_0_ok %403
|
||||||
%406 = OpCompositeConstruct %v3float %float_7 %float_0 %float_0
|
%406 = OpCompositeConstruct %v4float %float_5 %float_0 %float_0 %float_0
|
||||||
%407 = OpCompositeConstruct %v3float %float_0 %float_7 %float_0
|
%407 = OpCompositeConstruct %v4float %float_0 %float_5 %float_0 %float_0
|
||||||
%408 = OpCompositeConstruct %v3float %float_0 %float_0 %float_7
|
%408 = OpCompositeConstruct %v4float %float_0 %float_0 %float_5 %float_0
|
||||||
%409 = OpCompositeConstruct %v3float %float_0 %float_0 %float_0
|
%405 = OpCompositeConstruct %mat3v4float %406 %407 %408
|
||||||
%405 = OpCompositeConstruct %mat4v3float %406 %407 %408 %409
|
OpStore %_4_m34 %405
|
||||||
OpStore %_6_m43 %405
|
%409 = OpLoad %bool %_0_ok
|
||||||
%410 = OpLoad %bool %_0_ok
|
OpSelectionMerge %411 None
|
||||||
OpSelectionMerge %412 None
|
OpBranchConditional %409 %410 %411
|
||||||
OpBranchConditional %410 %411 %412
|
%410 = OpLabel
|
||||||
|
%412 = OpLoad %mat3v4float %_4_m34
|
||||||
|
%414 = OpCompositeConstruct %v4float %float_5 %float_0 %float_0 %float_0
|
||||||
|
%415 = OpCompositeConstruct %v4float %float_0 %float_5 %float_0 %float_0
|
||||||
|
%416 = OpCompositeConstruct %v4float %float_0 %float_0 %float_5 %float_0
|
||||||
|
%413 = OpCompositeConstruct %mat3v4float %414 %415 %416
|
||||||
|
%417 = OpCompositeExtract %v4float %412 0
|
||||||
|
%418 = OpCompositeExtract %v4float %413 0
|
||||||
|
%419 = OpFOrdEqual %v4bool %417 %418
|
||||||
|
%420 = OpAll %bool %419
|
||||||
|
%421 = OpCompositeExtract %v4float %412 1
|
||||||
|
%422 = OpCompositeExtract %v4float %413 1
|
||||||
|
%423 = OpFOrdEqual %v4bool %421 %422
|
||||||
|
%424 = OpAll %bool %423
|
||||||
|
%425 = OpLogicalAnd %bool %420 %424
|
||||||
|
%426 = OpCompositeExtract %v4float %412 2
|
||||||
|
%427 = OpCompositeExtract %v4float %413 2
|
||||||
|
%428 = OpFOrdEqual %v4bool %426 %427
|
||||||
|
%429 = OpAll %bool %428
|
||||||
|
%430 = OpLogicalAnd %bool %425 %429
|
||||||
|
OpBranch %411
|
||||||
%411 = OpLabel
|
%411 = OpLabel
|
||||||
%413 = OpLoad %mat4v3float %_6_m43
|
%431 = OpPhi %bool %false %383 %430 %410
|
||||||
%415 = OpCompositeConstruct %v3float %float_7 %float_0 %float_0
|
OpStore %_0_ok %431
|
||||||
%416 = OpCompositeConstruct %v3float %float_0 %float_7 %float_0
|
%434 = OpCompositeConstruct %v3float %float_7 %float_0 %float_0
|
||||||
%417 = OpCompositeConstruct %v3float %float_0 %float_0 %float_7
|
%435 = OpCompositeConstruct %v3float %float_0 %float_7 %float_0
|
||||||
%418 = OpCompositeConstruct %v3float %float_0 %float_0 %float_0
|
%436 = OpCompositeConstruct %v3float %float_0 %float_0 %float_7
|
||||||
%414 = OpCompositeConstruct %mat4v3float %415 %416 %417 %418
|
%437 = OpCompositeConstruct %v3float %float_0 %float_0 %float_0
|
||||||
%419 = OpCompositeExtract %v3float %413 0
|
%433 = OpCompositeConstruct %mat4v3float %434 %435 %436 %437
|
||||||
%420 = OpCompositeExtract %v3float %414 0
|
OpStore %_6_m43 %433
|
||||||
%421 = OpFOrdEqual %v3bool %419 %420
|
%438 = OpLoad %bool %_0_ok
|
||||||
%422 = OpAll %bool %421
|
OpSelectionMerge %440 None
|
||||||
%423 = OpCompositeExtract %v3float %413 1
|
OpBranchConditional %438 %439 %440
|
||||||
%424 = OpCompositeExtract %v3float %414 1
|
%439 = OpLabel
|
||||||
%425 = OpFOrdEqual %v3bool %423 %424
|
%441 = OpLoad %mat4v3float %_6_m43
|
||||||
%426 = OpAll %bool %425
|
%443 = OpCompositeConstruct %v3float %float_7 %float_0 %float_0
|
||||||
%427 = OpLogicalAnd %bool %422 %426
|
%444 = OpCompositeConstruct %v3float %float_0 %float_7 %float_0
|
||||||
%428 = OpCompositeExtract %v3float %413 2
|
%445 = OpCompositeConstruct %v3float %float_0 %float_0 %float_7
|
||||||
%429 = OpCompositeExtract %v3float %414 2
|
%446 = OpCompositeConstruct %v3float %float_0 %float_0 %float_0
|
||||||
%430 = OpFOrdEqual %v3bool %428 %429
|
%442 = OpCompositeConstruct %mat4v3float %443 %444 %445 %446
|
||||||
%431 = OpAll %bool %430
|
%447 = OpCompositeExtract %v3float %441 0
|
||||||
%432 = OpLogicalAnd %bool %427 %431
|
%448 = OpCompositeExtract %v3float %442 0
|
||||||
%433 = OpCompositeExtract %v3float %413 3
|
%449 = OpFOrdEqual %v3bool %447 %448
|
||||||
%434 = OpCompositeExtract %v3float %414 3
|
%450 = OpAll %bool %449
|
||||||
%435 = OpFOrdEqual %v3bool %433 %434
|
%451 = OpCompositeExtract %v3float %441 1
|
||||||
%436 = OpAll %bool %435
|
%452 = OpCompositeExtract %v3float %442 1
|
||||||
%437 = OpLogicalAnd %bool %432 %436
|
%453 = OpFOrdEqual %v3bool %451 %452
|
||||||
OpBranch %412
|
%454 = OpAll %bool %453
|
||||||
%412 = OpLabel
|
%455 = OpLogicalAnd %bool %450 %454
|
||||||
%438 = OpPhi %bool %false %383 %437 %411
|
%456 = OpCompositeExtract %v3float %441 2
|
||||||
OpStore %_0_ok %438
|
%457 = OpCompositeExtract %v3float %442 2
|
||||||
%440 = OpLoad %mat3v2float %_3_m32
|
%458 = OpFOrdEqual %v3bool %456 %457
|
||||||
%441 = OpLoad %mat2v3float %_1_m23
|
%459 = OpAll %bool %458
|
||||||
%442 = OpMatrixTimesMatrix %mat2v2float %440 %441
|
%460 = OpLogicalAnd %bool %455 %459
|
||||||
OpStore %_7_m22 %442
|
%461 = OpCompositeExtract %v3float %441 3
|
||||||
%443 = OpLoad %bool %_0_ok
|
%462 = OpCompositeExtract %v3float %442 3
|
||||||
OpSelectionMerge %445 None
|
%463 = OpFOrdEqual %v3bool %461 %462
|
||||||
OpBranchConditional %443 %444 %445
|
%464 = OpAll %bool %463
|
||||||
%444 = OpLabel
|
%465 = OpLogicalAnd %bool %460 %464
|
||||||
%446 = OpLoad %mat2v2float %_7_m22
|
OpBranch %440
|
||||||
%448 = OpCompositeConstruct %v2float %float_8 %float_0
|
%440 = OpLabel
|
||||||
%449 = OpCompositeConstruct %v2float %float_0 %float_8
|
%466 = OpPhi %bool %false %411 %465 %439
|
||||||
%447 = OpCompositeConstruct %mat2v2float %448 %449
|
OpStore %_0_ok %466
|
||||||
%450 = OpCompositeExtract %v2float %446 0
|
%468 = OpLoad %mat3v2float %_3_m32
|
||||||
%451 = OpCompositeExtract %v2float %447 0
|
%469 = OpLoad %mat2v3float %_1_m23
|
||||||
%452 = OpFOrdEqual %v2bool %450 %451
|
%470 = OpMatrixTimesMatrix %mat2v2float %468 %469
|
||||||
%453 = OpAll %bool %452
|
OpStore %_7_m22 %470
|
||||||
%454 = OpCompositeExtract %v2float %446 1
|
%471 = OpLoad %bool %_0_ok
|
||||||
%455 = OpCompositeExtract %v2float %447 1
|
OpSelectionMerge %473 None
|
||||||
%456 = OpFOrdEqual %v2bool %454 %455
|
OpBranchConditional %471 %472 %473
|
||||||
%457 = OpAll %bool %456
|
%472 = OpLabel
|
||||||
%458 = OpLogicalAnd %bool %453 %457
|
%474 = OpLoad %mat2v2float %_7_m22
|
||||||
OpBranch %445
|
%476 = OpCompositeConstruct %v2float %float_8 %float_0
|
||||||
%445 = OpLabel
|
%477 = OpCompositeConstruct %v2float %float_0 %float_8
|
||||||
%459 = OpPhi %bool %false %412 %458 %444
|
%475 = OpCompositeConstruct %mat2v2float %476 %477
|
||||||
OpStore %_0_ok %459
|
%478 = OpCompositeExtract %v2float %474 0
|
||||||
%461 = OpLoad %mat4v3float %_6_m43
|
%479 = OpCompositeExtract %v2float %475 0
|
||||||
%462 = OpLoad %mat3v4float %_4_m34
|
%480 = OpFOrdEqual %v2bool %478 %479
|
||||||
%463 = OpMatrixTimesMatrix %mat3v3float %461 %462
|
%481 = OpAll %bool %480
|
||||||
OpStore %_8_m33 %463
|
%482 = OpCompositeExtract %v2float %474 1
|
||||||
%464 = OpLoad %bool %_0_ok
|
%483 = OpCompositeExtract %v2float %475 1
|
||||||
OpSelectionMerge %466 None
|
%484 = OpFOrdEqual %v2bool %482 %483
|
||||||
OpBranchConditional %464 %465 %466
|
%485 = OpAll %bool %484
|
||||||
%465 = OpLabel
|
%486 = OpLogicalAnd %bool %481 %485
|
||||||
%467 = OpLoad %mat3v3float %_8_m33
|
OpBranch %473
|
||||||
%469 = OpCompositeConstruct %v3float %float_35 %float_0 %float_0
|
%473 = OpLabel
|
||||||
%470 = OpCompositeConstruct %v3float %float_0 %float_35 %float_0
|
%487 = OpPhi %bool %false %440 %486 %472
|
||||||
%471 = OpCompositeConstruct %v3float %float_0 %float_0 %float_35
|
OpStore %_0_ok %487
|
||||||
%468 = OpCompositeConstruct %mat3v3float %469 %470 %471
|
%489 = OpLoad %mat4v3float %_6_m43
|
||||||
%472 = OpCompositeExtract %v3float %467 0
|
%490 = OpLoad %mat3v4float %_4_m34
|
||||||
%473 = OpCompositeExtract %v3float %468 0
|
%491 = OpMatrixTimesMatrix %mat3v3float %489 %490
|
||||||
%474 = OpFOrdEqual %v3bool %472 %473
|
OpStore %_8_m33 %491
|
||||||
%475 = OpAll %bool %474
|
%492 = OpLoad %bool %_0_ok
|
||||||
%476 = OpCompositeExtract %v3float %467 1
|
OpSelectionMerge %494 None
|
||||||
%477 = OpCompositeExtract %v3float %468 1
|
OpBranchConditional %492 %493 %494
|
||||||
%478 = OpFOrdEqual %v3bool %476 %477
|
%493 = OpLabel
|
||||||
%479 = OpAll %bool %478
|
%495 = OpLoad %mat3v3float %_8_m33
|
||||||
%480 = OpLogicalAnd %bool %475 %479
|
%497 = OpCompositeConstruct %v3float %float_35 %float_0 %float_0
|
||||||
%481 = OpCompositeExtract %v3float %467 2
|
%498 = OpCompositeConstruct %v3float %float_0 %float_35 %float_0
|
||||||
%482 = OpCompositeExtract %v3float %468 2
|
%499 = OpCompositeConstruct %v3float %float_0 %float_0 %float_35
|
||||||
%483 = OpFOrdEqual %v3bool %481 %482
|
%496 = OpCompositeConstruct %mat3v3float %497 %498 %499
|
||||||
%484 = OpAll %bool %483
|
%500 = OpCompositeExtract %v3float %495 0
|
||||||
%485 = OpLogicalAnd %bool %480 %484
|
%501 = OpCompositeExtract %v3float %496 0
|
||||||
OpBranch %466
|
%502 = OpFOrdEqual %v3bool %500 %501
|
||||||
%466 = OpLabel
|
%503 = OpAll %bool %502
|
||||||
%486 = OpPhi %bool %false %445 %485 %465
|
%504 = OpCompositeExtract %v3float %495 1
|
||||||
OpStore %_0_ok %486
|
%505 = OpCompositeExtract %v3float %496 1
|
||||||
%487 = OpLoad %mat2v3float %_1_m23
|
|
||||||
%488 = OpCompositeConstruct %v3float %float_1 %float_1 %float_1
|
|
||||||
%489 = OpCompositeConstruct %mat2v3float %488 %488
|
|
||||||
%490 = OpCompositeExtract %v3float %487 0
|
|
||||||
%491 = OpCompositeExtract %v3float %489 0
|
|
||||||
%492 = OpFAdd %v3float %490 %491
|
|
||||||
%493 = OpCompositeExtract %v3float %487 1
|
|
||||||
%494 = OpCompositeExtract %v3float %489 1
|
|
||||||
%495 = OpFAdd %v3float %493 %494
|
|
||||||
%496 = OpCompositeConstruct %mat2v3float %492 %495
|
|
||||||
OpStore %_1_m23 %496
|
|
||||||
%497 = OpLoad %bool %_0_ok
|
|
||||||
OpSelectionMerge %499 None
|
|
||||||
OpBranchConditional %497 %498 %499
|
|
||||||
%498 = OpLabel
|
|
||||||
%500 = OpLoad %mat2v3float %_1_m23
|
|
||||||
%502 = OpCompositeConstruct %v3float %float_3 %float_1 %float_1
|
|
||||||
%503 = OpCompositeConstruct %v3float %float_1 %float_3 %float_1
|
|
||||||
%501 = OpCompositeConstruct %mat2v3float %502 %503
|
|
||||||
%504 = OpCompositeExtract %v3float %500 0
|
|
||||||
%505 = OpCompositeExtract %v3float %501 0
|
|
||||||
%506 = OpFOrdEqual %v3bool %504 %505
|
%506 = OpFOrdEqual %v3bool %504 %505
|
||||||
%507 = OpAll %bool %506
|
%507 = OpAll %bool %506
|
||||||
%508 = OpCompositeExtract %v3float %500 1
|
%508 = OpLogicalAnd %bool %503 %507
|
||||||
%509 = OpCompositeExtract %v3float %501 1
|
%509 = OpCompositeExtract %v3float %495 2
|
||||||
%510 = OpFOrdEqual %v3bool %508 %509
|
%510 = OpCompositeExtract %v3float %496 2
|
||||||
%511 = OpAll %bool %510
|
%511 = OpFOrdEqual %v3bool %509 %510
|
||||||
%512 = OpLogicalAnd %bool %507 %511
|
%512 = OpAll %bool %511
|
||||||
OpBranch %499
|
%513 = OpLogicalAnd %bool %508 %512
|
||||||
%499 = OpLabel
|
OpBranch %494
|
||||||
%513 = OpPhi %bool %false %466 %512 %498
|
%494 = OpLabel
|
||||||
OpStore %_0_ok %513
|
%514 = OpPhi %bool %false %473 %513 %493
|
||||||
%514 = OpLoad %mat3v2float %_3_m32
|
OpStore %_0_ok %514
|
||||||
%515 = OpCompositeConstruct %v2float %float_2 %float_2
|
%515 = OpLoad %mat2v3float %_1_m23
|
||||||
%516 = OpCompositeConstruct %mat3v2float %515 %515 %515
|
%516 = OpCompositeConstruct %v3float %float_1 %float_1 %float_1
|
||||||
%517 = OpCompositeExtract %v2float %514 0
|
%517 = OpCompositeConstruct %mat2v3float %516 %516
|
||||||
%518 = OpCompositeExtract %v2float %516 0
|
%518 = OpCompositeExtract %v3float %515 0
|
||||||
%519 = OpFSub %v2float %517 %518
|
%519 = OpCompositeExtract %v3float %517 0
|
||||||
%520 = OpCompositeExtract %v2float %514 1
|
%520 = OpFAdd %v3float %518 %519
|
||||||
%521 = OpCompositeExtract %v2float %516 1
|
%521 = OpCompositeExtract %v3float %515 1
|
||||||
%522 = OpFSub %v2float %520 %521
|
%522 = OpCompositeExtract %v3float %517 1
|
||||||
%523 = OpCompositeExtract %v2float %514 2
|
%523 = OpFAdd %v3float %521 %522
|
||||||
%524 = OpCompositeExtract %v2float %516 2
|
%524 = OpCompositeConstruct %mat2v3float %520 %523
|
||||||
%525 = OpFSub %v2float %523 %524
|
OpStore %_1_m23 %524
|
||||||
%526 = OpCompositeConstruct %mat3v2float %519 %522 %525
|
%525 = OpLoad %bool %_0_ok
|
||||||
OpStore %_3_m32 %526
|
OpSelectionMerge %527 None
|
||||||
%527 = OpLoad %bool %_0_ok
|
OpBranchConditional %525 %526 %527
|
||||||
OpSelectionMerge %529 None
|
%526 = OpLabel
|
||||||
OpBranchConditional %527 %528 %529
|
%528 = OpLoad %mat2v3float %_1_m23
|
||||||
%528 = OpLabel
|
%530 = OpCompositeConstruct %v3float %float_3 %float_1 %float_1
|
||||||
%530 = OpLoad %mat3v2float %_3_m32
|
%531 = OpCompositeConstruct %v3float %float_1 %float_3 %float_1
|
||||||
%532 = OpCompositeConstruct %v2float %float_2 %float_n2
|
%529 = OpCompositeConstruct %mat2v3float %530 %531
|
||||||
%533 = OpCompositeConstruct %v2float %float_n2 %float_2
|
%532 = OpCompositeExtract %v3float %528 0
|
||||||
%534 = OpCompositeConstruct %v2float %float_n2 %float_n2
|
%533 = OpCompositeExtract %v3float %529 0
|
||||||
%531 = OpCompositeConstruct %mat3v2float %532 %533 %534
|
%534 = OpFOrdEqual %v3bool %532 %533
|
||||||
%535 = OpCompositeExtract %v2float %530 0
|
%535 = OpAll %bool %534
|
||||||
%536 = OpCompositeExtract %v2float %531 0
|
%536 = OpCompositeExtract %v3float %528 1
|
||||||
%537 = OpFOrdEqual %v2bool %535 %536
|
%537 = OpCompositeExtract %v3float %529 1
|
||||||
%538 = OpAll %bool %537
|
%538 = OpFOrdEqual %v3bool %536 %537
|
||||||
%539 = OpCompositeExtract %v2float %530 1
|
%539 = OpAll %bool %538
|
||||||
%540 = OpCompositeExtract %v2float %531 1
|
%540 = OpLogicalAnd %bool %535 %539
|
||||||
%541 = OpFOrdEqual %v2bool %539 %540
|
OpBranch %527
|
||||||
%542 = OpAll %bool %541
|
%527 = OpLabel
|
||||||
%543 = OpLogicalAnd %bool %538 %542
|
%541 = OpPhi %bool %false %494 %540 %526
|
||||||
%544 = OpCompositeExtract %v2float %530 2
|
OpStore %_0_ok %541
|
||||||
%545 = OpCompositeExtract %v2float %531 2
|
%542 = OpLoad %mat3v2float %_3_m32
|
||||||
%546 = OpFOrdEqual %v2bool %544 %545
|
%543 = OpCompositeConstruct %v2float %float_2 %float_2
|
||||||
%547 = OpAll %bool %546
|
%544 = OpCompositeConstruct %mat3v2float %543 %543 %543
|
||||||
%548 = OpLogicalAnd %bool %543 %547
|
%545 = OpCompositeExtract %v2float %542 0
|
||||||
OpBranch %529
|
%546 = OpCompositeExtract %v2float %544 0
|
||||||
%529 = OpLabel
|
%547 = OpFSub %v2float %545 %546
|
||||||
%549 = OpPhi %bool %false %499 %548 %528
|
%548 = OpCompositeExtract %v2float %542 1
|
||||||
OpStore %_0_ok %549
|
%549 = OpCompositeExtract %v2float %544 1
|
||||||
%550 = OpLoad %bool %_0_ok
|
%550 = OpFSub %v2float %548 %549
|
||||||
OpSelectionMerge %552 None
|
%551 = OpCompositeExtract %v2float %542 2
|
||||||
OpBranchConditional %550 %551 %552
|
%552 = OpCompositeExtract %v2float %544 2
|
||||||
%551 = OpLabel
|
%553 = OpFSub %v2float %551 %552
|
||||||
%553 = OpFunctionCall %bool %test_half_b
|
%554 = OpCompositeConstruct %mat3v2float %547 %550 %553
|
||||||
OpBranch %552
|
OpStore %_3_m32 %554
|
||||||
%552 = OpLabel
|
%555 = OpLoad %bool %_0_ok
|
||||||
%554 = OpPhi %bool %false %529 %553 %551
|
OpSelectionMerge %557 None
|
||||||
OpSelectionMerge %559 None
|
OpBranchConditional %555 %556 %557
|
||||||
OpBranchConditional %554 %557 %558
|
%556 = OpLabel
|
||||||
|
%558 = OpLoad %mat3v2float %_3_m32
|
||||||
|
%560 = OpCompositeConstruct %v2float %float_2 %float_n2
|
||||||
|
%561 = OpCompositeConstruct %v2float %float_n2 %float_2
|
||||||
|
%562 = OpCompositeConstruct %v2float %float_n2 %float_n2
|
||||||
|
%559 = OpCompositeConstruct %mat3v2float %560 %561 %562
|
||||||
|
%563 = OpCompositeExtract %v2float %558 0
|
||||||
|
%564 = OpCompositeExtract %v2float %559 0
|
||||||
|
%565 = OpFOrdEqual %v2bool %563 %564
|
||||||
|
%566 = OpAll %bool %565
|
||||||
|
%567 = OpCompositeExtract %v2float %558 1
|
||||||
|
%568 = OpCompositeExtract %v2float %559 1
|
||||||
|
%569 = OpFOrdEqual %v2bool %567 %568
|
||||||
|
%570 = OpAll %bool %569
|
||||||
|
%571 = OpLogicalAnd %bool %566 %570
|
||||||
|
%572 = OpCompositeExtract %v2float %558 2
|
||||||
|
%573 = OpCompositeExtract %v2float %559 2
|
||||||
|
%574 = OpFOrdEqual %v2bool %572 %573
|
||||||
|
%575 = OpAll %bool %574
|
||||||
|
%576 = OpLogicalAnd %bool %571 %575
|
||||||
|
OpBranch %557
|
||||||
%557 = OpLabel
|
%557 = OpLabel
|
||||||
%560 = OpAccessChain %_ptr_Uniform_v4float %11 %int_0
|
%577 = OpPhi %bool %false %527 %576 %556
|
||||||
%564 = OpLoad %v4float %560
|
OpStore %_0_ok %577
|
||||||
OpStore %555 %564
|
%578 = OpLoad %mat2v4float %_2_m24
|
||||||
OpBranch %559
|
%579 = OpCompositeConstruct %v4float %float_4 %float_4 %float_4 %float_4
|
||||||
%558 = OpLabel
|
%580 = OpCompositeConstruct %mat2v4float %579 %579
|
||||||
%565 = OpAccessChain %_ptr_Uniform_v4float %11 %int_1
|
%581 = OpCompositeExtract %v4float %578 0
|
||||||
%567 = OpLoad %v4float %565
|
%582 = OpCompositeExtract %v4float %580 0
|
||||||
OpStore %555 %567
|
%583 = OpFDiv %v4float %581 %582
|
||||||
OpBranch %559
|
%584 = OpCompositeExtract %v4float %578 1
|
||||||
%559 = OpLabel
|
%585 = OpCompositeExtract %v4float %580 1
|
||||||
%568 = OpLoad %v4float %555
|
%586 = OpFDiv %v4float %584 %585
|
||||||
OpReturnValue %568
|
%587 = OpCompositeConstruct %mat2v4float %583 %586
|
||||||
|
OpStore %_2_m24 %587
|
||||||
|
%588 = OpLoad %bool %_0_ok
|
||||||
|
OpSelectionMerge %590 None
|
||||||
|
OpBranchConditional %588 %589 %590
|
||||||
|
%589 = OpLabel
|
||||||
|
%591 = OpLoad %mat2v4float %_2_m24
|
||||||
|
%593 = OpCompositeConstruct %v4float %float_0_75 %float_0 %float_0 %float_0
|
||||||
|
%594 = OpCompositeConstruct %v4float %float_0 %float_0_75 %float_0 %float_0
|
||||||
|
%592 = OpCompositeConstruct %mat2v4float %593 %594
|
||||||
|
%595 = OpCompositeExtract %v4float %591 0
|
||||||
|
%596 = OpCompositeExtract %v4float %592 0
|
||||||
|
%597 = OpFOrdEqual %v4bool %595 %596
|
||||||
|
%598 = OpAll %bool %597
|
||||||
|
%599 = OpCompositeExtract %v4float %591 1
|
||||||
|
%600 = OpCompositeExtract %v4float %592 1
|
||||||
|
%601 = OpFOrdEqual %v4bool %599 %600
|
||||||
|
%602 = OpAll %bool %601
|
||||||
|
%603 = OpLogicalAnd %bool %598 %602
|
||||||
|
OpBranch %590
|
||||||
|
%590 = OpLabel
|
||||||
|
%604 = OpPhi %bool %false %557 %603 %589
|
||||||
|
OpStore %_0_ok %604
|
||||||
|
%605 = OpLoad %bool %_0_ok
|
||||||
|
OpSelectionMerge %607 None
|
||||||
|
OpBranchConditional %605 %606 %607
|
||||||
|
%606 = OpLabel
|
||||||
|
%608 = OpFunctionCall %bool %test_half_b
|
||||||
|
OpBranch %607
|
||||||
|
%607 = OpLabel
|
||||||
|
%609 = OpPhi %bool %false %590 %608 %606
|
||||||
|
OpSelectionMerge %614 None
|
||||||
|
OpBranchConditional %609 %612 %613
|
||||||
|
%612 = OpLabel
|
||||||
|
%615 = OpAccessChain %_ptr_Uniform_v4float %11 %int_0
|
||||||
|
%619 = OpLoad %v4float %615
|
||||||
|
OpStore %610 %619
|
||||||
|
OpBranch %614
|
||||||
|
%613 = OpLabel
|
||||||
|
%620 = OpAccessChain %_ptr_Uniform_v4float %11 %int_1
|
||||||
|
%622 = OpLoad %v4float %620
|
||||||
|
OpStore %610 %622
|
||||||
|
OpBranch %614
|
||||||
|
%614 = OpLabel
|
||||||
|
%623 = OpLoad %v4float %610
|
||||||
|
OpReturnValue %623
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
|
@ -22,6 +22,8 @@ bool test_half_b() {
|
|||||||
ok = ok && m23 == mat2x3(3.0, 1.0, 1.0, 1.0, 3.0, 1.0);
|
ok = ok && m23 == mat2x3(3.0, 1.0, 1.0, 1.0, 3.0, 1.0);
|
||||||
m32 -= 2.0;
|
m32 -= 2.0;
|
||||||
ok = ok && m32 == mat3x2(2.0, -2.0, -2.0, 2.0, -2.0, -2.0);
|
ok = ok && m32 == mat3x2(2.0, -2.0, -2.0, 2.0, -2.0, -2.0);
|
||||||
|
m24 /= 4.0;
|
||||||
|
ok = ok && m24 == mat2x4(0.75, 0.0, 0.0, 0.0, 0.0, 0.75, 0.0, 0.0);
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
vec4 main() {
|
vec4 main() {
|
||||||
@ -44,5 +46,7 @@ vec4 main() {
|
|||||||
_0_ok = _0_ok && _1_m23 == mat2x3(3.0, 1.0, 1.0, 1.0, 3.0, 1.0);
|
_0_ok = _0_ok && _1_m23 == mat2x3(3.0, 1.0, 1.0, 1.0, 3.0, 1.0);
|
||||||
_3_m32 -= 2.0;
|
_3_m32 -= 2.0;
|
||||||
_0_ok = _0_ok && _3_m32 == mat3x2(2.0, -2.0, -2.0, 2.0, -2.0, -2.0);
|
_0_ok = _0_ok && _3_m32 == mat3x2(2.0, -2.0, -2.0, 2.0, -2.0, -2.0);
|
||||||
|
_2_m24 /= 4.0;
|
||||||
|
_0_ok = _0_ok && _2_m24 == mat2x4(0.75, 0.0, 0.0, 0.0, 0.0, 0.75, 0.0, 0.0);
|
||||||
return _0_ok && test_half_b() ? colorGreen : colorRed;
|
return _0_ok && test_half_b() ? colorGreen : colorRed;
|
||||||
}
|
}
|
||||||
|
@ -64,6 +64,13 @@ thread bool operator==(const float3x3 left, const float3x3 right) {
|
|||||||
thread bool operator!=(const float3x3 left, const float3x3 right) {
|
thread bool operator!=(const float3x3 left, const float3x3 right) {
|
||||||
return !(left == right);
|
return !(left == right);
|
||||||
}
|
}
|
||||||
|
thread float2x4 operator/(const float2x4 left, const float2x4 right) {
|
||||||
|
return float2x4(left[0] / right[0], left[1] / right[1]);
|
||||||
|
}
|
||||||
|
thread float2x4& operator/=(thread float2x4& left, thread const float2x4& right) {
|
||||||
|
left = left / right;
|
||||||
|
return left;
|
||||||
|
}
|
||||||
bool test_half_b() {
|
bool test_half_b() {
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
float2x3 m23 = float2x3(2.0);
|
float2x3 m23 = float2x3(2.0);
|
||||||
@ -84,6 +91,8 @@ bool test_half_b() {
|
|||||||
ok = ok && m23 == float2x3(float3(3.0, 1.0, 1.0), float3(1.0, 3.0, 1.0));
|
ok = ok && m23 == float2x3(float3(3.0, 1.0, 1.0), float3(1.0, 3.0, 1.0));
|
||||||
m32 -= (float3x2(1.0, 1.0, 1.0, 1.0, 1.0, 1.0) * 2.0);
|
m32 -= (float3x2(1.0, 1.0, 1.0, 1.0, 1.0, 1.0) * 2.0);
|
||||||
ok = ok && m32 == float3x2(float2(2.0, -2.0), float2(-2.0, 2.0), float2(-2.0, -2.0));
|
ok = ok && m32 == float3x2(float2(2.0, -2.0), float2(-2.0, 2.0), float2(-2.0, -2.0));
|
||||||
|
m24 /= (float2x4(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0) * 4.0);
|
||||||
|
ok = ok && m24 == float2x4(float4(0.75, 0.0, 0.0, 0.0), float4(0.0, 0.75, 0.0, 0.0));
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
|
fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
|
||||||
@ -108,6 +117,8 @@ fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _unifo
|
|||||||
_0_ok = _0_ok && _1_m23 == float2x3(float3(3.0, 1.0, 1.0), float3(1.0, 3.0, 1.0));
|
_0_ok = _0_ok && _1_m23 == float2x3(float3(3.0, 1.0, 1.0), float3(1.0, 3.0, 1.0));
|
||||||
_3_m32 -= (float3x2(1.0, 1.0, 1.0, 1.0, 1.0, 1.0) * 2.0);
|
_3_m32 -= (float3x2(1.0, 1.0, 1.0, 1.0, 1.0, 1.0) * 2.0);
|
||||||
_0_ok = _0_ok && _3_m32 == float3x2(float2(2.0, -2.0), float2(-2.0, 2.0), float2(-2.0, -2.0));
|
_0_ok = _0_ok && _3_m32 == float3x2(float2(2.0, -2.0), float2(-2.0, 2.0), float2(-2.0, -2.0));
|
||||||
|
_2_m24 /= (float2x4(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0) * 4.0);
|
||||||
|
_0_ok = _0_ok && _2_m24 == float2x4(float4(0.75, 0.0, 0.0, 0.0), float4(0.0, 0.75, 0.0, 0.0));
|
||||||
_out.sk_FragColor = _0_ok && test_half_b() ? _uniforms.colorGreen : _uniforms.colorRed;
|
_out.sk_FragColor = _0_ok && test_half_b() ? _uniforms.colorGreen : _uniforms.colorRed;
|
||||||
return _out;
|
return _out;
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,3 @@
|
|||||||
### Compilation failed:
|
|
||||||
|
|
||||||
error: SPIR-V validation error: Expected floating scalar or vector type as Result Type: FDiv
|
|
||||||
%283 = OpFDiv %mat2v2float %282 %277
|
|
||||||
|
|
||||||
OpCapability Shader
|
OpCapability Shader
|
||||||
%1 = OpExtInstImport "GLSL.std.450"
|
%1 = OpExtInstImport "GLSL.std.450"
|
||||||
OpMemoryModel Logical GLSL450
|
OpMemoryModel Logical GLSL450
|
||||||
@ -153,19 +148,25 @@ OpDecorate %283 RelaxedPrecision
|
|||||||
OpDecorate %284 RelaxedPrecision
|
OpDecorate %284 RelaxedPrecision
|
||||||
OpDecorate %285 RelaxedPrecision
|
OpDecorate %285 RelaxedPrecision
|
||||||
OpDecorate %286 RelaxedPrecision
|
OpDecorate %286 RelaxedPrecision
|
||||||
OpDecorate %298 RelaxedPrecision
|
OpDecorate %287 RelaxedPrecision
|
||||||
OpDecorate %303 RelaxedPrecision
|
OpDecorate %288 RelaxedPrecision
|
||||||
OpDecorate %341 RelaxedPrecision
|
OpDecorate %289 RelaxedPrecision
|
||||||
OpDecorate %379 RelaxedPrecision
|
OpDecorate %290 RelaxedPrecision
|
||||||
OpDecorate %406 RelaxedPrecision
|
OpDecorate %291 RelaxedPrecision
|
||||||
OpDecorate %433 RelaxedPrecision
|
OpDecorate %292 RelaxedPrecision
|
||||||
OpDecorate %471 RelaxedPrecision
|
OpDecorate %304 RelaxedPrecision
|
||||||
OpDecorate %509 RelaxedPrecision
|
OpDecorate %309 RelaxedPrecision
|
||||||
OpDecorate %536 RelaxedPrecision
|
OpDecorate %347 RelaxedPrecision
|
||||||
OpDecorate %558 RelaxedPrecision
|
OpDecorate %385 RelaxedPrecision
|
||||||
OpDecorate %572 RelaxedPrecision
|
OpDecorate %412 RelaxedPrecision
|
||||||
OpDecorate %575 RelaxedPrecision
|
OpDecorate %439 RelaxedPrecision
|
||||||
OpDecorate %576 RelaxedPrecision
|
OpDecorate %477 RelaxedPrecision
|
||||||
|
OpDecorate %515 RelaxedPrecision
|
||||||
|
OpDecorate %542 RelaxedPrecision
|
||||||
|
OpDecorate %570 RelaxedPrecision
|
||||||
|
OpDecorate %584 RelaxedPrecision
|
||||||
|
OpDecorate %587 RelaxedPrecision
|
||||||
|
OpDecorate %588 RelaxedPrecision
|
||||||
%float = OpTypeFloat 32
|
%float = OpTypeFloat 32
|
||||||
%v4float = OpTypeVector %float 4
|
%v4float = OpTypeVector %float 4
|
||||||
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
||||||
@ -199,7 +200,7 @@ OpDecorate %576 RelaxedPrecision
|
|||||||
%float_0_5 = OpConstant %float 0.5
|
%float_0_5 = OpConstant %float 0.5
|
||||||
%mat2v2float = OpTypeMatrix %v2float 2
|
%mat2v2float = OpTypeMatrix %v2float 2
|
||||||
%v2bool = OpTypeVector %bool 2
|
%v2bool = OpTypeVector %bool 2
|
||||||
%299 = OpTypeFunction %v4float %_ptr_Function_v2float
|
%305 = OpTypeFunction %v4float %_ptr_Function_v2float
|
||||||
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
||||||
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
|
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
|
||||||
%int = OpTypeInt 32 1
|
%int = OpTypeInt 32 1
|
||||||
@ -487,342 +488,352 @@ OpBranchConditional %274 %275 %276
|
|||||||
%277 = OpCompositeConstruct %mat2v2float %278 %279
|
%277 = OpCompositeConstruct %mat2v2float %278 %279
|
||||||
%281 = OpCompositeConstruct %v2float %float_4 %float_4
|
%281 = OpCompositeConstruct %v2float %float_4 %float_4
|
||||||
%282 = OpCompositeConstruct %mat2v2float %281 %281
|
%282 = OpCompositeConstruct %mat2v2float %281 %281
|
||||||
%283 = OpFDiv %mat2v2float %282 %277
|
%283 = OpCompositeExtract %v2float %282 0
|
||||||
%285 = OpCompositeConstruct %v2float %float_2 %float_2
|
%284 = OpCompositeExtract %v2float %277 0
|
||||||
%286 = OpCompositeConstruct %v2float %float_2 %float_2
|
%285 = OpFDiv %v2float %283 %284
|
||||||
%284 = OpCompositeConstruct %mat2v2float %285 %286
|
%286 = OpCompositeExtract %v2float %282 1
|
||||||
%288 = OpCompositeExtract %v2float %283 0
|
%287 = OpCompositeExtract %v2float %277 1
|
||||||
%289 = OpCompositeExtract %v2float %284 0
|
%288 = OpFDiv %v2float %286 %287
|
||||||
%290 = OpFOrdEqual %v2bool %288 %289
|
%289 = OpCompositeConstruct %mat2v2float %285 %288
|
||||||
%291 = OpAll %bool %290
|
%291 = OpCompositeConstruct %v2float %float_2 %float_2
|
||||||
%292 = OpCompositeExtract %v2float %283 1
|
%292 = OpCompositeConstruct %v2float %float_2 %float_2
|
||||||
%293 = OpCompositeExtract %v2float %284 1
|
%290 = OpCompositeConstruct %mat2v2float %291 %292
|
||||||
%294 = OpFOrdEqual %v2bool %292 %293
|
%294 = OpCompositeExtract %v2float %289 0
|
||||||
%295 = OpAll %bool %294
|
%295 = OpCompositeExtract %v2float %290 0
|
||||||
%296 = OpLogicalAnd %bool %291 %295
|
%296 = OpFOrdEqual %v2bool %294 %295
|
||||||
|
%297 = OpAll %bool %296
|
||||||
|
%298 = OpCompositeExtract %v2float %289 1
|
||||||
|
%299 = OpCompositeExtract %v2float %290 1
|
||||||
|
%300 = OpFOrdEqual %v2bool %298 %299
|
||||||
|
%301 = OpAll %bool %300
|
||||||
|
%302 = OpLogicalAnd %bool %297 %301
|
||||||
OpBranch %276
|
OpBranch %276
|
||||||
%276 = OpLabel
|
%276 = OpLabel
|
||||||
%297 = OpPhi %bool %false %249 %296 %275
|
%303 = OpPhi %bool %false %249 %302 %275
|
||||||
OpStore %ok %297
|
OpStore %ok %303
|
||||||
%298 = OpLoad %bool %ok
|
%304 = OpLoad %bool %ok
|
||||||
OpReturnValue %298
|
OpReturnValue %304
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%main = OpFunction %v4float None %299
|
%main = OpFunction %v4float None %305
|
||||||
%300 = OpFunctionParameter %_ptr_Function_v2float
|
%306 = OpFunctionParameter %_ptr_Function_v2float
|
||||||
%301 = OpLabel
|
%307 = OpLabel
|
||||||
%_0_ok = OpVariable %_ptr_Function_bool Function
|
%_0_ok = OpVariable %_ptr_Function_bool Function
|
||||||
%563 = OpVariable %_ptr_Function_v4float Function
|
%575 = OpVariable %_ptr_Function_v4float Function
|
||||||
OpStore %_0_ok %true
|
OpStore %_0_ok %true
|
||||||
%303 = OpLoad %bool %_0_ok
|
%309 = OpLoad %bool %_0_ok
|
||||||
OpSelectionMerge %305 None
|
OpSelectionMerge %311 None
|
||||||
OpBranchConditional %303 %304 %305
|
OpBranchConditional %309 %310 %311
|
||||||
%304 = OpLabel
|
%310 = OpLabel
|
||||||
%307 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
%313 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||||
%308 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
%314 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||||
%309 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
%315 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
||||||
%306 = OpCompositeConstruct %mat3v3float %307 %308 %309
|
%312 = OpCompositeConstruct %mat3v3float %313 %314 %315
|
||||||
%310 = OpCompositeConstruct %v3float %float_4 %float_4 %float_4
|
%316 = OpCompositeConstruct %v3float %float_4 %float_4 %float_4
|
||||||
%311 = OpCompositeConstruct %mat3v3float %310 %310 %310
|
%317 = OpCompositeConstruct %mat3v3float %316 %316 %316
|
||||||
%312 = OpCompositeExtract %v3float %306 0
|
%318 = OpCompositeExtract %v3float %312 0
|
||||||
%313 = OpCompositeExtract %v3float %311 0
|
%319 = OpCompositeExtract %v3float %317 0
|
||||||
%314 = OpFAdd %v3float %312 %313
|
|
||||||
%315 = OpCompositeExtract %v3float %306 1
|
|
||||||
%316 = OpCompositeExtract %v3float %311 1
|
|
||||||
%317 = OpFAdd %v3float %315 %316
|
|
||||||
%318 = OpCompositeExtract %v3float %306 2
|
|
||||||
%319 = OpCompositeExtract %v3float %311 2
|
|
||||||
%320 = OpFAdd %v3float %318 %319
|
%320 = OpFAdd %v3float %318 %319
|
||||||
%321 = OpCompositeConstruct %mat3v3float %314 %317 %320
|
%321 = OpCompositeExtract %v3float %312 1
|
||||||
%323 = OpCompositeConstruct %v3float %float_6 %float_4 %float_4
|
%322 = OpCompositeExtract %v3float %317 1
|
||||||
%324 = OpCompositeConstruct %v3float %float_4 %float_6 %float_4
|
%323 = OpFAdd %v3float %321 %322
|
||||||
%325 = OpCompositeConstruct %v3float %float_4 %float_4 %float_6
|
%324 = OpCompositeExtract %v3float %312 2
|
||||||
%322 = OpCompositeConstruct %mat3v3float %323 %324 %325
|
%325 = OpCompositeExtract %v3float %317 2
|
||||||
%326 = OpCompositeExtract %v3float %321 0
|
%326 = OpFAdd %v3float %324 %325
|
||||||
%327 = OpCompositeExtract %v3float %322 0
|
%327 = OpCompositeConstruct %mat3v3float %320 %323 %326
|
||||||
%328 = OpFOrdEqual %v3bool %326 %327
|
%329 = OpCompositeConstruct %v3float %float_6 %float_4 %float_4
|
||||||
%329 = OpAll %bool %328
|
%330 = OpCompositeConstruct %v3float %float_4 %float_6 %float_4
|
||||||
%330 = OpCompositeExtract %v3float %321 1
|
%331 = OpCompositeConstruct %v3float %float_4 %float_4 %float_6
|
||||||
%331 = OpCompositeExtract %v3float %322 1
|
%328 = OpCompositeConstruct %mat3v3float %329 %330 %331
|
||||||
%332 = OpFOrdEqual %v3bool %330 %331
|
%332 = OpCompositeExtract %v3float %327 0
|
||||||
%333 = OpAll %bool %332
|
%333 = OpCompositeExtract %v3float %328 0
|
||||||
%334 = OpLogicalAnd %bool %329 %333
|
%334 = OpFOrdEqual %v3bool %332 %333
|
||||||
%335 = OpCompositeExtract %v3float %321 2
|
%335 = OpAll %bool %334
|
||||||
%336 = OpCompositeExtract %v3float %322 2
|
%336 = OpCompositeExtract %v3float %327 1
|
||||||
%337 = OpFOrdEqual %v3bool %335 %336
|
%337 = OpCompositeExtract %v3float %328 1
|
||||||
%338 = OpAll %bool %337
|
%338 = OpFOrdEqual %v3bool %336 %337
|
||||||
%339 = OpLogicalAnd %bool %334 %338
|
%339 = OpAll %bool %338
|
||||||
OpBranch %305
|
%340 = OpLogicalAnd %bool %335 %339
|
||||||
%305 = OpLabel
|
%341 = OpCompositeExtract %v3float %327 2
|
||||||
%340 = OpPhi %bool %false %301 %339 %304
|
%342 = OpCompositeExtract %v3float %328 2
|
||||||
OpStore %_0_ok %340
|
%343 = OpFOrdEqual %v3bool %341 %342
|
||||||
%341 = OpLoad %bool %_0_ok
|
%344 = OpAll %bool %343
|
||||||
OpSelectionMerge %343 None
|
%345 = OpLogicalAnd %bool %340 %344
|
||||||
OpBranchConditional %341 %342 %343
|
OpBranch %311
|
||||||
%342 = OpLabel
|
%311 = OpLabel
|
||||||
%345 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
%346 = OpPhi %bool %false %307 %345 %310
|
||||||
%346 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
OpStore %_0_ok %346
|
||||||
%347 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
%347 = OpLoad %bool %_0_ok
|
||||||
%344 = OpCompositeConstruct %mat3v3float %345 %346 %347
|
OpSelectionMerge %349 None
|
||||||
%348 = OpCompositeConstruct %v3float %float_4 %float_4 %float_4
|
OpBranchConditional %347 %348 %349
|
||||||
%349 = OpCompositeConstruct %mat3v3float %348 %348 %348
|
%348 = OpLabel
|
||||||
%350 = OpCompositeExtract %v3float %344 0
|
%351 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||||
%351 = OpCompositeExtract %v3float %349 0
|
%352 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||||
%352 = OpFSub %v3float %350 %351
|
%353 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
||||||
%353 = OpCompositeExtract %v3float %344 1
|
%350 = OpCompositeConstruct %mat3v3float %351 %352 %353
|
||||||
%354 = OpCompositeExtract %v3float %349 1
|
%354 = OpCompositeConstruct %v3float %float_4 %float_4 %float_4
|
||||||
%355 = OpFSub %v3float %353 %354
|
%355 = OpCompositeConstruct %mat3v3float %354 %354 %354
|
||||||
%356 = OpCompositeExtract %v3float %344 2
|
%356 = OpCompositeExtract %v3float %350 0
|
||||||
%357 = OpCompositeExtract %v3float %349 2
|
%357 = OpCompositeExtract %v3float %355 0
|
||||||
%358 = OpFSub %v3float %356 %357
|
%358 = OpFSub %v3float %356 %357
|
||||||
%359 = OpCompositeConstruct %mat3v3float %352 %355 %358
|
%359 = OpCompositeExtract %v3float %350 1
|
||||||
%361 = OpCompositeConstruct %v3float %float_n2 %float_n4 %float_n4
|
%360 = OpCompositeExtract %v3float %355 1
|
||||||
%362 = OpCompositeConstruct %v3float %float_n4 %float_n2 %float_n4
|
%361 = OpFSub %v3float %359 %360
|
||||||
%363 = OpCompositeConstruct %v3float %float_n4 %float_n4 %float_n2
|
%362 = OpCompositeExtract %v3float %350 2
|
||||||
%360 = OpCompositeConstruct %mat3v3float %361 %362 %363
|
%363 = OpCompositeExtract %v3float %355 2
|
||||||
%364 = OpCompositeExtract %v3float %359 0
|
%364 = OpFSub %v3float %362 %363
|
||||||
%365 = OpCompositeExtract %v3float %360 0
|
%365 = OpCompositeConstruct %mat3v3float %358 %361 %364
|
||||||
%366 = OpFOrdEqual %v3bool %364 %365
|
%367 = OpCompositeConstruct %v3float %float_n2 %float_n4 %float_n4
|
||||||
%367 = OpAll %bool %366
|
%368 = OpCompositeConstruct %v3float %float_n4 %float_n2 %float_n4
|
||||||
%368 = OpCompositeExtract %v3float %359 1
|
%369 = OpCompositeConstruct %v3float %float_n4 %float_n4 %float_n2
|
||||||
%369 = OpCompositeExtract %v3float %360 1
|
%366 = OpCompositeConstruct %mat3v3float %367 %368 %369
|
||||||
%370 = OpFOrdEqual %v3bool %368 %369
|
%370 = OpCompositeExtract %v3float %365 0
|
||||||
%371 = OpAll %bool %370
|
%371 = OpCompositeExtract %v3float %366 0
|
||||||
%372 = OpLogicalAnd %bool %367 %371
|
%372 = OpFOrdEqual %v3bool %370 %371
|
||||||
%373 = OpCompositeExtract %v3float %359 2
|
%373 = OpAll %bool %372
|
||||||
%374 = OpCompositeExtract %v3float %360 2
|
%374 = OpCompositeExtract %v3float %365 1
|
||||||
%375 = OpFOrdEqual %v3bool %373 %374
|
%375 = OpCompositeExtract %v3float %366 1
|
||||||
%376 = OpAll %bool %375
|
%376 = OpFOrdEqual %v3bool %374 %375
|
||||||
%377 = OpLogicalAnd %bool %372 %376
|
%377 = OpAll %bool %376
|
||||||
OpBranch %343
|
%378 = OpLogicalAnd %bool %373 %377
|
||||||
%343 = OpLabel
|
%379 = OpCompositeExtract %v3float %365 2
|
||||||
%378 = OpPhi %bool %false %305 %377 %342
|
%380 = OpCompositeExtract %v3float %366 2
|
||||||
OpStore %_0_ok %378
|
%381 = OpFOrdEqual %v3bool %379 %380
|
||||||
%379 = OpLoad %bool %_0_ok
|
%382 = OpAll %bool %381
|
||||||
OpSelectionMerge %381 None
|
%383 = OpLogicalAnd %bool %378 %382
|
||||||
OpBranchConditional %379 %380 %381
|
OpBranch %349
|
||||||
%380 = OpLabel
|
%349 = OpLabel
|
||||||
%383 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
%384 = OpPhi %bool %false %311 %383 %348
|
||||||
%384 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
OpStore %_0_ok %384
|
||||||
%385 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
%385 = OpLoad %bool %_0_ok
|
||||||
%382 = OpCompositeConstruct %mat3v3float %383 %384 %385
|
OpSelectionMerge %387 None
|
||||||
%386 = OpMatrixTimesScalar %mat3v3float %382 %float_4
|
OpBranchConditional %385 %386 %387
|
||||||
%388 = OpCompositeConstruct %v3float %float_8 %float_0 %float_0
|
%386 = OpLabel
|
||||||
%389 = OpCompositeConstruct %v3float %float_0 %float_8 %float_0
|
%389 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||||
%390 = OpCompositeConstruct %v3float %float_0 %float_0 %float_8
|
%390 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||||
%387 = OpCompositeConstruct %mat3v3float %388 %389 %390
|
%391 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
||||||
%391 = OpCompositeExtract %v3float %386 0
|
%388 = OpCompositeConstruct %mat3v3float %389 %390 %391
|
||||||
%392 = OpCompositeExtract %v3float %387 0
|
%392 = OpMatrixTimesScalar %mat3v3float %388 %float_4
|
||||||
%393 = OpFOrdEqual %v3bool %391 %392
|
%394 = OpCompositeConstruct %v3float %float_8 %float_0 %float_0
|
||||||
%394 = OpAll %bool %393
|
%395 = OpCompositeConstruct %v3float %float_0 %float_8 %float_0
|
||||||
%395 = OpCompositeExtract %v3float %386 1
|
%396 = OpCompositeConstruct %v3float %float_0 %float_0 %float_8
|
||||||
%396 = OpCompositeExtract %v3float %387 1
|
%393 = OpCompositeConstruct %mat3v3float %394 %395 %396
|
||||||
%397 = OpFOrdEqual %v3bool %395 %396
|
%397 = OpCompositeExtract %v3float %392 0
|
||||||
%398 = OpAll %bool %397
|
%398 = OpCompositeExtract %v3float %393 0
|
||||||
%399 = OpLogicalAnd %bool %394 %398
|
%399 = OpFOrdEqual %v3bool %397 %398
|
||||||
%400 = OpCompositeExtract %v3float %386 2
|
%400 = OpAll %bool %399
|
||||||
%401 = OpCompositeExtract %v3float %387 2
|
%401 = OpCompositeExtract %v3float %392 1
|
||||||
%402 = OpFOrdEqual %v3bool %400 %401
|
%402 = OpCompositeExtract %v3float %393 1
|
||||||
%403 = OpAll %bool %402
|
%403 = OpFOrdEqual %v3bool %401 %402
|
||||||
%404 = OpLogicalAnd %bool %399 %403
|
%404 = OpAll %bool %403
|
||||||
OpBranch %381
|
%405 = OpLogicalAnd %bool %400 %404
|
||||||
%381 = OpLabel
|
%406 = OpCompositeExtract %v3float %392 2
|
||||||
%405 = OpPhi %bool %false %343 %404 %380
|
%407 = OpCompositeExtract %v3float %393 2
|
||||||
OpStore %_0_ok %405
|
%408 = OpFOrdEqual %v3bool %406 %407
|
||||||
%406 = OpLoad %bool %_0_ok
|
%409 = OpAll %bool %408
|
||||||
OpSelectionMerge %408 None
|
%410 = OpLogicalAnd %bool %405 %409
|
||||||
OpBranchConditional %406 %407 %408
|
OpBranch %387
|
||||||
%407 = OpLabel
|
%387 = OpLabel
|
||||||
%410 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
%411 = OpPhi %bool %false %349 %410 %386
|
||||||
%411 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
OpStore %_0_ok %411
|
||||||
%412 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
%412 = OpLoad %bool %_0_ok
|
||||||
%409 = OpCompositeConstruct %mat3v3float %410 %411 %412
|
OpSelectionMerge %414 None
|
||||||
%413 = OpMatrixTimesScalar %mat3v3float %409 %float_0_25
|
OpBranchConditional %412 %413 %414
|
||||||
%415 = OpCompositeConstruct %v3float %float_0_5 %float_0 %float_0
|
%413 = OpLabel
|
||||||
%416 = OpCompositeConstruct %v3float %float_0 %float_0_5 %float_0
|
%416 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||||
%417 = OpCompositeConstruct %v3float %float_0 %float_0 %float_0_5
|
%417 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||||
%414 = OpCompositeConstruct %mat3v3float %415 %416 %417
|
%418 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
||||||
%418 = OpCompositeExtract %v3float %413 0
|
%415 = OpCompositeConstruct %mat3v3float %416 %417 %418
|
||||||
%419 = OpCompositeExtract %v3float %414 0
|
%419 = OpMatrixTimesScalar %mat3v3float %415 %float_0_25
|
||||||
%420 = OpFOrdEqual %v3bool %418 %419
|
%421 = OpCompositeConstruct %v3float %float_0_5 %float_0 %float_0
|
||||||
%421 = OpAll %bool %420
|
%422 = OpCompositeConstruct %v3float %float_0 %float_0_5 %float_0
|
||||||
%422 = OpCompositeExtract %v3float %413 1
|
%423 = OpCompositeConstruct %v3float %float_0 %float_0 %float_0_5
|
||||||
%423 = OpCompositeExtract %v3float %414 1
|
%420 = OpCompositeConstruct %mat3v3float %421 %422 %423
|
||||||
%424 = OpFOrdEqual %v3bool %422 %423
|
%424 = OpCompositeExtract %v3float %419 0
|
||||||
%425 = OpAll %bool %424
|
%425 = OpCompositeExtract %v3float %420 0
|
||||||
%426 = OpLogicalAnd %bool %421 %425
|
%426 = OpFOrdEqual %v3bool %424 %425
|
||||||
%427 = OpCompositeExtract %v3float %413 2
|
%427 = OpAll %bool %426
|
||||||
%428 = OpCompositeExtract %v3float %414 2
|
%428 = OpCompositeExtract %v3float %419 1
|
||||||
%429 = OpFOrdEqual %v3bool %427 %428
|
%429 = OpCompositeExtract %v3float %420 1
|
||||||
%430 = OpAll %bool %429
|
%430 = OpFOrdEqual %v3bool %428 %429
|
||||||
%431 = OpLogicalAnd %bool %426 %430
|
%431 = OpAll %bool %430
|
||||||
OpBranch %408
|
%432 = OpLogicalAnd %bool %427 %431
|
||||||
%408 = OpLabel
|
%433 = OpCompositeExtract %v3float %419 2
|
||||||
%432 = OpPhi %bool %false %381 %431 %407
|
%434 = OpCompositeExtract %v3float %420 2
|
||||||
OpStore %_0_ok %432
|
%435 = OpFOrdEqual %v3bool %433 %434
|
||||||
%433 = OpLoad %bool %_0_ok
|
%436 = OpAll %bool %435
|
||||||
OpSelectionMerge %435 None
|
%437 = OpLogicalAnd %bool %432 %436
|
||||||
OpBranchConditional %433 %434 %435
|
OpBranch %414
|
||||||
%434 = OpLabel
|
%414 = OpLabel
|
||||||
%437 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
%438 = OpPhi %bool %false %387 %437 %413
|
||||||
%438 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
OpStore %_0_ok %438
|
||||||
%439 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
%439 = OpLoad %bool %_0_ok
|
||||||
%436 = OpCompositeConstruct %mat3v3float %437 %438 %439
|
OpSelectionMerge %441 None
|
||||||
%440 = OpCompositeConstruct %v3float %float_4 %float_4 %float_4
|
OpBranchConditional %439 %440 %441
|
||||||
%441 = OpCompositeConstruct %mat3v3float %440 %440 %440
|
%440 = OpLabel
|
||||||
%442 = OpCompositeExtract %v3float %441 0
|
%443 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||||
%443 = OpCompositeExtract %v3float %436 0
|
%444 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||||
%444 = OpFAdd %v3float %442 %443
|
%445 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
||||||
%445 = OpCompositeExtract %v3float %441 1
|
%442 = OpCompositeConstruct %mat3v3float %443 %444 %445
|
||||||
%446 = OpCompositeExtract %v3float %436 1
|
%446 = OpCompositeConstruct %v3float %float_4 %float_4 %float_4
|
||||||
%447 = OpFAdd %v3float %445 %446
|
%447 = OpCompositeConstruct %mat3v3float %446 %446 %446
|
||||||
%448 = OpCompositeExtract %v3float %441 2
|
%448 = OpCompositeExtract %v3float %447 0
|
||||||
%449 = OpCompositeExtract %v3float %436 2
|
%449 = OpCompositeExtract %v3float %442 0
|
||||||
%450 = OpFAdd %v3float %448 %449
|
%450 = OpFAdd %v3float %448 %449
|
||||||
%451 = OpCompositeConstruct %mat3v3float %444 %447 %450
|
%451 = OpCompositeExtract %v3float %447 1
|
||||||
%453 = OpCompositeConstruct %v3float %float_6 %float_4 %float_4
|
%452 = OpCompositeExtract %v3float %442 1
|
||||||
%454 = OpCompositeConstruct %v3float %float_4 %float_6 %float_4
|
%453 = OpFAdd %v3float %451 %452
|
||||||
%455 = OpCompositeConstruct %v3float %float_4 %float_4 %float_6
|
%454 = OpCompositeExtract %v3float %447 2
|
||||||
%452 = OpCompositeConstruct %mat3v3float %453 %454 %455
|
%455 = OpCompositeExtract %v3float %442 2
|
||||||
%456 = OpCompositeExtract %v3float %451 0
|
%456 = OpFAdd %v3float %454 %455
|
||||||
%457 = OpCompositeExtract %v3float %452 0
|
%457 = OpCompositeConstruct %mat3v3float %450 %453 %456
|
||||||
%458 = OpFOrdEqual %v3bool %456 %457
|
%459 = OpCompositeConstruct %v3float %float_6 %float_4 %float_4
|
||||||
%459 = OpAll %bool %458
|
%460 = OpCompositeConstruct %v3float %float_4 %float_6 %float_4
|
||||||
%460 = OpCompositeExtract %v3float %451 1
|
%461 = OpCompositeConstruct %v3float %float_4 %float_4 %float_6
|
||||||
%461 = OpCompositeExtract %v3float %452 1
|
%458 = OpCompositeConstruct %mat3v3float %459 %460 %461
|
||||||
%462 = OpFOrdEqual %v3bool %460 %461
|
%462 = OpCompositeExtract %v3float %457 0
|
||||||
%463 = OpAll %bool %462
|
%463 = OpCompositeExtract %v3float %458 0
|
||||||
%464 = OpLogicalAnd %bool %459 %463
|
%464 = OpFOrdEqual %v3bool %462 %463
|
||||||
%465 = OpCompositeExtract %v3float %451 2
|
%465 = OpAll %bool %464
|
||||||
%466 = OpCompositeExtract %v3float %452 2
|
%466 = OpCompositeExtract %v3float %457 1
|
||||||
%467 = OpFOrdEqual %v3bool %465 %466
|
%467 = OpCompositeExtract %v3float %458 1
|
||||||
%468 = OpAll %bool %467
|
%468 = OpFOrdEqual %v3bool %466 %467
|
||||||
%469 = OpLogicalAnd %bool %464 %468
|
%469 = OpAll %bool %468
|
||||||
OpBranch %435
|
%470 = OpLogicalAnd %bool %465 %469
|
||||||
%435 = OpLabel
|
%471 = OpCompositeExtract %v3float %457 2
|
||||||
%470 = OpPhi %bool %false %408 %469 %434
|
%472 = OpCompositeExtract %v3float %458 2
|
||||||
OpStore %_0_ok %470
|
%473 = OpFOrdEqual %v3bool %471 %472
|
||||||
%471 = OpLoad %bool %_0_ok
|
%474 = OpAll %bool %473
|
||||||
OpSelectionMerge %473 None
|
%475 = OpLogicalAnd %bool %470 %474
|
||||||
OpBranchConditional %471 %472 %473
|
OpBranch %441
|
||||||
%472 = OpLabel
|
%441 = OpLabel
|
||||||
%475 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
%476 = OpPhi %bool %false %414 %475 %440
|
||||||
%476 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
OpStore %_0_ok %476
|
||||||
%477 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
%477 = OpLoad %bool %_0_ok
|
||||||
%474 = OpCompositeConstruct %mat3v3float %475 %476 %477
|
OpSelectionMerge %479 None
|
||||||
%478 = OpCompositeConstruct %v3float %float_4 %float_4 %float_4
|
OpBranchConditional %477 %478 %479
|
||||||
%479 = OpCompositeConstruct %mat3v3float %478 %478 %478
|
%478 = OpLabel
|
||||||
%480 = OpCompositeExtract %v3float %479 0
|
%481 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||||
%481 = OpCompositeExtract %v3float %474 0
|
%482 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||||
%482 = OpFSub %v3float %480 %481
|
%483 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
||||||
%483 = OpCompositeExtract %v3float %479 1
|
%480 = OpCompositeConstruct %mat3v3float %481 %482 %483
|
||||||
%484 = OpCompositeExtract %v3float %474 1
|
%484 = OpCompositeConstruct %v3float %float_4 %float_4 %float_4
|
||||||
%485 = OpFSub %v3float %483 %484
|
%485 = OpCompositeConstruct %mat3v3float %484 %484 %484
|
||||||
%486 = OpCompositeExtract %v3float %479 2
|
%486 = OpCompositeExtract %v3float %485 0
|
||||||
%487 = OpCompositeExtract %v3float %474 2
|
%487 = OpCompositeExtract %v3float %480 0
|
||||||
%488 = OpFSub %v3float %486 %487
|
%488 = OpFSub %v3float %486 %487
|
||||||
%489 = OpCompositeConstruct %mat3v3float %482 %485 %488
|
%489 = OpCompositeExtract %v3float %485 1
|
||||||
%491 = OpCompositeConstruct %v3float %float_2 %float_4 %float_4
|
%490 = OpCompositeExtract %v3float %480 1
|
||||||
%492 = OpCompositeConstruct %v3float %float_4 %float_2 %float_4
|
%491 = OpFSub %v3float %489 %490
|
||||||
%493 = OpCompositeConstruct %v3float %float_4 %float_4 %float_2
|
%492 = OpCompositeExtract %v3float %485 2
|
||||||
%490 = OpCompositeConstruct %mat3v3float %491 %492 %493
|
%493 = OpCompositeExtract %v3float %480 2
|
||||||
%494 = OpCompositeExtract %v3float %489 0
|
%494 = OpFSub %v3float %492 %493
|
||||||
%495 = OpCompositeExtract %v3float %490 0
|
%495 = OpCompositeConstruct %mat3v3float %488 %491 %494
|
||||||
%496 = OpFOrdEqual %v3bool %494 %495
|
%497 = OpCompositeConstruct %v3float %float_2 %float_4 %float_4
|
||||||
%497 = OpAll %bool %496
|
%498 = OpCompositeConstruct %v3float %float_4 %float_2 %float_4
|
||||||
%498 = OpCompositeExtract %v3float %489 1
|
%499 = OpCompositeConstruct %v3float %float_4 %float_4 %float_2
|
||||||
%499 = OpCompositeExtract %v3float %490 1
|
%496 = OpCompositeConstruct %mat3v3float %497 %498 %499
|
||||||
%500 = OpFOrdEqual %v3bool %498 %499
|
%500 = OpCompositeExtract %v3float %495 0
|
||||||
%501 = OpAll %bool %500
|
%501 = OpCompositeExtract %v3float %496 0
|
||||||
%502 = OpLogicalAnd %bool %497 %501
|
%502 = OpFOrdEqual %v3bool %500 %501
|
||||||
%503 = OpCompositeExtract %v3float %489 2
|
%503 = OpAll %bool %502
|
||||||
%504 = OpCompositeExtract %v3float %490 2
|
%504 = OpCompositeExtract %v3float %495 1
|
||||||
%505 = OpFOrdEqual %v3bool %503 %504
|
%505 = OpCompositeExtract %v3float %496 1
|
||||||
%506 = OpAll %bool %505
|
%506 = OpFOrdEqual %v3bool %504 %505
|
||||||
%507 = OpLogicalAnd %bool %502 %506
|
%507 = OpAll %bool %506
|
||||||
OpBranch %473
|
%508 = OpLogicalAnd %bool %503 %507
|
||||||
%473 = OpLabel
|
%509 = OpCompositeExtract %v3float %495 2
|
||||||
%508 = OpPhi %bool %false %435 %507 %472
|
%510 = OpCompositeExtract %v3float %496 2
|
||||||
OpStore %_0_ok %508
|
%511 = OpFOrdEqual %v3bool %509 %510
|
||||||
%509 = OpLoad %bool %_0_ok
|
%512 = OpAll %bool %511
|
||||||
OpSelectionMerge %511 None
|
%513 = OpLogicalAnd %bool %508 %512
|
||||||
OpBranchConditional %509 %510 %511
|
OpBranch %479
|
||||||
%510 = OpLabel
|
%479 = OpLabel
|
||||||
%513 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
%514 = OpPhi %bool %false %441 %513 %478
|
||||||
%514 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
OpStore %_0_ok %514
|
||||||
%515 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
%515 = OpLoad %bool %_0_ok
|
||||||
%512 = OpCompositeConstruct %mat3v3float %513 %514 %515
|
OpSelectionMerge %517 None
|
||||||
%516 = OpMatrixTimesScalar %mat3v3float %512 %float_4
|
OpBranchConditional %515 %516 %517
|
||||||
%518 = OpCompositeConstruct %v3float %float_8 %float_0 %float_0
|
%516 = OpLabel
|
||||||
%519 = OpCompositeConstruct %v3float %float_0 %float_8 %float_0
|
%519 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||||
%520 = OpCompositeConstruct %v3float %float_0 %float_0 %float_8
|
%520 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||||
%517 = OpCompositeConstruct %mat3v3float %518 %519 %520
|
%521 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
||||||
%521 = OpCompositeExtract %v3float %516 0
|
%518 = OpCompositeConstruct %mat3v3float %519 %520 %521
|
||||||
%522 = OpCompositeExtract %v3float %517 0
|
%522 = OpMatrixTimesScalar %mat3v3float %518 %float_4
|
||||||
%523 = OpFOrdEqual %v3bool %521 %522
|
%524 = OpCompositeConstruct %v3float %float_8 %float_0 %float_0
|
||||||
%524 = OpAll %bool %523
|
%525 = OpCompositeConstruct %v3float %float_0 %float_8 %float_0
|
||||||
%525 = OpCompositeExtract %v3float %516 1
|
%526 = OpCompositeConstruct %v3float %float_0 %float_0 %float_8
|
||||||
%526 = OpCompositeExtract %v3float %517 1
|
%523 = OpCompositeConstruct %mat3v3float %524 %525 %526
|
||||||
%527 = OpFOrdEqual %v3bool %525 %526
|
%527 = OpCompositeExtract %v3float %522 0
|
||||||
%528 = OpAll %bool %527
|
%528 = OpCompositeExtract %v3float %523 0
|
||||||
%529 = OpLogicalAnd %bool %524 %528
|
%529 = OpFOrdEqual %v3bool %527 %528
|
||||||
%530 = OpCompositeExtract %v3float %516 2
|
%530 = OpAll %bool %529
|
||||||
%531 = OpCompositeExtract %v3float %517 2
|
%531 = OpCompositeExtract %v3float %522 1
|
||||||
%532 = OpFOrdEqual %v3bool %530 %531
|
%532 = OpCompositeExtract %v3float %523 1
|
||||||
%533 = OpAll %bool %532
|
%533 = OpFOrdEqual %v3bool %531 %532
|
||||||
%534 = OpLogicalAnd %bool %529 %533
|
%534 = OpAll %bool %533
|
||||||
OpBranch %511
|
%535 = OpLogicalAnd %bool %530 %534
|
||||||
%511 = OpLabel
|
%536 = OpCompositeExtract %v3float %522 2
|
||||||
%535 = OpPhi %bool %false %473 %534 %510
|
%537 = OpCompositeExtract %v3float %523 2
|
||||||
OpStore %_0_ok %535
|
%538 = OpFOrdEqual %v3bool %536 %537
|
||||||
%536 = OpLoad %bool %_0_ok
|
%539 = OpAll %bool %538
|
||||||
OpSelectionMerge %538 None
|
%540 = OpLogicalAnd %bool %535 %539
|
||||||
OpBranchConditional %536 %537 %538
|
OpBranch %517
|
||||||
%537 = OpLabel
|
%517 = OpLabel
|
||||||
%540 = OpCompositeConstruct %v2float %float_2 %float_2
|
%541 = OpPhi %bool %false %479 %540 %516
|
||||||
%541 = OpCompositeConstruct %v2float %float_2 %float_2
|
OpStore %_0_ok %541
|
||||||
%539 = OpCompositeConstruct %mat2v2float %540 %541
|
%542 = OpLoad %bool %_0_ok
|
||||||
%542 = OpCompositeConstruct %v2float %float_4 %float_4
|
OpSelectionMerge %544 None
|
||||||
%543 = OpCompositeConstruct %mat2v2float %542 %542
|
OpBranchConditional %542 %543 %544
|
||||||
%544 = OpFDiv %mat2v2float %543 %539
|
%543 = OpLabel
|
||||||
%546 = OpCompositeConstruct %v2float %float_2 %float_2
|
%546 = OpCompositeConstruct %v2float %float_2 %float_2
|
||||||
%547 = OpCompositeConstruct %v2float %float_2 %float_2
|
%547 = OpCompositeConstruct %v2float %float_2 %float_2
|
||||||
%545 = OpCompositeConstruct %mat2v2float %546 %547
|
%545 = OpCompositeConstruct %mat2v2float %546 %547
|
||||||
%548 = OpCompositeExtract %v2float %544 0
|
%548 = OpCompositeConstruct %v2float %float_4 %float_4
|
||||||
%549 = OpCompositeExtract %v2float %545 0
|
%549 = OpCompositeConstruct %mat2v2float %548 %548
|
||||||
%550 = OpFOrdEqual %v2bool %548 %549
|
%550 = OpCompositeExtract %v2float %549 0
|
||||||
%551 = OpAll %bool %550
|
%551 = OpCompositeExtract %v2float %545 0
|
||||||
%552 = OpCompositeExtract %v2float %544 1
|
%552 = OpFDiv %v2float %550 %551
|
||||||
%553 = OpCompositeExtract %v2float %545 1
|
%553 = OpCompositeExtract %v2float %549 1
|
||||||
%554 = OpFOrdEqual %v2bool %552 %553
|
%554 = OpCompositeExtract %v2float %545 1
|
||||||
%555 = OpAll %bool %554
|
%555 = OpFDiv %v2float %553 %554
|
||||||
%556 = OpLogicalAnd %bool %551 %555
|
%556 = OpCompositeConstruct %mat2v2float %552 %555
|
||||||
OpBranch %538
|
%558 = OpCompositeConstruct %v2float %float_2 %float_2
|
||||||
%538 = OpLabel
|
%559 = OpCompositeConstruct %v2float %float_2 %float_2
|
||||||
%557 = OpPhi %bool %false %511 %556 %537
|
%557 = OpCompositeConstruct %mat2v2float %558 %559
|
||||||
OpStore %_0_ok %557
|
%560 = OpCompositeExtract %v2float %556 0
|
||||||
%558 = OpLoad %bool %_0_ok
|
%561 = OpCompositeExtract %v2float %557 0
|
||||||
OpSelectionMerge %560 None
|
%562 = OpFOrdEqual %v2bool %560 %561
|
||||||
OpBranchConditional %558 %559 %560
|
%563 = OpAll %bool %562
|
||||||
%559 = OpLabel
|
%564 = OpCompositeExtract %v2float %556 1
|
||||||
%561 = OpFunctionCall %bool %test_half_b
|
%565 = OpCompositeExtract %v2float %557 1
|
||||||
OpBranch %560
|
%566 = OpFOrdEqual %v2bool %564 %565
|
||||||
%560 = OpLabel
|
%567 = OpAll %bool %566
|
||||||
%562 = OpPhi %bool %false %538 %561 %559
|
%568 = OpLogicalAnd %bool %563 %567
|
||||||
OpSelectionMerge %567 None
|
OpBranch %544
|
||||||
OpBranchConditional %562 %565 %566
|
%544 = OpLabel
|
||||||
%565 = OpLabel
|
%569 = OpPhi %bool %false %517 %568 %543
|
||||||
%568 = OpAccessChain %_ptr_Uniform_v4float %11 %int_0
|
OpStore %_0_ok %569
|
||||||
%572 = OpLoad %v4float %568
|
%570 = OpLoad %bool %_0_ok
|
||||||
OpStore %563 %572
|
OpSelectionMerge %572 None
|
||||||
OpBranch %567
|
OpBranchConditional %570 %571 %572
|
||||||
%566 = OpLabel
|
%571 = OpLabel
|
||||||
%573 = OpAccessChain %_ptr_Uniform_v4float %11 %int_1
|
%573 = OpFunctionCall %bool %test_half_b
|
||||||
%575 = OpLoad %v4float %573
|
OpBranch %572
|
||||||
OpStore %563 %575
|
%572 = OpLabel
|
||||||
OpBranch %567
|
%574 = OpPhi %bool %false %544 %573 %571
|
||||||
%567 = OpLabel
|
OpSelectionMerge %579 None
|
||||||
%576 = OpLoad %v4float %563
|
OpBranchConditional %574 %577 %578
|
||||||
OpReturnValue %576
|
%577 = OpLabel
|
||||||
|
%580 = OpAccessChain %_ptr_Uniform_v4float %11 %int_0
|
||||||
|
%584 = OpLoad %v4float %580
|
||||||
|
OpStore %575 %584
|
||||||
|
OpBranch %579
|
||||||
|
%578 = OpLabel
|
||||||
|
%585 = OpAccessChain %_ptr_Uniform_v4float %11 %int_1
|
||||||
|
%587 = OpLoad %v4float %585
|
||||||
|
OpStore %575 %587
|
||||||
|
OpBranch %579
|
||||||
|
%579 = OpLabel
|
||||||
|
%588 = OpLoad %v4float %575
|
||||||
|
OpReturnValue %588
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
|
|
||||||
1 error
|
|
||||||
|
Loading…
Reference in New Issue
Block a user