21fe518fbb
This reverts commit eb68973c2f
.
Reason for revert: ES2 conformance test checks this
Original change's description:
> Disallow matrix ctors which overflow a column.
>
> 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>
Bug: skia:12443
Change-Id: I5a32744c88b9b830ad657488824c8c7dd0b0a652
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/458056
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
1017 lines
36 KiB
JavaScript
1017 lines
36 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"
|
|
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 %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"
|
|
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
|
|
OpDecorate %_UniformBuffer Block
|
|
OpDecorate %11 Binding 0
|
|
OpDecorate %11 DescriptorSet 0
|
|
OpDecorate %m23 RelaxedPrecision
|
|
OpDecorate %34 RelaxedPrecision
|
|
OpDecorate %35 RelaxedPrecision
|
|
OpDecorate %36 RelaxedPrecision
|
|
OpDecorate %38 RelaxedPrecision
|
|
OpDecorate %41 RelaxedPrecision
|
|
OpDecorate %42 RelaxedPrecision
|
|
OpDecorate %43 RelaxedPrecision
|
|
OpDecorate %44 RelaxedPrecision
|
|
OpDecorate %m24 RelaxedPrecision
|
|
OpDecorate %60 RelaxedPrecision
|
|
OpDecorate %61 RelaxedPrecision
|
|
OpDecorate %62 RelaxedPrecision
|
|
OpDecorate %63 RelaxedPrecision
|
|
OpDecorate %66 RelaxedPrecision
|
|
OpDecorate %67 RelaxedPrecision
|
|
OpDecorate %68 RelaxedPrecision
|
|
OpDecorate %69 RelaxedPrecision
|
|
OpDecorate %m32 RelaxedPrecision
|
|
OpDecorate %85 RelaxedPrecision
|
|
OpDecorate %86 RelaxedPrecision
|
|
OpDecorate %87 RelaxedPrecision
|
|
OpDecorate %88 RelaxedPrecision
|
|
OpDecorate %89 RelaxedPrecision
|
|
OpDecorate %92 RelaxedPrecision
|
|
OpDecorate %93 RelaxedPrecision
|
|
OpDecorate %94 RelaxedPrecision
|
|
OpDecorate %95 RelaxedPrecision
|
|
OpDecorate %96 RelaxedPrecision
|
|
OpDecorate %m34 RelaxedPrecision
|
|
OpDecorate %117 RelaxedPrecision
|
|
OpDecorate %118 RelaxedPrecision
|
|
OpDecorate %119 RelaxedPrecision
|
|
OpDecorate %120 RelaxedPrecision
|
|
OpDecorate %121 RelaxedPrecision
|
|
OpDecorate %124 RelaxedPrecision
|
|
OpDecorate %125 RelaxedPrecision
|
|
OpDecorate %126 RelaxedPrecision
|
|
OpDecorate %127 RelaxedPrecision
|
|
OpDecorate %128 RelaxedPrecision
|
|
OpDecorate %m42 RelaxedPrecision
|
|
OpDecorate %148 RelaxedPrecision
|
|
OpDecorate %149 RelaxedPrecision
|
|
OpDecorate %150 RelaxedPrecision
|
|
OpDecorate %151 RelaxedPrecision
|
|
OpDecorate %152 RelaxedPrecision
|
|
OpDecorate %153 RelaxedPrecision
|
|
OpDecorate %156 RelaxedPrecision
|
|
OpDecorate %157 RelaxedPrecision
|
|
OpDecorate %158 RelaxedPrecision
|
|
OpDecorate %159 RelaxedPrecision
|
|
OpDecorate %160 RelaxedPrecision
|
|
OpDecorate %161 RelaxedPrecision
|
|
OpDecorate %m43 RelaxedPrecision
|
|
OpDecorate %186 RelaxedPrecision
|
|
OpDecorate %187 RelaxedPrecision
|
|
OpDecorate %188 RelaxedPrecision
|
|
OpDecorate %189 RelaxedPrecision
|
|
OpDecorate %190 RelaxedPrecision
|
|
OpDecorate %191 RelaxedPrecision
|
|
OpDecorate %194 RelaxedPrecision
|
|
OpDecorate %195 RelaxedPrecision
|
|
OpDecorate %196 RelaxedPrecision
|
|
OpDecorate %197 RelaxedPrecision
|
|
OpDecorate %198 RelaxedPrecision
|
|
OpDecorate %199 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 %367 RelaxedPrecision
|
|
OpDecorate %376 RelaxedPrecision
|
|
OpDecorate %397 RelaxedPrecision
|
|
OpDecorate %419 RelaxedPrecision
|
|
OpDecorate %447 RelaxedPrecision
|
|
OpDecorate %476 RelaxedPrecision
|
|
OpDecorate %511 RelaxedPrecision
|
|
OpDecorate %544 RelaxedPrecision
|
|
OpDecorate %565 RelaxedPrecision
|
|
OpDecorate %598 RelaxedPrecision
|
|
OpDecorate %628 RelaxedPrecision
|
|
OpDecorate %661 RelaxedPrecision
|
|
OpDecorate %678 RelaxedPrecision
|
|
OpDecorate %692 RelaxedPrecision
|
|
OpDecorate %695 RelaxedPrecision
|
|
OpDecorate %696 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
|
|
%_UniformBuffer = OpTypeStruct %v4float %v4float
|
|
%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
|
|
%11 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
|
|
%void = OpTypeVoid
|
|
%16 = OpTypeFunction %void
|
|
%v2float = OpTypeVector %float 2
|
|
%float_0 = OpConstant %float 0
|
|
%20 = OpConstantComposite %v2float %float_0 %float_0
|
|
%_ptr_Function_v2float = OpTypePointer Function %v2float
|
|
%24 = 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
|
|
%mat2v2float = OpTypeMatrix %v2float 2
|
|
%_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
|
|
%368 = OpTypeFunction %v4float %_ptr_Function_v2float
|
|
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
|
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
|
|
%int = OpTypeInt 32 1
|
|
%int_0 = OpConstant %int 0
|
|
%int_1 = OpConstant %int 1
|
|
%_entrypoint_v = OpFunction %void None %16
|
|
%17 = OpLabel
|
|
%21 = OpVariable %_ptr_Function_v2float Function
|
|
OpStore %21 %20
|
|
%23 = OpFunctionCall %v4float %main %21
|
|
OpStore %sk_FragColor %23
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%test_half_b = OpFunction %bool None %24
|
|
%25 = 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
|
|
OpStore %ok %true
|
|
%35 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
|
%36 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
|
%34 = OpCompositeConstruct %mat2v3float %35 %36
|
|
OpStore %m23 %34
|
|
%38 = OpLoad %bool %ok
|
|
OpSelectionMerge %40 None
|
|
OpBranchConditional %38 %39 %40
|
|
%39 = OpLabel
|
|
%41 = OpLoad %mat2v3float %m23
|
|
%42 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
|
%43 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
|
%44 = OpCompositeConstruct %mat2v3float %42 %43
|
|
%46 = OpCompositeExtract %v3float %41 0
|
|
%47 = OpCompositeExtract %v3float %44 0
|
|
%48 = OpFOrdEqual %v3bool %46 %47
|
|
%49 = OpAll %bool %48
|
|
%50 = OpCompositeExtract %v3float %41 1
|
|
%51 = OpCompositeExtract %v3float %44 1
|
|
%52 = OpFOrdEqual %v3bool %50 %51
|
|
%53 = OpAll %bool %52
|
|
%54 = OpLogicalAnd %bool %49 %53
|
|
OpBranch %40
|
|
%40 = OpLabel
|
|
%55 = OpPhi %bool %false %25 %54 %39
|
|
OpStore %ok %55
|
|
%61 = OpCompositeConstruct %v4float %float_3 %float_0 %float_0 %float_0
|
|
%62 = OpCompositeConstruct %v4float %float_0 %float_3 %float_0 %float_0
|
|
%60 = OpCompositeConstruct %mat2v4float %61 %62
|
|
OpStore %m24 %60
|
|
%63 = OpLoad %bool %ok
|
|
OpSelectionMerge %65 None
|
|
OpBranchConditional %63 %64 %65
|
|
%64 = OpLabel
|
|
%66 = OpLoad %mat2v4float %m24
|
|
%67 = OpCompositeConstruct %v4float %float_3 %float_0 %float_0 %float_0
|
|
%68 = OpCompositeConstruct %v4float %float_0 %float_3 %float_0 %float_0
|
|
%69 = OpCompositeConstruct %mat2v4float %67 %68
|
|
%71 = OpCompositeExtract %v4float %66 0
|
|
%72 = OpCompositeExtract %v4float %69 0
|
|
%73 = OpFOrdEqual %v4bool %71 %72
|
|
%74 = OpAll %bool %73
|
|
%75 = OpCompositeExtract %v4float %66 1
|
|
%76 = OpCompositeExtract %v4float %69 1
|
|
%77 = OpFOrdEqual %v4bool %75 %76
|
|
%78 = OpAll %bool %77
|
|
%79 = OpLogicalAnd %bool %74 %78
|
|
OpBranch %65
|
|
%65 = OpLabel
|
|
%80 = OpPhi %bool %false %40 %79 %64
|
|
OpStore %ok %80
|
|
%86 = OpCompositeConstruct %v2float %float_4 %float_0
|
|
%87 = OpCompositeConstruct %v2float %float_0 %float_4
|
|
%88 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%85 = OpCompositeConstruct %mat3v2float %86 %87 %88
|
|
OpStore %m32 %85
|
|
%89 = OpLoad %bool %ok
|
|
OpSelectionMerge %91 None
|
|
OpBranchConditional %89 %90 %91
|
|
%90 = OpLabel
|
|
%92 = OpLoad %mat3v2float %m32
|
|
%93 = OpCompositeConstruct %v2float %float_4 %float_0
|
|
%94 = OpCompositeConstruct %v2float %float_0 %float_4
|
|
%95 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%96 = OpCompositeConstruct %mat3v2float %93 %94 %95
|
|
%98 = OpCompositeExtract %v2float %92 0
|
|
%99 = OpCompositeExtract %v2float %96 0
|
|
%100 = OpFOrdEqual %v2bool %98 %99
|
|
%101 = OpAll %bool %100
|
|
%102 = OpCompositeExtract %v2float %92 1
|
|
%103 = OpCompositeExtract %v2float %96 1
|
|
%104 = OpFOrdEqual %v2bool %102 %103
|
|
%105 = OpAll %bool %104
|
|
%106 = OpLogicalAnd %bool %101 %105
|
|
%107 = OpCompositeExtract %v2float %92 2
|
|
%108 = OpCompositeExtract %v2float %96 2
|
|
%109 = OpFOrdEqual %v2bool %107 %108
|
|
%110 = OpAll %bool %109
|
|
%111 = OpLogicalAnd %bool %106 %110
|
|
OpBranch %91
|
|
%91 = OpLabel
|
|
%112 = OpPhi %bool %false %65 %111 %90
|
|
OpStore %ok %112
|
|
%118 = OpCompositeConstruct %v4float %float_5 %float_0 %float_0 %float_0
|
|
%119 = OpCompositeConstruct %v4float %float_0 %float_5 %float_0 %float_0
|
|
%120 = OpCompositeConstruct %v4float %float_0 %float_0 %float_5 %float_0
|
|
%117 = OpCompositeConstruct %mat3v4float %118 %119 %120
|
|
OpStore %m34 %117
|
|
%121 = OpLoad %bool %ok
|
|
OpSelectionMerge %123 None
|
|
OpBranchConditional %121 %122 %123
|
|
%122 = OpLabel
|
|
%124 = OpLoad %mat3v4float %m34
|
|
%125 = OpCompositeConstruct %v4float %float_5 %float_0 %float_0 %float_0
|
|
%126 = OpCompositeConstruct %v4float %float_0 %float_5 %float_0 %float_0
|
|
%127 = OpCompositeConstruct %v4float %float_0 %float_0 %float_5 %float_0
|
|
%128 = OpCompositeConstruct %mat3v4float %125 %126 %127
|
|
%129 = OpCompositeExtract %v4float %124 0
|
|
%130 = OpCompositeExtract %v4float %128 0
|
|
%131 = OpFOrdEqual %v4bool %129 %130
|
|
%132 = OpAll %bool %131
|
|
%133 = OpCompositeExtract %v4float %124 1
|
|
%134 = OpCompositeExtract %v4float %128 1
|
|
%135 = OpFOrdEqual %v4bool %133 %134
|
|
%136 = OpAll %bool %135
|
|
%137 = OpLogicalAnd %bool %132 %136
|
|
%138 = OpCompositeExtract %v4float %124 2
|
|
%139 = OpCompositeExtract %v4float %128 2
|
|
%140 = OpFOrdEqual %v4bool %138 %139
|
|
%141 = OpAll %bool %140
|
|
%142 = OpLogicalAnd %bool %137 %141
|
|
OpBranch %123
|
|
%123 = OpLabel
|
|
%143 = OpPhi %bool %false %91 %142 %122
|
|
OpStore %ok %143
|
|
%149 = OpCompositeConstruct %v2float %float_6 %float_0
|
|
%150 = OpCompositeConstruct %v2float %float_0 %float_6
|
|
%151 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%152 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%148 = OpCompositeConstruct %mat4v2float %149 %150 %151 %152
|
|
OpStore %m42 %148
|
|
%153 = OpLoad %bool %ok
|
|
OpSelectionMerge %155 None
|
|
OpBranchConditional %153 %154 %155
|
|
%154 = OpLabel
|
|
%156 = OpLoad %mat4v2float %m42
|
|
%157 = OpCompositeConstruct %v2float %float_6 %float_0
|
|
%158 = OpCompositeConstruct %v2float %float_0 %float_6
|
|
%159 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%160 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%161 = OpCompositeConstruct %mat4v2float %157 %158 %159 %160
|
|
%162 = OpCompositeExtract %v2float %156 0
|
|
%163 = OpCompositeExtract %v2float %161 0
|
|
%164 = OpFOrdEqual %v2bool %162 %163
|
|
%165 = OpAll %bool %164
|
|
%166 = OpCompositeExtract %v2float %156 1
|
|
%167 = OpCompositeExtract %v2float %161 1
|
|
%168 = OpFOrdEqual %v2bool %166 %167
|
|
%169 = OpAll %bool %168
|
|
%170 = OpLogicalAnd %bool %165 %169
|
|
%171 = OpCompositeExtract %v2float %156 2
|
|
%172 = OpCompositeExtract %v2float %161 2
|
|
%173 = OpFOrdEqual %v2bool %171 %172
|
|
%174 = OpAll %bool %173
|
|
%175 = OpLogicalAnd %bool %170 %174
|
|
%176 = OpCompositeExtract %v2float %156 3
|
|
%177 = OpCompositeExtract %v2float %161 3
|
|
%178 = OpFOrdEqual %v2bool %176 %177
|
|
%179 = OpAll %bool %178
|
|
%180 = OpLogicalAnd %bool %175 %179
|
|
OpBranch %155
|
|
%155 = OpLabel
|
|
%181 = OpPhi %bool %false %123 %180 %154
|
|
OpStore %ok %181
|
|
%187 = OpCompositeConstruct %v3float %float_7 %float_0 %float_0
|
|
%188 = OpCompositeConstruct %v3float %float_0 %float_7 %float_0
|
|
%189 = OpCompositeConstruct %v3float %float_0 %float_0 %float_7
|
|
%190 = OpCompositeConstruct %v3float %float_0 %float_0 %float_0
|
|
%186 = OpCompositeConstruct %mat4v3float %187 %188 %189 %190
|
|
OpStore %m43 %186
|
|
%191 = OpLoad %bool %ok
|
|
OpSelectionMerge %193 None
|
|
OpBranchConditional %191 %192 %193
|
|
%192 = OpLabel
|
|
%194 = OpLoad %mat4v3float %m43
|
|
%195 = OpCompositeConstruct %v3float %float_7 %float_0 %float_0
|
|
%196 = OpCompositeConstruct %v3float %float_0 %float_7 %float_0
|
|
%197 = OpCompositeConstruct %v3float %float_0 %float_0 %float_7
|
|
%198 = OpCompositeConstruct %v3float %float_0 %float_0 %float_0
|
|
%199 = OpCompositeConstruct %mat4v3float %195 %196 %197 %198
|
|
%200 = OpCompositeExtract %v3float %194 0
|
|
%201 = OpCompositeExtract %v3float %199 0
|
|
%202 = OpFOrdEqual %v3bool %200 %201
|
|
%203 = OpAll %bool %202
|
|
%204 = OpCompositeExtract %v3float %194 1
|
|
%205 = OpCompositeExtract %v3float %199 1
|
|
%206 = OpFOrdEqual %v3bool %204 %205
|
|
%207 = OpAll %bool %206
|
|
%208 = OpLogicalAnd %bool %203 %207
|
|
%209 = OpCompositeExtract %v3float %194 2
|
|
%210 = OpCompositeExtract %v3float %199 2
|
|
%211 = OpFOrdEqual %v3bool %209 %210
|
|
%212 = OpAll %bool %211
|
|
%213 = OpLogicalAnd %bool %208 %212
|
|
%214 = OpCompositeExtract %v3float %194 3
|
|
%215 = OpCompositeExtract %v3float %199 3
|
|
%216 = OpFOrdEqual %v3bool %214 %215
|
|
%217 = OpAll %bool %216
|
|
%218 = OpLogicalAnd %bool %213 %217
|
|
OpBranch %193
|
|
%193 = OpLabel
|
|
%219 = OpPhi %bool %false %155 %218 %192
|
|
OpStore %ok %219
|
|
%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 %193 %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
|
|
%367 = OpLoad %bool %ok
|
|
OpReturnValue %367
|
|
OpFunctionEnd
|
|
%main = OpFunction %v4float None %368
|
|
%369 = OpFunctionParameter %_ptr_Function_v2float
|
|
%370 = 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
|
|
%683 = OpVariable %_ptr_Function_v4float Function
|
|
OpStore %_0_ok %true
|
|
%374 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
|
%375 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
|
%373 = OpCompositeConstruct %mat2v3float %374 %375
|
|
OpStore %_1_m23 %373
|
|
%376 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %378 None
|
|
OpBranchConditional %376 %377 %378
|
|
%377 = OpLabel
|
|
%379 = OpLoad %mat2v3float %_1_m23
|
|
%380 = OpCompositeConstruct %v3float %float_2 %float_0 %float_0
|
|
%381 = OpCompositeConstruct %v3float %float_0 %float_2 %float_0
|
|
%382 = OpCompositeConstruct %mat2v3float %380 %381
|
|
%383 = OpCompositeExtract %v3float %379 0
|
|
%384 = OpCompositeExtract %v3float %382 0
|
|
%385 = OpFOrdEqual %v3bool %383 %384
|
|
%386 = OpAll %bool %385
|
|
%387 = OpCompositeExtract %v3float %379 1
|
|
%388 = OpCompositeExtract %v3float %382 1
|
|
%389 = OpFOrdEqual %v3bool %387 %388
|
|
%390 = OpAll %bool %389
|
|
%391 = OpLogicalAnd %bool %386 %390
|
|
OpBranch %378
|
|
%378 = OpLabel
|
|
%392 = OpPhi %bool %false %370 %391 %377
|
|
OpStore %_0_ok %392
|
|
%395 = OpCompositeConstruct %v4float %float_3 %float_0 %float_0 %float_0
|
|
%396 = OpCompositeConstruct %v4float %float_0 %float_3 %float_0 %float_0
|
|
%394 = OpCompositeConstruct %mat2v4float %395 %396
|
|
OpStore %_2_m24 %394
|
|
%397 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %399 None
|
|
OpBranchConditional %397 %398 %399
|
|
%398 = OpLabel
|
|
%400 = OpLoad %mat2v4float %_2_m24
|
|
%401 = OpCompositeConstruct %v4float %float_3 %float_0 %float_0 %float_0
|
|
%402 = OpCompositeConstruct %v4float %float_0 %float_3 %float_0 %float_0
|
|
%403 = OpCompositeConstruct %mat2v4float %401 %402
|
|
%404 = OpCompositeExtract %v4float %400 0
|
|
%405 = OpCompositeExtract %v4float %403 0
|
|
%406 = OpFOrdEqual %v4bool %404 %405
|
|
%407 = OpAll %bool %406
|
|
%408 = OpCompositeExtract %v4float %400 1
|
|
%409 = OpCompositeExtract %v4float %403 1
|
|
%410 = OpFOrdEqual %v4bool %408 %409
|
|
%411 = OpAll %bool %410
|
|
%412 = OpLogicalAnd %bool %407 %411
|
|
OpBranch %399
|
|
%399 = OpLabel
|
|
%413 = OpPhi %bool %false %378 %412 %398
|
|
OpStore %_0_ok %413
|
|
%416 = OpCompositeConstruct %v2float %float_4 %float_0
|
|
%417 = OpCompositeConstruct %v2float %float_0 %float_4
|
|
%418 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%415 = OpCompositeConstruct %mat3v2float %416 %417 %418
|
|
OpStore %_3_m32 %415
|
|
%419 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %421 None
|
|
OpBranchConditional %419 %420 %421
|
|
%420 = OpLabel
|
|
%422 = OpLoad %mat3v2float %_3_m32
|
|
%423 = OpCompositeConstruct %v2float %float_4 %float_0
|
|
%424 = OpCompositeConstruct %v2float %float_0 %float_4
|
|
%425 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%426 = OpCompositeConstruct %mat3v2float %423 %424 %425
|
|
%427 = OpCompositeExtract %v2float %422 0
|
|
%428 = OpCompositeExtract %v2float %426 0
|
|
%429 = OpFOrdEqual %v2bool %427 %428
|
|
%430 = OpAll %bool %429
|
|
%431 = OpCompositeExtract %v2float %422 1
|
|
%432 = OpCompositeExtract %v2float %426 1
|
|
%433 = OpFOrdEqual %v2bool %431 %432
|
|
%434 = OpAll %bool %433
|
|
%435 = OpLogicalAnd %bool %430 %434
|
|
%436 = OpCompositeExtract %v2float %422 2
|
|
%437 = OpCompositeExtract %v2float %426 2
|
|
%438 = OpFOrdEqual %v2bool %436 %437
|
|
%439 = OpAll %bool %438
|
|
%440 = OpLogicalAnd %bool %435 %439
|
|
OpBranch %421
|
|
%421 = OpLabel
|
|
%441 = OpPhi %bool %false %399 %440 %420
|
|
OpStore %_0_ok %441
|
|
%444 = OpCompositeConstruct %v4float %float_5 %float_0 %float_0 %float_0
|
|
%445 = OpCompositeConstruct %v4float %float_0 %float_5 %float_0 %float_0
|
|
%446 = OpCompositeConstruct %v4float %float_0 %float_0 %float_5 %float_0
|
|
%443 = OpCompositeConstruct %mat3v4float %444 %445 %446
|
|
OpStore %_4_m34 %443
|
|
%447 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %449 None
|
|
OpBranchConditional %447 %448 %449
|
|
%448 = OpLabel
|
|
%450 = OpLoad %mat3v4float %_4_m34
|
|
%451 = OpCompositeConstruct %v4float %float_5 %float_0 %float_0 %float_0
|
|
%452 = OpCompositeConstruct %v4float %float_0 %float_5 %float_0 %float_0
|
|
%453 = OpCompositeConstruct %v4float %float_0 %float_0 %float_5 %float_0
|
|
%454 = OpCompositeConstruct %mat3v4float %451 %452 %453
|
|
%455 = OpCompositeExtract %v4float %450 0
|
|
%456 = OpCompositeExtract %v4float %454 0
|
|
%457 = OpFOrdEqual %v4bool %455 %456
|
|
%458 = OpAll %bool %457
|
|
%459 = OpCompositeExtract %v4float %450 1
|
|
%460 = OpCompositeExtract %v4float %454 1
|
|
%461 = OpFOrdEqual %v4bool %459 %460
|
|
%462 = OpAll %bool %461
|
|
%463 = OpLogicalAnd %bool %458 %462
|
|
%464 = OpCompositeExtract %v4float %450 2
|
|
%465 = OpCompositeExtract %v4float %454 2
|
|
%466 = OpFOrdEqual %v4bool %464 %465
|
|
%467 = OpAll %bool %466
|
|
%468 = OpLogicalAnd %bool %463 %467
|
|
OpBranch %449
|
|
%449 = OpLabel
|
|
%469 = OpPhi %bool %false %421 %468 %448
|
|
OpStore %_0_ok %469
|
|
%472 = OpCompositeConstruct %v2float %float_6 %float_0
|
|
%473 = OpCompositeConstruct %v2float %float_0 %float_6
|
|
%474 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%475 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%471 = OpCompositeConstruct %mat4v2float %472 %473 %474 %475
|
|
OpStore %_5_m42 %471
|
|
%476 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %478 None
|
|
OpBranchConditional %476 %477 %478
|
|
%477 = OpLabel
|
|
%479 = OpLoad %mat4v2float %_5_m42
|
|
%480 = OpCompositeConstruct %v2float %float_6 %float_0
|
|
%481 = OpCompositeConstruct %v2float %float_0 %float_6
|
|
%482 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%483 = OpCompositeConstruct %v2float %float_0 %float_0
|
|
%484 = OpCompositeConstruct %mat4v2float %480 %481 %482 %483
|
|
%485 = OpCompositeExtract %v2float %479 0
|
|
%486 = OpCompositeExtract %v2float %484 0
|
|
%487 = OpFOrdEqual %v2bool %485 %486
|
|
%488 = OpAll %bool %487
|
|
%489 = OpCompositeExtract %v2float %479 1
|
|
%490 = OpCompositeExtract %v2float %484 1
|
|
%491 = OpFOrdEqual %v2bool %489 %490
|
|
%492 = OpAll %bool %491
|
|
%493 = OpLogicalAnd %bool %488 %492
|
|
%494 = OpCompositeExtract %v2float %479 2
|
|
%495 = OpCompositeExtract %v2float %484 2
|
|
%496 = OpFOrdEqual %v2bool %494 %495
|
|
%497 = OpAll %bool %496
|
|
%498 = OpLogicalAnd %bool %493 %497
|
|
%499 = OpCompositeExtract %v2float %479 3
|
|
%500 = OpCompositeExtract %v2float %484 3
|
|
%501 = OpFOrdEqual %v2bool %499 %500
|
|
%502 = OpAll %bool %501
|
|
%503 = OpLogicalAnd %bool %498 %502
|
|
OpBranch %478
|
|
%478 = OpLabel
|
|
%504 = OpPhi %bool %false %449 %503 %477
|
|
OpStore %_0_ok %504
|
|
%507 = OpCompositeConstruct %v3float %float_7 %float_0 %float_0
|
|
%508 = OpCompositeConstruct %v3float %float_0 %float_7 %float_0
|
|
%509 = OpCompositeConstruct %v3float %float_0 %float_0 %float_7
|
|
%510 = OpCompositeConstruct %v3float %float_0 %float_0 %float_0
|
|
%506 = OpCompositeConstruct %mat4v3float %507 %508 %509 %510
|
|
OpStore %_6_m43 %506
|
|
%511 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %513 None
|
|
OpBranchConditional %511 %512 %513
|
|
%512 = OpLabel
|
|
%514 = OpLoad %mat4v3float %_6_m43
|
|
%515 = OpCompositeConstruct %v3float %float_7 %float_0 %float_0
|
|
%516 = OpCompositeConstruct %v3float %float_0 %float_7 %float_0
|
|
%517 = OpCompositeConstruct %v3float %float_0 %float_0 %float_7
|
|
%518 = OpCompositeConstruct %v3float %float_0 %float_0 %float_0
|
|
%519 = OpCompositeConstruct %mat4v3float %515 %516 %517 %518
|
|
%520 = OpCompositeExtract %v3float %514 0
|
|
%521 = OpCompositeExtract %v3float %519 0
|
|
%522 = OpFOrdEqual %v3bool %520 %521
|
|
%523 = OpAll %bool %522
|
|
%524 = OpCompositeExtract %v3float %514 1
|
|
%525 = OpCompositeExtract %v3float %519 1
|
|
%526 = OpFOrdEqual %v3bool %524 %525
|
|
%527 = OpAll %bool %526
|
|
%528 = OpLogicalAnd %bool %523 %527
|
|
%529 = OpCompositeExtract %v3float %514 2
|
|
%530 = OpCompositeExtract %v3float %519 2
|
|
%531 = OpFOrdEqual %v3bool %529 %530
|
|
%532 = OpAll %bool %531
|
|
%533 = OpLogicalAnd %bool %528 %532
|
|
%534 = OpCompositeExtract %v3float %514 3
|
|
%535 = OpCompositeExtract %v3float %519 3
|
|
%536 = OpFOrdEqual %v3bool %534 %535
|
|
%537 = OpAll %bool %536
|
|
%538 = OpLogicalAnd %bool %533 %537
|
|
OpBranch %513
|
|
%513 = OpLabel
|
|
%539 = OpPhi %bool %false %478 %538 %512
|
|
OpStore %_0_ok %539
|
|
%541 = OpLoad %mat3v2float %_3_m32
|
|
%542 = OpLoad %mat2v3float %_1_m23
|
|
%543 = OpMatrixTimesMatrix %mat2v2float %541 %542
|
|
OpStore %_7_m22 %543
|
|
%544 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %546 None
|
|
OpBranchConditional %544 %545 %546
|
|
%545 = OpLabel
|
|
%547 = OpLoad %mat2v2float %_7_m22
|
|
%549 = OpCompositeConstruct %v2float %float_8 %float_0
|
|
%550 = OpCompositeConstruct %v2float %float_0 %float_8
|
|
%548 = OpCompositeConstruct %mat2v2float %549 %550
|
|
%551 = OpCompositeExtract %v2float %547 0
|
|
%552 = OpCompositeExtract %v2float %548 0
|
|
%553 = OpFOrdEqual %v2bool %551 %552
|
|
%554 = OpAll %bool %553
|
|
%555 = OpCompositeExtract %v2float %547 1
|
|
%556 = OpCompositeExtract %v2float %548 1
|
|
%557 = OpFOrdEqual %v2bool %555 %556
|
|
%558 = OpAll %bool %557
|
|
%559 = OpLogicalAnd %bool %554 %558
|
|
OpBranch %546
|
|
%546 = OpLabel
|
|
%560 = OpPhi %bool %false %513 %559 %545
|
|
OpStore %_0_ok %560
|
|
%562 = OpLoad %mat4v3float %_6_m43
|
|
%563 = OpLoad %mat3v4float %_4_m34
|
|
%564 = OpMatrixTimesMatrix %mat3v3float %562 %563
|
|
OpStore %_8_m33 %564
|
|
%565 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %567 None
|
|
OpBranchConditional %565 %566 %567
|
|
%566 = OpLabel
|
|
%568 = OpLoad %mat3v3float %_8_m33
|
|
%570 = OpCompositeConstruct %v3float %float_35 %float_0 %float_0
|
|
%571 = OpCompositeConstruct %v3float %float_0 %float_35 %float_0
|
|
%572 = OpCompositeConstruct %v3float %float_0 %float_0 %float_35
|
|
%569 = OpCompositeConstruct %mat3v3float %570 %571 %572
|
|
%573 = OpCompositeExtract %v3float %568 0
|
|
%574 = OpCompositeExtract %v3float %569 0
|
|
%575 = OpFOrdEqual %v3bool %573 %574
|
|
%576 = OpAll %bool %575
|
|
%577 = OpCompositeExtract %v3float %568 1
|
|
%578 = OpCompositeExtract %v3float %569 1
|
|
%579 = OpFOrdEqual %v3bool %577 %578
|
|
%580 = OpAll %bool %579
|
|
%581 = OpLogicalAnd %bool %576 %580
|
|
%582 = OpCompositeExtract %v3float %568 2
|
|
%583 = OpCompositeExtract %v3float %569 2
|
|
%584 = OpFOrdEqual %v3bool %582 %583
|
|
%585 = OpAll %bool %584
|
|
%586 = OpLogicalAnd %bool %581 %585
|
|
OpBranch %567
|
|
%567 = OpLabel
|
|
%587 = OpPhi %bool %false %546 %586 %566
|
|
OpStore %_0_ok %587
|
|
%588 = OpLoad %mat2v3float %_1_m23
|
|
%589 = OpCompositeConstruct %v3float %float_1 %float_1 %float_1
|
|
%590 = OpCompositeConstruct %mat2v3float %589 %589
|
|
%591 = OpCompositeExtract %v3float %588 0
|
|
%592 = OpCompositeExtract %v3float %590 0
|
|
%593 = OpFAdd %v3float %591 %592
|
|
%594 = OpCompositeExtract %v3float %588 1
|
|
%595 = OpCompositeExtract %v3float %590 1
|
|
%596 = OpFAdd %v3float %594 %595
|
|
%597 = OpCompositeConstruct %mat2v3float %593 %596
|
|
OpStore %_1_m23 %597
|
|
%598 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %600 None
|
|
OpBranchConditional %598 %599 %600
|
|
%599 = OpLabel
|
|
%601 = OpLoad %mat2v3float %_1_m23
|
|
%602 = OpCompositeConstruct %v3float %float_3 %float_1 %float_1
|
|
%603 = OpCompositeConstruct %v3float %float_1 %float_3 %float_1
|
|
%604 = OpCompositeConstruct %mat2v3float %602 %603
|
|
%605 = OpCompositeExtract %v3float %601 0
|
|
%606 = OpCompositeExtract %v3float %604 0
|
|
%607 = OpFOrdEqual %v3bool %605 %606
|
|
%608 = OpAll %bool %607
|
|
%609 = OpCompositeExtract %v3float %601 1
|
|
%610 = OpCompositeExtract %v3float %604 1
|
|
%611 = OpFOrdEqual %v3bool %609 %610
|
|
%612 = OpAll %bool %611
|
|
%613 = OpLogicalAnd %bool %608 %612
|
|
OpBranch %600
|
|
%600 = OpLabel
|
|
%614 = OpPhi %bool %false %567 %613 %599
|
|
OpStore %_0_ok %614
|
|
%615 = OpLoad %mat3v2float %_3_m32
|
|
%616 = OpCompositeConstruct %v2float %float_2 %float_2
|
|
%617 = OpCompositeConstruct %mat3v2float %616 %616 %616
|
|
%618 = OpCompositeExtract %v2float %615 0
|
|
%619 = OpCompositeExtract %v2float %617 0
|
|
%620 = OpFSub %v2float %618 %619
|
|
%621 = OpCompositeExtract %v2float %615 1
|
|
%622 = OpCompositeExtract %v2float %617 1
|
|
%623 = OpFSub %v2float %621 %622
|
|
%624 = OpCompositeExtract %v2float %615 2
|
|
%625 = OpCompositeExtract %v2float %617 2
|
|
%626 = OpFSub %v2float %624 %625
|
|
%627 = OpCompositeConstruct %mat3v2float %620 %623 %626
|
|
OpStore %_3_m32 %627
|
|
%628 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %630 None
|
|
OpBranchConditional %628 %629 %630
|
|
%629 = OpLabel
|
|
%631 = OpLoad %mat3v2float %_3_m32
|
|
%632 = OpCompositeConstruct %v2float %float_2 %float_n2
|
|
%633 = OpCompositeConstruct %v2float %float_n2 %float_2
|
|
%634 = OpCompositeConstruct %v2float %float_n2 %float_n2
|
|
%635 = OpCompositeConstruct %mat3v2float %632 %633 %634
|
|
%636 = OpCompositeExtract %v2float %631 0
|
|
%637 = OpCompositeExtract %v2float %635 0
|
|
%638 = OpFOrdEqual %v2bool %636 %637
|
|
%639 = OpAll %bool %638
|
|
%640 = OpCompositeExtract %v2float %631 1
|
|
%641 = OpCompositeExtract %v2float %635 1
|
|
%642 = OpFOrdEqual %v2bool %640 %641
|
|
%643 = OpAll %bool %642
|
|
%644 = OpLogicalAnd %bool %639 %643
|
|
%645 = OpCompositeExtract %v2float %631 2
|
|
%646 = OpCompositeExtract %v2float %635 2
|
|
%647 = OpFOrdEqual %v2bool %645 %646
|
|
%648 = OpAll %bool %647
|
|
%649 = OpLogicalAnd %bool %644 %648
|
|
OpBranch %630
|
|
%630 = OpLabel
|
|
%650 = OpPhi %bool %false %600 %649 %629
|
|
OpStore %_0_ok %650
|
|
%651 = OpLoad %mat2v4float %_2_m24
|
|
%652 = OpCompositeConstruct %v4float %float_4 %float_4 %float_4 %float_4
|
|
%653 = OpCompositeConstruct %mat2v4float %652 %652
|
|
%654 = OpCompositeExtract %v4float %651 0
|
|
%655 = OpCompositeExtract %v4float %653 0
|
|
%656 = OpFDiv %v4float %654 %655
|
|
%657 = OpCompositeExtract %v4float %651 1
|
|
%658 = OpCompositeExtract %v4float %653 1
|
|
%659 = OpFDiv %v4float %657 %658
|
|
%660 = OpCompositeConstruct %mat2v4float %656 %659
|
|
OpStore %_2_m24 %660
|
|
%661 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %663 None
|
|
OpBranchConditional %661 %662 %663
|
|
%662 = OpLabel
|
|
%664 = OpLoad %mat2v4float %_2_m24
|
|
%665 = OpCompositeConstruct %v4float %float_0_75 %float_0 %float_0 %float_0
|
|
%666 = OpCompositeConstruct %v4float %float_0 %float_0_75 %float_0 %float_0
|
|
%667 = OpCompositeConstruct %mat2v4float %665 %666
|
|
%668 = OpCompositeExtract %v4float %664 0
|
|
%669 = OpCompositeExtract %v4float %667 0
|
|
%670 = OpFOrdEqual %v4bool %668 %669
|
|
%671 = OpAll %bool %670
|
|
%672 = OpCompositeExtract %v4float %664 1
|
|
%673 = OpCompositeExtract %v4float %667 1
|
|
%674 = OpFOrdEqual %v4bool %672 %673
|
|
%675 = OpAll %bool %674
|
|
%676 = OpLogicalAnd %bool %671 %675
|
|
OpBranch %663
|
|
%663 = OpLabel
|
|
%677 = OpPhi %bool %false %630 %676 %662
|
|
OpStore %_0_ok %677
|
|
%678 = OpLoad %bool %_0_ok
|
|
OpSelectionMerge %680 None
|
|
OpBranchConditional %678 %679 %680
|
|
%679 = OpLabel
|
|
%681 = OpFunctionCall %bool %test_half_b
|
|
OpBranch %680
|
|
%680 = OpLabel
|
|
%682 = OpPhi %bool %false %663 %681 %679
|
|
OpSelectionMerge %687 None
|
|
OpBranchConditional %682 %685 %686
|
|
%685 = OpLabel
|
|
%688 = OpAccessChain %_ptr_Uniform_v4float %11 %int_0
|
|
%692 = OpLoad %v4float %688
|
|
OpStore %683 %692
|
|
OpBranch %687
|
|
%686 = OpLabel
|
|
%693 = OpAccessChain %_ptr_Uniform_v4float %11 %int_1
|
|
%695 = OpLoad %v4float %693
|
|
OpStore %683 %695
|
|
OpBranch %687
|
|
%687 = OpLabel
|
|
%696 = OpLoad %v4float %683
|
|
OpReturnValue %696
|
|
OpFunctionEnd
|