eb68973c2f
The GLSL spec allows matrix constructors containing vectors that would split between multiple columns of the matrix. However, in practice, this does not actually work well on a lot of GPUs! - "cast not allowed", "internal error": Tegra 3 Quadro P400 GTX 660 GTX 960 - Compiles, but generates wrong result: RadeonR9M470X RadeonHD7770 Since this isn't a pattern we expect to see in user code, we now report it as an error at compile time. mat2(vec4) is treated as an exceptional case and still allowed. Change-Id: Id6925984a2d1ec948aec4defcc790a197a96cf86 Bug: skia:12443 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/449518 Commit-Queue: John Stiles <johnstiles@google.com> Auto-Submit: John Stiles <johnstiles@google.com> Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
1607 lines
58 KiB
JavaScript
1607 lines
58 KiB
JavaScript
OpCapability Shader
|
|
%1 = OpExtInstImport "GLSL.std.450"
|
|
OpMemoryModel Logical GLSL450
|
|
OpEntryPoint Fragment %_entrypoint_v "_entrypoint" %sk_FragColor %sk_Clockwise
|
|
OpExecutionMode %_entrypoint_v OriginUpperLeft
|
|
OpName %sk_FragColor "sk_FragColor"
|
|
OpName %sk_Clockwise "sk_Clockwise"
|
|
OpName %_UniformBuffer "_UniformBuffer"
|
|
OpMemberName %_UniformBuffer 0 "colorGreen"
|
|
OpMemberName %_UniformBuffer 1 "colorRed"
|
|
OpMemberName %_UniformBuffer 2 "testMatrix2x2"
|
|
OpName %_entrypoint_v "_entrypoint_v"
|
|
OpName %test_half_b "test_half_b"
|
|
OpName %ok "ok"
|
|
OpName %m23 "m23"
|
|
OpName %m24 "m24"
|
|
OpName %m32 "m32"
|
|
OpName %m34 "m34"
|
|
OpName %m42 "m42"
|
|
OpName %m43 "m43"
|
|
OpName %m22 "m22"
|
|
OpName %m33 "m33"
|
|
OpName %h4 "h4"
|
|
OpName %main "main"
|
|
OpName %_0_ok "_0_ok"
|
|
OpName %_1_m23 "_1_m23"
|
|
OpName %_2_m24 "_2_m24"
|
|
OpName %_3_m32 "_3_m32"
|
|
OpName %_4_m34 "_4_m34"
|
|
OpName %_5_m42 "_5_m42"
|
|
OpName %_6_m43 "_6_m43"
|
|
OpName %_7_m22 "_7_m22"
|
|
OpName %_8_m33 "_8_m33"
|
|
OpName %_10_f4 "_10_f4"
|
|
OpDecorate %sk_FragColor RelaxedPrecision
|
|
OpDecorate %sk_FragColor Location 0
|
|
OpDecorate %sk_FragColor Index 0
|
|
OpDecorate %sk_Clockwise BuiltIn FrontFacing
|
|
OpMemberDecorate %_UniformBuffer 0 Offset 0
|
|
OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision
|
|
OpMemberDecorate %_UniformBuffer 1 Offset 16
|
|
OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision
|
|
OpMemberDecorate %_UniformBuffer 2 Offset 32
|
|
OpMemberDecorate %_UniformBuffer 2 ColMajor
|
|
OpMemberDecorate %_UniformBuffer 2 MatrixStride 16
|
|
OpDecorate %_UniformBuffer Block
|
|
OpDecorate %11 Binding 0
|
|
OpDecorate %11 DescriptorSet 0
|
|
OpDecorate %m23 RelaxedPrecision
|
|
OpDecorate %35 RelaxedPrecision
|
|
OpDecorate %36 RelaxedPrecision
|
|
OpDecorate %37 RelaxedPrecision
|
|
OpDecorate %39 RelaxedPrecision
|
|
OpDecorate %42 RelaxedPrecision
|
|
OpDecorate %43 RelaxedPrecision
|
|
OpDecorate %44 RelaxedPrecision
|
|
OpDecorate %45 RelaxedPrecision
|
|
OpDecorate %m24 RelaxedPrecision
|
|
OpDecorate %61 RelaxedPrecision
|
|
OpDecorate %62 RelaxedPrecision
|
|
OpDecorate %63 RelaxedPrecision
|
|
OpDecorate %64 RelaxedPrecision
|
|
OpDecorate %67 RelaxedPrecision
|
|
OpDecorate %68 RelaxedPrecision
|
|
OpDecorate %69 RelaxedPrecision
|
|
OpDecorate %70 RelaxedPrecision
|
|
OpDecorate %m32 RelaxedPrecision
|
|
OpDecorate %86 RelaxedPrecision
|
|
OpDecorate %87 RelaxedPrecision
|
|
OpDecorate %88 RelaxedPrecision
|
|
OpDecorate %89 RelaxedPrecision
|
|
OpDecorate %90 RelaxedPrecision
|
|
OpDecorate %93 RelaxedPrecision
|
|
OpDecorate %94 RelaxedPrecision
|
|
OpDecorate %95 RelaxedPrecision
|
|
OpDecorate %96 RelaxedPrecision
|
|
OpDecorate %97 RelaxedPrecision
|
|
OpDecorate %m34 RelaxedPrecision
|
|
OpDecorate %118 RelaxedPrecision
|
|
OpDecorate %119 RelaxedPrecision
|
|
OpDecorate %120 RelaxedPrecision
|
|
OpDecorate %121 RelaxedPrecision
|
|
OpDecorate %122 RelaxedPrecision
|
|
OpDecorate %125 RelaxedPrecision
|
|
OpDecorate %126 RelaxedPrecision
|
|
OpDecorate %127 RelaxedPrecision
|
|
OpDecorate %128 RelaxedPrecision
|
|
OpDecorate %129 RelaxedPrecision
|
|
OpDecorate %m42 RelaxedPrecision
|
|
OpDecorate %149 RelaxedPrecision
|
|
OpDecorate %150 RelaxedPrecision
|
|
OpDecorate %151 RelaxedPrecision
|
|
OpDecorate %152 RelaxedPrecision
|
|
OpDecorate %153 RelaxedPrecision
|
|
OpDecorate %154 RelaxedPrecision
|
|
OpDecorate %157 RelaxedPrecision
|
|
OpDecorate %158 RelaxedPrecision
|
|
OpDecorate %159 RelaxedPrecision
|
|
OpDecorate %160 RelaxedPrecision
|
|
OpDecorate %161 RelaxedPrecision
|
|
OpDecorate %162 RelaxedPrecision
|
|
OpDecorate %m43 RelaxedPrecision
|
|
OpDecorate %187 RelaxedPrecision
|
|
OpDecorate %188 RelaxedPrecision
|
|
OpDecorate %189 RelaxedPrecision
|
|
OpDecorate %190 RelaxedPrecision
|
|
OpDecorate %191 RelaxedPrecision
|
|
OpDecorate %192 RelaxedPrecision
|
|
OpDecorate %195 RelaxedPrecision
|
|
OpDecorate %196 RelaxedPrecision
|
|
OpDecorate %197 RelaxedPrecision
|
|
OpDecorate %198 RelaxedPrecision
|
|
OpDecorate %199 RelaxedPrecision
|
|
OpDecorate %200 RelaxedPrecision
|
|
OpDecorate %m22 RelaxedPrecision
|
|
OpDecorate %223 RelaxedPrecision
|
|
OpDecorate %224 RelaxedPrecision
|
|
OpDecorate %225 RelaxedPrecision
|
|
OpDecorate %226 RelaxedPrecision
|
|
OpDecorate %229 RelaxedPrecision
|
|
OpDecorate %231 RelaxedPrecision
|
|
OpDecorate %232 RelaxedPrecision
|
|
OpDecorate %233 RelaxedPrecision
|
|
OpDecorate %m33 RelaxedPrecision
|
|
OpDecorate %247 RelaxedPrecision
|
|
OpDecorate %248 RelaxedPrecision
|
|
OpDecorate %249 RelaxedPrecision
|
|
OpDecorate %250 RelaxedPrecision
|
|
OpDecorate %253 RelaxedPrecision
|
|
OpDecorate %255 RelaxedPrecision
|
|
OpDecorate %256 RelaxedPrecision
|
|
OpDecorate %257 RelaxedPrecision
|
|
OpDecorate %258 RelaxedPrecision
|
|
OpDecorate %274 RelaxedPrecision
|
|
OpDecorate %276 RelaxedPrecision
|
|
OpDecorate %277 RelaxedPrecision
|
|
OpDecorate %278 RelaxedPrecision
|
|
OpDecorate %279 RelaxedPrecision
|
|
OpDecorate %280 RelaxedPrecision
|
|
OpDecorate %281 RelaxedPrecision
|
|
OpDecorate %282 RelaxedPrecision
|
|
OpDecorate %283 RelaxedPrecision
|
|
OpDecorate %284 RelaxedPrecision
|
|
OpDecorate %285 RelaxedPrecision
|
|
OpDecorate %288 RelaxedPrecision
|
|
OpDecorate %289 RelaxedPrecision
|
|
OpDecorate %290 RelaxedPrecision
|
|
OpDecorate %291 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 %311 RelaxedPrecision
|
|
OpDecorate %312 RelaxedPrecision
|
|
OpDecorate %313 RelaxedPrecision
|
|
OpDecorate %314 RelaxedPrecision
|
|
OpDecorate %315 RelaxedPrecision
|
|
OpDecorate %318 RelaxedPrecision
|
|
OpDecorate %320 RelaxedPrecision
|
|
OpDecorate %321 RelaxedPrecision
|
|
OpDecorate %322 RelaxedPrecision
|
|
OpDecorate %323 RelaxedPrecision
|
|
OpDecorate %339 RelaxedPrecision
|
|
OpDecorate %340 RelaxedPrecision
|
|
OpDecorate %341 RelaxedPrecision
|
|
OpDecorate %342 RelaxedPrecision
|
|
OpDecorate %343 RelaxedPrecision
|
|
OpDecorate %344 RelaxedPrecision
|
|
OpDecorate %345 RelaxedPrecision
|
|
OpDecorate %346 RelaxedPrecision
|
|
OpDecorate %347 RelaxedPrecision
|
|
OpDecorate %348 RelaxedPrecision
|
|
OpDecorate %349 RelaxedPrecision
|
|
OpDecorate %352 RelaxedPrecision
|
|
OpDecorate %354 RelaxedPrecision
|
|
OpDecorate %355 RelaxedPrecision
|
|
OpDecorate %356 RelaxedPrecision
|
|
OpDecorate %h4 RelaxedPrecision
|
|
OpDecorate %379 RelaxedPrecision
|
|
OpDecorate %382 RelaxedPrecision
|
|
OpDecorate %383 RelaxedPrecision
|
|
OpDecorate %384 RelaxedPrecision
|
|
OpDecorate %385 RelaxedPrecision
|
|
OpDecorate %386 RelaxedPrecision
|
|
OpDecorate %387 RelaxedPrecision
|
|
OpDecorate %405 RelaxedPrecision
|
|
OpDecorate %408 RelaxedPrecision
|
|
OpDecorate %409 RelaxedPrecision
|
|
OpDecorate %410 RelaxedPrecision
|
|
OpDecorate %411 RelaxedPrecision
|
|
OpDecorate %412 RelaxedPrecision
|
|
OpDecorate %413 RelaxedPrecision
|
|
OpDecorate %414 RelaxedPrecision
|
|
OpDecorate %415 RelaxedPrecision
|
|
OpDecorate %438 RelaxedPrecision
|
|
OpDecorate %441 RelaxedPrecision
|
|
OpDecorate %442 RelaxedPrecision
|
|
OpDecorate %443 RelaxedPrecision
|
|
OpDecorate %444 RelaxedPrecision
|
|
OpDecorate %445 RelaxedPrecision
|
|
OpDecorate %446 RelaxedPrecision
|
|
OpDecorate %447 RelaxedPrecision
|
|
OpDecorate %448 RelaxedPrecision
|
|
OpDecorate %470 RelaxedPrecision
|
|
OpDecorate %473 RelaxedPrecision
|
|
OpDecorate %474 RelaxedPrecision
|
|
OpDecorate %475 RelaxedPrecision
|
|
OpDecorate %476 RelaxedPrecision
|
|
OpDecorate %477 RelaxedPrecision
|
|
OpDecorate %478 RelaxedPrecision
|
|
OpDecorate %479 RelaxedPrecision
|
|
OpDecorate %480 RelaxedPrecision
|
|
OpDecorate %481 RelaxedPrecision
|
|
OpDecorate %482 RelaxedPrecision
|
|
OpDecorate %483 RelaxedPrecision
|
|
OpDecorate %512 RelaxedPrecision
|
|
OpDecorate %515 RelaxedPrecision
|
|
OpDecorate %516 RelaxedPrecision
|
|
OpDecorate %517 RelaxedPrecision
|
|
OpDecorate %518 RelaxedPrecision
|
|
OpDecorate %519 RelaxedPrecision
|
|
OpDecorate %520 RelaxedPrecision
|
|
OpDecorate %521 RelaxedPrecision
|
|
OpDecorate %522 RelaxedPrecision
|
|
OpDecorate %523 RelaxedPrecision
|
|
OpDecorate %524 RelaxedPrecision
|
|
OpDecorate %525 RelaxedPrecision
|
|
OpDecorate %526 RelaxedPrecision
|
|
OpDecorate %555 RelaxedPrecision
|
|
OpDecorate %558 RelaxedPrecision
|
|
OpDecorate %559 RelaxedPrecision
|
|
OpDecorate %560 RelaxedPrecision
|
|
OpDecorate %561 RelaxedPrecision
|
|
OpDecorate %562 RelaxedPrecision
|
|
OpDecorate %563 RelaxedPrecision
|
|
OpDecorate %564 RelaxedPrecision
|
|
OpDecorate %565 RelaxedPrecision
|
|
OpDecorate %566 RelaxedPrecision
|
|
OpDecorate %567 RelaxedPrecision
|
|
OpDecorate %568 RelaxedPrecision
|
|
OpDecorate %569 RelaxedPrecision
|
|
OpDecorate %602 RelaxedPrecision
|
|
OpDecorate %611 RelaxedPrecision
|
|
OpDecorate %632 RelaxedPrecision
|
|
OpDecorate %654 RelaxedPrecision
|
|
OpDecorate %682 RelaxedPrecision
|
|
OpDecorate %711 RelaxedPrecision
|
|
OpDecorate %746 RelaxedPrecision
|
|
OpDecorate %779 RelaxedPrecision
|
|
OpDecorate %800 RelaxedPrecision
|
|
OpDecorate %833 RelaxedPrecision
|
|
OpDecorate %863 RelaxedPrecision
|
|
OpDecorate %896 RelaxedPrecision
|
|
OpDecorate %921 RelaxedPrecision
|
|
OpDecorate %947 RelaxedPrecision
|
|
OpDecorate %980 RelaxedPrecision
|
|
OpDecorate %1012 RelaxedPrecision
|
|
OpDecorate %1054 RelaxedPrecision
|
|
OpDecorate %1097 RelaxedPrecision
|
|
OpDecorate %1144 RelaxedPrecision
|
|
OpDecorate %1156 RelaxedPrecision
|
|
OpDecorate %1159 RelaxedPrecision
|
|
OpDecorate %1160 RelaxedPrecision
|
|
%float = OpTypeFloat 32
|
|
%v4float = OpTypeVector %float 4
|
|
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
|
%sk_FragColor = OpVariable %_ptr_Output_v4float Output
|
|
%bool = OpTypeBool
|
|
%_ptr_Input_bool = OpTypePointer Input %bool
|
|
%sk_Clockwise = OpVariable %_ptr_Input_bool Input
|
|
%v2float = OpTypeVector %float 2
|
|
%mat2v2float = OpTypeMatrix %v2float 2
|
|
%_UniformBuffer = OpTypeStruct %v4float %v4float %mat2v2float
|
|
%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
|
|
%11 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
|
|
%void = OpTypeVoid
|
|
%18 = OpTypeFunction %void
|
|
%float_0 = OpConstant %float 0
|
|
%21 = OpConstantComposite %v2float %float_0 %float_0
|
|
%_ptr_Function_v2float = OpTypePointer Function %v2float
|
|
%25 = OpTypeFunction %bool
|
|
%_ptr_Function_bool = OpTypePointer Function %bool
|
|
%true = OpConstantTrue %bool
|
|
%v3float = OpTypeVector %float 3
|
|
%mat2v3float = OpTypeMatrix %v3float 2
|
|
%_ptr_Function_mat2v3float = OpTypePointer Function %mat2v3float
|
|
%float_2 = OpConstant %float 2
|
|
%false = OpConstantFalse %bool
|
|
%v3bool = OpTypeVector %bool 3
|
|
%mat2v4float = OpTypeMatrix %v4float 2
|
|
%_ptr_Function_mat2v4float = OpTypePointer Function %mat2v4float
|
|
%float_3 = OpConstant %float 3
|
|
%v4bool = OpTypeVector %bool 4
|
|
%mat3v2float = OpTypeMatrix %v2float 3
|
|
%_ptr_Function_mat3v2float = OpTypePointer Function %mat3v2float
|
|
%float_4 = OpConstant %float 4
|
|
%v2bool = OpTypeVector %bool 2
|
|
%mat3v4float = OpTypeMatrix %v4float 3
|
|
%_ptr_Function_mat3v4float = OpTypePointer Function %mat3v4float
|
|
%float_5 = OpConstant %float 5
|
|
%mat4v2float = OpTypeMatrix %v2float 4
|
|
%_ptr_Function_mat4v2float = OpTypePointer Function %mat4v2float
|
|
%float_6 = OpConstant %float 6
|
|
%mat4v3float = OpTypeMatrix %v3float 4
|
|
%_ptr_Function_mat4v3float = OpTypePointer Function %mat4v3float
|
|
%float_7 = OpConstant %float 7
|
|
%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
|
|
%float_8 = OpConstant %float 8
|
|
%mat3v3float = OpTypeMatrix %v3float 3
|
|
%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
|
|
%float_35 = OpConstant %float 35
|
|
%float_1 = OpConstant %float 1
|
|
%float_n2 = OpConstant %float -2
|
|
%float_0_75 = OpConstant %float 0.75
|
|
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
|
%_ptr_Uniform_mat2v2float = OpTypePointer Uniform %mat2v2float
|
|
%int = OpTypeInt 32 1
|
|
%int_2 = OpConstant %int 2
|
|
%603 = OpTypeFunction %v4float %_ptr_Function_v2float
|
|
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
|
|
%int_0 = OpConstant %int 0
|
|
%int_1 = OpConstant %int 1
|
|
%_entrypoint_v = OpFunction %void None %18
|
|
%19 = OpLabel
|
|
%22 = OpVariable %_ptr_Function_v2float Function
|
|
OpStore %22 %21
|
|
%24 = OpFunctionCall %v4float %main %22
|
|
OpStore %sk_FragColor %24
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%test_half_b = OpFunction %bool None %25
|
|
%26 = OpLabel
|
|
%ok = OpVariable %_ptr_Function_bool Function
|
|
%m23 = OpVariable %_ptr_Function_mat2v3float Function
|
|
%m24 = OpVariable %_ptr_Function_mat2v4float Function
|
|
%m32 = OpVariable %_ptr_Function_mat3v2float Function
|
|
%m34 = OpVariable %_ptr_Function_mat3v4float Function
|
|
%m42 = OpVariable %_ptr_Function_mat4v2float Function
|
|
%m43 = OpVariable %_ptr_Function_mat4v3float Function
|
|
%m22 = OpVariable %_ptr_Function_mat2v2float Function
|
|
%m33 = OpVariable %_ptr_Function_mat3v3float Function
|
|
%h4 = OpVariable %_ptr_Function_v4float Function
|
|
OpStore %ok %true
|
|
%36 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
|
%37 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
|
%35 = OpCompositeConstruct %mat2v3float %36 %37
|
|
OpStore %m23 %35
|
|
%39 = OpLoad %bool %ok
|
|
OpSelectionMerge %41 None
|
|
OpBranchConditional %39 %40 %41
|
|
%40 = OpLabel
|
|
%42 = OpLoad %mat2v3float %m23
|
|
%43 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
|
%44 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
|
%45 = OpCompositeConstruct %mat2v3float %43 %44
|
|
%47 = OpCompositeExtract %v3float %42 0
|
|
%48 = OpCompositeExtract %v3float %45 0
|
|
%49 = OpFOrdEqual %v3bool %47 %48
|
|
%50 = OpAll %bool %49
|
|
%51 = OpCompositeExtract %v3float %42 1
|
|
%52 = OpCompositeExtract %v3float %45 1
|
|
%53 = OpFOrdEqual %v3bool %51 %52
|
|
%54 = OpAll %bool %53
|
|
%55 = OpLogicalAnd %bool %50 %54
|
|
OpBranch %41
|
|
%41 = OpLabel
|
|
%56 = OpPhi %bool %false %26 %55 %40
|
|
OpStore %ok %56
|
|
%62 = OpCompositeConstruct %v4float %float_3 %float_0 %float_0 %float_0
|
|
%63 = OpCompositeConstruct %v4float %float_0 %float_3 %float_0 %float_0
|
|
%61 = OpCompositeConstruct %mat2v4float %62 %63
|
|
OpStore %m24 %61
|
|
%64 = OpLoad %bool %ok
|
|
OpSelectionMerge %66 None
|
|
OpBranchConditional %64 %65 %66
|
|
%65 = OpLabel
|
|
%67 = OpLoad %mat2v4float %m24
|
|
%68 = OpCompositeConstruct %v4float %float_3 %float_0 %float_0 %float_0
|
|
%69 = OpCompositeConstruct %v4float %float_0 %float_3 %float_0 %float_0
|
|
%70 = OpCompositeConstruct %mat2v4float %68 %69
|
|
%72 = OpCompositeExtract %v4float %67 0
|
|
%73 = OpCompositeExtract %v4float %70 0
|
|
%74 = OpFOrdEqual %v4bool %72 %73
|
|
%75 = OpAll %bool %74
|
|
%76 = OpCompositeExtract %v4float %67 1
|
|
%77 = OpCompositeExtract %v4float %70 1
|
|
%78 = OpFOrdEqual %v4bool %76 %77
|
|
%79 = OpAll %bool %78
|
|
%80 = OpLogicalAnd %bool %75 %79
|
|
OpBranch %66
|
|
%66 = OpLabel
|
|
%81 = OpPhi %bool %false %41 %80 %65
|
|
OpStore %ok %81
|
|
%87 = OpCompositeConstruct %v2float %float_4 %float_0
|
|
%88 = OpCompositeConstruct %v2float %float_0 %float_4
|
|
%89 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%86 = OpCompositeConstruct %mat3v2float %87 %88 %89
|
|
OpStore %m32 %86
|
|
%90 = OpLoad %bool %ok
|
|
OpSelectionMerge %92 None
|
|
OpBranchConditional %90 %91 %92
|
|
%91 = OpLabel
|
|
%93 = OpLoad %mat3v2float %m32
|
|
%94 = OpCompositeConstruct %v2float %float_4 %float_0
|
|
%95 = OpCompositeConstruct %v2float %float_0 %float_4
|
|
%96 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%97 = OpCompositeConstruct %mat3v2float %94 %95 %96
|
|
%99 = OpCompositeExtract %v2float %93 0
|
|
%100 = OpCompositeExtract %v2float %97 0
|
|
%101 = OpFOrdEqual %v2bool %99 %100
|
|
%102 = OpAll %bool %101
|
|
%103 = OpCompositeExtract %v2float %93 1
|
|
%104 = OpCompositeExtract %v2float %97 1
|
|
%105 = OpFOrdEqual %v2bool %103 %104
|
|
%106 = OpAll %bool %105
|
|
%107 = OpLogicalAnd %bool %102 %106
|
|
%108 = OpCompositeExtract %v2float %93 2
|
|
%109 = OpCompositeExtract %v2float %97 2
|
|
%110 = OpFOrdEqual %v2bool %108 %109
|
|
%111 = OpAll %bool %110
|
|
%112 = OpLogicalAnd %bool %107 %111
|
|
OpBranch %92
|
|
%92 = OpLabel
|
|
%113 = OpPhi %bool %false %66 %112 %91
|
|
OpStore %ok %113
|
|
%119 = OpCompositeConstruct %v4float %float_5 %float_0 %float_0 %float_0
|
|
%120 = OpCompositeConstruct %v4float %float_0 %float_5 %float_0 %float_0
|
|
%121 = OpCompositeConstruct %v4float %float_0 %float_0 %float_5 %float_0
|
|
%118 = OpCompositeConstruct %mat3v4float %119 %120 %121
|
|
OpStore %m34 %118
|
|
%122 = OpLoad %bool %ok
|
|
OpSelectionMerge %124 None
|
|
OpBranchConditional %122 %123 %124
|
|
%123 = OpLabel
|
|
%125 = OpLoad %mat3v4float %m34
|
|
%126 = OpCompositeConstruct %v4float %float_5 %float_0 %float_0 %float_0
|
|
%127 = OpCompositeConstruct %v4float %float_0 %float_5 %float_0 %float_0
|
|
%128 = OpCompositeConstruct %v4float %float_0 %float_0 %float_5 %float_0
|
|
%129 = OpCompositeConstruct %mat3v4float %126 %127 %128
|
|
%130 = OpCompositeExtract %v4float %125 0
|
|
%131 = OpCompositeExtract %v4float %129 0
|
|
%132 = OpFOrdEqual %v4bool %130 %131
|
|
%133 = OpAll %bool %132
|
|
%134 = OpCompositeExtract %v4float %125 1
|
|
%135 = OpCompositeExtract %v4float %129 1
|
|
%136 = OpFOrdEqual %v4bool %134 %135
|
|
%137 = OpAll %bool %136
|
|
%138 = OpLogicalAnd %bool %133 %137
|
|
%139 = OpCompositeExtract %v4float %125 2
|
|
%140 = OpCompositeExtract %v4float %129 2
|
|
%141 = OpFOrdEqual %v4bool %139 %140
|
|
%142 = OpAll %bool %141
|
|
%143 = OpLogicalAnd %bool %138 %142
|
|
OpBranch %124
|
|
%124 = OpLabel
|
|
%144 = OpPhi %bool %false %92 %143 %123
|
|
OpStore %ok %144
|
|
%150 = OpCompositeConstruct %v2float %float_6 %float_0
|
|
%151 = OpCompositeConstruct %v2float %float_0 %float_6
|
|
%152 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%153 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%149 = OpCompositeConstruct %mat4v2float %150 %151 %152 %153
|
|
OpStore %m42 %149
|
|
%154 = OpLoad %bool %ok
|
|
OpSelectionMerge %156 None
|
|
OpBranchConditional %154 %155 %156
|
|
%155 = OpLabel
|
|
%157 = OpLoad %mat4v2float %m42
|
|
%158 = OpCompositeConstruct %v2float %float_6 %float_0
|
|
%159 = OpCompositeConstruct %v2float %float_0 %float_6
|
|
%160 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%161 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%162 = OpCompositeConstruct %mat4v2float %158 %159 %160 %161
|
|
%163 = OpCompositeExtract %v2float %157 0
|
|
%164 = OpCompositeExtract %v2float %162 0
|
|
%165 = OpFOrdEqual %v2bool %163 %164
|
|
%166 = OpAll %bool %165
|
|
%167 = OpCompositeExtract %v2float %157 1
|
|
%168 = OpCompositeExtract %v2float %162 1
|
|
%169 = OpFOrdEqual %v2bool %167 %168
|
|
%170 = OpAll %bool %169
|
|
%171 = OpLogicalAnd %bool %166 %170
|
|
%172 = OpCompositeExtract %v2float %157 2
|
|
%173 = OpCompositeExtract %v2float %162 2
|
|
%174 = OpFOrdEqual %v2bool %172 %173
|
|
%175 = OpAll %bool %174
|
|
%176 = OpLogicalAnd %bool %171 %175
|
|
%177 = OpCompositeExtract %v2float %157 3
|
|
%178 = OpCompositeExtract %v2float %162 3
|
|
%179 = OpFOrdEqual %v2bool %177 %178
|
|
%180 = OpAll %bool %179
|
|
%181 = OpLogicalAnd %bool %176 %180
|
|
OpBranch %156
|
|
%156 = OpLabel
|
|
%182 = OpPhi %bool %false %124 %181 %155
|
|
OpStore %ok %182
|
|
%188 = OpCompositeConstruct %v3float %float_7 %float_0 %float_0
|
|
%189 = OpCompositeConstruct %v3float %float_0 %float_7 %float_0
|
|
%190 = OpCompositeConstruct %v3float %float_0 %float_0 %float_7
|
|
%191 = OpCompositeConstruct %v3float %float_0 %float_0 %float_0
|
|
%187 = OpCompositeConstruct %mat4v3float %188 %189 %190 %191
|
|
OpStore %m43 %187
|
|
%192 = OpLoad %bool %ok
|
|
OpSelectionMerge %194 None
|
|
OpBranchConditional %192 %193 %194
|
|
%193 = OpLabel
|
|
%195 = OpLoad %mat4v3float %m43
|
|
%196 = OpCompositeConstruct %v3float %float_7 %float_0 %float_0
|
|
%197 = OpCompositeConstruct %v3float %float_0 %float_7 %float_0
|
|
%198 = OpCompositeConstruct %v3float %float_0 %float_0 %float_7
|
|
%199 = OpCompositeConstruct %v3float %float_0 %float_0 %float_0
|
|
%200 = OpCompositeConstruct %mat4v3float %196 %197 %198 %199
|
|
%201 = OpCompositeExtract %v3float %195 0
|
|
%202 = OpCompositeExtract %v3float %200 0
|
|
%203 = OpFOrdEqual %v3bool %201 %202
|
|
%204 = OpAll %bool %203
|
|
%205 = OpCompositeExtract %v3float %195 1
|
|
%206 = OpCompositeExtract %v3float %200 1
|
|
%207 = OpFOrdEqual %v3bool %205 %206
|
|
%208 = OpAll %bool %207
|
|
%209 = OpLogicalAnd %bool %204 %208
|
|
%210 = OpCompositeExtract %v3float %195 2
|
|
%211 = OpCompositeExtract %v3float %200 2
|
|
%212 = OpFOrdEqual %v3bool %210 %211
|
|
%213 = OpAll %bool %212
|
|
%214 = OpLogicalAnd %bool %209 %213
|
|
%215 = OpCompositeExtract %v3float %195 3
|
|
%216 = OpCompositeExtract %v3float %200 3
|
|
%217 = OpFOrdEqual %v3bool %215 %216
|
|
%218 = OpAll %bool %217
|
|
%219 = OpLogicalAnd %bool %214 %218
|
|
OpBranch %194
|
|
%194 = OpLabel
|
|
%220 = OpPhi %bool %false %156 %219 %193
|
|
OpStore %ok %220
|
|
%223 = OpLoad %mat3v2float %m32
|
|
%224 = OpLoad %mat2v3float %m23
|
|
%225 = OpMatrixTimesMatrix %mat2v2float %223 %224
|
|
OpStore %m22 %225
|
|
%226 = OpLoad %bool %ok
|
|
OpSelectionMerge %228 None
|
|
OpBranchConditional %226 %227 %228
|
|
%227 = OpLabel
|
|
%229 = OpLoad %mat2v2float %m22
|
|
%232 = OpCompositeConstruct %v2float %float_8 %float_0
|
|
%233 = OpCompositeConstruct %v2float %float_0 %float_8
|
|
%231 = OpCompositeConstruct %mat2v2float %232 %233
|
|
%234 = OpCompositeExtract %v2float %229 0
|
|
%235 = OpCompositeExtract %v2float %231 0
|
|
%236 = OpFOrdEqual %v2bool %234 %235
|
|
%237 = OpAll %bool %236
|
|
%238 = OpCompositeExtract %v2float %229 1
|
|
%239 = OpCompositeExtract %v2float %231 1
|
|
%240 = OpFOrdEqual %v2bool %238 %239
|
|
%241 = OpAll %bool %240
|
|
%242 = OpLogicalAnd %bool %237 %241
|
|
OpBranch %228
|
|
%228 = OpLabel
|
|
%243 = OpPhi %bool %false %194 %242 %227
|
|
OpStore %ok %243
|
|
%247 = OpLoad %mat4v3float %m43
|
|
%248 = OpLoad %mat3v4float %m34
|
|
%249 = OpMatrixTimesMatrix %mat3v3float %247 %248
|
|
OpStore %m33 %249
|
|
%250 = OpLoad %bool %ok
|
|
OpSelectionMerge %252 None
|
|
OpBranchConditional %250 %251 %252
|
|
%251 = OpLabel
|
|
%253 = OpLoad %mat3v3float %m33
|
|
%256 = OpCompositeConstruct %v3float %float_35 %float_0 %float_0
|
|
%257 = OpCompositeConstruct %v3float %float_0 %float_35 %float_0
|
|
%258 = OpCompositeConstruct %v3float %float_0 %float_0 %float_35
|
|
%255 = OpCompositeConstruct %mat3v3float %256 %257 %258
|
|
%259 = OpCompositeExtract %v3float %253 0
|
|
%260 = OpCompositeExtract %v3float %255 0
|
|
%261 = OpFOrdEqual %v3bool %259 %260
|
|
%262 = OpAll %bool %261
|
|
%263 = OpCompositeExtract %v3float %253 1
|
|
%264 = OpCompositeExtract %v3float %255 1
|
|
%265 = OpFOrdEqual %v3bool %263 %264
|
|
%266 = OpAll %bool %265
|
|
%267 = OpLogicalAnd %bool %262 %266
|
|
%268 = OpCompositeExtract %v3float %253 2
|
|
%269 = OpCompositeExtract %v3float %255 2
|
|
%270 = OpFOrdEqual %v3bool %268 %269
|
|
%271 = OpAll %bool %270
|
|
%272 = OpLogicalAnd %bool %267 %271
|
|
OpBranch %252
|
|
%252 = OpLabel
|
|
%273 = OpPhi %bool %false %228 %272 %251
|
|
OpStore %ok %273
|
|
%274 = OpLoad %mat2v3float %m23
|
|
%276 = OpCompositeConstruct %v3float %float_1 %float_1 %float_1
|
|
%277 = OpCompositeConstruct %mat2v3float %276 %276
|
|
%278 = OpCompositeExtract %v3float %274 0
|
|
%279 = OpCompositeExtract %v3float %277 0
|
|
%280 = OpFAdd %v3float %278 %279
|
|
%281 = OpCompositeExtract %v3float %274 1
|
|
%282 = OpCompositeExtract %v3float %277 1
|
|
%283 = OpFAdd %v3float %281 %282
|
|
%284 = OpCompositeConstruct %mat2v3float %280 %283
|
|
OpStore %m23 %284
|
|
%285 = OpLoad %bool %ok
|
|
OpSelectionMerge %287 None
|
|
OpBranchConditional %285 %286 %287
|
|
%286 = OpLabel
|
|
%288 = OpLoad %mat2v3float %m23
|
|
%289 = OpCompositeConstruct %v3float %float_3 %float_1 %float_1
|
|
%290 = OpCompositeConstruct %v3float %float_1 %float_3 %float_1
|
|
%291 = OpCompositeConstruct %mat2v3float %289 %290
|
|
%292 = OpCompositeExtract %v3float %288 0
|
|
%293 = OpCompositeExtract %v3float %291 0
|
|
%294 = OpFOrdEqual %v3bool %292 %293
|
|
%295 = OpAll %bool %294
|
|
%296 = OpCompositeExtract %v3float %288 1
|
|
%297 = OpCompositeExtract %v3float %291 1
|
|
%298 = OpFOrdEqual %v3bool %296 %297
|
|
%299 = OpAll %bool %298
|
|
%300 = OpLogicalAnd %bool %295 %299
|
|
OpBranch %287
|
|
%287 = OpLabel
|
|
%301 = OpPhi %bool %false %252 %300 %286
|
|
OpStore %ok %301
|
|
%302 = OpLoad %mat3v2float %m32
|
|
%303 = OpCompositeConstruct %v2float %float_2 %float_2
|
|
%304 = OpCompositeConstruct %mat3v2float %303 %303 %303
|
|
%305 = OpCompositeExtract %v2float %302 0
|
|
%306 = OpCompositeExtract %v2float %304 0
|
|
%307 = OpFSub %v2float %305 %306
|
|
%308 = OpCompositeExtract %v2float %302 1
|
|
%309 = OpCompositeExtract %v2float %304 1
|
|
%310 = OpFSub %v2float %308 %309
|
|
%311 = OpCompositeExtract %v2float %302 2
|
|
%312 = OpCompositeExtract %v2float %304 2
|
|
%313 = OpFSub %v2float %311 %312
|
|
%314 = OpCompositeConstruct %mat3v2float %307 %310 %313
|
|
OpStore %m32 %314
|
|
%315 = OpLoad %bool %ok
|
|
OpSelectionMerge %317 None
|
|
OpBranchConditional %315 %316 %317
|
|
%316 = OpLabel
|
|
%318 = OpLoad %mat3v2float %m32
|
|
%320 = OpCompositeConstruct %v2float %float_2 %float_n2
|
|
%321 = OpCompositeConstruct %v2float %float_n2 %float_2
|
|
%322 = OpCompositeConstruct %v2float %float_n2 %float_n2
|
|
%323 = OpCompositeConstruct %mat3v2float %320 %321 %322
|
|
%324 = OpCompositeExtract %v2float %318 0
|
|
%325 = OpCompositeExtract %v2float %323 0
|
|
%326 = OpFOrdEqual %v2bool %324 %325
|
|
%327 = OpAll %bool %326
|
|
%328 = OpCompositeExtract %v2float %318 1
|
|
%329 = OpCompositeExtract %v2float %323 1
|
|
%330 = OpFOrdEqual %v2bool %328 %329
|
|
%331 = OpAll %bool %330
|
|
%332 = OpLogicalAnd %bool %327 %331
|
|
%333 = OpCompositeExtract %v2float %318 2
|
|
%334 = OpCompositeExtract %v2float %323 2
|
|
%335 = OpFOrdEqual %v2bool %333 %334
|
|
%336 = OpAll %bool %335
|
|
%337 = OpLogicalAnd %bool %332 %336
|
|
OpBranch %317
|
|
%317 = OpLabel
|
|
%338 = OpPhi %bool %false %287 %337 %316
|
|
OpStore %ok %338
|
|
%339 = OpLoad %mat2v4float %m24
|
|
%340 = OpCompositeConstruct %v4float %float_4 %float_4 %float_4 %float_4
|
|
%341 = OpCompositeConstruct %mat2v4float %340 %340
|
|
%342 = OpCompositeExtract %v4float %339 0
|
|
%343 = OpCompositeExtract %v4float %341 0
|
|
%344 = OpFDiv %v4float %342 %343
|
|
%345 = OpCompositeExtract %v4float %339 1
|
|
%346 = OpCompositeExtract %v4float %341 1
|
|
%347 = OpFDiv %v4float %345 %346
|
|
%348 = OpCompositeConstruct %mat2v4float %344 %347
|
|
OpStore %m24 %348
|
|
%349 = OpLoad %bool %ok
|
|
OpSelectionMerge %351 None
|
|
OpBranchConditional %349 %350 %351
|
|
%350 = OpLabel
|
|
%352 = OpLoad %mat2v4float %m24
|
|
%354 = OpCompositeConstruct %v4float %float_0_75 %float_0 %float_0 %float_0
|
|
%355 = OpCompositeConstruct %v4float %float_0 %float_0_75 %float_0 %float_0
|
|
%356 = OpCompositeConstruct %mat2v4float %354 %355
|
|
%357 = OpCompositeExtract %v4float %352 0
|
|
%358 = OpCompositeExtract %v4float %356 0
|
|
%359 = OpFOrdEqual %v4bool %357 %358
|
|
%360 = OpAll %bool %359
|
|
%361 = OpCompositeExtract %v4float %352 1
|
|
%362 = OpCompositeExtract %v4float %356 1
|
|
%363 = OpFOrdEqual %v4bool %361 %362
|
|
%364 = OpAll %bool %363
|
|
%365 = OpLogicalAnd %bool %360 %364
|
|
OpBranch %351
|
|
%351 = OpLabel
|
|
%366 = OpPhi %bool %false %317 %365 %350
|
|
OpStore %ok %366
|
|
%369 = OpAccessChain %_ptr_Uniform_mat2v2float %11 %int_2
|
|
%373 = OpLoad %mat2v2float %369
|
|
%374 = OpCompositeExtract %float %373 0 0
|
|
%375 = OpCompositeExtract %float %373 0 1
|
|
%376 = OpCompositeExtract %float %373 1 0
|
|
%377 = OpCompositeExtract %float %373 1 1
|
|
%378 = OpCompositeConstruct %v4float %374 %375 %376 %377
|
|
OpStore %h4 %378
|
|
%379 = OpLoad %bool %ok
|
|
OpSelectionMerge %381 None
|
|
OpBranchConditional %379 %380 %381
|
|
%380 = OpLabel
|
|
%382 = OpLoad %v4float %h4
|
|
%383 = OpVectorShuffle %v3float %382 %382 0 1 2
|
|
%384 = OpLoad %v4float %h4
|
|
%385 = OpCompositeExtract %float %384 3
|
|
%386 = OpLoad %v4float %h4
|
|
%387 = OpVectorShuffle %v2float %386 %386 0 1
|
|
%388 = OpCompositeExtract %float %387 0
|
|
%389 = OpCompositeExtract %float %387 1
|
|
%390 = OpCompositeConstruct %v3float %385 %388 %389
|
|
%391 = OpCompositeConstruct %mat2v3float %383 %390
|
|
%392 = OpCompositeConstruct %v3float %float_1 %float_2 %float_3
|
|
%393 = OpCompositeConstruct %v3float %float_4 %float_1 %float_2
|
|
%394 = OpCompositeConstruct %mat2v3float %392 %393
|
|
%395 = OpCompositeExtract %v3float %391 0
|
|
%396 = OpCompositeExtract %v3float %394 0
|
|
%397 = OpFOrdEqual %v3bool %395 %396
|
|
%398 = OpAll %bool %397
|
|
%399 = OpCompositeExtract %v3float %391 1
|
|
%400 = OpCompositeExtract %v3float %394 1
|
|
%401 = OpFOrdEqual %v3bool %399 %400
|
|
%402 = OpAll %bool %401
|
|
%403 = OpLogicalAnd %bool %398 %402
|
|
OpBranch %381
|
|
%381 = OpLabel
|
|
%404 = OpPhi %bool %false %351 %403 %380
|
|
OpStore %ok %404
|
|
%405 = OpLoad %bool %ok
|
|
OpSelectionMerge %407 None
|
|
OpBranchConditional %405 %406 %407
|
|
%406 = OpLabel
|
|
%408 = OpLoad %v4float %h4
|
|
%409 = OpVectorShuffle %v3float %408 %408 0 1 2
|
|
%410 = OpLoad %v4float %h4
|
|
%411 = OpCompositeExtract %float %410 3
|
|
%412 = OpLoad %v4float %h4
|
|
%413 = OpCompositeExtract %float %412 0
|
|
%414 = OpLoad %v4float %h4
|
|
%415 = OpVectorShuffle %v3float %414 %414 1 2 3
|
|
%416 = OpCompositeExtract %float %409 0
|
|
%417 = OpCompositeExtract %float %409 1
|
|
%418 = OpCompositeExtract %float %409 2
|
|
%419 = OpCompositeConstruct %v4float %416 %417 %418 %411
|
|
%420 = OpCompositeExtract %float %415 0
|
|
%421 = OpCompositeExtract %float %415 1
|
|
%422 = OpCompositeExtract %float %415 2
|
|
%423 = OpCompositeConstruct %v4float %413 %420 %421 %422
|
|
%424 = OpCompositeConstruct %mat2v4float %419 %423
|
|
%425 = OpCompositeConstruct %v4float %float_1 %float_2 %float_3 %float_4
|
|
%426 = OpCompositeConstruct %v4float %float_1 %float_2 %float_3 %float_4
|
|
%427 = OpCompositeConstruct %mat2v4float %425 %426
|
|
%428 = OpCompositeExtract %v4float %424 0
|
|
%429 = OpCompositeExtract %v4float %427 0
|
|
%430 = OpFOrdEqual %v4bool %428 %429
|
|
%431 = OpAll %bool %430
|
|
%432 = OpCompositeExtract %v4float %424 1
|
|
%433 = OpCompositeExtract %v4float %427 1
|
|
%434 = OpFOrdEqual %v4bool %432 %433
|
|
%435 = OpAll %bool %434
|
|
%436 = OpLogicalAnd %bool %431 %435
|
|
OpBranch %407
|
|
%407 = OpLabel
|
|
%437 = OpPhi %bool %false %381 %436 %406
|
|
OpStore %ok %437
|
|
%438 = OpLoad %bool %ok
|
|
OpSelectionMerge %440 None
|
|
OpBranchConditional %438 %439 %440
|
|
%439 = OpLabel
|
|
%441 = OpLoad %v4float %h4
|
|
%442 = OpVectorShuffle %v2float %441 %441 0 1
|
|
%443 = OpLoad %v4float %h4
|
|
%444 = OpVectorShuffle %v2float %443 %443 2 3
|
|
%445 = OpLoad %v4float %h4
|
|
%446 = OpCompositeExtract %float %445 0
|
|
%447 = OpLoad %v4float %h4
|
|
%448 = OpCompositeExtract %float %447 1
|
|
%449 = OpCompositeConstruct %v2float %446 %448
|
|
%450 = OpCompositeConstruct %mat3v2float %442 %444 %449
|
|
%451 = OpCompositeConstruct %v2float %float_1 %float_2
|
|
%452 = OpCompositeConstruct %v2float %float_3 %float_4
|
|
%453 = OpCompositeConstruct %v2float %float_1 %float_2
|
|
%454 = OpCompositeConstruct %mat3v2float %451 %452 %453
|
|
%455 = OpCompositeExtract %v2float %450 0
|
|
%456 = OpCompositeExtract %v2float %454 0
|
|
%457 = OpFOrdEqual %v2bool %455 %456
|
|
%458 = OpAll %bool %457
|
|
%459 = OpCompositeExtract %v2float %450 1
|
|
%460 = OpCompositeExtract %v2float %454 1
|
|
%461 = OpFOrdEqual %v2bool %459 %460
|
|
%462 = OpAll %bool %461
|
|
%463 = OpLogicalAnd %bool %458 %462
|
|
%464 = OpCompositeExtract %v2float %450 2
|
|
%465 = OpCompositeExtract %v2float %454 2
|
|
%466 = OpFOrdEqual %v2bool %464 %465
|
|
%467 = OpAll %bool %466
|
|
%468 = OpLogicalAnd %bool %463 %467
|
|
OpBranch %440
|
|
%440 = OpLabel
|
|
%469 = OpPhi %bool %false %407 %468 %439
|
|
OpStore %ok %469
|
|
%470 = OpLoad %bool %ok
|
|
OpSelectionMerge %472 None
|
|
OpBranchConditional %470 %471 %472
|
|
%471 = OpLabel
|
|
%473 = OpLoad %v4float %h4
|
|
%474 = OpVectorShuffle %v2float %473 %473 0 1
|
|
%475 = OpLoad %v4float %h4
|
|
%476 = OpVectorShuffle %v2float %475 %475 2 3
|
|
%477 = OpLoad %v4float %h4
|
|
%478 = OpLoad %v4float %h4
|
|
%479 = OpCompositeExtract %float %478 0
|
|
%480 = OpLoad %v4float %h4
|
|
%481 = OpVectorShuffle %v2float %480 %480 1 2
|
|
%482 = OpLoad %v4float %h4
|
|
%483 = OpCompositeExtract %float %482 3
|
|
%484 = OpCompositeExtract %float %474 0
|
|
%485 = OpCompositeExtract %float %474 1
|
|
%486 = OpCompositeExtract %float %476 0
|
|
%487 = OpCompositeExtract %float %476 1
|
|
%488 = OpCompositeConstruct %v4float %484 %485 %486 %487
|
|
%489 = OpCompositeExtract %float %481 0
|
|
%490 = OpCompositeExtract %float %481 1
|
|
%491 = OpCompositeConstruct %v4float %479 %489 %490 %483
|
|
%492 = OpCompositeConstruct %mat3v4float %488 %477 %491
|
|
%493 = OpCompositeConstruct %v4float %float_1 %float_2 %float_3 %float_4
|
|
%494 = OpCompositeConstruct %v4float %float_1 %float_2 %float_3 %float_4
|
|
%495 = OpCompositeConstruct %v4float %float_1 %float_2 %float_3 %float_4
|
|
%496 = OpCompositeConstruct %mat3v4float %493 %494 %495
|
|
%497 = OpCompositeExtract %v4float %492 0
|
|
%498 = OpCompositeExtract %v4float %496 0
|
|
%499 = OpFOrdEqual %v4bool %497 %498
|
|
%500 = OpAll %bool %499
|
|
%501 = OpCompositeExtract %v4float %492 1
|
|
%502 = OpCompositeExtract %v4float %496 1
|
|
%503 = OpFOrdEqual %v4bool %501 %502
|
|
%504 = OpAll %bool %503
|
|
%505 = OpLogicalAnd %bool %500 %504
|
|
%506 = OpCompositeExtract %v4float %492 2
|
|
%507 = OpCompositeExtract %v4float %496 2
|
|
%508 = OpFOrdEqual %v4bool %506 %507
|
|
%509 = OpAll %bool %508
|
|
%510 = OpLogicalAnd %bool %505 %509
|
|
OpBranch %472
|
|
%472 = OpLabel
|
|
%511 = OpPhi %bool %false %440 %510 %471
|
|
OpStore %ok %511
|
|
%512 = OpLoad %bool %ok
|
|
OpSelectionMerge %514 None
|
|
OpBranchConditional %512 %513 %514
|
|
%513 = OpLabel
|
|
%515 = OpLoad %v4float %h4
|
|
%516 = OpVectorShuffle %v2float %515 %515 0 1
|
|
%517 = OpLoad %v4float %h4
|
|
%518 = OpCompositeExtract %float %517 2
|
|
%519 = OpLoad %v4float %h4
|
|
%520 = OpCompositeExtract %float %519 3
|
|
%521 = OpLoad %v4float %h4
|
|
%522 = OpVectorShuffle %v2float %521 %521 0 1
|
|
%523 = OpLoad %v4float %h4
|
|
%524 = OpCompositeExtract %float %523 2
|
|
%525 = OpLoad %v4float %h4
|
|
%526 = OpCompositeExtract %float %525 3
|
|
%527 = OpCompositeConstruct %v2float %518 %520
|
|
%528 = OpCompositeConstruct %v2float %524 %526
|
|
%529 = OpCompositeConstruct %mat4v2float %516 %527 %522 %528
|
|
%530 = OpCompositeConstruct %v2float %float_1 %float_2
|
|
%531 = OpCompositeConstruct %v2float %float_3 %float_4
|
|
%532 = OpCompositeConstruct %v2float %float_1 %float_2
|
|
%533 = OpCompositeConstruct %v2float %float_3 %float_4
|
|
%534 = OpCompositeConstruct %mat4v2float %530 %531 %532 %533
|
|
%535 = OpCompositeExtract %v2float %529 0
|
|
%536 = OpCompositeExtract %v2float %534 0
|
|
%537 = OpFOrdEqual %v2bool %535 %536
|
|
%538 = OpAll %bool %537
|
|
%539 = OpCompositeExtract %v2float %529 1
|
|
%540 = OpCompositeExtract %v2float %534 1
|
|
%541 = OpFOrdEqual %v2bool %539 %540
|
|
%542 = OpAll %bool %541
|
|
%543 = OpLogicalAnd %bool %538 %542
|
|
%544 = OpCompositeExtract %v2float %529 2
|
|
%545 = OpCompositeExtract %v2float %534 2
|
|
%546 = OpFOrdEqual %v2bool %544 %545
|
|
%547 = OpAll %bool %546
|
|
%548 = OpLogicalAnd %bool %543 %547
|
|
%549 = OpCompositeExtract %v2float %529 3
|
|
%550 = OpCompositeExtract %v2float %534 3
|
|
%551 = OpFOrdEqual %v2bool %549 %550
|
|
%552 = OpAll %bool %551
|
|
%553 = OpLogicalAnd %bool %548 %552
|
|
OpBranch %514
|
|
%514 = OpLabel
|
|
%554 = OpPhi %bool %false %472 %553 %513
|
|
OpStore %ok %554
|
|
%555 = OpLoad %bool %ok
|
|
OpSelectionMerge %557 None
|
|
OpBranchConditional %555 %556 %557
|
|
%556 = OpLabel
|
|
%558 = OpLoad %v4float %h4
|
|
%559 = OpCompositeExtract %float %558 0
|
|
%560 = OpLoad %v4float %h4
|
|
%561 = OpVectorShuffle %v2float %560 %560 1 2
|
|
%562 = OpLoad %v4float %h4
|
|
%563 = OpVectorShuffle %v2float %562 %562 3 0
|
|
%564 = OpLoad %v4float %h4
|
|
%565 = OpCompositeExtract %float %564 1
|
|
%566 = OpLoad %v4float %h4
|
|
%567 = OpVectorShuffle %v3float %566 %566 2 3 0
|
|
%568 = OpLoad %v4float %h4
|
|
%569 = OpVectorShuffle %v3float %568 %568 1 2 3
|
|
%570 = OpCompositeExtract %float %561 0
|
|
%571 = OpCompositeExtract %float %561 1
|
|
%572 = OpCompositeConstruct %v3float %559 %570 %571
|
|
%573 = OpCompositeExtract %float %563 0
|
|
%574 = OpCompositeExtract %float %563 1
|
|
%575 = OpCompositeConstruct %v3float %573 %574 %565
|
|
%576 = OpCompositeConstruct %mat4v3float %572 %575 %567 %569
|
|
%577 = OpCompositeConstruct %v3float %float_1 %float_2 %float_3
|
|
%578 = OpCompositeConstruct %v3float %float_4 %float_1 %float_2
|
|
%579 = OpCompositeConstruct %v3float %float_3 %float_4 %float_1
|
|
%580 = OpCompositeConstruct %v3float %float_2 %float_3 %float_4
|
|
%581 = OpCompositeConstruct %mat4v3float %577 %578 %579 %580
|
|
%582 = OpCompositeExtract %v3float %576 0
|
|
%583 = OpCompositeExtract %v3float %581 0
|
|
%584 = OpFOrdEqual %v3bool %582 %583
|
|
%585 = OpAll %bool %584
|
|
%586 = OpCompositeExtract %v3float %576 1
|
|
%587 = OpCompositeExtract %v3float %581 1
|
|
%588 = OpFOrdEqual %v3bool %586 %587
|
|
%589 = OpAll %bool %588
|
|
%590 = OpLogicalAnd %bool %585 %589
|
|
%591 = OpCompositeExtract %v3float %576 2
|
|
%592 = OpCompositeExtract %v3float %581 2
|
|
%593 = OpFOrdEqual %v3bool %591 %592
|
|
%594 = OpAll %bool %593
|
|
%595 = OpLogicalAnd %bool %590 %594
|
|
%596 = OpCompositeExtract %v3float %576 3
|
|
%597 = OpCompositeExtract %v3float %581 3
|
|
%598 = OpFOrdEqual %v3bool %596 %597
|
|
%599 = OpAll %bool %598
|
|
%600 = OpLogicalAnd %bool %595 %599
|
|
OpBranch %557
|
|
%557 = OpLabel
|
|
%601 = OpPhi %bool %false %514 %600 %556
|
|
OpStore %ok %601
|
|
%602 = OpLoad %bool %ok
|
|
OpReturnValue %602
|
|
OpFunctionEnd
|
|
%main = OpFunction %v4float None %603
|
|
%604 = OpFunctionParameter %_ptr_Function_v2float
|
|
%605 = OpLabel
|
|
%_0_ok = OpVariable %_ptr_Function_bool Function
|
|
%_1_m23 = OpVariable %_ptr_Function_mat2v3float Function
|
|
%_2_m24 = OpVariable %_ptr_Function_mat2v4float Function
|
|
%_3_m32 = OpVariable %_ptr_Function_mat3v2float Function
|
|
%_4_m34 = OpVariable %_ptr_Function_mat3v4float Function
|
|
%_5_m42 = OpVariable %_ptr_Function_mat4v2float Function
|
|
%_6_m43 = OpVariable %_ptr_Function_mat4v3float Function
|
|
%_7_m22 = OpVariable %_ptr_Function_mat2v2float Function
|
|
%_8_m33 = OpVariable %_ptr_Function_mat3v3float Function
|
|
%_10_f4 = OpVariable %_ptr_Function_v4float Function
|
|
%1149 = OpVariable %_ptr_Function_v4float Function
|
|
OpStore %_0_ok %true
|
|
%609 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
|
%610 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
|
%608 = OpCompositeConstruct %mat2v3float %609 %610
|
|
OpStore %_1_m23 %608
|
|
%611 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %613 None
|
|
OpBranchConditional %611 %612 %613
|
|
%612 = OpLabel
|
|
%614 = OpLoad %mat2v3float %_1_m23
|
|
%615 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
|
%616 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
|
%617 = OpCompositeConstruct %mat2v3float %615 %616
|
|
%618 = OpCompositeExtract %v3float %614 0
|
|
%619 = OpCompositeExtract %v3float %617 0
|
|
%620 = OpFOrdEqual %v3bool %618 %619
|
|
%621 = OpAll %bool %620
|
|
%622 = OpCompositeExtract %v3float %614 1
|
|
%623 = OpCompositeExtract %v3float %617 1
|
|
%624 = OpFOrdEqual %v3bool %622 %623
|
|
%625 = OpAll %bool %624
|
|
%626 = OpLogicalAnd %bool %621 %625
|
|
OpBranch %613
|
|
%613 = OpLabel
|
|
%627 = OpPhi %bool %false %605 %626 %612
|
|
OpStore %_0_ok %627
|
|
%630 = OpCompositeConstruct %v4float %float_3 %float_0 %float_0 %float_0
|
|
%631 = OpCompositeConstruct %v4float %float_0 %float_3 %float_0 %float_0
|
|
%629 = OpCompositeConstruct %mat2v4float %630 %631
|
|
OpStore %_2_m24 %629
|
|
%632 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %634 None
|
|
OpBranchConditional %632 %633 %634
|
|
%633 = OpLabel
|
|
%635 = OpLoad %mat2v4float %_2_m24
|
|
%636 = OpCompositeConstruct %v4float %float_3 %float_0 %float_0 %float_0
|
|
%637 = OpCompositeConstruct %v4float %float_0 %float_3 %float_0 %float_0
|
|
%638 = OpCompositeConstruct %mat2v4float %636 %637
|
|
%639 = OpCompositeExtract %v4float %635 0
|
|
%640 = OpCompositeExtract %v4float %638 0
|
|
%641 = OpFOrdEqual %v4bool %639 %640
|
|
%642 = OpAll %bool %641
|
|
%643 = OpCompositeExtract %v4float %635 1
|
|
%644 = OpCompositeExtract %v4float %638 1
|
|
%645 = OpFOrdEqual %v4bool %643 %644
|
|
%646 = OpAll %bool %645
|
|
%647 = OpLogicalAnd %bool %642 %646
|
|
OpBranch %634
|
|
%634 = OpLabel
|
|
%648 = OpPhi %bool %false %613 %647 %633
|
|
OpStore %_0_ok %648
|
|
%651 = OpCompositeConstruct %v2float %float_4 %float_0
|
|
%652 = OpCompositeConstruct %v2float %float_0 %float_4
|
|
%653 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%650 = OpCompositeConstruct %mat3v2float %651 %652 %653
|
|
OpStore %_3_m32 %650
|
|
%654 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %656 None
|
|
OpBranchConditional %654 %655 %656
|
|
%655 = OpLabel
|
|
%657 = OpLoad %mat3v2float %_3_m32
|
|
%658 = OpCompositeConstruct %v2float %float_4 %float_0
|
|
%659 = OpCompositeConstruct %v2float %float_0 %float_4
|
|
%660 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%661 = OpCompositeConstruct %mat3v2float %658 %659 %660
|
|
%662 = OpCompositeExtract %v2float %657 0
|
|
%663 = OpCompositeExtract %v2float %661 0
|
|
%664 = OpFOrdEqual %v2bool %662 %663
|
|
%665 = OpAll %bool %664
|
|
%666 = OpCompositeExtract %v2float %657 1
|
|
%667 = OpCompositeExtract %v2float %661 1
|
|
%668 = OpFOrdEqual %v2bool %666 %667
|
|
%669 = OpAll %bool %668
|
|
%670 = OpLogicalAnd %bool %665 %669
|
|
%671 = OpCompositeExtract %v2float %657 2
|
|
%672 = OpCompositeExtract %v2float %661 2
|
|
%673 = OpFOrdEqual %v2bool %671 %672
|
|
%674 = OpAll %bool %673
|
|
%675 = OpLogicalAnd %bool %670 %674
|
|
OpBranch %656
|
|
%656 = OpLabel
|
|
%676 = OpPhi %bool %false %634 %675 %655
|
|
OpStore %_0_ok %676
|
|
%679 = OpCompositeConstruct %v4float %float_5 %float_0 %float_0 %float_0
|
|
%680 = OpCompositeConstruct %v4float %float_0 %float_5 %float_0 %float_0
|
|
%681 = OpCompositeConstruct %v4float %float_0 %float_0 %float_5 %float_0
|
|
%678 = OpCompositeConstruct %mat3v4float %679 %680 %681
|
|
OpStore %_4_m34 %678
|
|
%682 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %684 None
|
|
OpBranchConditional %682 %683 %684
|
|
%683 = OpLabel
|
|
%685 = OpLoad %mat3v4float %_4_m34
|
|
%686 = OpCompositeConstruct %v4float %float_5 %float_0 %float_0 %float_0
|
|
%687 = OpCompositeConstruct %v4float %float_0 %float_5 %float_0 %float_0
|
|
%688 = OpCompositeConstruct %v4float %float_0 %float_0 %float_5 %float_0
|
|
%689 = OpCompositeConstruct %mat3v4float %686 %687 %688
|
|
%690 = OpCompositeExtract %v4float %685 0
|
|
%691 = OpCompositeExtract %v4float %689 0
|
|
%692 = OpFOrdEqual %v4bool %690 %691
|
|
%693 = OpAll %bool %692
|
|
%694 = OpCompositeExtract %v4float %685 1
|
|
%695 = OpCompositeExtract %v4float %689 1
|
|
%696 = OpFOrdEqual %v4bool %694 %695
|
|
%697 = OpAll %bool %696
|
|
%698 = OpLogicalAnd %bool %693 %697
|
|
%699 = OpCompositeExtract %v4float %685 2
|
|
%700 = OpCompositeExtract %v4float %689 2
|
|
%701 = OpFOrdEqual %v4bool %699 %700
|
|
%702 = OpAll %bool %701
|
|
%703 = OpLogicalAnd %bool %698 %702
|
|
OpBranch %684
|
|
%684 = OpLabel
|
|
%704 = OpPhi %bool %false %656 %703 %683
|
|
OpStore %_0_ok %704
|
|
%707 = OpCompositeConstruct %v2float %float_6 %float_0
|
|
%708 = OpCompositeConstruct %v2float %float_0 %float_6
|
|
%709 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%710 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%706 = OpCompositeConstruct %mat4v2float %707 %708 %709 %710
|
|
OpStore %_5_m42 %706
|
|
%711 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %713 None
|
|
OpBranchConditional %711 %712 %713
|
|
%712 = OpLabel
|
|
%714 = OpLoad %mat4v2float %_5_m42
|
|
%715 = OpCompositeConstruct %v2float %float_6 %float_0
|
|
%716 = OpCompositeConstruct %v2float %float_0 %float_6
|
|
%717 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%718 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%719 = OpCompositeConstruct %mat4v2float %715 %716 %717 %718
|
|
%720 = OpCompositeExtract %v2float %714 0
|
|
%721 = OpCompositeExtract %v2float %719 0
|
|
%722 = OpFOrdEqual %v2bool %720 %721
|
|
%723 = OpAll %bool %722
|
|
%724 = OpCompositeExtract %v2float %714 1
|
|
%725 = OpCompositeExtract %v2float %719 1
|
|
%726 = OpFOrdEqual %v2bool %724 %725
|
|
%727 = OpAll %bool %726
|
|
%728 = OpLogicalAnd %bool %723 %727
|
|
%729 = OpCompositeExtract %v2float %714 2
|
|
%730 = OpCompositeExtract %v2float %719 2
|
|
%731 = OpFOrdEqual %v2bool %729 %730
|
|
%732 = OpAll %bool %731
|
|
%733 = OpLogicalAnd %bool %728 %732
|
|
%734 = OpCompositeExtract %v2float %714 3
|
|
%735 = OpCompositeExtract %v2float %719 3
|
|
%736 = OpFOrdEqual %v2bool %734 %735
|
|
%737 = OpAll %bool %736
|
|
%738 = OpLogicalAnd %bool %733 %737
|
|
OpBranch %713
|
|
%713 = OpLabel
|
|
%739 = OpPhi %bool %false %684 %738 %712
|
|
OpStore %_0_ok %739
|
|
%742 = OpCompositeConstruct %v3float %float_7 %float_0 %float_0
|
|
%743 = OpCompositeConstruct %v3float %float_0 %float_7 %float_0
|
|
%744 = OpCompositeConstruct %v3float %float_0 %float_0 %float_7
|
|
%745 = OpCompositeConstruct %v3float %float_0 %float_0 %float_0
|
|
%741 = OpCompositeConstruct %mat4v3float %742 %743 %744 %745
|
|
OpStore %_6_m43 %741
|
|
%746 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %748 None
|
|
OpBranchConditional %746 %747 %748
|
|
%747 = OpLabel
|
|
%749 = OpLoad %mat4v3float %_6_m43
|
|
%750 = OpCompositeConstruct %v3float %float_7 %float_0 %float_0
|
|
%751 = OpCompositeConstruct %v3float %float_0 %float_7 %float_0
|
|
%752 = OpCompositeConstruct %v3float %float_0 %float_0 %float_7
|
|
%753 = OpCompositeConstruct %v3float %float_0 %float_0 %float_0
|
|
%754 = OpCompositeConstruct %mat4v3float %750 %751 %752 %753
|
|
%755 = OpCompositeExtract %v3float %749 0
|
|
%756 = OpCompositeExtract %v3float %754 0
|
|
%757 = OpFOrdEqual %v3bool %755 %756
|
|
%758 = OpAll %bool %757
|
|
%759 = OpCompositeExtract %v3float %749 1
|
|
%760 = OpCompositeExtract %v3float %754 1
|
|
%761 = OpFOrdEqual %v3bool %759 %760
|
|
%762 = OpAll %bool %761
|
|
%763 = OpLogicalAnd %bool %758 %762
|
|
%764 = OpCompositeExtract %v3float %749 2
|
|
%765 = OpCompositeExtract %v3float %754 2
|
|
%766 = OpFOrdEqual %v3bool %764 %765
|
|
%767 = OpAll %bool %766
|
|
%768 = OpLogicalAnd %bool %763 %767
|
|
%769 = OpCompositeExtract %v3float %749 3
|
|
%770 = OpCompositeExtract %v3float %754 3
|
|
%771 = OpFOrdEqual %v3bool %769 %770
|
|
%772 = OpAll %bool %771
|
|
%773 = OpLogicalAnd %bool %768 %772
|
|
OpBranch %748
|
|
%748 = OpLabel
|
|
%774 = OpPhi %bool %false %713 %773 %747
|
|
OpStore %_0_ok %774
|
|
%776 = OpLoad %mat3v2float %_3_m32
|
|
%777 = OpLoad %mat2v3float %_1_m23
|
|
%778 = OpMatrixTimesMatrix %mat2v2float %776 %777
|
|
OpStore %_7_m22 %778
|
|
%779 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %781 None
|
|
OpBranchConditional %779 %780 %781
|
|
%780 = OpLabel
|
|
%782 = OpLoad %mat2v2float %_7_m22
|
|
%784 = OpCompositeConstruct %v2float %float_8 %float_0
|
|
%785 = OpCompositeConstruct %v2float %float_0 %float_8
|
|
%783 = OpCompositeConstruct %mat2v2float %784 %785
|
|
%786 = OpCompositeExtract %v2float %782 0
|
|
%787 = OpCompositeExtract %v2float %783 0
|
|
%788 = OpFOrdEqual %v2bool %786 %787
|
|
%789 = OpAll %bool %788
|
|
%790 = OpCompositeExtract %v2float %782 1
|
|
%791 = OpCompositeExtract %v2float %783 1
|
|
%792 = OpFOrdEqual %v2bool %790 %791
|
|
%793 = OpAll %bool %792
|
|
%794 = OpLogicalAnd %bool %789 %793
|
|
OpBranch %781
|
|
%781 = OpLabel
|
|
%795 = OpPhi %bool %false %748 %794 %780
|
|
OpStore %_0_ok %795
|
|
%797 = OpLoad %mat4v3float %_6_m43
|
|
%798 = OpLoad %mat3v4float %_4_m34
|
|
%799 = OpMatrixTimesMatrix %mat3v3float %797 %798
|
|
OpStore %_8_m33 %799
|
|
%800 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %802 None
|
|
OpBranchConditional %800 %801 %802
|
|
%801 = OpLabel
|
|
%803 = OpLoad %mat3v3float %_8_m33
|
|
%805 = OpCompositeConstruct %v3float %float_35 %float_0 %float_0
|
|
%806 = OpCompositeConstruct %v3float %float_0 %float_35 %float_0
|
|
%807 = OpCompositeConstruct %v3float %float_0 %float_0 %float_35
|
|
%804 = OpCompositeConstruct %mat3v3float %805 %806 %807
|
|
%808 = OpCompositeExtract %v3float %803 0
|
|
%809 = OpCompositeExtract %v3float %804 0
|
|
%810 = OpFOrdEqual %v3bool %808 %809
|
|
%811 = OpAll %bool %810
|
|
%812 = OpCompositeExtract %v3float %803 1
|
|
%813 = OpCompositeExtract %v3float %804 1
|
|
%814 = OpFOrdEqual %v3bool %812 %813
|
|
%815 = OpAll %bool %814
|
|
%816 = OpLogicalAnd %bool %811 %815
|
|
%817 = OpCompositeExtract %v3float %803 2
|
|
%818 = OpCompositeExtract %v3float %804 2
|
|
%819 = OpFOrdEqual %v3bool %817 %818
|
|
%820 = OpAll %bool %819
|
|
%821 = OpLogicalAnd %bool %816 %820
|
|
OpBranch %802
|
|
%802 = OpLabel
|
|
%822 = OpPhi %bool %false %781 %821 %801
|
|
OpStore %_0_ok %822
|
|
%823 = OpLoad %mat2v3float %_1_m23
|
|
%824 = OpCompositeConstruct %v3float %float_1 %float_1 %float_1
|
|
%825 = OpCompositeConstruct %mat2v3float %824 %824
|
|
%826 = OpCompositeExtract %v3float %823 0
|
|
%827 = OpCompositeExtract %v3float %825 0
|
|
%828 = OpFAdd %v3float %826 %827
|
|
%829 = OpCompositeExtract %v3float %823 1
|
|
%830 = OpCompositeExtract %v3float %825 1
|
|
%831 = OpFAdd %v3float %829 %830
|
|
%832 = OpCompositeConstruct %mat2v3float %828 %831
|
|
OpStore %_1_m23 %832
|
|
%833 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %835 None
|
|
OpBranchConditional %833 %834 %835
|
|
%834 = OpLabel
|
|
%836 = OpLoad %mat2v3float %_1_m23
|
|
%837 = OpCompositeConstruct %v3float %float_3 %float_1 %float_1
|
|
%838 = OpCompositeConstruct %v3float %float_1 %float_3 %float_1
|
|
%839 = OpCompositeConstruct %mat2v3float %837 %838
|
|
%840 = OpCompositeExtract %v3float %836 0
|
|
%841 = OpCompositeExtract %v3float %839 0
|
|
%842 = OpFOrdEqual %v3bool %840 %841
|
|
%843 = OpAll %bool %842
|
|
%844 = OpCompositeExtract %v3float %836 1
|
|
%845 = OpCompositeExtract %v3float %839 1
|
|
%846 = OpFOrdEqual %v3bool %844 %845
|
|
%847 = OpAll %bool %846
|
|
%848 = OpLogicalAnd %bool %843 %847
|
|
OpBranch %835
|
|
%835 = OpLabel
|
|
%849 = OpPhi %bool %false %802 %848 %834
|
|
OpStore %_0_ok %849
|
|
%850 = OpLoad %mat3v2float %_3_m32
|
|
%851 = OpCompositeConstruct %v2float %float_2 %float_2
|
|
%852 = OpCompositeConstruct %mat3v2float %851 %851 %851
|
|
%853 = OpCompositeExtract %v2float %850 0
|
|
%854 = OpCompositeExtract %v2float %852 0
|
|
%855 = OpFSub %v2float %853 %854
|
|
%856 = OpCompositeExtract %v2float %850 1
|
|
%857 = OpCompositeExtract %v2float %852 1
|
|
%858 = OpFSub %v2float %856 %857
|
|
%859 = OpCompositeExtract %v2float %850 2
|
|
%860 = OpCompositeExtract %v2float %852 2
|
|
%861 = OpFSub %v2float %859 %860
|
|
%862 = OpCompositeConstruct %mat3v2float %855 %858 %861
|
|
OpStore %_3_m32 %862
|
|
%863 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %865 None
|
|
OpBranchConditional %863 %864 %865
|
|
%864 = OpLabel
|
|
%866 = OpLoad %mat3v2float %_3_m32
|
|
%867 = OpCompositeConstruct %v2float %float_2 %float_n2
|
|
%868 = OpCompositeConstruct %v2float %float_n2 %float_2
|
|
%869 = OpCompositeConstruct %v2float %float_n2 %float_n2
|
|
%870 = OpCompositeConstruct %mat3v2float %867 %868 %869
|
|
%871 = OpCompositeExtract %v2float %866 0
|
|
%872 = OpCompositeExtract %v2float %870 0
|
|
%873 = OpFOrdEqual %v2bool %871 %872
|
|
%874 = OpAll %bool %873
|
|
%875 = OpCompositeExtract %v2float %866 1
|
|
%876 = OpCompositeExtract %v2float %870 1
|
|
%877 = OpFOrdEqual %v2bool %875 %876
|
|
%878 = OpAll %bool %877
|
|
%879 = OpLogicalAnd %bool %874 %878
|
|
%880 = OpCompositeExtract %v2float %866 2
|
|
%881 = OpCompositeExtract %v2float %870 2
|
|
%882 = OpFOrdEqual %v2bool %880 %881
|
|
%883 = OpAll %bool %882
|
|
%884 = OpLogicalAnd %bool %879 %883
|
|
OpBranch %865
|
|
%865 = OpLabel
|
|
%885 = OpPhi %bool %false %835 %884 %864
|
|
OpStore %_0_ok %885
|
|
%886 = OpLoad %mat2v4float %_2_m24
|
|
%887 = OpCompositeConstruct %v4float %float_4 %float_4 %float_4 %float_4
|
|
%888 = OpCompositeConstruct %mat2v4float %887 %887
|
|
%889 = OpCompositeExtract %v4float %886 0
|
|
%890 = OpCompositeExtract %v4float %888 0
|
|
%891 = OpFDiv %v4float %889 %890
|
|
%892 = OpCompositeExtract %v4float %886 1
|
|
%893 = OpCompositeExtract %v4float %888 1
|
|
%894 = OpFDiv %v4float %892 %893
|
|
%895 = OpCompositeConstruct %mat2v4float %891 %894
|
|
OpStore %_2_m24 %895
|
|
%896 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %898 None
|
|
OpBranchConditional %896 %897 %898
|
|
%897 = OpLabel
|
|
%899 = OpLoad %mat2v4float %_2_m24
|
|
%900 = OpCompositeConstruct %v4float %float_0_75 %float_0 %float_0 %float_0
|
|
%901 = OpCompositeConstruct %v4float %float_0 %float_0_75 %float_0 %float_0
|
|
%902 = OpCompositeConstruct %mat2v4float %900 %901
|
|
%903 = OpCompositeExtract %v4float %899 0
|
|
%904 = OpCompositeExtract %v4float %902 0
|
|
%905 = OpFOrdEqual %v4bool %903 %904
|
|
%906 = OpAll %bool %905
|
|
%907 = OpCompositeExtract %v4float %899 1
|
|
%908 = OpCompositeExtract %v4float %902 1
|
|
%909 = OpFOrdEqual %v4bool %907 %908
|
|
%910 = OpAll %bool %909
|
|
%911 = OpLogicalAnd %bool %906 %910
|
|
OpBranch %898
|
|
%898 = OpLabel
|
|
%912 = OpPhi %bool %false %865 %911 %897
|
|
OpStore %_0_ok %912
|
|
%914 = OpAccessChain %_ptr_Uniform_mat2v2float %11 %int_2
|
|
%915 = OpLoad %mat2v2float %914
|
|
%916 = OpCompositeExtract %float %915 0 0
|
|
%917 = OpCompositeExtract %float %915 0 1
|
|
%918 = OpCompositeExtract %float %915 1 0
|
|
%919 = OpCompositeExtract %float %915 1 1
|
|
%920 = OpCompositeConstruct %v4float %916 %917 %918 %919
|
|
OpStore %_10_f4 %920
|
|
%921 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %923 None
|
|
OpBranchConditional %921 %922 %923
|
|
%922 = OpLabel
|
|
%924 = OpLoad %v4float %_10_f4
|
|
%925 = OpVectorShuffle %v3float %924 %924 0 1 2
|
|
%926 = OpLoad %v4float %_10_f4
|
|
%927 = OpCompositeExtract %float %926 3
|
|
%928 = OpLoad %v4float %_10_f4
|
|
%929 = OpVectorShuffle %v2float %928 %928 0 1
|
|
%930 = OpCompositeExtract %float %929 0
|
|
%931 = OpCompositeExtract %float %929 1
|
|
%932 = OpCompositeConstruct %v3float %927 %930 %931
|
|
%933 = OpCompositeConstruct %mat2v3float %925 %932
|
|
%934 = OpCompositeConstruct %v3float %float_1 %float_2 %float_3
|
|
%935 = OpCompositeConstruct %v3float %float_4 %float_1 %float_2
|
|
%936 = OpCompositeConstruct %mat2v3float %934 %935
|
|
%937 = OpCompositeExtract %v3float %933 0
|
|
%938 = OpCompositeExtract %v3float %936 0
|
|
%939 = OpFOrdEqual %v3bool %937 %938
|
|
%940 = OpAll %bool %939
|
|
%941 = OpCompositeExtract %v3float %933 1
|
|
%942 = OpCompositeExtract %v3float %936 1
|
|
%943 = OpFOrdEqual %v3bool %941 %942
|
|
%944 = OpAll %bool %943
|
|
%945 = OpLogicalAnd %bool %940 %944
|
|
OpBranch %923
|
|
%923 = OpLabel
|
|
%946 = OpPhi %bool %false %898 %945 %922
|
|
OpStore %_0_ok %946
|
|
%947 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %949 None
|
|
OpBranchConditional %947 %948 %949
|
|
%948 = OpLabel
|
|
%950 = OpLoad %v4float %_10_f4
|
|
%951 = OpVectorShuffle %v3float %950 %950 0 1 2
|
|
%952 = OpLoad %v4float %_10_f4
|
|
%953 = OpCompositeExtract %float %952 3
|
|
%954 = OpLoad %v4float %_10_f4
|
|
%955 = OpCompositeExtract %float %954 0
|
|
%956 = OpLoad %v4float %_10_f4
|
|
%957 = OpVectorShuffle %v3float %956 %956 1 2 3
|
|
%958 = OpCompositeExtract %float %951 0
|
|
%959 = OpCompositeExtract %float %951 1
|
|
%960 = OpCompositeExtract %float %951 2
|
|
%961 = OpCompositeConstruct %v4float %958 %959 %960 %953
|
|
%962 = OpCompositeExtract %float %957 0
|
|
%963 = OpCompositeExtract %float %957 1
|
|
%964 = OpCompositeExtract %float %957 2
|
|
%965 = OpCompositeConstruct %v4float %955 %962 %963 %964
|
|
%966 = OpCompositeConstruct %mat2v4float %961 %965
|
|
%967 = OpCompositeConstruct %v4float %float_1 %float_2 %float_3 %float_4
|
|
%968 = OpCompositeConstruct %v4float %float_1 %float_2 %float_3 %float_4
|
|
%969 = OpCompositeConstruct %mat2v4float %967 %968
|
|
%970 = OpCompositeExtract %v4float %966 0
|
|
%971 = OpCompositeExtract %v4float %969 0
|
|
%972 = OpFOrdEqual %v4bool %970 %971
|
|
%973 = OpAll %bool %972
|
|
%974 = OpCompositeExtract %v4float %966 1
|
|
%975 = OpCompositeExtract %v4float %969 1
|
|
%976 = OpFOrdEqual %v4bool %974 %975
|
|
%977 = OpAll %bool %976
|
|
%978 = OpLogicalAnd %bool %973 %977
|
|
OpBranch %949
|
|
%949 = OpLabel
|
|
%979 = OpPhi %bool %false %923 %978 %948
|
|
OpStore %_0_ok %979
|
|
%980 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %982 None
|
|
OpBranchConditional %980 %981 %982
|
|
%981 = OpLabel
|
|
%983 = OpLoad %v4float %_10_f4
|
|
%984 = OpVectorShuffle %v2float %983 %983 0 1
|
|
%985 = OpLoad %v4float %_10_f4
|
|
%986 = OpVectorShuffle %v2float %985 %985 2 3
|
|
%987 = OpLoad %v4float %_10_f4
|
|
%988 = OpCompositeExtract %float %987 0
|
|
%989 = OpLoad %v4float %_10_f4
|
|
%990 = OpCompositeExtract %float %989 1
|
|
%991 = OpCompositeConstruct %v2float %988 %990
|
|
%992 = OpCompositeConstruct %mat3v2float %984 %986 %991
|
|
%993 = OpCompositeConstruct %v2float %float_1 %float_2
|
|
%994 = OpCompositeConstruct %v2float %float_3 %float_4
|
|
%995 = OpCompositeConstruct %v2float %float_1 %float_2
|
|
%996 = OpCompositeConstruct %mat3v2float %993 %994 %995
|
|
%997 = OpCompositeExtract %v2float %992 0
|
|
%998 = OpCompositeExtract %v2float %996 0
|
|
%999 = OpFOrdEqual %v2bool %997 %998
|
|
%1000 = OpAll %bool %999
|
|
%1001 = OpCompositeExtract %v2float %992 1
|
|
%1002 = OpCompositeExtract %v2float %996 1
|
|
%1003 = OpFOrdEqual %v2bool %1001 %1002
|
|
%1004 = OpAll %bool %1003
|
|
%1005 = OpLogicalAnd %bool %1000 %1004
|
|
%1006 = OpCompositeExtract %v2float %992 2
|
|
%1007 = OpCompositeExtract %v2float %996 2
|
|
%1008 = OpFOrdEqual %v2bool %1006 %1007
|
|
%1009 = OpAll %bool %1008
|
|
%1010 = OpLogicalAnd %bool %1005 %1009
|
|
OpBranch %982
|
|
%982 = OpLabel
|
|
%1011 = OpPhi %bool %false %949 %1010 %981
|
|
OpStore %_0_ok %1011
|
|
%1012 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %1014 None
|
|
OpBranchConditional %1012 %1013 %1014
|
|
%1013 = OpLabel
|
|
%1015 = OpLoad %v4float %_10_f4
|
|
%1016 = OpVectorShuffle %v2float %1015 %1015 0 1
|
|
%1017 = OpLoad %v4float %_10_f4
|
|
%1018 = OpVectorShuffle %v2float %1017 %1017 2 3
|
|
%1019 = OpLoad %v4float %_10_f4
|
|
%1020 = OpLoad %v4float %_10_f4
|
|
%1021 = OpCompositeExtract %float %1020 0
|
|
%1022 = OpLoad %v4float %_10_f4
|
|
%1023 = OpVectorShuffle %v2float %1022 %1022 1 2
|
|
%1024 = OpLoad %v4float %_10_f4
|
|
%1025 = OpCompositeExtract %float %1024 3
|
|
%1026 = OpCompositeExtract %float %1016 0
|
|
%1027 = OpCompositeExtract %float %1016 1
|
|
%1028 = OpCompositeExtract %float %1018 0
|
|
%1029 = OpCompositeExtract %float %1018 1
|
|
%1030 = OpCompositeConstruct %v4float %1026 %1027 %1028 %1029
|
|
%1031 = OpCompositeExtract %float %1023 0
|
|
%1032 = OpCompositeExtract %float %1023 1
|
|
%1033 = OpCompositeConstruct %v4float %1021 %1031 %1032 %1025
|
|
%1034 = OpCompositeConstruct %mat3v4float %1030 %1019 %1033
|
|
%1035 = OpCompositeConstruct %v4float %float_1 %float_2 %float_3 %float_4
|
|
%1036 = OpCompositeConstruct %v4float %float_1 %float_2 %float_3 %float_4
|
|
%1037 = OpCompositeConstruct %v4float %float_1 %float_2 %float_3 %float_4
|
|
%1038 = OpCompositeConstruct %mat3v4float %1035 %1036 %1037
|
|
%1039 = OpCompositeExtract %v4float %1034 0
|
|
%1040 = OpCompositeExtract %v4float %1038 0
|
|
%1041 = OpFOrdEqual %v4bool %1039 %1040
|
|
%1042 = OpAll %bool %1041
|
|
%1043 = OpCompositeExtract %v4float %1034 1
|
|
%1044 = OpCompositeExtract %v4float %1038 1
|
|
%1045 = OpFOrdEqual %v4bool %1043 %1044
|
|
%1046 = OpAll %bool %1045
|
|
%1047 = OpLogicalAnd %bool %1042 %1046
|
|
%1048 = OpCompositeExtract %v4float %1034 2
|
|
%1049 = OpCompositeExtract %v4float %1038 2
|
|
%1050 = OpFOrdEqual %v4bool %1048 %1049
|
|
%1051 = OpAll %bool %1050
|
|
%1052 = OpLogicalAnd %bool %1047 %1051
|
|
OpBranch %1014
|
|
%1014 = OpLabel
|
|
%1053 = OpPhi %bool %false %982 %1052 %1013
|
|
OpStore %_0_ok %1053
|
|
%1054 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %1056 None
|
|
OpBranchConditional %1054 %1055 %1056
|
|
%1055 = OpLabel
|
|
%1057 = OpLoad %v4float %_10_f4
|
|
%1058 = OpVectorShuffle %v2float %1057 %1057 0 1
|
|
%1059 = OpLoad %v4float %_10_f4
|
|
%1060 = OpCompositeExtract %float %1059 2
|
|
%1061 = OpLoad %v4float %_10_f4
|
|
%1062 = OpCompositeExtract %float %1061 3
|
|
%1063 = OpLoad %v4float %_10_f4
|
|
%1064 = OpVectorShuffle %v2float %1063 %1063 0 1
|
|
%1065 = OpLoad %v4float %_10_f4
|
|
%1066 = OpCompositeExtract %float %1065 2
|
|
%1067 = OpLoad %v4float %_10_f4
|
|
%1068 = OpCompositeExtract %float %1067 3
|
|
%1069 = OpCompositeConstruct %v2float %1060 %1062
|
|
%1070 = OpCompositeConstruct %v2float %1066 %1068
|
|
%1071 = OpCompositeConstruct %mat4v2float %1058 %1069 %1064 %1070
|
|
%1072 = OpCompositeConstruct %v2float %float_1 %float_2
|
|
%1073 = OpCompositeConstruct %v2float %float_3 %float_4
|
|
%1074 = OpCompositeConstruct %v2float %float_1 %float_2
|
|
%1075 = OpCompositeConstruct %v2float %float_3 %float_4
|
|
%1076 = OpCompositeConstruct %mat4v2float %1072 %1073 %1074 %1075
|
|
%1077 = OpCompositeExtract %v2float %1071 0
|
|
%1078 = OpCompositeExtract %v2float %1076 0
|
|
%1079 = OpFOrdEqual %v2bool %1077 %1078
|
|
%1080 = OpAll %bool %1079
|
|
%1081 = OpCompositeExtract %v2float %1071 1
|
|
%1082 = OpCompositeExtract %v2float %1076 1
|
|
%1083 = OpFOrdEqual %v2bool %1081 %1082
|
|
%1084 = OpAll %bool %1083
|
|
%1085 = OpLogicalAnd %bool %1080 %1084
|
|
%1086 = OpCompositeExtract %v2float %1071 2
|
|
%1087 = OpCompositeExtract %v2float %1076 2
|
|
%1088 = OpFOrdEqual %v2bool %1086 %1087
|
|
%1089 = OpAll %bool %1088
|
|
%1090 = OpLogicalAnd %bool %1085 %1089
|
|
%1091 = OpCompositeExtract %v2float %1071 3
|
|
%1092 = OpCompositeExtract %v2float %1076 3
|
|
%1093 = OpFOrdEqual %v2bool %1091 %1092
|
|
%1094 = OpAll %bool %1093
|
|
%1095 = OpLogicalAnd %bool %1090 %1094
|
|
OpBranch %1056
|
|
%1056 = OpLabel
|
|
%1096 = OpPhi %bool %false %1014 %1095 %1055
|
|
OpStore %_0_ok %1096
|
|
%1097 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %1099 None
|
|
OpBranchConditional %1097 %1098 %1099
|
|
%1098 = OpLabel
|
|
%1100 = OpLoad %v4float %_10_f4
|
|
%1101 = OpCompositeExtract %float %1100 0
|
|
%1102 = OpLoad %v4float %_10_f4
|
|
%1103 = OpVectorShuffle %v2float %1102 %1102 1 2
|
|
%1104 = OpLoad %v4float %_10_f4
|
|
%1105 = OpVectorShuffle %v2float %1104 %1104 3 0
|
|
%1106 = OpLoad %v4float %_10_f4
|
|
%1107 = OpCompositeExtract %float %1106 1
|
|
%1108 = OpLoad %v4float %_10_f4
|
|
%1109 = OpVectorShuffle %v3float %1108 %1108 2 3 0
|
|
%1110 = OpLoad %v4float %_10_f4
|
|
%1111 = OpVectorShuffle %v3float %1110 %1110 1 2 3
|
|
%1112 = OpCompositeExtract %float %1103 0
|
|
%1113 = OpCompositeExtract %float %1103 1
|
|
%1114 = OpCompositeConstruct %v3float %1101 %1112 %1113
|
|
%1115 = OpCompositeExtract %float %1105 0
|
|
%1116 = OpCompositeExtract %float %1105 1
|
|
%1117 = OpCompositeConstruct %v3float %1115 %1116 %1107
|
|
%1118 = OpCompositeConstruct %mat4v3float %1114 %1117 %1109 %1111
|
|
%1119 = OpCompositeConstruct %v3float %float_1 %float_2 %float_3
|
|
%1120 = OpCompositeConstruct %v3float %float_4 %float_1 %float_2
|
|
%1121 = OpCompositeConstruct %v3float %float_3 %float_4 %float_1
|
|
%1122 = OpCompositeConstruct %v3float %float_2 %float_3 %float_4
|
|
%1123 = OpCompositeConstruct %mat4v3float %1119 %1120 %1121 %1122
|
|
%1124 = OpCompositeExtract %v3float %1118 0
|
|
%1125 = OpCompositeExtract %v3float %1123 0
|
|
%1126 = OpFOrdEqual %v3bool %1124 %1125
|
|
%1127 = OpAll %bool %1126
|
|
%1128 = OpCompositeExtract %v3float %1118 1
|
|
%1129 = OpCompositeExtract %v3float %1123 1
|
|
%1130 = OpFOrdEqual %v3bool %1128 %1129
|
|
%1131 = OpAll %bool %1130
|
|
%1132 = OpLogicalAnd %bool %1127 %1131
|
|
%1133 = OpCompositeExtract %v3float %1118 2
|
|
%1134 = OpCompositeExtract %v3float %1123 2
|
|
%1135 = OpFOrdEqual %v3bool %1133 %1134
|
|
%1136 = OpAll %bool %1135
|
|
%1137 = OpLogicalAnd %bool %1132 %1136
|
|
%1138 = OpCompositeExtract %v3float %1118 3
|
|
%1139 = OpCompositeExtract %v3float %1123 3
|
|
%1140 = OpFOrdEqual %v3bool %1138 %1139
|
|
%1141 = OpAll %bool %1140
|
|
%1142 = OpLogicalAnd %bool %1137 %1141
|
|
OpBranch %1099
|
|
%1099 = OpLabel
|
|
%1143 = OpPhi %bool %false %1056 %1142 %1098
|
|
OpStore %_0_ok %1143
|
|
%1144 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %1146 None
|
|
OpBranchConditional %1144 %1145 %1146
|
|
%1145 = OpLabel
|
|
%1147 = OpFunctionCall %bool %test_half_b
|
|
OpBranch %1146
|
|
%1146 = OpLabel
|
|
%1148 = OpPhi %bool %false %1099 %1147 %1145
|
|
OpSelectionMerge %1152 None
|
|
OpBranchConditional %1148 %1150 %1151
|
|
%1150 = OpLabel
|
|
%1153 = OpAccessChain %_ptr_Uniform_v4float %11 %int_0
|
|
%1156 = OpLoad %v4float %1153
|
|
OpStore %1149 %1156
|
|
OpBranch %1152
|
|
%1151 = OpLabel
|
|
%1157 = OpAccessChain %_ptr_Uniform_v4float %11 %int_1
|
|
%1159 = OpLoad %v4float %1157
|
|
OpStore %1149 %1159
|
|
OpBranch %1152
|
|
%1152 = OpLabel
|
|
%1160 = OpLoad %v4float %1149
|
|
OpReturnValue %1160
|
|
OpFunctionEnd
|