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,
|
||||
-2, 2,
|
||||
-2, -2));
|
||||
m24 /= 4;
|
||||
ok = ok && (m24 == float2x4(0.75, 0, 0, 0,
|
||||
0, 0.75, 0, 0));
|
||||
return ok;
|
||||
}
|
||||
|
||||
@ -85,6 +88,9 @@ bool test_half() {
|
||||
ok = ok && (m32 == half3x2(2, -2,
|
||||
-2, 2,
|
||||
-2, -2));
|
||||
m24 /= 4;
|
||||
ok = ok && (m24 == half2x4(0.75, 0, 0, 0,
|
||||
0, 0.75, 0, 0));
|
||||
return ok;
|
||||
}
|
||||
|
||||
|
@ -2528,6 +2528,10 @@ SpvId SPIRVCodeGenerator::writeBinaryExpression(const Type& leftType, SpvId lhs,
|
||||
return this->writeBinaryOperation(resultType, *operandType, lhs, rhs, SpvOpFMul,
|
||||
SpvOpIMul, SpvOpIMul, SpvOpUndef, out);
|
||||
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,
|
||||
SpvOpSDiv, SpvOpUDiv, SpvOpUndef, out);
|
||||
case Token::Kind::TK_PERCENT:
|
||||
|
@ -145,19 +145,35 @@ OpDecorate %283 RelaxedPrecision
|
||||
OpDecorate %284 RelaxedPrecision
|
||||
OpDecorate %285 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 %331 RelaxedPrecision
|
||||
OpDecorate %353 RelaxedPrecision
|
||||
OpDecorate %311 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 %410 RelaxedPrecision
|
||||
OpDecorate %443 RelaxedPrecision
|
||||
OpDecorate %464 RelaxedPrecision
|
||||
OpDecorate %497 RelaxedPrecision
|
||||
OpDecorate %527 RelaxedPrecision
|
||||
OpDecorate %550 RelaxedPrecision
|
||||
OpDecorate %564 RelaxedPrecision
|
||||
OpDecorate %567 RelaxedPrecision
|
||||
OpDecorate %568 RelaxedPrecision
|
||||
OpDecorate %409 RelaxedPrecision
|
||||
OpDecorate %438 RelaxedPrecision
|
||||
OpDecorate %471 RelaxedPrecision
|
||||
OpDecorate %492 RelaxedPrecision
|
||||
OpDecorate %525 RelaxedPrecision
|
||||
OpDecorate %555 RelaxedPrecision
|
||||
OpDecorate %588 RelaxedPrecision
|
||||
OpDecorate %605 RelaxedPrecision
|
||||
OpDecorate %619 RelaxedPrecision
|
||||
OpDecorate %622 RelaxedPrecision
|
||||
OpDecorate %623 RelaxedPrecision
|
||||
%float = OpTypeFloat 32
|
||||
%v4float = OpTypeVector %float 4
|
||||
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
||||
@ -205,7 +221,8 @@ OpDecorate %568 RelaxedPrecision
|
||||
%float_35 = OpConstant %float 35
|
||||
%float_1 = OpConstant %float 1
|
||||
%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_Uniform_v4float = OpTypePointer Uniform %v4float
|
||||
%int = OpTypeInt 32 1
|
||||
@ -512,12 +529,44 @@ OpBranch %279
|
||||
%279 = OpLabel
|
||||
%300 = OpPhi %bool %false %249 %299 %278
|
||||
OpStore %ok %300
|
||||
%301 = OpLoad %bool %ok
|
||||
OpReturnValue %301
|
||||
%301 = OpLoad %mat2v4float %m24
|
||||
%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
|
||||
%main = OpFunction %v4float None %302
|
||||
%303 = OpFunctionParameter %_ptr_Function_v2float
|
||||
%304 = OpLabel
|
||||
%main = OpFunction %v4float None %330
|
||||
%331 = OpFunctionParameter %_ptr_Function_v2float
|
||||
%332 = OpLabel
|
||||
%_0_ok = OpVariable %_ptr_Function_bool Function
|
||||
%_1_m23 = OpVariable %_ptr_Function_mat2v3float Function
|
||||
%_2_m24 = OpVariable %_ptr_Function_mat2v4float Function
|
||||
@ -526,311 +575,343 @@ OpFunctionEnd
|
||||
%_6_m43 = OpVariable %_ptr_Function_mat4v3float Function
|
||||
%_7_m22 = OpVariable %_ptr_Function_mat2v2float Function
|
||||
%_8_m33 = OpVariable %_ptr_Function_mat3v3float Function
|
||||
%555 = OpVariable %_ptr_Function_v4float Function
|
||||
%610 = OpVariable %_ptr_Function_v4float Function
|
||||
OpStore %_0_ok %true
|
||||
%308 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||
%309 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||
%307 = OpCompositeConstruct %mat2v3float %308 %309
|
||||
OpStore %_1_m23 %307
|
||||
%310 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %312 None
|
||||
OpBranchConditional %310 %311 %312
|
||||
%311 = OpLabel
|
||||
%313 = OpLoad %mat2v3float %_1_m23
|
||||
%315 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||
%316 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||
%314 = OpCompositeConstruct %mat2v3float %315 %316
|
||||
%317 = OpCompositeExtract %v3float %313 0
|
||||
%318 = OpCompositeExtract %v3float %314 0
|
||||
%319 = OpFOrdEqual %v3bool %317 %318
|
||||
%320 = OpAll %bool %319
|
||||
%321 = OpCompositeExtract %v3float %313 1
|
||||
%322 = OpCompositeExtract %v3float %314 1
|
||||
%323 = OpFOrdEqual %v3bool %321 %322
|
||||
%324 = OpAll %bool %323
|
||||
%325 = OpLogicalAnd %bool %320 %324
|
||||
OpBranch %312
|
||||
%312 = OpLabel
|
||||
%326 = OpPhi %bool %false %304 %325 %311
|
||||
OpStore %_0_ok %326
|
||||
%329 = OpCompositeConstruct %v4float %float_3 %float_0 %float_0 %float_0
|
||||
%330 = OpCompositeConstruct %v4float %float_0 %float_3 %float_0 %float_0
|
||||
%328 = OpCompositeConstruct %mat2v4float %329 %330
|
||||
OpStore %_2_m24 %328
|
||||
%331 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %333 None
|
||||
OpBranchConditional %331 %332 %333
|
||||
%332 = OpLabel
|
||||
%334 = OpLoad %mat2v4float %_2_m24
|
||||
%336 = OpCompositeConstruct %v4float %float_3 %float_0 %float_0 %float_0
|
||||
%337 = OpCompositeConstruct %v4float %float_0 %float_3 %float_0 %float_0
|
||||
%335 = OpCompositeConstruct %mat2v4float %336 %337
|
||||
%338 = OpCompositeExtract %v4float %334 0
|
||||
%339 = OpCompositeExtract %v4float %335 0
|
||||
%340 = OpFOrdEqual %v4bool %338 %339
|
||||
%341 = OpAll %bool %340
|
||||
%342 = OpCompositeExtract %v4float %334 1
|
||||
%343 = OpCompositeExtract %v4float %335 1
|
||||
%344 = OpFOrdEqual %v4bool %342 %343
|
||||
%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
|
||||
%336 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||
%337 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||
%335 = OpCompositeConstruct %mat2v3float %336 %337
|
||||
OpStore %_1_m23 %335
|
||||
%338 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %340 None
|
||||
OpBranchConditional %338 %339 %340
|
||||
%339 = OpLabel
|
||||
%341 = OpLoad %mat2v3float %_1_m23
|
||||
%343 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||
%344 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||
%342 = OpCompositeConstruct %mat2v3float %343 %344
|
||||
%345 = OpCompositeExtract %v3float %341 0
|
||||
%346 = OpCompositeExtract %v3float %342 0
|
||||
%347 = OpFOrdEqual %v3bool %345 %346
|
||||
%348 = OpAll %bool %347
|
||||
%349 = OpCompositeExtract %v3float %341 1
|
||||
%350 = OpCompositeExtract %v3float %342 1
|
||||
%351 = OpFOrdEqual %v3bool %349 %350
|
||||
%352 = OpAll %bool %351
|
||||
%353 = OpLogicalAnd %bool %348 %352
|
||||
OpBranch %340
|
||||
%340 = OpLabel
|
||||
%354 = OpPhi %bool %false %332 %353 %339
|
||||
OpStore %_0_ok %354
|
||||
%357 = OpCompositeConstruct %v4float %float_3 %float_0 %float_0 %float_0
|
||||
%358 = OpCompositeConstruct %v4float %float_0 %float_3 %float_0 %float_0
|
||||
%356 = OpCompositeConstruct %mat2v4float %357 %358
|
||||
OpStore %_2_m24 %356
|
||||
%359 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %361 None
|
||||
OpBranchConditional %359 %360 %361
|
||||
%360 = OpLabel
|
||||
%362 = OpLoad %mat2v4float %_2_m24
|
||||
%364 = OpCompositeConstruct %v4float %float_3 %float_0 %float_0 %float_0
|
||||
%365 = OpCompositeConstruct %v4float %float_0 %float_3 %float_0 %float_0
|
||||
%363 = OpCompositeConstruct %mat2v4float %364 %365
|
||||
%366 = OpCompositeExtract %v4float %362 0
|
||||
%367 = OpCompositeExtract %v4float %363 0
|
||||
%368 = OpFOrdEqual %v4bool %366 %367
|
||||
%369 = OpAll %bool %368
|
||||
%370 = OpCompositeExtract %v4float %362 1
|
||||
%371 = OpCompositeExtract %v4float %363 1
|
||||
%372 = OpFOrdEqual %v4bool %370 %371
|
||||
%373 = OpAll %bool %372
|
||||
%374 = OpLogicalAnd %bool %369 %373
|
||||
OpBranch %355
|
||||
%355 = OpLabel
|
||||
%375 = OpPhi %bool %false %333 %374 %354
|
||||
OpBranch %361
|
||||
%361 = OpLabel
|
||||
%375 = OpPhi %bool %false %340 %374 %360
|
||||
OpStore %_0_ok %375
|
||||
%378 = OpCompositeConstruct %v4float %float_5 %float_0 %float_0 %float_0
|
||||
%379 = OpCompositeConstruct %v4float %float_0 %float_5 %float_0 %float_0
|
||||
%380 = OpCompositeConstruct %v4float %float_0 %float_0 %float_5 %float_0
|
||||
%377 = OpCompositeConstruct %mat3v4float %378 %379 %380
|
||||
OpStore %_4_m34 %377
|
||||
%378 = OpCompositeConstruct %v2float %float_4 %float_0
|
||||
%379 = OpCompositeConstruct %v2float %float_0 %float_4
|
||||
%380 = OpCompositeConstruct %v2float %float_0 %float_0
|
||||
%377 = OpCompositeConstruct %mat3v2float %378 %379 %380
|
||||
OpStore %_3_m32 %377
|
||||
%381 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %383 None
|
||||
OpBranchConditional %381 %382 %383
|
||||
%382 = OpLabel
|
||||
%384 = OpLoad %mat3v4float %_4_m34
|
||||
%386 = OpCompositeConstruct %v4float %float_5 %float_0 %float_0 %float_0
|
||||
%387 = OpCompositeConstruct %v4float %float_0 %float_5 %float_0 %float_0
|
||||
%388 = OpCompositeConstruct %v4float %float_0 %float_0 %float_5 %float_0
|
||||
%385 = OpCompositeConstruct %mat3v4float %386 %387 %388
|
||||
%389 = OpCompositeExtract %v4float %384 0
|
||||
%390 = OpCompositeExtract %v4float %385 0
|
||||
%391 = OpFOrdEqual %v4bool %389 %390
|
||||
%384 = OpLoad %mat3v2float %_3_m32
|
||||
%386 = OpCompositeConstruct %v2float %float_4 %float_0
|
||||
%387 = OpCompositeConstruct %v2float %float_0 %float_4
|
||||
%388 = OpCompositeConstruct %v2float %float_0 %float_0
|
||||
%385 = OpCompositeConstruct %mat3v2float %386 %387 %388
|
||||
%389 = OpCompositeExtract %v2float %384 0
|
||||
%390 = OpCompositeExtract %v2float %385 0
|
||||
%391 = OpFOrdEqual %v2bool %389 %390
|
||||
%392 = OpAll %bool %391
|
||||
%393 = OpCompositeExtract %v4float %384 1
|
||||
%394 = OpCompositeExtract %v4float %385 1
|
||||
%395 = OpFOrdEqual %v4bool %393 %394
|
||||
%393 = OpCompositeExtract %v2float %384 1
|
||||
%394 = OpCompositeExtract %v2float %385 1
|
||||
%395 = OpFOrdEqual %v2bool %393 %394
|
||||
%396 = OpAll %bool %395
|
||||
%397 = OpLogicalAnd %bool %392 %396
|
||||
%398 = OpCompositeExtract %v4float %384 2
|
||||
%399 = OpCompositeExtract %v4float %385 2
|
||||
%400 = OpFOrdEqual %v4bool %398 %399
|
||||
%398 = OpCompositeExtract %v2float %384 2
|
||||
%399 = OpCompositeExtract %v2float %385 2
|
||||
%400 = OpFOrdEqual %v2bool %398 %399
|
||||
%401 = OpAll %bool %400
|
||||
%402 = OpLogicalAnd %bool %397 %401
|
||||
OpBranch %383
|
||||
%383 = OpLabel
|
||||
%403 = OpPhi %bool %false %355 %402 %382
|
||||
%403 = OpPhi %bool %false %361 %402 %382
|
||||
OpStore %_0_ok %403
|
||||
%406 = OpCompositeConstruct %v3float %float_7 %float_0 %float_0
|
||||
%407 = OpCompositeConstruct %v3float %float_0 %float_7 %float_0
|
||||
%408 = OpCompositeConstruct %v3float %float_0 %float_0 %float_7
|
||||
%409 = OpCompositeConstruct %v3float %float_0 %float_0 %float_0
|
||||
%405 = OpCompositeConstruct %mat4v3float %406 %407 %408 %409
|
||||
OpStore %_6_m43 %405
|
||||
%410 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %412 None
|
||||
OpBranchConditional %410 %411 %412
|
||||
%406 = OpCompositeConstruct %v4float %float_5 %float_0 %float_0 %float_0
|
||||
%407 = OpCompositeConstruct %v4float %float_0 %float_5 %float_0 %float_0
|
||||
%408 = OpCompositeConstruct %v4float %float_0 %float_0 %float_5 %float_0
|
||||
%405 = OpCompositeConstruct %mat3v4float %406 %407 %408
|
||||
OpStore %_4_m34 %405
|
||||
%409 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %411 None
|
||||
OpBranchConditional %409 %410 %411
|
||||
%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
|
||||
%413 = OpLoad %mat4v3float %_6_m43
|
||||
%415 = OpCompositeConstruct %v3float %float_7 %float_0 %float_0
|
||||
%416 = OpCompositeConstruct %v3float %float_0 %float_7 %float_0
|
||||
%417 = OpCompositeConstruct %v3float %float_0 %float_0 %float_7
|
||||
%418 = OpCompositeConstruct %v3float %float_0 %float_0 %float_0
|
||||
%414 = OpCompositeConstruct %mat4v3float %415 %416 %417 %418
|
||||
%419 = OpCompositeExtract %v3float %413 0
|
||||
%420 = OpCompositeExtract %v3float %414 0
|
||||
%421 = OpFOrdEqual %v3bool %419 %420
|
||||
%422 = OpAll %bool %421
|
||||
%423 = OpCompositeExtract %v3float %413 1
|
||||
%424 = OpCompositeExtract %v3float %414 1
|
||||
%425 = OpFOrdEqual %v3bool %423 %424
|
||||
%426 = OpAll %bool %425
|
||||
%427 = OpLogicalAnd %bool %422 %426
|
||||
%428 = OpCompositeExtract %v3float %413 2
|
||||
%429 = OpCompositeExtract %v3float %414 2
|
||||
%430 = OpFOrdEqual %v3bool %428 %429
|
||||
%431 = OpAll %bool %430
|
||||
%432 = OpLogicalAnd %bool %427 %431
|
||||
%433 = OpCompositeExtract %v3float %413 3
|
||||
%434 = OpCompositeExtract %v3float %414 3
|
||||
%435 = OpFOrdEqual %v3bool %433 %434
|
||||
%436 = OpAll %bool %435
|
||||
%437 = OpLogicalAnd %bool %432 %436
|
||||
OpBranch %412
|
||||
%412 = OpLabel
|
||||
%438 = OpPhi %bool %false %383 %437 %411
|
||||
OpStore %_0_ok %438
|
||||
%440 = OpLoad %mat3v2float %_3_m32
|
||||
%441 = OpLoad %mat2v3float %_1_m23
|
||||
%442 = OpMatrixTimesMatrix %mat2v2float %440 %441
|
||||
OpStore %_7_m22 %442
|
||||
%443 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %445 None
|
||||
OpBranchConditional %443 %444 %445
|
||||
%444 = OpLabel
|
||||
%446 = OpLoad %mat2v2float %_7_m22
|
||||
%448 = OpCompositeConstruct %v2float %float_8 %float_0
|
||||
%449 = OpCompositeConstruct %v2float %float_0 %float_8
|
||||
%447 = OpCompositeConstruct %mat2v2float %448 %449
|
||||
%450 = OpCompositeExtract %v2float %446 0
|
||||
%451 = OpCompositeExtract %v2float %447 0
|
||||
%452 = OpFOrdEqual %v2bool %450 %451
|
||||
%453 = OpAll %bool %452
|
||||
%454 = OpCompositeExtract %v2float %446 1
|
||||
%455 = OpCompositeExtract %v2float %447 1
|
||||
%456 = OpFOrdEqual %v2bool %454 %455
|
||||
%457 = OpAll %bool %456
|
||||
%458 = OpLogicalAnd %bool %453 %457
|
||||
OpBranch %445
|
||||
%445 = OpLabel
|
||||
%459 = OpPhi %bool %false %412 %458 %444
|
||||
OpStore %_0_ok %459
|
||||
%461 = OpLoad %mat4v3float %_6_m43
|
||||
%462 = OpLoad %mat3v4float %_4_m34
|
||||
%463 = OpMatrixTimesMatrix %mat3v3float %461 %462
|
||||
OpStore %_8_m33 %463
|
||||
%464 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %466 None
|
||||
OpBranchConditional %464 %465 %466
|
||||
%465 = OpLabel
|
||||
%467 = OpLoad %mat3v3float %_8_m33
|
||||
%469 = OpCompositeConstruct %v3float %float_35 %float_0 %float_0
|
||||
%470 = OpCompositeConstruct %v3float %float_0 %float_35 %float_0
|
||||
%471 = OpCompositeConstruct %v3float %float_0 %float_0 %float_35
|
||||
%468 = OpCompositeConstruct %mat3v3float %469 %470 %471
|
||||
%472 = OpCompositeExtract %v3float %467 0
|
||||
%473 = OpCompositeExtract %v3float %468 0
|
||||
%474 = OpFOrdEqual %v3bool %472 %473
|
||||
%475 = OpAll %bool %474
|
||||
%476 = OpCompositeExtract %v3float %467 1
|
||||
%477 = OpCompositeExtract %v3float %468 1
|
||||
%478 = OpFOrdEqual %v3bool %476 %477
|
||||
%479 = OpAll %bool %478
|
||||
%480 = OpLogicalAnd %bool %475 %479
|
||||
%481 = OpCompositeExtract %v3float %467 2
|
||||
%482 = OpCompositeExtract %v3float %468 2
|
||||
%483 = OpFOrdEqual %v3bool %481 %482
|
||||
%484 = OpAll %bool %483
|
||||
%485 = OpLogicalAnd %bool %480 %484
|
||||
OpBranch %466
|
||||
%466 = OpLabel
|
||||
%486 = OpPhi %bool %false %445 %485 %465
|
||||
OpStore %_0_ok %486
|
||||
%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
|
||||
%431 = OpPhi %bool %false %383 %430 %410
|
||||
OpStore %_0_ok %431
|
||||
%434 = OpCompositeConstruct %v3float %float_7 %float_0 %float_0
|
||||
%435 = OpCompositeConstruct %v3float %float_0 %float_7 %float_0
|
||||
%436 = OpCompositeConstruct %v3float %float_0 %float_0 %float_7
|
||||
%437 = OpCompositeConstruct %v3float %float_0 %float_0 %float_0
|
||||
%433 = OpCompositeConstruct %mat4v3float %434 %435 %436 %437
|
||||
OpStore %_6_m43 %433
|
||||
%438 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %440 None
|
||||
OpBranchConditional %438 %439 %440
|
||||
%439 = OpLabel
|
||||
%441 = OpLoad %mat4v3float %_6_m43
|
||||
%443 = OpCompositeConstruct %v3float %float_7 %float_0 %float_0
|
||||
%444 = OpCompositeConstruct %v3float %float_0 %float_7 %float_0
|
||||
%445 = OpCompositeConstruct %v3float %float_0 %float_0 %float_7
|
||||
%446 = OpCompositeConstruct %v3float %float_0 %float_0 %float_0
|
||||
%442 = OpCompositeConstruct %mat4v3float %443 %444 %445 %446
|
||||
%447 = OpCompositeExtract %v3float %441 0
|
||||
%448 = OpCompositeExtract %v3float %442 0
|
||||
%449 = OpFOrdEqual %v3bool %447 %448
|
||||
%450 = OpAll %bool %449
|
||||
%451 = OpCompositeExtract %v3float %441 1
|
||||
%452 = OpCompositeExtract %v3float %442 1
|
||||
%453 = OpFOrdEqual %v3bool %451 %452
|
||||
%454 = OpAll %bool %453
|
||||
%455 = OpLogicalAnd %bool %450 %454
|
||||
%456 = OpCompositeExtract %v3float %441 2
|
||||
%457 = OpCompositeExtract %v3float %442 2
|
||||
%458 = OpFOrdEqual %v3bool %456 %457
|
||||
%459 = OpAll %bool %458
|
||||
%460 = OpLogicalAnd %bool %455 %459
|
||||
%461 = OpCompositeExtract %v3float %441 3
|
||||
%462 = OpCompositeExtract %v3float %442 3
|
||||
%463 = OpFOrdEqual %v3bool %461 %462
|
||||
%464 = OpAll %bool %463
|
||||
%465 = OpLogicalAnd %bool %460 %464
|
||||
OpBranch %440
|
||||
%440 = OpLabel
|
||||
%466 = OpPhi %bool %false %411 %465 %439
|
||||
OpStore %_0_ok %466
|
||||
%468 = OpLoad %mat3v2float %_3_m32
|
||||
%469 = OpLoad %mat2v3float %_1_m23
|
||||
%470 = OpMatrixTimesMatrix %mat2v2float %468 %469
|
||||
OpStore %_7_m22 %470
|
||||
%471 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %473 None
|
||||
OpBranchConditional %471 %472 %473
|
||||
%472 = OpLabel
|
||||
%474 = OpLoad %mat2v2float %_7_m22
|
||||
%476 = OpCompositeConstruct %v2float %float_8 %float_0
|
||||
%477 = OpCompositeConstruct %v2float %float_0 %float_8
|
||||
%475 = OpCompositeConstruct %mat2v2float %476 %477
|
||||
%478 = OpCompositeExtract %v2float %474 0
|
||||
%479 = OpCompositeExtract %v2float %475 0
|
||||
%480 = OpFOrdEqual %v2bool %478 %479
|
||||
%481 = OpAll %bool %480
|
||||
%482 = OpCompositeExtract %v2float %474 1
|
||||
%483 = OpCompositeExtract %v2float %475 1
|
||||
%484 = OpFOrdEqual %v2bool %482 %483
|
||||
%485 = OpAll %bool %484
|
||||
%486 = OpLogicalAnd %bool %481 %485
|
||||
OpBranch %473
|
||||
%473 = OpLabel
|
||||
%487 = OpPhi %bool %false %440 %486 %472
|
||||
OpStore %_0_ok %487
|
||||
%489 = OpLoad %mat4v3float %_6_m43
|
||||
%490 = OpLoad %mat3v4float %_4_m34
|
||||
%491 = OpMatrixTimesMatrix %mat3v3float %489 %490
|
||||
OpStore %_8_m33 %491
|
||||
%492 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %494 None
|
||||
OpBranchConditional %492 %493 %494
|
||||
%493 = OpLabel
|
||||
%495 = OpLoad %mat3v3float %_8_m33
|
||||
%497 = OpCompositeConstruct %v3float %float_35 %float_0 %float_0
|
||||
%498 = OpCompositeConstruct %v3float %float_0 %float_35 %float_0
|
||||
%499 = OpCompositeConstruct %v3float %float_0 %float_0 %float_35
|
||||
%496 = OpCompositeConstruct %mat3v3float %497 %498 %499
|
||||
%500 = OpCompositeExtract %v3float %495 0
|
||||
%501 = OpCompositeExtract %v3float %496 0
|
||||
%502 = OpFOrdEqual %v3bool %500 %501
|
||||
%503 = OpAll %bool %502
|
||||
%504 = OpCompositeExtract %v3float %495 1
|
||||
%505 = OpCompositeExtract %v3float %496 1
|
||||
%506 = OpFOrdEqual %v3bool %504 %505
|
||||
%507 = OpAll %bool %506
|
||||
%508 = OpCompositeExtract %v3float %500 1
|
||||
%509 = OpCompositeExtract %v3float %501 1
|
||||
%510 = OpFOrdEqual %v3bool %508 %509
|
||||
%511 = OpAll %bool %510
|
||||
%512 = OpLogicalAnd %bool %507 %511
|
||||
OpBranch %499
|
||||
%499 = OpLabel
|
||||
%513 = OpPhi %bool %false %466 %512 %498
|
||||
OpStore %_0_ok %513
|
||||
%514 = OpLoad %mat3v2float %_3_m32
|
||||
%515 = OpCompositeConstruct %v2float %float_2 %float_2
|
||||
%516 = OpCompositeConstruct %mat3v2float %515 %515 %515
|
||||
%517 = OpCompositeExtract %v2float %514 0
|
||||
%518 = OpCompositeExtract %v2float %516 0
|
||||
%519 = OpFSub %v2float %517 %518
|
||||
%520 = OpCompositeExtract %v2float %514 1
|
||||
%521 = OpCompositeExtract %v2float %516 1
|
||||
%522 = OpFSub %v2float %520 %521
|
||||
%523 = OpCompositeExtract %v2float %514 2
|
||||
%524 = OpCompositeExtract %v2float %516 2
|
||||
%525 = OpFSub %v2float %523 %524
|
||||
%526 = OpCompositeConstruct %mat3v2float %519 %522 %525
|
||||
OpStore %_3_m32 %526
|
||||
%527 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %529 None
|
||||
OpBranchConditional %527 %528 %529
|
||||
%528 = OpLabel
|
||||
%530 = OpLoad %mat3v2float %_3_m32
|
||||
%532 = OpCompositeConstruct %v2float %float_2 %float_n2
|
||||
%533 = OpCompositeConstruct %v2float %float_n2 %float_2
|
||||
%534 = OpCompositeConstruct %v2float %float_n2 %float_n2
|
||||
%531 = OpCompositeConstruct %mat3v2float %532 %533 %534
|
||||
%535 = OpCompositeExtract %v2float %530 0
|
||||
%536 = OpCompositeExtract %v2float %531 0
|
||||
%537 = OpFOrdEqual %v2bool %535 %536
|
||||
%538 = OpAll %bool %537
|
||||
%539 = OpCompositeExtract %v2float %530 1
|
||||
%540 = OpCompositeExtract %v2float %531 1
|
||||
%541 = OpFOrdEqual %v2bool %539 %540
|
||||
%542 = OpAll %bool %541
|
||||
%543 = OpLogicalAnd %bool %538 %542
|
||||
%544 = OpCompositeExtract %v2float %530 2
|
||||
%545 = OpCompositeExtract %v2float %531 2
|
||||
%546 = OpFOrdEqual %v2bool %544 %545
|
||||
%547 = OpAll %bool %546
|
||||
%548 = OpLogicalAnd %bool %543 %547
|
||||
OpBranch %529
|
||||
%529 = OpLabel
|
||||
%549 = OpPhi %bool %false %499 %548 %528
|
||||
OpStore %_0_ok %549
|
||||
%550 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %552 None
|
||||
OpBranchConditional %550 %551 %552
|
||||
%551 = OpLabel
|
||||
%553 = OpFunctionCall %bool %test_half_b
|
||||
OpBranch %552
|
||||
%552 = OpLabel
|
||||
%554 = OpPhi %bool %false %529 %553 %551
|
||||
OpSelectionMerge %559 None
|
||||
OpBranchConditional %554 %557 %558
|
||||
%508 = OpLogicalAnd %bool %503 %507
|
||||
%509 = OpCompositeExtract %v3float %495 2
|
||||
%510 = OpCompositeExtract %v3float %496 2
|
||||
%511 = OpFOrdEqual %v3bool %509 %510
|
||||
%512 = OpAll %bool %511
|
||||
%513 = OpLogicalAnd %bool %508 %512
|
||||
OpBranch %494
|
||||
%494 = OpLabel
|
||||
%514 = OpPhi %bool %false %473 %513 %493
|
||||
OpStore %_0_ok %514
|
||||
%515 = OpLoad %mat2v3float %_1_m23
|
||||
%516 = OpCompositeConstruct %v3float %float_1 %float_1 %float_1
|
||||
%517 = OpCompositeConstruct %mat2v3float %516 %516
|
||||
%518 = OpCompositeExtract %v3float %515 0
|
||||
%519 = OpCompositeExtract %v3float %517 0
|
||||
%520 = OpFAdd %v3float %518 %519
|
||||
%521 = OpCompositeExtract %v3float %515 1
|
||||
%522 = OpCompositeExtract %v3float %517 1
|
||||
%523 = OpFAdd %v3float %521 %522
|
||||
%524 = OpCompositeConstruct %mat2v3float %520 %523
|
||||
OpStore %_1_m23 %524
|
||||
%525 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %527 None
|
||||
OpBranchConditional %525 %526 %527
|
||||
%526 = OpLabel
|
||||
%528 = OpLoad %mat2v3float %_1_m23
|
||||
%530 = OpCompositeConstruct %v3float %float_3 %float_1 %float_1
|
||||
%531 = OpCompositeConstruct %v3float %float_1 %float_3 %float_1
|
||||
%529 = OpCompositeConstruct %mat2v3float %530 %531
|
||||
%532 = OpCompositeExtract %v3float %528 0
|
||||
%533 = OpCompositeExtract %v3float %529 0
|
||||
%534 = OpFOrdEqual %v3bool %532 %533
|
||||
%535 = OpAll %bool %534
|
||||
%536 = OpCompositeExtract %v3float %528 1
|
||||
%537 = OpCompositeExtract %v3float %529 1
|
||||
%538 = OpFOrdEqual %v3bool %536 %537
|
||||
%539 = OpAll %bool %538
|
||||
%540 = OpLogicalAnd %bool %535 %539
|
||||
OpBranch %527
|
||||
%527 = OpLabel
|
||||
%541 = OpPhi %bool %false %494 %540 %526
|
||||
OpStore %_0_ok %541
|
||||
%542 = OpLoad %mat3v2float %_3_m32
|
||||
%543 = OpCompositeConstruct %v2float %float_2 %float_2
|
||||
%544 = OpCompositeConstruct %mat3v2float %543 %543 %543
|
||||
%545 = OpCompositeExtract %v2float %542 0
|
||||
%546 = OpCompositeExtract %v2float %544 0
|
||||
%547 = OpFSub %v2float %545 %546
|
||||
%548 = OpCompositeExtract %v2float %542 1
|
||||
%549 = OpCompositeExtract %v2float %544 1
|
||||
%550 = OpFSub %v2float %548 %549
|
||||
%551 = OpCompositeExtract %v2float %542 2
|
||||
%552 = OpCompositeExtract %v2float %544 2
|
||||
%553 = OpFSub %v2float %551 %552
|
||||
%554 = OpCompositeConstruct %mat3v2float %547 %550 %553
|
||||
OpStore %_3_m32 %554
|
||||
%555 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %557 None
|
||||
OpBranchConditional %555 %556 %557
|
||||
%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
|
||||
%560 = OpAccessChain %_ptr_Uniform_v4float %11 %int_0
|
||||
%564 = OpLoad %v4float %560
|
||||
OpStore %555 %564
|
||||
OpBranch %559
|
||||
%558 = OpLabel
|
||||
%565 = OpAccessChain %_ptr_Uniform_v4float %11 %int_1
|
||||
%567 = OpLoad %v4float %565
|
||||
OpStore %555 %567
|
||||
OpBranch %559
|
||||
%559 = OpLabel
|
||||
%568 = OpLoad %v4float %555
|
||||
OpReturnValue %568
|
||||
%577 = OpPhi %bool %false %527 %576 %556
|
||||
OpStore %_0_ok %577
|
||||
%578 = OpLoad %mat2v4float %_2_m24
|
||||
%579 = OpCompositeConstruct %v4float %float_4 %float_4 %float_4 %float_4
|
||||
%580 = OpCompositeConstruct %mat2v4float %579 %579
|
||||
%581 = OpCompositeExtract %v4float %578 0
|
||||
%582 = OpCompositeExtract %v4float %580 0
|
||||
%583 = OpFDiv %v4float %581 %582
|
||||
%584 = OpCompositeExtract %v4float %578 1
|
||||
%585 = OpCompositeExtract %v4float %580 1
|
||||
%586 = OpFDiv %v4float %584 %585
|
||||
%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
|
||||
|
@ -22,6 +22,8 @@ bool test_half_b() {
|
||||
ok = ok && m23 == mat2x3(3.0, 1.0, 1.0, 1.0, 3.0, 1.0);
|
||||
m32 -= 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;
|
||||
}
|
||||
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);
|
||||
_3_m32 -= 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;
|
||||
}
|
||||
|
@ -64,6 +64,13 @@ thread bool operator==(const float3x3 left, const float3x3 right) {
|
||||
thread bool operator!=(const float3x3 left, const float3x3 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 ok = true;
|
||||
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));
|
||||
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));
|
||||
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;
|
||||
}
|
||||
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));
|
||||
_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));
|
||||
_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;
|
||||
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
|
||||
%1 = OpExtInstImport "GLSL.std.450"
|
||||
OpMemoryModel Logical GLSL450
|
||||
@ -153,19 +148,25 @@ OpDecorate %283 RelaxedPrecision
|
||||
OpDecorate %284 RelaxedPrecision
|
||||
OpDecorate %285 RelaxedPrecision
|
||||
OpDecorate %286 RelaxedPrecision
|
||||
OpDecorate %298 RelaxedPrecision
|
||||
OpDecorate %303 RelaxedPrecision
|
||||
OpDecorate %341 RelaxedPrecision
|
||||
OpDecorate %379 RelaxedPrecision
|
||||
OpDecorate %406 RelaxedPrecision
|
||||
OpDecorate %433 RelaxedPrecision
|
||||
OpDecorate %471 RelaxedPrecision
|
||||
OpDecorate %509 RelaxedPrecision
|
||||
OpDecorate %536 RelaxedPrecision
|
||||
OpDecorate %558 RelaxedPrecision
|
||||
OpDecorate %572 RelaxedPrecision
|
||||
OpDecorate %575 RelaxedPrecision
|
||||
OpDecorate %576 RelaxedPrecision
|
||||
OpDecorate %287 RelaxedPrecision
|
||||
OpDecorate %288 RelaxedPrecision
|
||||
OpDecorate %289 RelaxedPrecision
|
||||
OpDecorate %290 RelaxedPrecision
|
||||
OpDecorate %291 RelaxedPrecision
|
||||
OpDecorate %292 RelaxedPrecision
|
||||
OpDecorate %304 RelaxedPrecision
|
||||
OpDecorate %309 RelaxedPrecision
|
||||
OpDecorate %347 RelaxedPrecision
|
||||
OpDecorate %385 RelaxedPrecision
|
||||
OpDecorate %412 RelaxedPrecision
|
||||
OpDecorate %439 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
|
||||
%v4float = OpTypeVector %float 4
|
||||
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
||||
@ -199,7 +200,7 @@ OpDecorate %576 RelaxedPrecision
|
||||
%float_0_5 = OpConstant %float 0.5
|
||||
%mat2v2float = OpTypeMatrix %v2float 2
|
||||
%v2bool = OpTypeVector %bool 2
|
||||
%299 = OpTypeFunction %v4float %_ptr_Function_v2float
|
||||
%305 = OpTypeFunction %v4float %_ptr_Function_v2float
|
||||
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
||||
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
|
||||
%int = OpTypeInt 32 1
|
||||
@ -487,342 +488,352 @@ OpBranchConditional %274 %275 %276
|
||||
%277 = OpCompositeConstruct %mat2v2float %278 %279
|
||||
%281 = OpCompositeConstruct %v2float %float_4 %float_4
|
||||
%282 = OpCompositeConstruct %mat2v2float %281 %281
|
||||
%283 = OpFDiv %mat2v2float %282 %277
|
||||
%285 = OpCompositeConstruct %v2float %float_2 %float_2
|
||||
%286 = OpCompositeConstruct %v2float %float_2 %float_2
|
||||
%284 = OpCompositeConstruct %mat2v2float %285 %286
|
||||
%288 = OpCompositeExtract %v2float %283 0
|
||||
%289 = OpCompositeExtract %v2float %284 0
|
||||
%290 = OpFOrdEqual %v2bool %288 %289
|
||||
%291 = OpAll %bool %290
|
||||
%292 = OpCompositeExtract %v2float %283 1
|
||||
%293 = OpCompositeExtract %v2float %284 1
|
||||
%294 = OpFOrdEqual %v2bool %292 %293
|
||||
%295 = OpAll %bool %294
|
||||
%296 = OpLogicalAnd %bool %291 %295
|
||||
%283 = OpCompositeExtract %v2float %282 0
|
||||
%284 = OpCompositeExtract %v2float %277 0
|
||||
%285 = OpFDiv %v2float %283 %284
|
||||
%286 = OpCompositeExtract %v2float %282 1
|
||||
%287 = OpCompositeExtract %v2float %277 1
|
||||
%288 = OpFDiv %v2float %286 %287
|
||||
%289 = OpCompositeConstruct %mat2v2float %285 %288
|
||||
%291 = OpCompositeConstruct %v2float %float_2 %float_2
|
||||
%292 = OpCompositeConstruct %v2float %float_2 %float_2
|
||||
%290 = OpCompositeConstruct %mat2v2float %291 %292
|
||||
%294 = OpCompositeExtract %v2float %289 0
|
||||
%295 = OpCompositeExtract %v2float %290 0
|
||||
%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
|
||||
%276 = OpLabel
|
||||
%297 = OpPhi %bool %false %249 %296 %275
|
||||
OpStore %ok %297
|
||||
%298 = OpLoad %bool %ok
|
||||
OpReturnValue %298
|
||||
%303 = OpPhi %bool %false %249 %302 %275
|
||||
OpStore %ok %303
|
||||
%304 = OpLoad %bool %ok
|
||||
OpReturnValue %304
|
||||
OpFunctionEnd
|
||||
%main = OpFunction %v4float None %299
|
||||
%300 = OpFunctionParameter %_ptr_Function_v2float
|
||||
%301 = OpLabel
|
||||
%main = OpFunction %v4float None %305
|
||||
%306 = OpFunctionParameter %_ptr_Function_v2float
|
||||
%307 = OpLabel
|
||||
%_0_ok = OpVariable %_ptr_Function_bool Function
|
||||
%563 = OpVariable %_ptr_Function_v4float Function
|
||||
%575 = OpVariable %_ptr_Function_v4float Function
|
||||
OpStore %_0_ok %true
|
||||
%303 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %305 None
|
||||
OpBranchConditional %303 %304 %305
|
||||
%304 = OpLabel
|
||||
%307 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||
%308 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||
%309 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
||||
%306 = OpCompositeConstruct %mat3v3float %307 %308 %309
|
||||
%310 = OpCompositeConstruct %v3float %float_4 %float_4 %float_4
|
||||
%311 = OpCompositeConstruct %mat3v3float %310 %310 %310
|
||||
%312 = OpCompositeExtract %v3float %306 0
|
||||
%313 = OpCompositeExtract %v3float %311 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
|
||||
%309 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %311 None
|
||||
OpBranchConditional %309 %310 %311
|
||||
%310 = OpLabel
|
||||
%313 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||
%314 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||
%315 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
||||
%312 = OpCompositeConstruct %mat3v3float %313 %314 %315
|
||||
%316 = OpCompositeConstruct %v3float %float_4 %float_4 %float_4
|
||||
%317 = OpCompositeConstruct %mat3v3float %316 %316 %316
|
||||
%318 = OpCompositeExtract %v3float %312 0
|
||||
%319 = OpCompositeExtract %v3float %317 0
|
||||
%320 = OpFAdd %v3float %318 %319
|
||||
%321 = OpCompositeConstruct %mat3v3float %314 %317 %320
|
||||
%323 = OpCompositeConstruct %v3float %float_6 %float_4 %float_4
|
||||
%324 = OpCompositeConstruct %v3float %float_4 %float_6 %float_4
|
||||
%325 = OpCompositeConstruct %v3float %float_4 %float_4 %float_6
|
||||
%322 = OpCompositeConstruct %mat3v3float %323 %324 %325
|
||||
%326 = OpCompositeExtract %v3float %321 0
|
||||
%327 = OpCompositeExtract %v3float %322 0
|
||||
%328 = OpFOrdEqual %v3bool %326 %327
|
||||
%329 = OpAll %bool %328
|
||||
%330 = OpCompositeExtract %v3float %321 1
|
||||
%331 = OpCompositeExtract %v3float %322 1
|
||||
%332 = OpFOrdEqual %v3bool %330 %331
|
||||
%333 = OpAll %bool %332
|
||||
%334 = OpLogicalAnd %bool %329 %333
|
||||
%335 = OpCompositeExtract %v3float %321 2
|
||||
%336 = OpCompositeExtract %v3float %322 2
|
||||
%337 = OpFOrdEqual %v3bool %335 %336
|
||||
%338 = OpAll %bool %337
|
||||
%339 = OpLogicalAnd %bool %334 %338
|
||||
OpBranch %305
|
||||
%305 = OpLabel
|
||||
%340 = OpPhi %bool %false %301 %339 %304
|
||||
OpStore %_0_ok %340
|
||||
%341 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %343 None
|
||||
OpBranchConditional %341 %342 %343
|
||||
%342 = OpLabel
|
||||
%345 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||
%346 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||
%347 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
||||
%344 = OpCompositeConstruct %mat3v3float %345 %346 %347
|
||||
%348 = OpCompositeConstruct %v3float %float_4 %float_4 %float_4
|
||||
%349 = OpCompositeConstruct %mat3v3float %348 %348 %348
|
||||
%350 = OpCompositeExtract %v3float %344 0
|
||||
%351 = OpCompositeExtract %v3float %349 0
|
||||
%352 = OpFSub %v3float %350 %351
|
||||
%353 = OpCompositeExtract %v3float %344 1
|
||||
%354 = OpCompositeExtract %v3float %349 1
|
||||
%355 = OpFSub %v3float %353 %354
|
||||
%356 = OpCompositeExtract %v3float %344 2
|
||||
%357 = OpCompositeExtract %v3float %349 2
|
||||
%321 = OpCompositeExtract %v3float %312 1
|
||||
%322 = OpCompositeExtract %v3float %317 1
|
||||
%323 = OpFAdd %v3float %321 %322
|
||||
%324 = OpCompositeExtract %v3float %312 2
|
||||
%325 = OpCompositeExtract %v3float %317 2
|
||||
%326 = OpFAdd %v3float %324 %325
|
||||
%327 = OpCompositeConstruct %mat3v3float %320 %323 %326
|
||||
%329 = OpCompositeConstruct %v3float %float_6 %float_4 %float_4
|
||||
%330 = OpCompositeConstruct %v3float %float_4 %float_6 %float_4
|
||||
%331 = OpCompositeConstruct %v3float %float_4 %float_4 %float_6
|
||||
%328 = OpCompositeConstruct %mat3v3float %329 %330 %331
|
||||
%332 = OpCompositeExtract %v3float %327 0
|
||||
%333 = OpCompositeExtract %v3float %328 0
|
||||
%334 = OpFOrdEqual %v3bool %332 %333
|
||||
%335 = OpAll %bool %334
|
||||
%336 = OpCompositeExtract %v3float %327 1
|
||||
%337 = OpCompositeExtract %v3float %328 1
|
||||
%338 = OpFOrdEqual %v3bool %336 %337
|
||||
%339 = OpAll %bool %338
|
||||
%340 = OpLogicalAnd %bool %335 %339
|
||||
%341 = OpCompositeExtract %v3float %327 2
|
||||
%342 = OpCompositeExtract %v3float %328 2
|
||||
%343 = OpFOrdEqual %v3bool %341 %342
|
||||
%344 = OpAll %bool %343
|
||||
%345 = OpLogicalAnd %bool %340 %344
|
||||
OpBranch %311
|
||||
%311 = OpLabel
|
||||
%346 = OpPhi %bool %false %307 %345 %310
|
||||
OpStore %_0_ok %346
|
||||
%347 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %349 None
|
||||
OpBranchConditional %347 %348 %349
|
||||
%348 = OpLabel
|
||||
%351 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||
%352 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||
%353 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
||||
%350 = OpCompositeConstruct %mat3v3float %351 %352 %353
|
||||
%354 = OpCompositeConstruct %v3float %float_4 %float_4 %float_4
|
||||
%355 = OpCompositeConstruct %mat3v3float %354 %354 %354
|
||||
%356 = OpCompositeExtract %v3float %350 0
|
||||
%357 = OpCompositeExtract %v3float %355 0
|
||||
%358 = OpFSub %v3float %356 %357
|
||||
%359 = OpCompositeConstruct %mat3v3float %352 %355 %358
|
||||
%361 = OpCompositeConstruct %v3float %float_n2 %float_n4 %float_n4
|
||||
%362 = OpCompositeConstruct %v3float %float_n4 %float_n2 %float_n4
|
||||
%363 = OpCompositeConstruct %v3float %float_n4 %float_n4 %float_n2
|
||||
%360 = OpCompositeConstruct %mat3v3float %361 %362 %363
|
||||
%364 = OpCompositeExtract %v3float %359 0
|
||||
%365 = OpCompositeExtract %v3float %360 0
|
||||
%366 = OpFOrdEqual %v3bool %364 %365
|
||||
%367 = OpAll %bool %366
|
||||
%368 = OpCompositeExtract %v3float %359 1
|
||||
%369 = OpCompositeExtract %v3float %360 1
|
||||
%370 = OpFOrdEqual %v3bool %368 %369
|
||||
%371 = OpAll %bool %370
|
||||
%372 = OpLogicalAnd %bool %367 %371
|
||||
%373 = OpCompositeExtract %v3float %359 2
|
||||
%374 = OpCompositeExtract %v3float %360 2
|
||||
%375 = OpFOrdEqual %v3bool %373 %374
|
||||
%376 = OpAll %bool %375
|
||||
%377 = OpLogicalAnd %bool %372 %376
|
||||
OpBranch %343
|
||||
%343 = OpLabel
|
||||
%378 = OpPhi %bool %false %305 %377 %342
|
||||
OpStore %_0_ok %378
|
||||
%379 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %381 None
|
||||
OpBranchConditional %379 %380 %381
|
||||
%380 = OpLabel
|
||||
%383 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||
%384 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||
%385 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
||||
%382 = OpCompositeConstruct %mat3v3float %383 %384 %385
|
||||
%386 = OpMatrixTimesScalar %mat3v3float %382 %float_4
|
||||
%388 = OpCompositeConstruct %v3float %float_8 %float_0 %float_0
|
||||
%389 = OpCompositeConstruct %v3float %float_0 %float_8 %float_0
|
||||
%390 = OpCompositeConstruct %v3float %float_0 %float_0 %float_8
|
||||
%387 = OpCompositeConstruct %mat3v3float %388 %389 %390
|
||||
%391 = OpCompositeExtract %v3float %386 0
|
||||
%392 = OpCompositeExtract %v3float %387 0
|
||||
%393 = OpFOrdEqual %v3bool %391 %392
|
||||
%394 = OpAll %bool %393
|
||||
%395 = OpCompositeExtract %v3float %386 1
|
||||
%396 = OpCompositeExtract %v3float %387 1
|
||||
%397 = OpFOrdEqual %v3bool %395 %396
|
||||
%398 = OpAll %bool %397
|
||||
%399 = OpLogicalAnd %bool %394 %398
|
||||
%400 = OpCompositeExtract %v3float %386 2
|
||||
%401 = OpCompositeExtract %v3float %387 2
|
||||
%402 = OpFOrdEqual %v3bool %400 %401
|
||||
%403 = OpAll %bool %402
|
||||
%404 = OpLogicalAnd %bool %399 %403
|
||||
OpBranch %381
|
||||
%381 = OpLabel
|
||||
%405 = OpPhi %bool %false %343 %404 %380
|
||||
OpStore %_0_ok %405
|
||||
%406 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %408 None
|
||||
OpBranchConditional %406 %407 %408
|
||||
%407 = OpLabel
|
||||
%410 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||
%411 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||
%412 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
||||
%409 = OpCompositeConstruct %mat3v3float %410 %411 %412
|
||||
%413 = OpMatrixTimesScalar %mat3v3float %409 %float_0_25
|
||||
%415 = OpCompositeConstruct %v3float %float_0_5 %float_0 %float_0
|
||||
%416 = OpCompositeConstruct %v3float %float_0 %float_0_5 %float_0
|
||||
%417 = OpCompositeConstruct %v3float %float_0 %float_0 %float_0_5
|
||||
%414 = OpCompositeConstruct %mat3v3float %415 %416 %417
|
||||
%418 = OpCompositeExtract %v3float %413 0
|
||||
%419 = OpCompositeExtract %v3float %414 0
|
||||
%420 = OpFOrdEqual %v3bool %418 %419
|
||||
%421 = OpAll %bool %420
|
||||
%422 = OpCompositeExtract %v3float %413 1
|
||||
%423 = OpCompositeExtract %v3float %414 1
|
||||
%424 = OpFOrdEqual %v3bool %422 %423
|
||||
%425 = OpAll %bool %424
|
||||
%426 = OpLogicalAnd %bool %421 %425
|
||||
%427 = OpCompositeExtract %v3float %413 2
|
||||
%428 = OpCompositeExtract %v3float %414 2
|
||||
%429 = OpFOrdEqual %v3bool %427 %428
|
||||
%430 = OpAll %bool %429
|
||||
%431 = OpLogicalAnd %bool %426 %430
|
||||
OpBranch %408
|
||||
%408 = OpLabel
|
||||
%432 = OpPhi %bool %false %381 %431 %407
|
||||
OpStore %_0_ok %432
|
||||
%433 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %435 None
|
||||
OpBranchConditional %433 %434 %435
|
||||
%434 = OpLabel
|
||||
%437 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||
%438 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||
%439 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
||||
%436 = OpCompositeConstruct %mat3v3float %437 %438 %439
|
||||
%440 = OpCompositeConstruct %v3float %float_4 %float_4 %float_4
|
||||
%441 = OpCompositeConstruct %mat3v3float %440 %440 %440
|
||||
%442 = OpCompositeExtract %v3float %441 0
|
||||
%443 = OpCompositeExtract %v3float %436 0
|
||||
%444 = OpFAdd %v3float %442 %443
|
||||
%445 = OpCompositeExtract %v3float %441 1
|
||||
%446 = OpCompositeExtract %v3float %436 1
|
||||
%447 = OpFAdd %v3float %445 %446
|
||||
%448 = OpCompositeExtract %v3float %441 2
|
||||
%449 = OpCompositeExtract %v3float %436 2
|
||||
%359 = OpCompositeExtract %v3float %350 1
|
||||
%360 = OpCompositeExtract %v3float %355 1
|
||||
%361 = OpFSub %v3float %359 %360
|
||||
%362 = OpCompositeExtract %v3float %350 2
|
||||
%363 = OpCompositeExtract %v3float %355 2
|
||||
%364 = OpFSub %v3float %362 %363
|
||||
%365 = OpCompositeConstruct %mat3v3float %358 %361 %364
|
||||
%367 = OpCompositeConstruct %v3float %float_n2 %float_n4 %float_n4
|
||||
%368 = OpCompositeConstruct %v3float %float_n4 %float_n2 %float_n4
|
||||
%369 = OpCompositeConstruct %v3float %float_n4 %float_n4 %float_n2
|
||||
%366 = OpCompositeConstruct %mat3v3float %367 %368 %369
|
||||
%370 = OpCompositeExtract %v3float %365 0
|
||||
%371 = OpCompositeExtract %v3float %366 0
|
||||
%372 = OpFOrdEqual %v3bool %370 %371
|
||||
%373 = OpAll %bool %372
|
||||
%374 = OpCompositeExtract %v3float %365 1
|
||||
%375 = OpCompositeExtract %v3float %366 1
|
||||
%376 = OpFOrdEqual %v3bool %374 %375
|
||||
%377 = OpAll %bool %376
|
||||
%378 = OpLogicalAnd %bool %373 %377
|
||||
%379 = OpCompositeExtract %v3float %365 2
|
||||
%380 = OpCompositeExtract %v3float %366 2
|
||||
%381 = OpFOrdEqual %v3bool %379 %380
|
||||
%382 = OpAll %bool %381
|
||||
%383 = OpLogicalAnd %bool %378 %382
|
||||
OpBranch %349
|
||||
%349 = OpLabel
|
||||
%384 = OpPhi %bool %false %311 %383 %348
|
||||
OpStore %_0_ok %384
|
||||
%385 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %387 None
|
||||
OpBranchConditional %385 %386 %387
|
||||
%386 = OpLabel
|
||||
%389 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||
%390 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||
%391 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
||||
%388 = OpCompositeConstruct %mat3v3float %389 %390 %391
|
||||
%392 = OpMatrixTimesScalar %mat3v3float %388 %float_4
|
||||
%394 = OpCompositeConstruct %v3float %float_8 %float_0 %float_0
|
||||
%395 = OpCompositeConstruct %v3float %float_0 %float_8 %float_0
|
||||
%396 = OpCompositeConstruct %v3float %float_0 %float_0 %float_8
|
||||
%393 = OpCompositeConstruct %mat3v3float %394 %395 %396
|
||||
%397 = OpCompositeExtract %v3float %392 0
|
||||
%398 = OpCompositeExtract %v3float %393 0
|
||||
%399 = OpFOrdEqual %v3bool %397 %398
|
||||
%400 = OpAll %bool %399
|
||||
%401 = OpCompositeExtract %v3float %392 1
|
||||
%402 = OpCompositeExtract %v3float %393 1
|
||||
%403 = OpFOrdEqual %v3bool %401 %402
|
||||
%404 = OpAll %bool %403
|
||||
%405 = OpLogicalAnd %bool %400 %404
|
||||
%406 = OpCompositeExtract %v3float %392 2
|
||||
%407 = OpCompositeExtract %v3float %393 2
|
||||
%408 = OpFOrdEqual %v3bool %406 %407
|
||||
%409 = OpAll %bool %408
|
||||
%410 = OpLogicalAnd %bool %405 %409
|
||||
OpBranch %387
|
||||
%387 = OpLabel
|
||||
%411 = OpPhi %bool %false %349 %410 %386
|
||||
OpStore %_0_ok %411
|
||||
%412 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %414 None
|
||||
OpBranchConditional %412 %413 %414
|
||||
%413 = OpLabel
|
||||
%416 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||
%417 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||
%418 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
||||
%415 = OpCompositeConstruct %mat3v3float %416 %417 %418
|
||||
%419 = OpMatrixTimesScalar %mat3v3float %415 %float_0_25
|
||||
%421 = OpCompositeConstruct %v3float %float_0_5 %float_0 %float_0
|
||||
%422 = OpCompositeConstruct %v3float %float_0 %float_0_5 %float_0
|
||||
%423 = OpCompositeConstruct %v3float %float_0 %float_0 %float_0_5
|
||||
%420 = OpCompositeConstruct %mat3v3float %421 %422 %423
|
||||
%424 = OpCompositeExtract %v3float %419 0
|
||||
%425 = OpCompositeExtract %v3float %420 0
|
||||
%426 = OpFOrdEqual %v3bool %424 %425
|
||||
%427 = OpAll %bool %426
|
||||
%428 = OpCompositeExtract %v3float %419 1
|
||||
%429 = OpCompositeExtract %v3float %420 1
|
||||
%430 = OpFOrdEqual %v3bool %428 %429
|
||||
%431 = OpAll %bool %430
|
||||
%432 = OpLogicalAnd %bool %427 %431
|
||||
%433 = OpCompositeExtract %v3float %419 2
|
||||
%434 = OpCompositeExtract %v3float %420 2
|
||||
%435 = OpFOrdEqual %v3bool %433 %434
|
||||
%436 = OpAll %bool %435
|
||||
%437 = OpLogicalAnd %bool %432 %436
|
||||
OpBranch %414
|
||||
%414 = OpLabel
|
||||
%438 = OpPhi %bool %false %387 %437 %413
|
||||
OpStore %_0_ok %438
|
||||
%439 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %441 None
|
||||
OpBranchConditional %439 %440 %441
|
||||
%440 = OpLabel
|
||||
%443 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||
%444 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||
%445 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
||||
%442 = OpCompositeConstruct %mat3v3float %443 %444 %445
|
||||
%446 = OpCompositeConstruct %v3float %float_4 %float_4 %float_4
|
||||
%447 = OpCompositeConstruct %mat3v3float %446 %446 %446
|
||||
%448 = OpCompositeExtract %v3float %447 0
|
||||
%449 = OpCompositeExtract %v3float %442 0
|
||||
%450 = OpFAdd %v3float %448 %449
|
||||
%451 = OpCompositeConstruct %mat3v3float %444 %447 %450
|
||||
%453 = OpCompositeConstruct %v3float %float_6 %float_4 %float_4
|
||||
%454 = OpCompositeConstruct %v3float %float_4 %float_6 %float_4
|
||||
%455 = OpCompositeConstruct %v3float %float_4 %float_4 %float_6
|
||||
%452 = OpCompositeConstruct %mat3v3float %453 %454 %455
|
||||
%456 = OpCompositeExtract %v3float %451 0
|
||||
%457 = OpCompositeExtract %v3float %452 0
|
||||
%458 = OpFOrdEqual %v3bool %456 %457
|
||||
%459 = OpAll %bool %458
|
||||
%460 = OpCompositeExtract %v3float %451 1
|
||||
%461 = OpCompositeExtract %v3float %452 1
|
||||
%462 = OpFOrdEqual %v3bool %460 %461
|
||||
%463 = OpAll %bool %462
|
||||
%464 = OpLogicalAnd %bool %459 %463
|
||||
%465 = OpCompositeExtract %v3float %451 2
|
||||
%466 = OpCompositeExtract %v3float %452 2
|
||||
%467 = OpFOrdEqual %v3bool %465 %466
|
||||
%468 = OpAll %bool %467
|
||||
%469 = OpLogicalAnd %bool %464 %468
|
||||
OpBranch %435
|
||||
%435 = OpLabel
|
||||
%470 = OpPhi %bool %false %408 %469 %434
|
||||
OpStore %_0_ok %470
|
||||
%471 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %473 None
|
||||
OpBranchConditional %471 %472 %473
|
||||
%472 = OpLabel
|
||||
%475 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||
%476 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||
%477 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
||||
%474 = OpCompositeConstruct %mat3v3float %475 %476 %477
|
||||
%478 = OpCompositeConstruct %v3float %float_4 %float_4 %float_4
|
||||
%479 = OpCompositeConstruct %mat3v3float %478 %478 %478
|
||||
%480 = OpCompositeExtract %v3float %479 0
|
||||
%481 = OpCompositeExtract %v3float %474 0
|
||||
%482 = OpFSub %v3float %480 %481
|
||||
%483 = OpCompositeExtract %v3float %479 1
|
||||
%484 = OpCompositeExtract %v3float %474 1
|
||||
%485 = OpFSub %v3float %483 %484
|
||||
%486 = OpCompositeExtract %v3float %479 2
|
||||
%487 = OpCompositeExtract %v3float %474 2
|
||||
%451 = OpCompositeExtract %v3float %447 1
|
||||
%452 = OpCompositeExtract %v3float %442 1
|
||||
%453 = OpFAdd %v3float %451 %452
|
||||
%454 = OpCompositeExtract %v3float %447 2
|
||||
%455 = OpCompositeExtract %v3float %442 2
|
||||
%456 = OpFAdd %v3float %454 %455
|
||||
%457 = OpCompositeConstruct %mat3v3float %450 %453 %456
|
||||
%459 = OpCompositeConstruct %v3float %float_6 %float_4 %float_4
|
||||
%460 = OpCompositeConstruct %v3float %float_4 %float_6 %float_4
|
||||
%461 = OpCompositeConstruct %v3float %float_4 %float_4 %float_6
|
||||
%458 = OpCompositeConstruct %mat3v3float %459 %460 %461
|
||||
%462 = OpCompositeExtract %v3float %457 0
|
||||
%463 = OpCompositeExtract %v3float %458 0
|
||||
%464 = OpFOrdEqual %v3bool %462 %463
|
||||
%465 = OpAll %bool %464
|
||||
%466 = OpCompositeExtract %v3float %457 1
|
||||
%467 = OpCompositeExtract %v3float %458 1
|
||||
%468 = OpFOrdEqual %v3bool %466 %467
|
||||
%469 = OpAll %bool %468
|
||||
%470 = OpLogicalAnd %bool %465 %469
|
||||
%471 = OpCompositeExtract %v3float %457 2
|
||||
%472 = OpCompositeExtract %v3float %458 2
|
||||
%473 = OpFOrdEqual %v3bool %471 %472
|
||||
%474 = OpAll %bool %473
|
||||
%475 = OpLogicalAnd %bool %470 %474
|
||||
OpBranch %441
|
||||
%441 = OpLabel
|
||||
%476 = OpPhi %bool %false %414 %475 %440
|
||||
OpStore %_0_ok %476
|
||||
%477 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %479 None
|
||||
OpBranchConditional %477 %478 %479
|
||||
%478 = OpLabel
|
||||
%481 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||
%482 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||
%483 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
||||
%480 = OpCompositeConstruct %mat3v3float %481 %482 %483
|
||||
%484 = OpCompositeConstruct %v3float %float_4 %float_4 %float_4
|
||||
%485 = OpCompositeConstruct %mat3v3float %484 %484 %484
|
||||
%486 = OpCompositeExtract %v3float %485 0
|
||||
%487 = OpCompositeExtract %v3float %480 0
|
||||
%488 = OpFSub %v3float %486 %487
|
||||
%489 = OpCompositeConstruct %mat3v3float %482 %485 %488
|
||||
%491 = OpCompositeConstruct %v3float %float_2 %float_4 %float_4
|
||||
%492 = OpCompositeConstruct %v3float %float_4 %float_2 %float_4
|
||||
%493 = OpCompositeConstruct %v3float %float_4 %float_4 %float_2
|
||||
%490 = OpCompositeConstruct %mat3v3float %491 %492 %493
|
||||
%494 = OpCompositeExtract %v3float %489 0
|
||||
%495 = OpCompositeExtract %v3float %490 0
|
||||
%496 = OpFOrdEqual %v3bool %494 %495
|
||||
%497 = OpAll %bool %496
|
||||
%498 = OpCompositeExtract %v3float %489 1
|
||||
%499 = OpCompositeExtract %v3float %490 1
|
||||
%500 = OpFOrdEqual %v3bool %498 %499
|
||||
%501 = OpAll %bool %500
|
||||
%502 = OpLogicalAnd %bool %497 %501
|
||||
%503 = OpCompositeExtract %v3float %489 2
|
||||
%504 = OpCompositeExtract %v3float %490 2
|
||||
%505 = OpFOrdEqual %v3bool %503 %504
|
||||
%506 = OpAll %bool %505
|
||||
%507 = OpLogicalAnd %bool %502 %506
|
||||
OpBranch %473
|
||||
%473 = OpLabel
|
||||
%508 = OpPhi %bool %false %435 %507 %472
|
||||
OpStore %_0_ok %508
|
||||
%509 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %511 None
|
||||
OpBranchConditional %509 %510 %511
|
||||
%510 = OpLabel
|
||||
%513 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||
%514 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||
%515 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
||||
%512 = OpCompositeConstruct %mat3v3float %513 %514 %515
|
||||
%516 = OpMatrixTimesScalar %mat3v3float %512 %float_4
|
||||
%518 = OpCompositeConstruct %v3float %float_8 %float_0 %float_0
|
||||
%519 = OpCompositeConstruct %v3float %float_0 %float_8 %float_0
|
||||
%520 = OpCompositeConstruct %v3float %float_0 %float_0 %float_8
|
||||
%517 = OpCompositeConstruct %mat3v3float %518 %519 %520
|
||||
%521 = OpCompositeExtract %v3float %516 0
|
||||
%522 = OpCompositeExtract %v3float %517 0
|
||||
%523 = OpFOrdEqual %v3bool %521 %522
|
||||
%524 = OpAll %bool %523
|
||||
%525 = OpCompositeExtract %v3float %516 1
|
||||
%526 = OpCompositeExtract %v3float %517 1
|
||||
%527 = OpFOrdEqual %v3bool %525 %526
|
||||
%528 = OpAll %bool %527
|
||||
%529 = OpLogicalAnd %bool %524 %528
|
||||
%530 = OpCompositeExtract %v3float %516 2
|
||||
%531 = OpCompositeExtract %v3float %517 2
|
||||
%532 = OpFOrdEqual %v3bool %530 %531
|
||||
%533 = OpAll %bool %532
|
||||
%534 = OpLogicalAnd %bool %529 %533
|
||||
OpBranch %511
|
||||
%511 = OpLabel
|
||||
%535 = OpPhi %bool %false %473 %534 %510
|
||||
OpStore %_0_ok %535
|
||||
%536 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %538 None
|
||||
OpBranchConditional %536 %537 %538
|
||||
%537 = OpLabel
|
||||
%540 = OpCompositeConstruct %v2float %float_2 %float_2
|
||||
%541 = OpCompositeConstruct %v2float %float_2 %float_2
|
||||
%539 = OpCompositeConstruct %mat2v2float %540 %541
|
||||
%542 = OpCompositeConstruct %v2float %float_4 %float_4
|
||||
%543 = OpCompositeConstruct %mat2v2float %542 %542
|
||||
%544 = OpFDiv %mat2v2float %543 %539
|
||||
%489 = OpCompositeExtract %v3float %485 1
|
||||
%490 = OpCompositeExtract %v3float %480 1
|
||||
%491 = OpFSub %v3float %489 %490
|
||||
%492 = OpCompositeExtract %v3float %485 2
|
||||
%493 = OpCompositeExtract %v3float %480 2
|
||||
%494 = OpFSub %v3float %492 %493
|
||||
%495 = OpCompositeConstruct %mat3v3float %488 %491 %494
|
||||
%497 = OpCompositeConstruct %v3float %float_2 %float_4 %float_4
|
||||
%498 = OpCompositeConstruct %v3float %float_4 %float_2 %float_4
|
||||
%499 = OpCompositeConstruct %v3float %float_4 %float_4 %float_2
|
||||
%496 = OpCompositeConstruct %mat3v3float %497 %498 %499
|
||||
%500 = OpCompositeExtract %v3float %495 0
|
||||
%501 = OpCompositeExtract %v3float %496 0
|
||||
%502 = OpFOrdEqual %v3bool %500 %501
|
||||
%503 = OpAll %bool %502
|
||||
%504 = OpCompositeExtract %v3float %495 1
|
||||
%505 = OpCompositeExtract %v3float %496 1
|
||||
%506 = OpFOrdEqual %v3bool %504 %505
|
||||
%507 = OpAll %bool %506
|
||||
%508 = OpLogicalAnd %bool %503 %507
|
||||
%509 = OpCompositeExtract %v3float %495 2
|
||||
%510 = OpCompositeExtract %v3float %496 2
|
||||
%511 = OpFOrdEqual %v3bool %509 %510
|
||||
%512 = OpAll %bool %511
|
||||
%513 = OpLogicalAnd %bool %508 %512
|
||||
OpBranch %479
|
||||
%479 = OpLabel
|
||||
%514 = OpPhi %bool %false %441 %513 %478
|
||||
OpStore %_0_ok %514
|
||||
%515 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %517 None
|
||||
OpBranchConditional %515 %516 %517
|
||||
%516 = OpLabel
|
||||
%519 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
||||
%520 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
||||
%521 = OpCompositeConstruct %v3float %float_0 %float_0 %float_2
|
||||
%518 = OpCompositeConstruct %mat3v3float %519 %520 %521
|
||||
%522 = OpMatrixTimesScalar %mat3v3float %518 %float_4
|
||||
%524 = OpCompositeConstruct %v3float %float_8 %float_0 %float_0
|
||||
%525 = OpCompositeConstruct %v3float %float_0 %float_8 %float_0
|
||||
%526 = OpCompositeConstruct %v3float %float_0 %float_0 %float_8
|
||||
%523 = OpCompositeConstruct %mat3v3float %524 %525 %526
|
||||
%527 = OpCompositeExtract %v3float %522 0
|
||||
%528 = OpCompositeExtract %v3float %523 0
|
||||
%529 = OpFOrdEqual %v3bool %527 %528
|
||||
%530 = OpAll %bool %529
|
||||
%531 = OpCompositeExtract %v3float %522 1
|
||||
%532 = OpCompositeExtract %v3float %523 1
|
||||
%533 = OpFOrdEqual %v3bool %531 %532
|
||||
%534 = OpAll %bool %533
|
||||
%535 = OpLogicalAnd %bool %530 %534
|
||||
%536 = OpCompositeExtract %v3float %522 2
|
||||
%537 = OpCompositeExtract %v3float %523 2
|
||||
%538 = OpFOrdEqual %v3bool %536 %537
|
||||
%539 = OpAll %bool %538
|
||||
%540 = OpLogicalAnd %bool %535 %539
|
||||
OpBranch %517
|
||||
%517 = OpLabel
|
||||
%541 = OpPhi %bool %false %479 %540 %516
|
||||
OpStore %_0_ok %541
|
||||
%542 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %544 None
|
||||
OpBranchConditional %542 %543 %544
|
||||
%543 = OpLabel
|
||||
%546 = OpCompositeConstruct %v2float %float_2 %float_2
|
||||
%547 = OpCompositeConstruct %v2float %float_2 %float_2
|
||||
%545 = OpCompositeConstruct %mat2v2float %546 %547
|
||||
%548 = OpCompositeExtract %v2float %544 0
|
||||
%549 = OpCompositeExtract %v2float %545 0
|
||||
%550 = OpFOrdEqual %v2bool %548 %549
|
||||
%551 = OpAll %bool %550
|
||||
%552 = OpCompositeExtract %v2float %544 1
|
||||
%553 = OpCompositeExtract %v2float %545 1
|
||||
%554 = OpFOrdEqual %v2bool %552 %553
|
||||
%555 = OpAll %bool %554
|
||||
%556 = OpLogicalAnd %bool %551 %555
|
||||
OpBranch %538
|
||||
%538 = OpLabel
|
||||
%557 = OpPhi %bool %false %511 %556 %537
|
||||
OpStore %_0_ok %557
|
||||
%558 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %560 None
|
||||
OpBranchConditional %558 %559 %560
|
||||
%559 = OpLabel
|
||||
%561 = OpFunctionCall %bool %test_half_b
|
||||
OpBranch %560
|
||||
%560 = OpLabel
|
||||
%562 = OpPhi %bool %false %538 %561 %559
|
||||
OpSelectionMerge %567 None
|
||||
OpBranchConditional %562 %565 %566
|
||||
%565 = OpLabel
|
||||
%568 = OpAccessChain %_ptr_Uniform_v4float %11 %int_0
|
||||
%572 = OpLoad %v4float %568
|
||||
OpStore %563 %572
|
||||
OpBranch %567
|
||||
%566 = OpLabel
|
||||
%573 = OpAccessChain %_ptr_Uniform_v4float %11 %int_1
|
||||
%575 = OpLoad %v4float %573
|
||||
OpStore %563 %575
|
||||
OpBranch %567
|
||||
%567 = OpLabel
|
||||
%576 = OpLoad %v4float %563
|
||||
OpReturnValue %576
|
||||
%548 = OpCompositeConstruct %v2float %float_4 %float_4
|
||||
%549 = OpCompositeConstruct %mat2v2float %548 %548
|
||||
%550 = OpCompositeExtract %v2float %549 0
|
||||
%551 = OpCompositeExtract %v2float %545 0
|
||||
%552 = OpFDiv %v2float %550 %551
|
||||
%553 = OpCompositeExtract %v2float %549 1
|
||||
%554 = OpCompositeExtract %v2float %545 1
|
||||
%555 = OpFDiv %v2float %553 %554
|
||||
%556 = OpCompositeConstruct %mat2v2float %552 %555
|
||||
%558 = OpCompositeConstruct %v2float %float_2 %float_2
|
||||
%559 = OpCompositeConstruct %v2float %float_2 %float_2
|
||||
%557 = OpCompositeConstruct %mat2v2float %558 %559
|
||||
%560 = OpCompositeExtract %v2float %556 0
|
||||
%561 = OpCompositeExtract %v2float %557 0
|
||||
%562 = OpFOrdEqual %v2bool %560 %561
|
||||
%563 = OpAll %bool %562
|
||||
%564 = OpCompositeExtract %v2float %556 1
|
||||
%565 = OpCompositeExtract %v2float %557 1
|
||||
%566 = OpFOrdEqual %v2bool %564 %565
|
||||
%567 = OpAll %bool %566
|
||||
%568 = OpLogicalAnd %bool %563 %567
|
||||
OpBranch %544
|
||||
%544 = OpLabel
|
||||
%569 = OpPhi %bool %false %517 %568 %543
|
||||
OpStore %_0_ok %569
|
||||
%570 = OpLoad %bool %_0_ok
|
||||
OpSelectionMerge %572 None
|
||||
OpBranchConditional %570 %571 %572
|
||||
%571 = OpLabel
|
||||
%573 = OpFunctionCall %bool %test_half_b
|
||||
OpBranch %572
|
||||
%572 = OpLabel
|
||||
%574 = OpPhi %bool %false %544 %573 %571
|
||||
OpSelectionMerge %579 None
|
||||
OpBranchConditional %574 %577 %578
|
||||
%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
|
||||
|
||||
1 error
|
||||
|
Loading…
Reference in New Issue
Block a user