Use op cache for constant matrix construction.

Previously, we didn't usually generate OpConstantComposite ops for
matrices. Now, a matrix assembled from constants should come out as a
constant.

Change-Id: I458718901686dffb84e4079a81017d61195420d3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/529338
Reviewed-by: Arman Uguray <armansito@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
This commit is contained in:
John Stiles 2022-04-12 17:07:38 -04:00 committed by SkCQ
parent 77ed5fcfbe
commit abf84fd342
18 changed files with 1292 additions and 1353 deletions

View File

@ -650,6 +650,26 @@ SpvId SPIRVCodeGenerator::writeOpCompositeConstruct(const Type& type,
}
}
// If this is a matrix composed entirely of literals, constant-composite them instead.
if (type.isMatrix()) {
SkSTArray<16, SpvId> constants;
if (this->toConstants(SkMakeSpan(values), &constants)) {
// Create each matrix column.
SkASSERT(type.isMatrix());
const Type& vecType = type.componentType().toCompound(fContext,
/*columns=*/type.rows(),
/*rows=*/1);
SkSTArray<4, SpvId> columnIDs;
for (int index=0; index < type.columns(); ++index) {
SkSTArray<4, SpvId> columnConstants(&constants[index * type.rows()],
type.rows());
columnIDs.push_back(this->writeOpConstantComposite(vecType, columnConstants));
}
// Compose the matrix from its columns.
return this->writeOpConstantComposite(type, columnIDs);
}
}
Words words;
words.push_back(this->getType(type));
words.push_back(Word::Result(type));

View File

@ -25,16 +25,12 @@ OpDecorate %_UniformBuffer Block
OpDecorate %10 Binding 0
OpDecorate %10 DescriptorSet 0
OpDecorate %inv2x2 RelaxedPrecision
OpDecorate %35 RelaxedPrecision
OpDecorate %inv3x3 RelaxedPrecision
OpDecorate %51 RelaxedPrecision
OpDecorate %inv4x4 RelaxedPrecision
OpDecorate %64 RelaxedPrecision
OpDecorate %66 RelaxedPrecision
OpDecorate %79 RelaxedPrecision
OpDecorate %98 RelaxedPrecision
OpDecorate %122 RelaxedPrecision
OpDecorate %130 RelaxedPrecision
OpDecorate %131 RelaxedPrecision
OpDecorate %156 RelaxedPrecision
OpDecorate %159 RelaxedPrecision
@ -64,6 +60,7 @@ OpDecorate %160 RelaxedPrecision
%float_n0_5 = OpConstant %float -0.5
%33 = OpConstantComposite %v2float %float_n2 %float_1
%34 = OpConstantComposite %v2float %float_1_5 %float_n0_5
%35 = OpConstantComposite %mat2v2float %33 %34
%v3float = OpTypeVector %float 3
%mat3v3float = OpTypeMatrix %v3float 3
%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
@ -78,6 +75,7 @@ OpDecorate %160 RelaxedPrecision
%48 = OpConstantComposite %v3float %float_n24 %float_18 %float_5
%49 = OpConstantComposite %v3float %float_20 %float_n15 %float_n4
%50 = OpConstantComposite %v3float %float_n5 %float_4 %float_1
%51 = OpConstantComposite %mat3v3float %48 %49 %50
%mat4v4float = OpTypeMatrix %v4float 4
%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
%float_0_5 = OpConstant %float 0.5
@ -89,6 +87,7 @@ OpDecorate %160 RelaxedPrecision
%61 = OpConstantComposite %v4float %float_1 %float_0_5 %float_0 %float_n0_5
%62 = OpConstantComposite %v4float %float_n8 %float_n1 %float_2 %float_2
%63 = OpConstantComposite %v4float %float_3 %float_0_5 %float_n1 %float_n0_5
%64 = OpConstantComposite %mat4v4float %60 %61 %62 %63
%false = OpConstantFalse %bool
%v2bool = OpTypeVector %bool 2
%v3bool = OpTypeVector %bool 3
@ -100,6 +99,7 @@ OpDecorate %160 RelaxedPrecision
%127 = OpConstantComposite %v3float %float_1 %float_2 %float_3
%128 = OpConstantComposite %v3float %float_4 %float_5 %float_6
%129 = OpConstantComposite %v3float %float_7 %float_8 %float_9
%130 = OpConstantComposite %mat3v3float %127 %128 %129
%_ptr_Function_v4float = OpTypePointer Function %v4float
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%int = OpTypeInt 32 1
@ -120,11 +120,8 @@ OpFunctionEnd
%inv3x3 = OpVariable %_ptr_Function_mat3v3float Function
%inv4x4 = OpVariable %_ptr_Function_mat4v4float Function
%147 = OpVariable %_ptr_Function_v4float Function
%35 = OpCompositeConstruct %mat2v2float %33 %34
OpStore %inv2x2 %35
%51 = OpCompositeConstruct %mat3v3float %48 %49 %50
OpStore %inv3x3 %51
%64 = OpCompositeConstruct %mat4v4float %60 %61 %62 %63
OpStore %inv4x4 %64
%66 = OpLoad %mat2v2float %inv2x2
%68 = OpCompositeExtract %v2float %35 0
@ -186,7 +183,6 @@ OpBranch %97
OpSelectionMerge %121 None
OpBranchConditional %119 %120 %121
%120 = OpLabel
%130 = OpCompositeConstruct %mat3v3float %127 %128 %129
%122 = OpExtInst %mat3v3float %1 MatrixInverse %130
%131 = OpLoad %mat3v3float %inv3x3
%132 = OpCompositeExtract %v3float %122 0

View File

@ -34,10 +34,8 @@ OpDecorate %_UniformBuffer Block
OpDecorate %10 Binding 0
OpDecorate %10 DescriptorSet 0
OpDecorate %h22 RelaxedPrecision
OpDecorate %36 RelaxedPrecision
OpDecorate %h33 RelaxedPrecision
OpDecorate %61 RelaxedPrecision
OpDecorate %64 RelaxedPrecision
OpDecorate %65 RelaxedPrecision
OpDecorate %66 RelaxedPrecision
OpDecorate %67 RelaxedPrecision
@ -50,7 +48,6 @@ OpDecorate %73 RelaxedPrecision
OpDecorate %74 RelaxedPrecision
OpDecorate %76 RelaxedPrecision
OpDecorate %105 RelaxedPrecision
OpDecorate %115 RelaxedPrecision
OpDecorate %140 RelaxedPrecision
OpDecorate %143 RelaxedPrecision
OpDecorate %144 RelaxedPrecision
@ -80,6 +77,7 @@ OpDecorate %144 RelaxedPrecision
%float_15 = OpConstant %float 15
%34 = OpConstantComposite %v2float %float_0 %float_5
%35 = OpConstantComposite %v2float %float_10 %float_15
%36 = OpConstantComposite %mat2v2float %34 %35
%_ptr_Uniform_mat2v2float = OpTypePointer Uniform %mat2v2float
%int = OpTypeInt 32 1
%int_2 = OpConstant %int 2
@ -91,10 +89,12 @@ OpDecorate %144 RelaxedPrecision
%int_3 = OpConstant %int 3
%float_2 = OpConstant %float 2
%63 = OpConstantComposite %v3float %float_2 %float_2 %float_2
%64 = OpConstantComposite %mat3v3float %63 %63 %63
%false = OpConstantFalse %bool
%v2bool = OpTypeVector %bool 2
%float_4 = OpConstant %float 4
%91 = OpConstantComposite %v2float %float_0 %float_4
%92 = OpConstantComposite %mat2v2float %46 %91
%float_6 = OpConstant %float 6
%float_8 = OpConstant %float 8
%float_12 = OpConstant %float 12
@ -104,6 +104,7 @@ OpDecorate %144 RelaxedPrecision
%112 = OpConstantComposite %v3float %float_2 %float_4 %float_6
%113 = OpConstantComposite %v3float %float_8 %float_10 %float_12
%114 = OpConstantComposite %v3float %float_14 %float_16 %float_18
%115 = OpConstantComposite %mat3v3float %112 %113 %114
%v3bool = OpTypeVector %bool 3
%_ptr_Function_v4float = OpTypePointer Function %v4float
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
@ -124,7 +125,6 @@ OpFunctionEnd
%f22 = OpVariable %_ptr_Function_mat2v2float Function
%h33 = OpVariable %_ptr_Function_mat3v3float Function
%132 = OpVariable %_ptr_Function_v4float Function
%36 = OpCompositeConstruct %mat2v2float %34 %35
OpStore %h22 %36
%39 = OpAccessChain %_ptr_Uniform_mat2v2float %10 %int_2
%43 = OpLoad %mat2v2float %39
@ -139,7 +139,6 @@ OpStore %h22 %36
OpStore %f22 %54
%58 = OpAccessChain %_ptr_Uniform_mat3v3float %10 %int_3
%61 = OpLoad %mat3v3float %58
%64 = OpCompositeConstruct %mat3v3float %63 %63 %63
%65 = OpCompositeExtract %v3float %61 0
%66 = OpCompositeExtract %v3float %64 0
%67 = OpFMul %v3float %65 %66
@ -165,7 +164,6 @@ OpSelectionMerge %88 None
OpBranchConditional %86 %87 %88
%87 = OpLabel
%89 = OpLoad %mat2v2float %f22
%92 = OpCompositeConstruct %mat2v2float %46 %91
%93 = OpCompositeExtract %v2float %89 0
%94 = OpCompositeExtract %v2float %92 0
%95 = OpFOrdEqual %v2bool %93 %94
@ -182,7 +180,6 @@ OpSelectionMerge %104 None
OpBranchConditional %102 %103 %104
%103 = OpLabel
%105 = OpLoad %mat3v3float %h33
%115 = OpCompositeConstruct %mat3v3float %112 %113 %114
%117 = OpCompositeExtract %v3float %105 0
%118 = OpCompositeExtract %v3float %115 0
%119 = OpFOrdEqual %v3bool %117 %118

View File

@ -25,7 +25,6 @@ OpDecorate %_UniformBuffer Block
OpDecorate %10 Binding 0
OpDecorate %10 DescriptorSet 0
OpDecorate %h24 RelaxedPrecision
OpDecorate %32 RelaxedPrecision
OpDecorate %37 RelaxedPrecision
OpDecorate %40 RelaxedPrecision
OpDecorate %41 RelaxedPrecision
@ -37,7 +36,6 @@ OpDecorate %46 RelaxedPrecision
OpDecorate %47 RelaxedPrecision
OpDecorate %48 RelaxedPrecision
OpDecorate %h42 RelaxedPrecision
OpDecorate %65 RelaxedPrecision
OpDecorate %67 RelaxedPrecision
OpDecorate %69 RelaxedPrecision
OpDecorate %70 RelaxedPrecision
@ -67,9 +65,7 @@ OpDecorate %93 RelaxedPrecision
OpDecorate %94 RelaxedPrecision
OpDecorate %95 RelaxedPrecision
OpDecorate %112 RelaxedPrecision
OpDecorate %115 RelaxedPrecision
OpDecorate %128 RelaxedPrecision
OpDecorate %133 RelaxedPrecision
OpDecorate %185 RelaxedPrecision
OpDecorate %187 RelaxedPrecision
OpDecorate %188 RelaxedPrecision
@ -94,6 +90,7 @@ OpDecorate %188 RelaxedPrecision
%_ptr_Function_mat2v4float = OpTypePointer Function %mat2v4float
%float_9 = OpConstant %float 9
%31 = OpConstantComposite %v4float %float_9 %float_9 %float_9 %float_9
%32 = OpConstantComposite %mat2v4float %31 %31
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%int = OpTypeInt 32 1
%int_1 = OpConstant %int 1
@ -112,6 +109,7 @@ OpDecorate %188 RelaxedPrecision
%62 = OpConstantComposite %v2float %float_3 %float_4
%63 = OpConstantComposite %v2float %float_5 %float_6
%64 = OpConstantComposite %v2float %float_7 %float_8
%65 = OpConstantComposite %mat4v2float %61 %62 %63 %64
%v3float = OpTypeVector %float 3
%mat4v3float = OpTypeMatrix %v3float 4
%_ptr_Function_mat4v3float = OpTypePointer Function %mat4v3float
@ -125,14 +123,17 @@ OpDecorate %188 RelaxedPrecision
%107 = OpConstantComposite %v3float %float_36 %float_40 %float_42
%108 = OpConstantComposite %v3float %float_42 %float_40 %float_36
%109 = OpConstantComposite %v3float %float_30 %float_22 %float_12
%110 = OpConstantComposite %mat4v3float %106 %107 %108 %109
%false = OpConstantFalse %bool
%113 = OpConstantComposite %v4float %float_9 %float_0 %float_0 %float_9
%114 = OpConstantComposite %v4float %float_0 %float_9 %float_0 %float_9
%115 = OpConstantComposite %mat2v4float %113 %114
%v4bool = OpTypeVector %bool 4
%129 = OpConstantComposite %v2float %float_1 %float_0
%130 = OpConstantComposite %v2float %float_0 %float_4
%131 = OpConstantComposite %v2float %float_0 %float_6
%132 = OpConstantComposite %v2float %float_0 %float_8
%133 = OpConstantComposite %mat4v2float %129 %130 %131 %132
%v2bool = OpTypeVector %bool 2
%v3bool = OpTypeVector %bool 3
%_ptr_Function_v4float = OpTypePointer Function %v4float
@ -151,7 +152,6 @@ OpFunctionEnd
%h42 = OpVariable %_ptr_Function_mat4v2float Function
%f43 = OpVariable %_ptr_Function_mat4v3float Function
%179 = OpVariable %_ptr_Function_v4float Function
%32 = OpCompositeConstruct %mat2v4float %31 %31
%33 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
%37 = OpLoad %v4float %33
%38 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
@ -165,7 +165,6 @@ OpFunctionEnd
%47 = OpFMul %v4float %45 %46
%48 = OpCompositeConstruct %mat2v4float %44 %47
OpStore %h24 %48
%65 = OpCompositeConstruct %mat4v2float %61 %62 %63 %64
%66 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
%67 = OpLoad %v4float %66
%68 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
@ -197,10 +196,8 @@ OpStore %h24 %48
%94 = OpFMul %v2float %92 %93
%95 = OpCompositeConstruct %mat4v2float %85 %88 %91 %94
OpStore %h42 %95
%110 = OpCompositeConstruct %mat4v3float %106 %107 %108 %109
OpStore %f43 %110
%112 = OpLoad %mat2v4float %h24
%115 = OpCompositeConstruct %mat2v4float %113 %114
%117 = OpCompositeExtract %v4float %112 0
%118 = OpCompositeExtract %v4float %115 0
%119 = OpFOrdEqual %v4bool %117 %118
@ -214,7 +211,6 @@ OpSelectionMerge %127 None
OpBranchConditional %125 %126 %127
%126 = OpLabel
%128 = OpLoad %mat4v2float %h42
%133 = OpCompositeConstruct %mat4v2float %129 %130 %131 %132
%135 = OpCompositeExtract %v2float %128 0
%136 = OpCompositeExtract %v2float %133 0
%137 = OpFOrdEqual %v2bool %135 %136

View File

@ -76,6 +76,7 @@ OpDecorate %227 RelaxedPrecision
%float_8 = OpConstant %float 8
%51 = OpConstantComposite %v2float %float_3 %float_6
%52 = OpConstantComposite %v2float %float_4 %float_8
%53 = OpConstantComposite %mat2v2float %51 %52
%v2bool = OpTypeVector %bool 2
%_ptr_Uniform_mat3v3float = OpTypePointer Uniform %mat3v3float
%int_3 = OpConstant %int 3
@ -88,10 +89,12 @@ OpDecorate %227 RelaxedPrecision
%81 = OpConstantComposite %v3float %float_4 %float_8 %float_12
%82 = OpConstantComposite %v3float %float_5 %float_10 %float_15
%83 = OpConstantComposite %v3float %float_6 %float_12 %float_18
%84 = OpConstantComposite %mat3v3float %81 %82 %83
%v3bool = OpTypeVector %bool 3
%mat3v2float = OpTypeMatrix %v2float 3
%111 = OpConstantComposite %v2float %float_5 %float_10
%112 = OpConstantComposite %v2float %float_6 %float_12
%113 = OpConstantComposite %mat3v2float %52 %111 %112
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%int_4 = OpConstant %int 4
%136 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_2
@ -105,12 +108,15 @@ OpDecorate %227 RelaxedPrecision
%144 = OpConstantComposite %v4float %float_n1_25 %float_0 %float_0_75 %float_2_25
%145 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%146 = OpConstantComposite %v4float %float_n2_5 %float_0 %float_1_5 %float_4_5
%147 = OpConstantComposite %mat4v4float %144 %145 %145 %146
%v4bool = OpTypeVector %bool 4
%mat2v4float = OpTypeMatrix %v4float 2
%176 = OpConstantComposite %mat2v4float %144 %146
%mat4v2float = OpTypeMatrix %v2float 4
%194 = OpConstantComposite %v2float %float_n1_25 %float_n2_5
%195 = OpConstantComposite %v2float %float_0_75 %float_1_5
%196 = OpConstantComposite %v2float %float_2_25 %float_4_5
%197 = OpConstantComposite %mat4v2float %194 %22 %195 %196
%_ptr_Function_v4float = OpTypePointer Function %v4float
%_entrypoint_v = OpFunction %void None %19
%20 = OpLabel
@ -133,7 +139,6 @@ OpStore %c12 %32
%45 = OpAccessChain %_ptr_Uniform_v2float %43 %int_1
%46 = OpLoad %v2float %45
%34 = OpOuterProduct %mat2v2float %42 %46
%53 = OpCompositeConstruct %mat2v2float %51 %52
%55 = OpCompositeExtract %v2float %34 0
%56 = OpCompositeExtract %v2float %53 0
%57 = OpFOrdEqual %v2bool %55 %56
@ -153,7 +158,6 @@ OpBranchConditional %63 %64 %65
%74 = OpAccessChain %_ptr_Uniform_v3float %73 %int_1
%75 = OpLoad %v3float %74
%66 = OpOuterProduct %mat3v3float %72 %75
%84 = OpCompositeConstruct %mat3v3float %81 %82 %83
%86 = OpCompositeExtract %v3float %66 0
%87 = OpCompositeExtract %v3float %84 0
%88 = OpFOrdEqual %v3bool %86 %87
@ -181,7 +185,6 @@ OpBranchConditional %100 %101 %102
%108 = OpAccessChain %_ptr_Uniform_v3float %107 %int_1
%109 = OpLoad %v3float %108
%103 = OpOuterProduct %mat3v2float %106 %109
%113 = OpCompositeConstruct %mat3v2float %52 %111 %112
%114 = OpCompositeExtract %v2float %103 0
%115 = OpCompositeExtract %v2float %113 0
%116 = OpFOrdEqual %v2bool %114 %115
@ -205,7 +208,6 @@ OpBranchConditional %128 %129 %130
%132 = OpAccessChain %_ptr_Uniform_v4float %10 %int_4
%135 = OpLoad %v4float %132
%131 = OpOuterProduct %mat4v4float %135 %136
%147 = OpCompositeConstruct %mat4v4float %144 %145 %145 %146
%149 = OpCompositeExtract %v4float %131 0
%150 = OpCompositeExtract %v4float %147 0
%151 = OpFOrdEqual %v4bool %149 %150
@ -235,7 +237,6 @@ OpBranchConditional %168 %169 %170
%173 = OpLoad %v4float %172
%174 = OpLoad %v2float %c12
%171 = OpOuterProduct %mat2v4float %173 %174
%176 = OpCompositeConstruct %mat2v4float %144 %146
%177 = OpCompositeExtract %v4float %171 0
%178 = OpCompositeExtract %v4float %176 0
%179 = OpFOrdEqual %v4bool %177 %178
@ -255,7 +256,6 @@ OpBranchConditional %186 %187 %188
%191 = OpAccessChain %_ptr_Uniform_v4float %10 %int_4
%192 = OpLoad %v4float %191
%189 = OpOuterProduct %mat4v2float %190 %192
%197 = OpCompositeConstruct %mat4v2float %194 %22 %195 %196
%198 = OpCompositeExtract %v2float %189 0
%199 = OpCompositeExtract %v2float %197 0
%200 = OpFOrdEqual %v2bool %198 %199

View File

@ -63,17 +63,20 @@ OpDecorate %127 RelaxedPrecision
%float_6 = OpConstant %float 6
%38 = OpConstantComposite %v3float %float_1 %float_2 %float_3
%39 = OpConstantComposite %v3float %float_4 %float_5 %float_6
%40 = OpConstantComposite %mat2v3float %38 %39
%false = OpConstantFalse %bool
%_ptr_Uniform_mat2v2float = OpTypePointer Uniform %mat2v2float
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%48 = OpConstantComposite %v2float %float_1 %float_3
%49 = OpConstantComposite %v2float %float_2 %float_4
%50 = OpConstantComposite %mat2v2float %48 %49
%v2bool = OpTypeVector %bool 2
%mat3v2float = OpTypeMatrix %v2float 3
%66 = OpConstantComposite %v2float %float_1 %float_4
%67 = OpConstantComposite %v2float %float_2 %float_5
%68 = OpConstantComposite %v2float %float_3 %float_6
%69 = OpConstantComposite %mat3v2float %66 %67 %68
%_ptr_Uniform_mat3v3float = OpTypePointer Uniform %mat3v3float
%int_1 = OpConstant %int 1
%float_7 = OpConstant %float 7
@ -82,6 +85,7 @@ OpDecorate %127 RelaxedPrecision
%95 = OpConstantComposite %v3float %float_1 %float_4 %float_7
%96 = OpConstantComposite %v3float %float_2 %float_5 %float_8
%97 = OpConstantComposite %v3float %float_3 %float_6 %float_9
%98 = OpConstantComposite %mat3v3float %95 %96 %97
%v3bool = OpTypeVector %bool 3
%_ptr_Function_v4float = OpTypePointer Function %v4float
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
@ -100,12 +104,10 @@ OpFunctionEnd
%28 = OpLabel
%testMatrix2x3 = OpVariable %_ptr_Function_mat2v3float Function
%115 = OpVariable %_ptr_Function_v4float Function
%40 = OpCompositeConstruct %mat2v3float %38 %39
OpStore %testMatrix2x3 %40
%43 = OpAccessChain %_ptr_Uniform_mat2v2float %10 %int_0
%47 = OpLoad %mat2v2float %43
%42 = OpTranspose %mat2v2float %47
%50 = OpCompositeConstruct %mat2v2float %48 %49
%52 = OpCompositeExtract %v2float %42 0
%53 = OpCompositeExtract %v2float %50 0
%54 = OpFOrdEqual %v2bool %52 %53
@ -120,7 +122,6 @@ OpBranchConditional %60 %61 %62
%61 = OpLabel
%64 = OpLoad %mat2v3float %testMatrix2x3
%63 = OpTranspose %mat3v2float %64
%69 = OpCompositeConstruct %mat3v2float %66 %67 %68
%70 = OpCompositeExtract %v2float %63 0
%71 = OpCompositeExtract %v2float %69 0
%72 = OpFOrdEqual %v2bool %70 %71
@ -144,7 +145,6 @@ OpBranchConditional %84 %85 %86
%88 = OpAccessChain %_ptr_Uniform_mat3v3float %10 %int_1
%91 = OpLoad %mat3v3float %88
%87 = OpTranspose %mat3v3float %91
%98 = OpCompositeConstruct %mat3v3float %95 %96 %97
%100 = OpCompositeExtract %v3float %87 0
%101 = OpCompositeExtract %v3float %98 0
%102 = OpFOrdEqual %v3bool %100 %101

View File

@ -33,8 +33,6 @@ OpDecorate %39 RelaxedPrecision
OpDecorate %_arr_v3int_int_3 ArrayStride 16
OpDecorate %55 RelaxedPrecision
OpDecorate %_arr_mat2v2float_int_2 ArrayStride 32
OpDecorate %63 RelaxedPrecision
OpDecorate %70 RelaxedPrecision
OpDecorate %74 RelaxedPrecision
OpDecorate %75 RelaxedPrecision
OpDecorate %79 RelaxedPrecision
@ -84,12 +82,14 @@ OpDecorate %155 RelaxedPrecision
%_ptr_Function__arr_mat2v2float_int_2 = OpTypePointer Function %_arr_mat2v2float_int_2
%61 = OpConstantComposite %v2float %float_1 %float_2
%62 = OpConstantComposite %v2float %float_3 %float_4
%63 = OpConstantComposite %mat2v2float %61 %62
%float_5 = OpConstant %float 5
%float_6 = OpConstant %float 6
%float_7 = OpConstant %float 7
%float_8 = OpConstant %float 8
%68 = OpConstantComposite %v2float %float_5 %float_6
%69 = OpConstantComposite %v2float %float_7 %float_8
%70 = OpConstantComposite %mat2v2float %68 %69
%_ptr_Function__arr_mat2v2float_int_2_0 = OpTypePointer Function %_arr_mat2v2float_int_2
%false = OpConstantFalse %bool
%v3bool = OpTypeVector %bool 3
@ -131,8 +131,6 @@ OpStore %s3 %54
OpStore %i3 %55
%56 = OpLoad %_arr_v3int_int_3 %i3
OpStore %s3 %56
%63 = OpCompositeConstruct %mat2v2float %61 %62
%70 = OpCompositeConstruct %mat2v2float %68 %69
%71 = OpCompositeConstruct %_arr_mat2v2float_int_2 %63 %70
OpStore %h2x2 %71
%74 = OpLoad %_arr_mat2v2float_int_2 %h2x2

View File

@ -41,11 +41,9 @@ OpDecorate %_arr_v3int_int_2 ArrayStride 16
OpDecorate %_arr_mat2v2float_int_3 ArrayStride 32
OpDecorate %61 RelaxedPrecision
OpDecorate %64 RelaxedPrecision
OpDecorate %71 RelaxedPrecision
OpDecorate %74 RelaxedPrecision
OpDecorate %75 RelaxedPrecision
OpDecorate %78 RelaxedPrecision
OpDecorate %81 RelaxedPrecision
OpDecorate %82 RelaxedPrecision
OpMemberDecorate %S 0 Offset 0
OpMemberDecorate %S 1 Offset 4
@ -122,8 +120,10 @@ OpDecorate %325 RelaxedPrecision
%float_6 = OpConstant %float 6
%69 = OpConstantComposite %v2float %float_3 %float_4
%70 = OpConstantComposite %v2float %float_5 %float_6
%71 = OpConstantComposite %mat2v2float %69 %70
%79 = OpConstantComposite %v2float %float_2 %float_3
%80 = OpConstantComposite %v2float %float_4 %float_5
%81 = OpConstantComposite %mat2v2float %79 %80
%83 = OpConstantComposite %v2float %float_6 %float_0
%84 = OpConstantComposite %v2float %float_0 %float_6
%S = OpTypeStruct %int %int
@ -171,7 +171,6 @@ OpStore %v2 %51
OpStore %v3 %56
%61 = OpCompositeConstruct %mat2v2float %62 %63
%64 = OpCompositeConstruct %mat2v2float %65 %66
%71 = OpCompositeConstruct %mat2v2float %69 %70
%72 = OpCompositeConstruct %_arr_mat2v2float_int_3 %61 %64 %71
OpStore %m1 %72
%74 = OpCompositeConstruct %mat2v2float %62 %63
@ -179,7 +178,6 @@ OpStore %m1 %72
%76 = OpCompositeConstruct %_arr_mat2v2float_int_3 %74 %75 %71
OpStore %m2 %76
%78 = OpCompositeConstruct %mat2v2float %62 %63
%81 = OpCompositeConstruct %mat2v2float %79 %80
%82 = OpCompositeConstruct %mat2v2float %83 %84
%85 = OpCompositeConstruct %_arr_mat2v2float_int_3 %78 %81 %82
OpStore %m3 %85

View File

@ -50,20 +50,19 @@ OpDecorate %68 RelaxedPrecision
OpDecorate %_arr_int_int_1 ArrayStride 16
OpDecorate %_arr_v4int_int_1 ArrayStride 16
OpDecorate %_arr_mat3v3float_int_1 ArrayStride 48
OpDecorate %80 RelaxedPrecision
OpDecorate %_arr_v4float_int_1 ArrayStride 16
OpDecorate %96 RelaxedPrecision
OpDecorate %97 RelaxedPrecision
OpDecorate %98 RelaxedPrecision
OpDecorate %100 RelaxedPrecision
OpDecorate %101 RelaxedPrecision
OpDecorate %102 RelaxedPrecision
OpDecorate %l RelaxedPrecision
OpDecorate %121 RelaxedPrecision
OpDecorate %122 RelaxedPrecision
OpDecorate %123 RelaxedPrecision
OpDecorate %129 RelaxedPrecision
OpDecorate %130 RelaxedPrecision
OpDecorate %131 RelaxedPrecision
OpDecorate %132 RelaxedPrecision
OpDecorate %135 RelaxedPrecision
OpDecorate %139 RelaxedPrecision
OpDecorate %134 RelaxedPrecision
OpDecorate %138 RelaxedPrecision
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
@ -114,6 +113,7 @@ OpDecorate %139 RelaxedPrecision
%59 = OpConstantComposite %v3float %float_1 %float_2 %float_3
%60 = OpConstantComposite %v3float %float_4 %float_5 %float_6
%61 = OpConstantComposite %v3float %float_7 %float_8 %float_9
%62 = OpConstantComposite %mat3v3float %59 %60 %61
%_ptr_Function_v4float = OpTypePointer Function %v4float
%_ptr_Function_float = OpTypePointer Function %float
%_arr_int_int_1 = OpTypeArray %int %int_1
@ -124,13 +124,13 @@ OpDecorate %139 RelaxedPrecision
%_ptr_Function__arr_mat3v3float_int_1 = OpTypePointer Function %_arr_mat3v3float_int_1
%_arr_v4float_int_1 = OpTypeArray %v4float %int_1
%_ptr_Function__arr_v4float_int_1 = OpTypePointer Function %_arr_v4float_int_1
%87 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%86 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%_ptr_Function_S = OpTypePointer Function %S
%95 = OpConstantComposite %v3float %float_9 %float_9 %float_9
%99 = OpConstantComposite %v2float %float_5 %float_5
%103 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%94 = OpConstantComposite %v3float %float_9 %float_9 %float_9
%98 = OpConstantComposite %v2float %float_5 %float_5
%102 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%_ptr_Private_float = OpTypePointer Private %float
%116 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2
%115 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2
%_ptr_Function_v3float = OpTypePointer Function %v3float
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%_entrypoint_v = OpFunction %void None %24
@ -156,7 +156,6 @@ OpFunctionEnd
%l = OpVariable %_ptr_Function_float Function
OpStore %i %int_0
OpStore %i4 %45
%62 = OpCompositeConstruct %mat3v3float %59 %60 %61
OpStore %f3x3 %62
%65 = OpAccessChain %_ptr_Function_float %x %int_3
OpStore %65 %float_0
@ -167,70 +166,69 @@ OpStore %x %68
OpStore %72 %int_0
%76 = OpAccessChain %_ptr_Function_v4int %ai4 %int_0
OpStore %76 %45
%80 = OpCompositeConstruct %mat3v3float %59 %60 %61
%81 = OpAccessChain %_ptr_Function_mat3v3float %ah2x4 %int_0
OpStore %81 %80
%85 = OpAccessChain %_ptr_Function_v4float %af4 %int_0
%86 = OpAccessChain %_ptr_Function_float %85 %int_0
OpStore %86 %float_0
%88 = OpAccessChain %_ptr_Function_v4float %af4 %int_0
%89 = OpLoad %v4float %88
%90 = OpVectorShuffle %v4float %89 %87 6 4 7 5
OpStore %88 %90
%93 = OpAccessChain %_ptr_Function_float %s %int_0
%80 = OpAccessChain %_ptr_Function_mat3v3float %ah2x4 %int_0
OpStore %80 %62
%84 = OpAccessChain %_ptr_Function_v4float %af4 %int_0
%85 = OpAccessChain %_ptr_Function_float %84 %int_0
OpStore %85 %float_0
%87 = OpAccessChain %_ptr_Function_v4float %af4 %int_0
%88 = OpLoad %v4float %87
%89 = OpVectorShuffle %v4float %88 %86 6 4 7 5
OpStore %87 %89
%92 = OpAccessChain %_ptr_Function_float %s %int_0
OpStore %92 %float_0
%93 = OpAccessChain %_ptr_Function_float %s %int_1 %int_1
OpStore %93 %float_0
%94 = OpAccessChain %_ptr_Function_float %s %int_1 %int_1
OpStore %94 %float_0
%96 = OpAccessChain %_ptr_Function_v4float %s %int_2
%97 = OpLoad %v4float %96
%98 = OpVectorShuffle %v4float %97 %95 5 6 4 3
OpStore %96 %98
%100 = OpAccessChain %_ptr_Function_v4float %s %int_3 %int_2
%101 = OpLoad %v4float %100
%102 = OpVectorShuffle %v4float %101 %99 0 4 2 5
OpStore %100 %102
OpStore %globalVar %103
%104 = OpAccessChain %_ptr_Private_float %globalStruct %int_0
OpStore %104 %float_0
%95 = OpAccessChain %_ptr_Function_v4float %s %int_2
%96 = OpLoad %v4float %95
%97 = OpVectorShuffle %v4float %96 %94 5 6 4 3
OpStore %95 %97
%99 = OpAccessChain %_ptr_Function_v4float %s %int_3 %int_2
%100 = OpLoad %v4float %99
%101 = OpVectorShuffle %v4float %100 %98 0 4 2 5
OpStore %99 %101
OpStore %globalVar %102
%103 = OpAccessChain %_ptr_Private_float %globalStruct %int_0
OpStore %103 %float_0
OpStore %l %float_0
%107 = OpAccessChain %_ptr_Function_int %ai %int_0
%108 = OpLoad %int %107
%109 = OpAccessChain %_ptr_Function_v4int %ai4 %int_0
%110 = OpLoad %v4int %109
%111 = OpCompositeExtract %int %110 0
%112 = OpIAdd %int %108 %111
OpStore %107 %112
%113 = OpAccessChain %_ptr_Function_float %s %int_0
OpStore %113 %float_1
%114 = OpAccessChain %_ptr_Function_float %s %int_1 %int_0
OpStore %114 %float_2
%115 = OpAccessChain %_ptr_Function_v4float %s %int_2
OpStore %115 %87
%117 = OpAccessChain %_ptr_Function_v4float %s %int_3 %int_0
OpStore %117 %116
%118 = OpAccessChain %_ptr_Function_v4float %af4 %int_0
%119 = OpLoad %v4float %118
%120 = OpAccessChain %_ptr_Function_v3float %ah2x4 %int_0 %int_0
%122 = OpLoad %v3float %120
%123 = OpCompositeExtract %float %122 0
%124 = OpVectorTimesScalar %v4float %119 %123
OpStore %118 %124
%125 = OpAccessChain %_ptr_Function_int %i4 %int_1
%126 = OpLoad %int %125
%127 = OpLoad %int %i
%128 = OpIMul %int %126 %127
OpStore %125 %128
%129 = OpAccessChain %_ptr_Function_float %x %int_1
%130 = OpLoad %float %129
%131 = OpLoad %float %l
%132 = OpFMul %float %130 %131
OpStore %129 %132
%133 = OpAccessChain %_ptr_Function_float %s %int_0
%134 = OpLoad %float %133
%135 = OpLoad %float %l
%136 = OpFMul %float %134 %135
OpStore %133 %136
%137 = OpAccessChain %_ptr_Uniform_v4float %19 %int_0
%139 = OpLoad %v4float %137
OpReturnValue %139
%106 = OpAccessChain %_ptr_Function_int %ai %int_0
%107 = OpLoad %int %106
%108 = OpAccessChain %_ptr_Function_v4int %ai4 %int_0
%109 = OpLoad %v4int %108
%110 = OpCompositeExtract %int %109 0
%111 = OpIAdd %int %107 %110
OpStore %106 %111
%112 = OpAccessChain %_ptr_Function_float %s %int_0
OpStore %112 %float_1
%113 = OpAccessChain %_ptr_Function_float %s %int_1 %int_0
OpStore %113 %float_2
%114 = OpAccessChain %_ptr_Function_v4float %s %int_2
OpStore %114 %86
%116 = OpAccessChain %_ptr_Function_v4float %s %int_3 %int_0
OpStore %116 %115
%117 = OpAccessChain %_ptr_Function_v4float %af4 %int_0
%118 = OpLoad %v4float %117
%119 = OpAccessChain %_ptr_Function_v3float %ah2x4 %int_0 %int_0
%121 = OpLoad %v3float %119
%122 = OpCompositeExtract %float %121 0
%123 = OpVectorTimesScalar %v4float %118 %122
OpStore %117 %123
%124 = OpAccessChain %_ptr_Function_int %i4 %int_1
%125 = OpLoad %int %124
%126 = OpLoad %int %i
%127 = OpIMul %int %125 %126
OpStore %124 %127
%128 = OpAccessChain %_ptr_Function_float %x %int_1
%129 = OpLoad %float %128
%130 = OpLoad %float %l
%131 = OpFMul %float %129 %130
OpStore %128 %131
%132 = OpAccessChain %_ptr_Function_float %s %int_0
%133 = OpLoad %float %132
%134 = OpLoad %float %l
%135 = OpFMul %float %133 %134
OpStore %132 %135
%136 = OpAccessChain %_ptr_Uniform_v4float %19 %int_0
%138 = OpLoad %v4float %136
OpReturnValue %138
OpFunctionEnd

View File

@ -44,7 +44,6 @@ OpDecorate %_UniformBuffer Block
OpDecorate %12 Binding 0
OpDecorate %12 DescriptorSet 0
OpDecorate %m1 RelaxedPrecision
OpDecorate %39 RelaxedPrecision
OpDecorate %41 RelaxedPrecision
OpDecorate %44 RelaxedPrecision
OpDecorate %m3 RelaxedPrecision
@ -55,13 +54,11 @@ OpDecorate %m4 RelaxedPrecision
OpDecorate %74 RelaxedPrecision
OpDecorate %77 RelaxedPrecision
OpDecorate %80 RelaxedPrecision
OpDecorate %81 RelaxedPrecision
OpDecorate %92 RelaxedPrecision
OpDecorate %93 RelaxedPrecision
OpDecorate %94 RelaxedPrecision
OpDecorate %95 RelaxedPrecision
OpDecorate %98 RelaxedPrecision
OpDecorate %104 RelaxedPrecision
OpDecorate %m5 RelaxedPrecision
OpDecorate %119 RelaxedPrecision
OpDecorate %120 RelaxedPrecision
@ -70,7 +67,6 @@ OpDecorate %122 RelaxedPrecision
OpDecorate %123 RelaxedPrecision
OpDecorate %124 RelaxedPrecision
OpDecorate %127 RelaxedPrecision
OpDecorate %130 RelaxedPrecision
OpDecorate %141 RelaxedPrecision
OpDecorate %142 RelaxedPrecision
OpDecorate %143 RelaxedPrecision
@ -82,23 +78,18 @@ OpDecorate %148 RelaxedPrecision
OpDecorate %149 RelaxedPrecision
OpDecorate %150 RelaxedPrecision
OpDecorate %153 RelaxedPrecision
OpDecorate %158 RelaxedPrecision
OpDecorate %m7 RelaxedPrecision
OpDecorate %173 RelaxedPrecision
OpDecorate %174 RelaxedPrecision
OpDecorate %177 RelaxedPrecision
OpDecorate %m9 RelaxedPrecision
OpDecorate %193 RelaxedPrecision
OpDecorate %197 RelaxedPrecision
OpDecorate %200 RelaxedPrecision
OpDecorate %201 RelaxedPrecision
OpDecorate %m10 RelaxedPrecision
OpDecorate %222 RelaxedPrecision
OpDecorate %227 RelaxedPrecision
OpDecorate %230 RelaxedPrecision
OpDecorate %231 RelaxedPrecision
OpDecorate %m11 RelaxedPrecision
OpDecorate %256 RelaxedPrecision
OpDecorate %257 RelaxedPrecision
OpDecorate %258 RelaxedPrecision
OpDecorate %259 RelaxedPrecision
@ -116,22 +107,21 @@ OpDecorate %270 RelaxedPrecision
OpDecorate %271 RelaxedPrecision
OpDecorate %272 RelaxedPrecision
OpDecorate %275 RelaxedPrecision
OpDecorate %280 RelaxedPrecision
OpDecorate %301 RelaxedPrecision
OpDecorate %323 RelaxedPrecision
OpDecorate %339 RelaxedPrecision
OpDecorate %355 RelaxedPrecision
OpDecorate %373 RelaxedPrecision
OpDecorate %395 RelaxedPrecision
OpDecorate %419 RelaxedPrecision
OpDecorate %436 RelaxedPrecision
OpDecorate %452 RelaxedPrecision
OpDecorate %474 RelaxedPrecision
OpDecorate %516 RelaxedPrecision
OpDecorate %541 RelaxedPrecision
OpDecorate %558 RelaxedPrecision
OpDecorate %560 RelaxedPrecision
OpDecorate %561 RelaxedPrecision
OpDecorate %321 RelaxedPrecision
OpDecorate %337 RelaxedPrecision
OpDecorate %353 RelaxedPrecision
OpDecorate %370 RelaxedPrecision
OpDecorate %391 RelaxedPrecision
OpDecorate %414 RelaxedPrecision
OpDecorate %429 RelaxedPrecision
OpDecorate %445 RelaxedPrecision
OpDecorate %466 RelaxedPrecision
OpDecorate %506 RelaxedPrecision
OpDecorate %530 RelaxedPrecision
OpDecorate %547 RelaxedPrecision
OpDecorate %549 RelaxedPrecision
OpDecorate %550 RelaxedPrecision
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
@ -159,27 +149,33 @@ OpDecorate %561 RelaxedPrecision
%float_4 = OpConstant %float 4
%37 = OpConstantComposite %v2float %float_1 %float_2
%38 = OpConstantComposite %v2float %float_3 %float_4
%39 = OpConstantComposite %mat2v2float %37 %38
%false = OpConstantFalse %bool
%v2bool = OpTypeVector %bool 2
%float_6 = OpConstant %float 6
%75 = OpConstantComposite %v2float %float_6 %float_0
%76 = OpConstantComposite %v2float %float_0 %float_6
%81 = OpConstantComposite %mat2v2float %75 %76
%float_12 = OpConstant %float 12
%float_18 = OpConstant %float 18
%float_24 = OpConstant %float 24
%102 = OpConstantComposite %v2float %float_6 %float_12
%103 = OpConstantComposite %v2float %float_18 %float_24
%104 = OpConstantComposite %mat2v2float %102 %103
%int = OpTypeInt 32 1
%int_1 = OpConstant %int 1
%128 = OpConstantComposite %v2float %float_4 %float_0
%129 = OpConstantComposite %v2float %float_0 %float_4
%130 = OpConstantComposite %mat2v2float %128 %129
%float_5 = OpConstant %float 5
%float_8 = OpConstant %float 8
%156 = OpConstantComposite %v2float %float_5 %float_2
%157 = OpConstantComposite %v2float %float_3 %float_8
%158 = OpConstantComposite %mat2v2float %156 %157
%float_7 = OpConstant %float 7
%171 = OpConstantComposite %v2float %float_5 %float_6
%172 = OpConstantComposite %v2float %float_7 %float_8
%173 = OpConstantComposite %mat2v2float %171 %172
%v3float = OpTypeVector %float 3
%mat3v3float = OpTypeMatrix %v3float 3
%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
@ -187,6 +183,7 @@ OpDecorate %561 RelaxedPrecision
%194 = OpConstantComposite %v3float %float_9 %float_0 %float_0
%195 = OpConstantComposite %v3float %float_0 %float_9 %float_0
%196 = OpConstantComposite %v3float %float_0 %float_0 %float_9
%201 = OpConstantComposite %mat3v3float %194 %195 %196
%v3bool = OpTypeVector %bool 3
%mat4v4float = OpTypeMatrix %v4float 4
%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
@ -195,14 +192,17 @@ OpDecorate %561 RelaxedPrecision
%224 = OpConstantComposite %v4float %float_0 %float_11 %float_0 %float_0
%225 = OpConstantComposite %v4float %float_0 %float_0 %float_11 %float_0
%226 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_11
%231 = OpConstantComposite %mat4v4float %223 %224 %225 %226
%v4bool = OpTypeVector %bool 4
%float_20 = OpConstant %float 20
%255 = OpConstantComposite %v4float %float_20 %float_20 %float_20 %float_20
%256 = OpConstantComposite %mat4v4float %255 %255 %255 %255
%276 = OpConstantComposite %v4float %float_9 %float_20 %float_20 %float_20
%277 = OpConstantComposite %v4float %float_20 %float_9 %float_20 %float_20
%278 = OpConstantComposite %v4float %float_20 %float_20 %float_9 %float_20
%279 = OpConstantComposite %v4float %float_20 %float_20 %float_20 %float_9
%317 = OpTypeFunction %v4float %_ptr_Function_v2float
%280 = OpConstantComposite %mat4v4float %276 %277 %278 %279
%316 = OpTypeFunction %v4float %_ptr_Function_v2float
%_ptr_Function_v4float = OpTypePointer Function %v4float
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%int_0 = OpConstant %int 0
@ -226,7 +226,6 @@ OpFunctionEnd
%m10 = OpVariable %_ptr_Function_mat4v4float Function
%m11 = OpVariable %_ptr_Function_mat4v4float Function
OpStore %ok %true
%39 = OpCompositeConstruct %mat2v2float %37 %38
OpStore %m1 %39
%41 = OpLoad %bool %ok
OpSelectionMerge %43 None
@ -273,7 +272,6 @@ OpSelectionMerge %79 None
OpBranchConditional %77 %78 %79
%78 = OpLabel
%80 = OpLoad %mat2v2float %m4
%81 = OpCompositeConstruct %mat2v2float %75 %76
%82 = OpCompositeExtract %v2float %80 0
%83 = OpCompositeExtract %v2float %81 0
%84 = OpFOrdEqual %v2bool %82 %83
@ -296,7 +294,6 @@ OpSelectionMerge %97 None
OpBranchConditional %95 %96 %97
%96 = OpLabel
%98 = OpLoad %mat2v2float %m3
%104 = OpCompositeConstruct %mat2v2float %102 %103
%105 = OpCompositeExtract %v2float %98 0
%106 = OpCompositeExtract %v2float %104 0
%107 = OpFOrdEqual %v2bool %105 %106
@ -322,7 +319,6 @@ OpSelectionMerge %126 None
OpBranchConditional %124 %125 %126
%125 = OpLabel
%127 = OpLoad %mat2v2float %m5
%130 = OpCompositeConstruct %mat2v2float %128 %129
%131 = OpCompositeExtract %v2float %127 0
%132 = OpCompositeExtract %v2float %130 0
%133 = OpFOrdEqual %v2bool %131 %132
@ -351,7 +347,6 @@ OpSelectionMerge %152 None
OpBranchConditional %150 %151 %152
%151 = OpLabel
%153 = OpLoad %mat2v2float %m1
%158 = OpCompositeConstruct %mat2v2float %156 %157
%159 = OpCompositeExtract %v2float %153 0
%160 = OpCompositeExtract %v2float %158 0
%161 = OpFOrdEqual %v2bool %159 %160
@ -365,7 +360,6 @@ OpBranch %152
%152 = OpLabel
%168 = OpPhi %bool %false %126 %167 %151
OpStore %ok %168
%173 = OpCompositeConstruct %mat2v2float %171 %172
OpStore %m7 %173
%174 = OpLoad %bool %ok
OpSelectionMerge %176 None
@ -392,7 +386,6 @@ OpSelectionMerge %199 None
OpBranchConditional %197 %198 %199
%198 = OpLabel
%200 = OpLoad %mat3v3float %m9
%201 = OpCompositeConstruct %mat3v3float %194 %195 %196
%203 = OpCompositeExtract %v3float %200 0
%204 = OpCompositeExtract %v3float %201 0
%205 = OpFOrdEqual %v3bool %203 %204
@ -418,7 +411,6 @@ OpSelectionMerge %229 None
OpBranchConditional %227 %228 %229
%228 = OpLabel
%230 = OpLoad %mat4v4float %m10
%231 = OpCompositeConstruct %mat4v4float %223 %224 %225 %226
%233 = OpCompositeExtract %v4float %230 0
%234 = OpCompositeExtract %v4float %231 0
%235 = OpFOrdEqual %v4bool %233 %234
@ -442,7 +434,6 @@ OpBranch %229
%229 = OpLabel
%252 = OpPhi %bool %false %199 %251 %228
OpStore %ok %252
%256 = OpCompositeConstruct %mat4v4float %255 %255 %255 %255
OpStore %m11 %256
%257 = OpLoad %mat4v4float %m11
%258 = OpLoad %mat4v4float %m10
@ -465,7 +456,6 @@ OpSelectionMerge %274 None
OpBranchConditional %272 %273 %274
%273 = OpLabel
%275 = OpLoad %mat4v4float %m11
%280 = OpCompositeConstruct %mat4v4float %276 %277 %278 %279
%281 = OpCompositeExtract %v4float %275 0
%282 = OpCompositeExtract %v4float %280 0
%283 = OpFOrdEqual %v4bool %281 %282
@ -496,25 +486,24 @@ OpFunctionEnd
%302 = OpLabel
%x = OpVariable %_ptr_Function_mat2v2float Function
%y = OpVariable %_ptr_Function_mat2v2float Function
%305 = OpCompositeConstruct %mat2v2float %37 %38
OpStore %x %305
OpStore %y %305
%306 = OpLoad %mat2v2float %x
%307 = OpLoad %mat2v2float %y
OpStore %x %39
OpStore %y %39
%305 = OpLoad %mat2v2float %x
%306 = OpLoad %mat2v2float %y
%307 = OpCompositeExtract %v2float %305 0
%308 = OpCompositeExtract %v2float %306 0
%309 = OpCompositeExtract %v2float %307 0
%310 = OpFOrdEqual %v2bool %308 %309
%311 = OpAll %bool %310
%309 = OpFOrdEqual %v2bool %307 %308
%310 = OpAll %bool %309
%311 = OpCompositeExtract %v2float %305 1
%312 = OpCompositeExtract %v2float %306 1
%313 = OpCompositeExtract %v2float %307 1
%314 = OpFOrdEqual %v2bool %312 %313
%315 = OpAll %bool %314
%316 = OpLogicalAnd %bool %311 %315
OpReturnValue %316
%313 = OpFOrdEqual %v2bool %311 %312
%314 = OpAll %bool %313
%315 = OpLogicalAnd %bool %310 %314
OpReturnValue %315
OpFunctionEnd
%main = OpFunction %v4float None %317
%318 = OpFunctionParameter %_ptr_Function_v2float
%319 = OpLabel
%main = OpFunction %v4float None %316
%317 = OpFunctionParameter %_ptr_Function_v2float
%318 = OpLabel
%_0_ok = OpVariable %_ptr_Function_bool Function
%_1_m1 = OpVariable %_ptr_Function_mat2v2float Function
%_2_m3 = OpVariable %_ptr_Function_mat2v2float Function
@ -524,299 +513,289 @@ OpFunctionEnd
%_6_m9 = OpVariable %_ptr_Function_mat3v3float Function
%_7_m10 = OpVariable %_ptr_Function_mat4v4float Function
%_8_m11 = OpVariable %_ptr_Function_mat4v4float Function
%550 = OpVariable %_ptr_Function_v4float Function
%539 = OpVariable %_ptr_Function_v4float Function
OpStore %_0_ok %true
%322 = OpCompositeConstruct %mat2v2float %37 %38
OpStore %_1_m1 %322
%323 = OpLoad %bool %_0_ok
OpSelectionMerge %325 None
OpBranchConditional %323 %324 %325
%324 = OpLabel
%326 = OpLoad %mat2v2float %_1_m1
%327 = OpCompositeExtract %v2float %326 0
%328 = OpCompositeExtract %v2float %322 0
%329 = OpFOrdEqual %v2bool %327 %328
%330 = OpAll %bool %329
%331 = OpCompositeExtract %v2float %326 1
%332 = OpCompositeExtract %v2float %322 1
%333 = OpFOrdEqual %v2bool %331 %332
%334 = OpAll %bool %333
%335 = OpLogicalAnd %bool %330 %334
OpBranch %325
%325 = OpLabel
%336 = OpPhi %bool %false %319 %335 %324
OpStore %_0_ok %336
%338 = OpLoad %mat2v2float %_1_m1
OpStore %_2_m3 %338
%339 = OpLoad %bool %_0_ok
OpSelectionMerge %341 None
OpBranchConditional %339 %340 %341
%340 = OpLabel
%342 = OpLoad %mat2v2float %_2_m3
%343 = OpCompositeExtract %v2float %342 0
%344 = OpCompositeExtract %v2float %322 0
%345 = OpFOrdEqual %v2bool %343 %344
%346 = OpAll %bool %345
%347 = OpCompositeExtract %v2float %342 1
%348 = OpCompositeExtract %v2float %322 1
%349 = OpFOrdEqual %v2bool %347 %348
%350 = OpAll %bool %349
%351 = OpLogicalAnd %bool %346 %350
OpBranch %341
%341 = OpLabel
%352 = OpPhi %bool %false %325 %351 %340
OpStore %_0_ok %352
%354 = OpCompositeConstruct %mat2v2float %75 %76
OpStore %_3_m4 %354
%355 = OpLoad %bool %_0_ok
OpSelectionMerge %357 None
OpBranchConditional %355 %356 %357
%356 = OpLabel
%358 = OpLoad %mat2v2float %_3_m4
%359 = OpCompositeConstruct %mat2v2float %75 %76
%360 = OpCompositeExtract %v2float %358 0
%361 = OpCompositeExtract %v2float %359 0
%362 = OpFOrdEqual %v2bool %360 %361
%363 = OpAll %bool %362
%364 = OpCompositeExtract %v2float %358 1
%365 = OpCompositeExtract %v2float %359 1
%366 = OpFOrdEqual %v2bool %364 %365
%367 = OpAll %bool %366
%368 = OpLogicalAnd %bool %363 %367
OpBranch %357
%357 = OpLabel
%369 = OpPhi %bool %false %341 %368 %356
OpStore %_0_ok %369
%370 = OpLoad %mat2v2float %_2_m3
%371 = OpLoad %mat2v2float %_3_m4
%372 = OpMatrixTimesMatrix %mat2v2float %370 %371
OpStore %_2_m3 %372
%373 = OpLoad %bool %_0_ok
OpSelectionMerge %375 None
OpBranchConditional %373 %374 %375
%374 = OpLabel
%376 = OpLoad %mat2v2float %_2_m3
%377 = OpCompositeConstruct %mat2v2float %102 %103
%378 = OpCompositeExtract %v2float %376 0
%379 = OpCompositeExtract %v2float %377 0
OpStore %_1_m1 %39
%321 = OpLoad %bool %_0_ok
OpSelectionMerge %323 None
OpBranchConditional %321 %322 %323
%322 = OpLabel
%324 = OpLoad %mat2v2float %_1_m1
%325 = OpCompositeExtract %v2float %324 0
%326 = OpCompositeExtract %v2float %39 0
%327 = OpFOrdEqual %v2bool %325 %326
%328 = OpAll %bool %327
%329 = OpCompositeExtract %v2float %324 1
%330 = OpCompositeExtract %v2float %39 1
%331 = OpFOrdEqual %v2bool %329 %330
%332 = OpAll %bool %331
%333 = OpLogicalAnd %bool %328 %332
OpBranch %323
%323 = OpLabel
%334 = OpPhi %bool %false %318 %333 %322
OpStore %_0_ok %334
%336 = OpLoad %mat2v2float %_1_m1
OpStore %_2_m3 %336
%337 = OpLoad %bool %_0_ok
OpSelectionMerge %339 None
OpBranchConditional %337 %338 %339
%338 = OpLabel
%340 = OpLoad %mat2v2float %_2_m3
%341 = OpCompositeExtract %v2float %340 0
%342 = OpCompositeExtract %v2float %39 0
%343 = OpFOrdEqual %v2bool %341 %342
%344 = OpAll %bool %343
%345 = OpCompositeExtract %v2float %340 1
%346 = OpCompositeExtract %v2float %39 1
%347 = OpFOrdEqual %v2bool %345 %346
%348 = OpAll %bool %347
%349 = OpLogicalAnd %bool %344 %348
OpBranch %339
%339 = OpLabel
%350 = OpPhi %bool %false %323 %349 %338
OpStore %_0_ok %350
%352 = OpCompositeConstruct %mat2v2float %75 %76
OpStore %_3_m4 %352
%353 = OpLoad %bool %_0_ok
OpSelectionMerge %355 None
OpBranchConditional %353 %354 %355
%354 = OpLabel
%356 = OpLoad %mat2v2float %_3_m4
%357 = OpCompositeExtract %v2float %356 0
%358 = OpCompositeExtract %v2float %81 0
%359 = OpFOrdEqual %v2bool %357 %358
%360 = OpAll %bool %359
%361 = OpCompositeExtract %v2float %356 1
%362 = OpCompositeExtract %v2float %81 1
%363 = OpFOrdEqual %v2bool %361 %362
%364 = OpAll %bool %363
%365 = OpLogicalAnd %bool %360 %364
OpBranch %355
%355 = OpLabel
%366 = OpPhi %bool %false %339 %365 %354
OpStore %_0_ok %366
%367 = OpLoad %mat2v2float %_2_m3
%368 = OpLoad %mat2v2float %_3_m4
%369 = OpMatrixTimesMatrix %mat2v2float %367 %368
OpStore %_2_m3 %369
%370 = OpLoad %bool %_0_ok
OpSelectionMerge %372 None
OpBranchConditional %370 %371 %372
%371 = OpLabel
%373 = OpLoad %mat2v2float %_2_m3
%374 = OpCompositeExtract %v2float %373 0
%375 = OpCompositeExtract %v2float %104 0
%376 = OpFOrdEqual %v2bool %374 %375
%377 = OpAll %bool %376
%378 = OpCompositeExtract %v2float %373 1
%379 = OpCompositeExtract %v2float %104 1
%380 = OpFOrdEqual %v2bool %378 %379
%381 = OpAll %bool %380
%382 = OpCompositeExtract %v2float %376 1
%383 = OpCompositeExtract %v2float %377 1
%384 = OpFOrdEqual %v2bool %382 %383
%385 = OpAll %bool %384
%386 = OpLogicalAnd %bool %381 %385
OpBranch %375
%375 = OpLabel
%387 = OpPhi %bool %false %357 %386 %374
OpStore %_0_ok %387
%389 = OpAccessChain %_ptr_Function_v2float %_1_m1 %int_1
%390 = OpLoad %v2float %389
%391 = OpCompositeExtract %float %390 1
%393 = OpCompositeConstruct %v2float %391 %float_0
%394 = OpCompositeConstruct %v2float %float_0 %391
%392 = OpCompositeConstruct %mat2v2float %393 %394
OpStore %_4_m5 %392
%395 = OpLoad %bool %_0_ok
OpSelectionMerge %397 None
OpBranchConditional %395 %396 %397
%396 = OpLabel
%398 = OpLoad %mat2v2float %_4_m5
%399 = OpCompositeConstruct %mat2v2float %128 %129
%400 = OpCompositeExtract %v2float %398 0
%401 = OpCompositeExtract %v2float %399 0
%402 = OpFOrdEqual %v2bool %400 %401
%403 = OpAll %bool %402
%404 = OpCompositeExtract %v2float %398 1
%405 = OpCompositeExtract %v2float %399 1
%406 = OpFOrdEqual %v2bool %404 %405
%407 = OpAll %bool %406
%408 = OpLogicalAnd %bool %403 %407
OpBranch %397
%397 = OpLabel
%409 = OpPhi %bool %false %375 %408 %396
OpStore %_0_ok %409
%410 = OpLoad %mat2v2float %_1_m1
%411 = OpLoad %mat2v2float %_4_m5
%412 = OpCompositeExtract %v2float %410 0
%413 = OpCompositeExtract %v2float %411 0
%414 = OpFAdd %v2float %412 %413
%415 = OpCompositeExtract %v2float %410 1
%416 = OpCompositeExtract %v2float %411 1
%417 = OpFAdd %v2float %415 %416
%418 = OpCompositeConstruct %mat2v2float %414 %417
OpStore %_1_m1 %418
%419 = OpLoad %bool %_0_ok
OpSelectionMerge %421 None
OpBranchConditional %419 %420 %421
%420 = OpLabel
%422 = OpLoad %mat2v2float %_1_m1
%423 = OpCompositeConstruct %mat2v2float %156 %157
%424 = OpCompositeExtract %v2float %422 0
%425 = OpCompositeExtract %v2float %423 0
%426 = OpFOrdEqual %v2bool %424 %425
%427 = OpAll %bool %426
%428 = OpCompositeExtract %v2float %422 1
%429 = OpCompositeExtract %v2float %423 1
%430 = OpFOrdEqual %v2bool %428 %429
%431 = OpAll %bool %430
%432 = OpLogicalAnd %bool %427 %431
OpBranch %421
%421 = OpLabel
%433 = OpPhi %bool %false %397 %432 %420
OpStore %_0_ok %433
%435 = OpCompositeConstruct %mat2v2float %171 %172
OpStore %_5_m7 %435
%436 = OpLoad %bool %_0_ok
OpSelectionMerge %438 None
OpBranchConditional %436 %437 %438
%437 = OpLabel
%439 = OpLoad %mat2v2float %_5_m7
%440 = OpCompositeExtract %v2float %439 0
%441 = OpCompositeExtract %v2float %435 0
%442 = OpFOrdEqual %v2bool %440 %441
%443 = OpAll %bool %442
%444 = OpCompositeExtract %v2float %439 1
%445 = OpCompositeExtract %v2float %435 1
%446 = OpFOrdEqual %v2bool %444 %445
%447 = OpAll %bool %446
%448 = OpLogicalAnd %bool %443 %447
OpBranch %438
%438 = OpLabel
%449 = OpPhi %bool %false %421 %448 %437
OpStore %_0_ok %449
%451 = OpCompositeConstruct %mat3v3float %194 %195 %196
OpStore %_6_m9 %451
%452 = OpLoad %bool %_0_ok
OpSelectionMerge %454 None
OpBranchConditional %452 %453 %454
%453 = OpLabel
%455 = OpLoad %mat3v3float %_6_m9
%456 = OpCompositeConstruct %mat3v3float %194 %195 %196
%457 = OpCompositeExtract %v3float %455 0
%458 = OpCompositeExtract %v3float %456 0
%459 = OpFOrdEqual %v3bool %457 %458
%460 = OpAll %bool %459
%461 = OpCompositeExtract %v3float %455 1
%462 = OpCompositeExtract %v3float %456 1
%463 = OpFOrdEqual %v3bool %461 %462
%464 = OpAll %bool %463
%465 = OpLogicalAnd %bool %460 %464
%466 = OpCompositeExtract %v3float %455 2
%467 = OpCompositeExtract %v3float %456 2
%468 = OpFOrdEqual %v3bool %466 %467
%469 = OpAll %bool %468
%470 = OpLogicalAnd %bool %465 %469
OpBranch %454
%454 = OpLabel
%471 = OpPhi %bool %false %438 %470 %453
OpStore %_0_ok %471
%473 = OpCompositeConstruct %mat4v4float %223 %224 %225 %226
OpStore %_7_m10 %473
%474 = OpLoad %bool %_0_ok
OpSelectionMerge %476 None
OpBranchConditional %474 %475 %476
%475 = OpLabel
%477 = OpLoad %mat4v4float %_7_m10
%478 = OpCompositeConstruct %mat4v4float %223 %224 %225 %226
%479 = OpCompositeExtract %v4float %477 0
%480 = OpCompositeExtract %v4float %478 0
%382 = OpLogicalAnd %bool %377 %381
OpBranch %372
%372 = OpLabel
%383 = OpPhi %bool %false %355 %382 %371
OpStore %_0_ok %383
%385 = OpAccessChain %_ptr_Function_v2float %_1_m1 %int_1
%386 = OpLoad %v2float %385
%387 = OpCompositeExtract %float %386 1
%389 = OpCompositeConstruct %v2float %387 %float_0
%390 = OpCompositeConstruct %v2float %float_0 %387
%388 = OpCompositeConstruct %mat2v2float %389 %390
OpStore %_4_m5 %388
%391 = OpLoad %bool %_0_ok
OpSelectionMerge %393 None
OpBranchConditional %391 %392 %393
%392 = OpLabel
%394 = OpLoad %mat2v2float %_4_m5
%395 = OpCompositeExtract %v2float %394 0
%396 = OpCompositeExtract %v2float %130 0
%397 = OpFOrdEqual %v2bool %395 %396
%398 = OpAll %bool %397
%399 = OpCompositeExtract %v2float %394 1
%400 = OpCompositeExtract %v2float %130 1
%401 = OpFOrdEqual %v2bool %399 %400
%402 = OpAll %bool %401
%403 = OpLogicalAnd %bool %398 %402
OpBranch %393
%393 = OpLabel
%404 = OpPhi %bool %false %372 %403 %392
OpStore %_0_ok %404
%405 = OpLoad %mat2v2float %_1_m1
%406 = OpLoad %mat2v2float %_4_m5
%407 = OpCompositeExtract %v2float %405 0
%408 = OpCompositeExtract %v2float %406 0
%409 = OpFAdd %v2float %407 %408
%410 = OpCompositeExtract %v2float %405 1
%411 = OpCompositeExtract %v2float %406 1
%412 = OpFAdd %v2float %410 %411
%413 = OpCompositeConstruct %mat2v2float %409 %412
OpStore %_1_m1 %413
%414 = OpLoad %bool %_0_ok
OpSelectionMerge %416 None
OpBranchConditional %414 %415 %416
%415 = OpLabel
%417 = OpLoad %mat2v2float %_1_m1
%418 = OpCompositeExtract %v2float %417 0
%419 = OpCompositeExtract %v2float %158 0
%420 = OpFOrdEqual %v2bool %418 %419
%421 = OpAll %bool %420
%422 = OpCompositeExtract %v2float %417 1
%423 = OpCompositeExtract %v2float %158 1
%424 = OpFOrdEqual %v2bool %422 %423
%425 = OpAll %bool %424
%426 = OpLogicalAnd %bool %421 %425
OpBranch %416
%416 = OpLabel
%427 = OpPhi %bool %false %393 %426 %415
OpStore %_0_ok %427
OpStore %_5_m7 %173
%429 = OpLoad %bool %_0_ok
OpSelectionMerge %431 None
OpBranchConditional %429 %430 %431
%430 = OpLabel
%432 = OpLoad %mat2v2float %_5_m7
%433 = OpCompositeExtract %v2float %432 0
%434 = OpCompositeExtract %v2float %173 0
%435 = OpFOrdEqual %v2bool %433 %434
%436 = OpAll %bool %435
%437 = OpCompositeExtract %v2float %432 1
%438 = OpCompositeExtract %v2float %173 1
%439 = OpFOrdEqual %v2bool %437 %438
%440 = OpAll %bool %439
%441 = OpLogicalAnd %bool %436 %440
OpBranch %431
%431 = OpLabel
%442 = OpPhi %bool %false %416 %441 %430
OpStore %_0_ok %442
%444 = OpCompositeConstruct %mat3v3float %194 %195 %196
OpStore %_6_m9 %444
%445 = OpLoad %bool %_0_ok
OpSelectionMerge %447 None
OpBranchConditional %445 %446 %447
%446 = OpLabel
%448 = OpLoad %mat3v3float %_6_m9
%449 = OpCompositeExtract %v3float %448 0
%450 = OpCompositeExtract %v3float %201 0
%451 = OpFOrdEqual %v3bool %449 %450
%452 = OpAll %bool %451
%453 = OpCompositeExtract %v3float %448 1
%454 = OpCompositeExtract %v3float %201 1
%455 = OpFOrdEqual %v3bool %453 %454
%456 = OpAll %bool %455
%457 = OpLogicalAnd %bool %452 %456
%458 = OpCompositeExtract %v3float %448 2
%459 = OpCompositeExtract %v3float %201 2
%460 = OpFOrdEqual %v3bool %458 %459
%461 = OpAll %bool %460
%462 = OpLogicalAnd %bool %457 %461
OpBranch %447
%447 = OpLabel
%463 = OpPhi %bool %false %431 %462 %446
OpStore %_0_ok %463
%465 = OpCompositeConstruct %mat4v4float %223 %224 %225 %226
OpStore %_7_m10 %465
%466 = OpLoad %bool %_0_ok
OpSelectionMerge %468 None
OpBranchConditional %466 %467 %468
%467 = OpLabel
%469 = OpLoad %mat4v4float %_7_m10
%470 = OpCompositeExtract %v4float %469 0
%471 = OpCompositeExtract %v4float %231 0
%472 = OpFOrdEqual %v4bool %470 %471
%473 = OpAll %bool %472
%474 = OpCompositeExtract %v4float %469 1
%475 = OpCompositeExtract %v4float %231 1
%476 = OpFOrdEqual %v4bool %474 %475
%477 = OpAll %bool %476
%478 = OpLogicalAnd %bool %473 %477
%479 = OpCompositeExtract %v4float %469 2
%480 = OpCompositeExtract %v4float %231 2
%481 = OpFOrdEqual %v4bool %479 %480
%482 = OpAll %bool %481
%483 = OpCompositeExtract %v4float %477 1
%484 = OpCompositeExtract %v4float %478 1
%485 = OpFOrdEqual %v4bool %483 %484
%486 = OpAll %bool %485
%487 = OpLogicalAnd %bool %482 %486
%488 = OpCompositeExtract %v4float %477 2
%489 = OpCompositeExtract %v4float %478 2
%490 = OpFOrdEqual %v4bool %488 %489
%491 = OpAll %bool %490
%492 = OpLogicalAnd %bool %487 %491
%493 = OpCompositeExtract %v4float %477 3
%494 = OpCompositeExtract %v4float %478 3
%495 = OpFOrdEqual %v4bool %493 %494
%496 = OpAll %bool %495
%497 = OpLogicalAnd %bool %492 %496
OpBranch %476
%476 = OpLabel
%498 = OpPhi %bool %false %454 %497 %475
OpStore %_0_ok %498
%500 = OpCompositeConstruct %mat4v4float %255 %255 %255 %255
OpStore %_8_m11 %500
%501 = OpLoad %mat4v4float %_8_m11
%502 = OpLoad %mat4v4float %_7_m10
%503 = OpCompositeExtract %v4float %501 0
%504 = OpCompositeExtract %v4float %502 0
%505 = OpFSub %v4float %503 %504
%506 = OpCompositeExtract %v4float %501 1
%507 = OpCompositeExtract %v4float %502 1
%508 = OpFSub %v4float %506 %507
%509 = OpCompositeExtract %v4float %501 2
%510 = OpCompositeExtract %v4float %502 2
%511 = OpFSub %v4float %509 %510
%512 = OpCompositeExtract %v4float %501 3
%513 = OpCompositeExtract %v4float %502 3
%514 = OpFSub %v4float %512 %513
%515 = OpCompositeConstruct %mat4v4float %505 %508 %511 %514
OpStore %_8_m11 %515
%516 = OpLoad %bool %_0_ok
OpSelectionMerge %518 None
OpBranchConditional %516 %517 %518
%517 = OpLabel
%519 = OpLoad %mat4v4float %_8_m11
%520 = OpCompositeConstruct %mat4v4float %276 %277 %278 %279
%521 = OpCompositeExtract %v4float %519 0
%522 = OpCompositeExtract %v4float %520 0
%523 = OpFOrdEqual %v4bool %521 %522
%524 = OpAll %bool %523
%525 = OpCompositeExtract %v4float %519 1
%526 = OpCompositeExtract %v4float %520 1
%527 = OpFOrdEqual %v4bool %525 %526
%528 = OpAll %bool %527
%529 = OpLogicalAnd %bool %524 %528
%530 = OpCompositeExtract %v4float %519 2
%531 = OpCompositeExtract %v4float %520 2
%532 = OpFOrdEqual %v4bool %530 %531
%533 = OpAll %bool %532
%534 = OpLogicalAnd %bool %529 %533
%535 = OpCompositeExtract %v4float %519 3
%536 = OpCompositeExtract %v4float %520 3
%537 = OpFOrdEqual %v4bool %535 %536
%538 = OpAll %bool %537
%539 = OpLogicalAnd %bool %534 %538
OpBranch %518
%518 = OpLabel
%540 = OpPhi %bool %false %476 %539 %517
OpStore %_0_ok %540
%541 = OpLoad %bool %_0_ok
%483 = OpLogicalAnd %bool %478 %482
%484 = OpCompositeExtract %v4float %469 3
%485 = OpCompositeExtract %v4float %231 3
%486 = OpFOrdEqual %v4bool %484 %485
%487 = OpAll %bool %486
%488 = OpLogicalAnd %bool %483 %487
OpBranch %468
%468 = OpLabel
%489 = OpPhi %bool %false %447 %488 %467
OpStore %_0_ok %489
OpStore %_8_m11 %256
%491 = OpLoad %mat4v4float %_8_m11
%492 = OpLoad %mat4v4float %_7_m10
%493 = OpCompositeExtract %v4float %491 0
%494 = OpCompositeExtract %v4float %492 0
%495 = OpFSub %v4float %493 %494
%496 = OpCompositeExtract %v4float %491 1
%497 = OpCompositeExtract %v4float %492 1
%498 = OpFSub %v4float %496 %497
%499 = OpCompositeExtract %v4float %491 2
%500 = OpCompositeExtract %v4float %492 2
%501 = OpFSub %v4float %499 %500
%502 = OpCompositeExtract %v4float %491 3
%503 = OpCompositeExtract %v4float %492 3
%504 = OpFSub %v4float %502 %503
%505 = OpCompositeConstruct %mat4v4float %495 %498 %501 %504
OpStore %_8_m11 %505
%506 = OpLoad %bool %_0_ok
OpSelectionMerge %508 None
OpBranchConditional %506 %507 %508
%507 = OpLabel
%509 = OpLoad %mat4v4float %_8_m11
%510 = OpCompositeExtract %v4float %509 0
%511 = OpCompositeExtract %v4float %280 0
%512 = OpFOrdEqual %v4bool %510 %511
%513 = OpAll %bool %512
%514 = OpCompositeExtract %v4float %509 1
%515 = OpCompositeExtract %v4float %280 1
%516 = OpFOrdEqual %v4bool %514 %515
%517 = OpAll %bool %516
%518 = OpLogicalAnd %bool %513 %517
%519 = OpCompositeExtract %v4float %509 2
%520 = OpCompositeExtract %v4float %280 2
%521 = OpFOrdEqual %v4bool %519 %520
%522 = OpAll %bool %521
%523 = OpLogicalAnd %bool %518 %522
%524 = OpCompositeExtract %v4float %509 3
%525 = OpCompositeExtract %v4float %280 3
%526 = OpFOrdEqual %v4bool %524 %525
%527 = OpAll %bool %526
%528 = OpLogicalAnd %bool %523 %527
OpBranch %508
%508 = OpLabel
%529 = OpPhi %bool %false %468 %528 %507
OpStore %_0_ok %529
%530 = OpLoad %bool %_0_ok
OpSelectionMerge %532 None
OpBranchConditional %530 %531 %532
%531 = OpLabel
%533 = OpFunctionCall %bool %test_half_b
OpBranch %532
%532 = OpLabel
%534 = OpPhi %bool %false %508 %533 %531
OpSelectionMerge %536 None
OpBranchConditional %534 %535 %536
%535 = OpLabel
%537 = OpFunctionCall %bool %test_comma_b
OpBranch %536
%536 = OpLabel
%538 = OpPhi %bool %false %532 %537 %535
OpSelectionMerge %543 None
OpBranchConditional %541 %542 %543
OpBranchConditional %538 %541 %542
%541 = OpLabel
%544 = OpAccessChain %_ptr_Uniform_v4float %12 %int_0
%547 = OpLoad %v4float %544
OpStore %539 %547
OpBranch %543
%542 = OpLabel
%544 = OpFunctionCall %bool %test_half_b
%548 = OpAccessChain %_ptr_Uniform_v4float %12 %int_1
%549 = OpLoad %v4float %548
OpStore %539 %549
OpBranch %543
%543 = OpLabel
%545 = OpPhi %bool %false %518 %544 %542
OpSelectionMerge %547 None
OpBranchConditional %545 %546 %547
%546 = OpLabel
%548 = OpFunctionCall %bool %test_comma_b
OpBranch %547
%547 = OpLabel
%549 = OpPhi %bool %false %543 %548 %546
OpSelectionMerge %554 None
OpBranchConditional %549 %552 %553
%552 = OpLabel
%555 = OpAccessChain %_ptr_Uniform_v4float %12 %int_0
%558 = OpLoad %v4float %555
OpStore %550 %558
OpBranch %554
%553 = OpLabel
%559 = OpAccessChain %_ptr_Uniform_v4float %12 %int_1
%560 = OpLoad %v4float %559
OpStore %550 %560
OpBranch %554
%554 = OpLabel
%561 = OpLoad %v4float %550
OpReturnValue %561
%550 = OpLoad %v4float %539
OpReturnValue %550
OpFunctionEnd

View File

@ -44,32 +44,26 @@ OpDecorate %m23 RelaxedPrecision
OpDecorate %34 RelaxedPrecision
OpDecorate %38 RelaxedPrecision
OpDecorate %41 RelaxedPrecision
OpDecorate %42 RelaxedPrecision
OpDecorate %m24 RelaxedPrecision
OpDecorate %58 RelaxedPrecision
OpDecorate %61 RelaxedPrecision
OpDecorate %64 RelaxedPrecision
OpDecorate %65 RelaxedPrecision
OpDecorate %m32 RelaxedPrecision
OpDecorate %81 RelaxedPrecision
OpDecorate %84 RelaxedPrecision
OpDecorate %87 RelaxedPrecision
OpDecorate %88 RelaxedPrecision
OpDecorate %m34 RelaxedPrecision
OpDecorate %109 RelaxedPrecision
OpDecorate %113 RelaxedPrecision
OpDecorate %116 RelaxedPrecision
OpDecorate %117 RelaxedPrecision
OpDecorate %m42 RelaxedPrecision
OpDecorate %137 RelaxedPrecision
OpDecorate %140 RelaxedPrecision
OpDecorate %143 RelaxedPrecision
OpDecorate %144 RelaxedPrecision
OpDecorate %m43 RelaxedPrecision
OpDecorate %169 RelaxedPrecision
OpDecorate %174 RelaxedPrecision
OpDecorate %177 RelaxedPrecision
OpDecorate %178 RelaxedPrecision
OpDecorate %m22 RelaxedPrecision
OpDecorate %202 RelaxedPrecision
OpDecorate %203 RelaxedPrecision
@ -85,7 +79,6 @@ OpDecorate %229 RelaxedPrecision
OpDecorate %232 RelaxedPrecision
OpDecorate %234 RelaxedPrecision
OpDecorate %253 RelaxedPrecision
OpDecorate %256 RelaxedPrecision
OpDecorate %257 RelaxedPrecision
OpDecorate %258 RelaxedPrecision
OpDecorate %259 RelaxedPrecision
@ -95,9 +88,7 @@ OpDecorate %262 RelaxedPrecision
OpDecorate %263 RelaxedPrecision
OpDecorate %264 RelaxedPrecision
OpDecorate %267 RelaxedPrecision
OpDecorate %270 RelaxedPrecision
OpDecorate %281 RelaxedPrecision
OpDecorate %283 RelaxedPrecision
OpDecorate %284 RelaxedPrecision
OpDecorate %285 RelaxedPrecision
OpDecorate %286 RelaxedPrecision
@ -110,9 +101,7 @@ OpDecorate %292 RelaxedPrecision
OpDecorate %293 RelaxedPrecision
OpDecorate %294 RelaxedPrecision
OpDecorate %297 RelaxedPrecision
OpDecorate %302 RelaxedPrecision
OpDecorate %318 RelaxedPrecision
OpDecorate %320 RelaxedPrecision
OpDecorate %321 RelaxedPrecision
OpDecorate %322 RelaxedPrecision
OpDecorate %323 RelaxedPrecision
@ -122,23 +111,22 @@ OpDecorate %326 RelaxedPrecision
OpDecorate %327 RelaxedPrecision
OpDecorate %328 RelaxedPrecision
OpDecorate %331 RelaxedPrecision
OpDecorate %335 RelaxedPrecision
OpDecorate %346 RelaxedPrecision
OpDecorate %353 RelaxedPrecision
OpDecorate %370 RelaxedPrecision
OpDecorate %387 RelaxedPrecision
OpDecorate %409 RelaxedPrecision
OpDecorate %431 RelaxedPrecision
OpDecorate %458 RelaxedPrecision
OpDecorate %487 RelaxedPrecision
OpDecorate %506 RelaxedPrecision
OpDecorate %535 RelaxedPrecision
OpDecorate %562 RelaxedPrecision
OpDecorate %591 RelaxedPrecision
OpDecorate %606 RelaxedPrecision
OpDecorate %620 RelaxedPrecision
OpDecorate %623 RelaxedPrecision
OpDecorate %624 RelaxedPrecision
OpDecorate %369 RelaxedPrecision
OpDecorate %385 RelaxedPrecision
OpDecorate %406 RelaxedPrecision
OpDecorate %427 RelaxedPrecision
OpDecorate %453 RelaxedPrecision
OpDecorate %481 RelaxedPrecision
OpDecorate %500 RelaxedPrecision
OpDecorate %528 RelaxedPrecision
OpDecorate %553 RelaxedPrecision
OpDecorate %580 RelaxedPrecision
OpDecorate %594 RelaxedPrecision
OpDecorate %608 RelaxedPrecision
OpDecorate %611 RelaxedPrecision
OpDecorate %612 RelaxedPrecision
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
@ -165,18 +153,21 @@ OpDecorate %624 RelaxedPrecision
%35 = OpConstantComposite %v3float %float_2 %float_0 %float_0
%36 = OpConstantComposite %v3float %float_0 %float_2 %float_0
%false = OpConstantFalse %bool
%42 = OpConstantComposite %mat2v3float %35 %36
%v3bool = OpTypeVector %bool 3
%mat2v4float = OpTypeMatrix %v4float 2
%_ptr_Function_mat2v4float = OpTypePointer Function %mat2v4float
%float_3 = OpConstant %float 3
%59 = OpConstantComposite %v4float %float_3 %float_0 %float_0 %float_0
%60 = OpConstantComposite %v4float %float_0 %float_3 %float_0 %float_0
%65 = OpConstantComposite %mat2v4float %59 %60
%v4bool = OpTypeVector %bool 4
%mat3v2float = OpTypeMatrix %v2float 3
%_ptr_Function_mat3v2float = OpTypePointer Function %mat3v2float
%float_4 = OpConstant %float 4
%82 = OpConstantComposite %v2float %float_4 %float_0
%83 = OpConstantComposite %v2float %float_0 %float_4
%88 = OpConstantComposite %mat3v2float %82 %83 %20
%v2bool = OpTypeVector %bool 2
%mat3v4float = OpTypeMatrix %v4float 3
%_ptr_Function_mat3v4float = OpTypePointer Function %mat3v4float
@ -184,11 +175,13 @@ OpDecorate %624 RelaxedPrecision
%110 = OpConstantComposite %v4float %float_5 %float_0 %float_0 %float_0
%111 = OpConstantComposite %v4float %float_0 %float_5 %float_0 %float_0
%112 = OpConstantComposite %v4float %float_0 %float_0 %float_5 %float_0
%117 = OpConstantComposite %mat3v4float %110 %111 %112
%mat4v2float = OpTypeMatrix %v2float 4
%_ptr_Function_mat4v2float = OpTypePointer Function %mat4v2float
%float_6 = OpConstant %float 6
%138 = OpConstantComposite %v2float %float_6 %float_0
%139 = OpConstantComposite %v2float %float_0 %float_6
%144 = OpConstantComposite %mat4v2float %138 %139 %20 %20
%mat4v3float = OpTypeMatrix %v3float 4
%_ptr_Function_mat4v3float = OpTypePointer Function %mat4v3float
%float_7 = OpConstant %float 7
@ -196,6 +189,7 @@ OpDecorate %624 RelaxedPrecision
%171 = OpConstantComposite %v3float %float_0 %float_7 %float_0
%172 = OpConstantComposite %v3float %float_0 %float_0 %float_7
%173 = OpConstantComposite %v3float %float_0 %float_0 %float_0
%178 = OpConstantComposite %mat4v3float %170 %171 %172 %173
%mat2v2float = OpTypeMatrix %v2float 2
%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
%float_8 = OpConstant %float 8
@ -209,17 +203,23 @@ OpDecorate %624 RelaxedPrecision
%237 = OpConstantComposite %v3float %float_0 %float_0 %float_35
%float_1 = OpConstant %float 1
%255 = OpConstantComposite %v3float %float_1 %float_1 %float_1
%256 = OpConstantComposite %mat2v3float %255 %255
%268 = OpConstantComposite %v3float %float_3 %float_1 %float_1
%269 = OpConstantComposite %v3float %float_1 %float_3 %float_1
%270 = OpConstantComposite %mat2v3float %268 %269
%282 = OpConstantComposite %v2float %float_2 %float_2
%283 = OpConstantComposite %mat3v2float %282 %282 %282
%float_n2 = OpConstant %float -2
%299 = OpConstantComposite %v2float %float_2 %float_n2
%300 = OpConstantComposite %v2float %float_n2 %float_2
%301 = OpConstantComposite %v2float %float_n2 %float_n2
%302 = OpConstantComposite %mat3v2float %299 %300 %301
%319 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_4
%320 = OpConstantComposite %mat2v4float %319 %319
%float_0_75 = OpConstant %float 0.75
%333 = OpConstantComposite %v4float %float_0_75 %float_0 %float_0 %float_0
%334 = OpConstantComposite %v4float %float_0 %float_0_75 %float_0 %float_0
%335 = OpConstantComposite %mat2v4float %333 %334
%347 = OpTypeFunction %v4float %_ptr_Function_v2float
%_ptr_Function_v4float = OpTypePointer Function %v4float
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
@ -253,7 +253,6 @@ OpSelectionMerge %40 None
OpBranchConditional %38 %39 %40
%39 = OpLabel
%41 = OpLoad %mat2v3float %m23
%42 = OpCompositeConstruct %mat2v3float %35 %36
%44 = OpCompositeExtract %v3float %41 0
%45 = OpCompositeExtract %v3float %42 0
%46 = OpFOrdEqual %v3bool %44 %45
@ -274,7 +273,6 @@ OpSelectionMerge %63 None
OpBranchConditional %61 %62 %63
%62 = OpLabel
%64 = OpLoad %mat2v4float %m24
%65 = OpCompositeConstruct %mat2v4float %59 %60
%67 = OpCompositeExtract %v4float %64 0
%68 = OpCompositeExtract %v4float %65 0
%69 = OpFOrdEqual %v4bool %67 %68
@ -295,7 +293,6 @@ OpSelectionMerge %86 None
OpBranchConditional %84 %85 %86
%85 = OpLabel
%87 = OpLoad %mat3v2float %m32
%88 = OpCompositeConstruct %mat3v2float %82 %83 %20
%90 = OpCompositeExtract %v2float %87 0
%91 = OpCompositeExtract %v2float %88 0
%92 = OpFOrdEqual %v2bool %90 %91
@ -321,7 +318,6 @@ OpSelectionMerge %115 None
OpBranchConditional %113 %114 %115
%114 = OpLabel
%116 = OpLoad %mat3v4float %m34
%117 = OpCompositeConstruct %mat3v4float %110 %111 %112
%118 = OpCompositeExtract %v4float %116 0
%119 = OpCompositeExtract %v4float %117 0
%120 = OpFOrdEqual %v4bool %118 %119
@ -347,7 +343,6 @@ OpSelectionMerge %142 None
OpBranchConditional %140 %141 %142
%141 = OpLabel
%143 = OpLoad %mat4v2float %m42
%144 = OpCompositeConstruct %mat4v2float %138 %139 %20 %20
%145 = OpCompositeExtract %v2float %143 0
%146 = OpCompositeExtract %v2float %144 0
%147 = OpFOrdEqual %v2bool %145 %146
@ -378,7 +373,6 @@ OpSelectionMerge %176 None
OpBranchConditional %174 %175 %176
%175 = OpLabel
%177 = OpLoad %mat4v3float %m43
%178 = OpCompositeConstruct %mat4v3float %170 %171 %172 %173
%179 = OpCompositeExtract %v3float %177 0
%180 = OpCompositeExtract %v3float %178 0
%181 = OpFOrdEqual %v3bool %179 %180
@ -454,7 +448,6 @@ OpBranch %231
%252 = OpPhi %bool %false %207 %251 %230
OpStore %ok %252
%253 = OpLoad %mat2v3float %m23
%256 = OpCompositeConstruct %mat2v3float %255 %255
%257 = OpCompositeExtract %v3float %253 0
%258 = OpCompositeExtract %v3float %256 0
%259 = OpFAdd %v3float %257 %258
@ -468,7 +461,6 @@ OpSelectionMerge %266 None
OpBranchConditional %264 %265 %266
%265 = OpLabel
%267 = OpLoad %mat2v3float %m23
%270 = OpCompositeConstruct %mat2v3float %268 %269
%271 = OpCompositeExtract %v3float %267 0
%272 = OpCompositeExtract %v3float %270 0
%273 = OpFOrdEqual %v3bool %271 %272
@ -483,7 +475,6 @@ OpBranch %266
%280 = OpPhi %bool %false %231 %279 %265
OpStore %ok %280
%281 = OpLoad %mat3v2float %m32
%283 = OpCompositeConstruct %mat3v2float %282 %282 %282
%284 = OpCompositeExtract %v2float %281 0
%285 = OpCompositeExtract %v2float %283 0
%286 = OpFSub %v2float %284 %285
@ -500,7 +491,6 @@ OpSelectionMerge %296 None
OpBranchConditional %294 %295 %296
%295 = OpLabel
%297 = OpLoad %mat3v2float %m32
%302 = OpCompositeConstruct %mat3v2float %299 %300 %301
%303 = OpCompositeExtract %v2float %297 0
%304 = OpCompositeExtract %v2float %302 0
%305 = OpFOrdEqual %v2bool %303 %304
@ -520,7 +510,6 @@ OpBranch %296
%317 = OpPhi %bool %false %266 %316 %295
OpStore %ok %317
%318 = OpLoad %mat2v4float %m24
%320 = OpCompositeConstruct %mat2v4float %319 %319
%321 = OpCompositeExtract %v4float %318 0
%322 = OpCompositeExtract %v4float %320 0
%323 = OpFDiv %v4float %321 %322
@ -534,7 +523,6 @@ OpSelectionMerge %330 None
OpBranchConditional %328 %329 %330
%329 = OpLabel
%331 = OpLoad %mat2v4float %m24
%335 = OpCompositeConstruct %mat2v4float %333 %334
%336 = OpCompositeExtract %v4float %331 0
%337 = OpCompositeExtract %v4float %335 0
%338 = OpFOrdEqual %v4bool %336 %337
@ -563,7 +551,7 @@ OpFunctionEnd
%_6_m43 = OpVariable %_ptr_Function_mat4v3float Function
%_7_m22 = OpVariable %_ptr_Function_mat2v2float Function
%_8_m33 = OpVariable %_ptr_Function_mat3v3float Function
%611 = OpVariable %_ptr_Function_v4float Function
%599 = OpVariable %_ptr_Function_v4float Function
OpStore %_0_ok %true
%352 = OpCompositeConstruct %mat2v3float %35 %36
OpStore %_1_m23 %352
@ -572,322 +560,310 @@ OpSelectionMerge %355 None
OpBranchConditional %353 %354 %355
%354 = OpLabel
%356 = OpLoad %mat2v3float %_1_m23
%357 = OpCompositeConstruct %mat2v3float %35 %36
%358 = OpCompositeExtract %v3float %356 0
%359 = OpCompositeExtract %v3float %357 0
%360 = OpFOrdEqual %v3bool %358 %359
%361 = OpAll %bool %360
%362 = OpCompositeExtract %v3float %356 1
%363 = OpCompositeExtract %v3float %357 1
%364 = OpFOrdEqual %v3bool %362 %363
%365 = OpAll %bool %364
%366 = OpLogicalAnd %bool %361 %365
%357 = OpCompositeExtract %v3float %356 0
%358 = OpCompositeExtract %v3float %42 0
%359 = OpFOrdEqual %v3bool %357 %358
%360 = OpAll %bool %359
%361 = OpCompositeExtract %v3float %356 1
%362 = OpCompositeExtract %v3float %42 1
%363 = OpFOrdEqual %v3bool %361 %362
%364 = OpAll %bool %363
%365 = OpLogicalAnd %bool %360 %364
OpBranch %355
%355 = OpLabel
%367 = OpPhi %bool %false %349 %366 %354
OpStore %_0_ok %367
%369 = OpCompositeConstruct %mat2v4float %59 %60
OpStore %_2_m24 %369
%370 = OpLoad %bool %_0_ok
OpSelectionMerge %372 None
OpBranchConditional %370 %371 %372
%366 = OpPhi %bool %false %349 %365 %354
OpStore %_0_ok %366
%368 = OpCompositeConstruct %mat2v4float %59 %60
OpStore %_2_m24 %368
%369 = OpLoad %bool %_0_ok
OpSelectionMerge %371 None
OpBranchConditional %369 %370 %371
%370 = OpLabel
%372 = OpLoad %mat2v4float %_2_m24
%373 = OpCompositeExtract %v4float %372 0
%374 = OpCompositeExtract %v4float %65 0
%375 = OpFOrdEqual %v4bool %373 %374
%376 = OpAll %bool %375
%377 = OpCompositeExtract %v4float %372 1
%378 = OpCompositeExtract %v4float %65 1
%379 = OpFOrdEqual %v4bool %377 %378
%380 = OpAll %bool %379
%381 = OpLogicalAnd %bool %376 %380
OpBranch %371
%371 = OpLabel
%373 = OpLoad %mat2v4float %_2_m24
%374 = OpCompositeConstruct %mat2v4float %59 %60
%375 = OpCompositeExtract %v4float %373 0
%376 = OpCompositeExtract %v4float %374 0
%377 = OpFOrdEqual %v4bool %375 %376
%378 = OpAll %bool %377
%379 = OpCompositeExtract %v4float %373 1
%380 = OpCompositeExtract %v4float %374 1
%381 = OpFOrdEqual %v4bool %379 %380
%382 = OpAll %bool %381
%383 = OpLogicalAnd %bool %378 %382
OpBranch %372
%372 = OpLabel
%384 = OpPhi %bool %false %355 %383 %371
OpStore %_0_ok %384
%386 = OpCompositeConstruct %mat3v2float %82 %83 %20
OpStore %_3_m32 %386
%387 = OpLoad %bool %_0_ok
OpSelectionMerge %389 None
OpBranchConditional %387 %388 %389
%388 = OpLabel
%390 = OpLoad %mat3v2float %_3_m32
%391 = OpCompositeConstruct %mat3v2float %82 %83 %20
%392 = OpCompositeExtract %v2float %390 0
%393 = OpCompositeExtract %v2float %391 0
%394 = OpFOrdEqual %v2bool %392 %393
%395 = OpAll %bool %394
%396 = OpCompositeExtract %v2float %390 1
%397 = OpCompositeExtract %v2float %391 1
%398 = OpFOrdEqual %v2bool %396 %397
%399 = OpAll %bool %398
%400 = OpLogicalAnd %bool %395 %399
%401 = OpCompositeExtract %v2float %390 2
%402 = OpCompositeExtract %v2float %391 2
%403 = OpFOrdEqual %v2bool %401 %402
%404 = OpAll %bool %403
%405 = OpLogicalAnd %bool %400 %404
OpBranch %389
%389 = OpLabel
%406 = OpPhi %bool %false %372 %405 %388
OpStore %_0_ok %406
%408 = OpCompositeConstruct %mat3v4float %110 %111 %112
OpStore %_4_m34 %408
%409 = OpLoad %bool %_0_ok
OpSelectionMerge %411 None
OpBranchConditional %409 %410 %411
%410 = OpLabel
%412 = OpLoad %mat3v4float %_4_m34
%413 = OpCompositeConstruct %mat3v4float %110 %111 %112
%414 = OpCompositeExtract %v4float %412 0
%415 = OpCompositeExtract %v4float %413 0
%382 = OpPhi %bool %false %355 %381 %370
OpStore %_0_ok %382
%384 = OpCompositeConstruct %mat3v2float %82 %83 %20
OpStore %_3_m32 %384
%385 = OpLoad %bool %_0_ok
OpSelectionMerge %387 None
OpBranchConditional %385 %386 %387
%386 = OpLabel
%388 = OpLoad %mat3v2float %_3_m32
%389 = OpCompositeExtract %v2float %388 0
%390 = OpCompositeExtract %v2float %88 0
%391 = OpFOrdEqual %v2bool %389 %390
%392 = OpAll %bool %391
%393 = OpCompositeExtract %v2float %388 1
%394 = OpCompositeExtract %v2float %88 1
%395 = OpFOrdEqual %v2bool %393 %394
%396 = OpAll %bool %395
%397 = OpLogicalAnd %bool %392 %396
%398 = OpCompositeExtract %v2float %388 2
%399 = OpCompositeExtract %v2float %88 2
%400 = OpFOrdEqual %v2bool %398 %399
%401 = OpAll %bool %400
%402 = OpLogicalAnd %bool %397 %401
OpBranch %387
%387 = OpLabel
%403 = OpPhi %bool %false %371 %402 %386
OpStore %_0_ok %403
%405 = OpCompositeConstruct %mat3v4float %110 %111 %112
OpStore %_4_m34 %405
%406 = OpLoad %bool %_0_ok
OpSelectionMerge %408 None
OpBranchConditional %406 %407 %408
%407 = OpLabel
%409 = OpLoad %mat3v4float %_4_m34
%410 = OpCompositeExtract %v4float %409 0
%411 = OpCompositeExtract %v4float %117 0
%412 = OpFOrdEqual %v4bool %410 %411
%413 = OpAll %bool %412
%414 = OpCompositeExtract %v4float %409 1
%415 = OpCompositeExtract %v4float %117 1
%416 = OpFOrdEqual %v4bool %414 %415
%417 = OpAll %bool %416
%418 = OpCompositeExtract %v4float %412 1
%419 = OpCompositeExtract %v4float %413 1
%420 = OpFOrdEqual %v4bool %418 %419
%421 = OpAll %bool %420
%422 = OpLogicalAnd %bool %417 %421
%423 = OpCompositeExtract %v4float %412 2
%424 = OpCompositeExtract %v4float %413 2
%425 = OpFOrdEqual %v4bool %423 %424
%426 = OpAll %bool %425
%427 = OpLogicalAnd %bool %422 %426
OpBranch %411
%411 = OpLabel
%428 = OpPhi %bool %false %389 %427 %410
OpStore %_0_ok %428
%430 = OpCompositeConstruct %mat4v2float %138 %139 %20 %20
OpStore %_5_m42 %430
%431 = OpLoad %bool %_0_ok
OpSelectionMerge %433 None
OpBranchConditional %431 %432 %433
%432 = OpLabel
%434 = OpLoad %mat4v2float %_5_m42
%435 = OpCompositeConstruct %mat4v2float %138 %139 %20 %20
%436 = OpCompositeExtract %v2float %434 0
%437 = OpCompositeExtract %v2float %435 0
%438 = OpFOrdEqual %v2bool %436 %437
%439 = OpAll %bool %438
%440 = OpCompositeExtract %v2float %434 1
%441 = OpCompositeExtract %v2float %435 1
%418 = OpLogicalAnd %bool %413 %417
%419 = OpCompositeExtract %v4float %409 2
%420 = OpCompositeExtract %v4float %117 2
%421 = OpFOrdEqual %v4bool %419 %420
%422 = OpAll %bool %421
%423 = OpLogicalAnd %bool %418 %422
OpBranch %408
%408 = OpLabel
%424 = OpPhi %bool %false %387 %423 %407
OpStore %_0_ok %424
%426 = OpCompositeConstruct %mat4v2float %138 %139 %20 %20
OpStore %_5_m42 %426
%427 = OpLoad %bool %_0_ok
OpSelectionMerge %429 None
OpBranchConditional %427 %428 %429
%428 = OpLabel
%430 = OpLoad %mat4v2float %_5_m42
%431 = OpCompositeExtract %v2float %430 0
%432 = OpCompositeExtract %v2float %144 0
%433 = OpFOrdEqual %v2bool %431 %432
%434 = OpAll %bool %433
%435 = OpCompositeExtract %v2float %430 1
%436 = OpCompositeExtract %v2float %144 1
%437 = OpFOrdEqual %v2bool %435 %436
%438 = OpAll %bool %437
%439 = OpLogicalAnd %bool %434 %438
%440 = OpCompositeExtract %v2float %430 2
%441 = OpCompositeExtract %v2float %144 2
%442 = OpFOrdEqual %v2bool %440 %441
%443 = OpAll %bool %442
%444 = OpLogicalAnd %bool %439 %443
%445 = OpCompositeExtract %v2float %434 2
%446 = OpCompositeExtract %v2float %435 2
%445 = OpCompositeExtract %v2float %430 3
%446 = OpCompositeExtract %v2float %144 3
%447 = OpFOrdEqual %v2bool %445 %446
%448 = OpAll %bool %447
%449 = OpLogicalAnd %bool %444 %448
%450 = OpCompositeExtract %v2float %434 3
%451 = OpCompositeExtract %v2float %435 3
%452 = OpFOrdEqual %v2bool %450 %451
%453 = OpAll %bool %452
%454 = OpLogicalAnd %bool %449 %453
OpBranch %433
%433 = OpLabel
%455 = OpPhi %bool %false %411 %454 %432
OpStore %_0_ok %455
%457 = OpCompositeConstruct %mat4v3float %170 %171 %172 %173
OpStore %_6_m43 %457
%458 = OpLoad %bool %_0_ok
OpSelectionMerge %460 None
OpBranchConditional %458 %459 %460
%459 = OpLabel
%461 = OpLoad %mat4v3float %_6_m43
%462 = OpCompositeConstruct %mat4v3float %170 %171 %172 %173
%463 = OpCompositeExtract %v3float %461 0
%464 = OpCompositeExtract %v3float %462 0
%465 = OpFOrdEqual %v3bool %463 %464
%466 = OpAll %bool %465
%467 = OpCompositeExtract %v3float %461 1
%468 = OpCompositeExtract %v3float %462 1
%469 = OpFOrdEqual %v3bool %467 %468
%470 = OpAll %bool %469
%471 = OpLogicalAnd %bool %466 %470
%472 = OpCompositeExtract %v3float %461 2
%473 = OpCompositeExtract %v3float %462 2
%474 = OpFOrdEqual %v3bool %472 %473
%475 = OpAll %bool %474
%476 = OpLogicalAnd %bool %471 %475
%477 = OpCompositeExtract %v3float %461 3
%478 = OpCompositeExtract %v3float %462 3
%479 = OpFOrdEqual %v3bool %477 %478
%480 = OpAll %bool %479
%481 = OpLogicalAnd %bool %476 %480
OpBranch %460
%460 = OpLabel
%482 = OpPhi %bool %false %433 %481 %459
OpStore %_0_ok %482
%484 = OpLoad %mat3v2float %_3_m32
%485 = OpLoad %mat2v3float %_1_m23
%486 = OpMatrixTimesMatrix %mat2v2float %484 %485
OpStore %_7_m22 %486
%487 = OpLoad %bool %_0_ok
OpSelectionMerge %489 None
OpBranchConditional %487 %488 %489
%488 = OpLabel
%490 = OpLoad %mat2v2float %_7_m22
%491 = OpCompositeConstruct %mat2v2float %211 %212
%492 = OpCompositeExtract %v2float %490 0
%493 = OpCompositeExtract %v2float %491 0
%494 = OpFOrdEqual %v2bool %492 %493
%495 = OpAll %bool %494
%496 = OpCompositeExtract %v2float %490 1
%497 = OpCompositeExtract %v2float %491 1
%498 = OpFOrdEqual %v2bool %496 %497
%499 = OpAll %bool %498
%500 = OpLogicalAnd %bool %495 %499
OpBranch %489
%489 = OpLabel
%501 = OpPhi %bool %false %460 %500 %488
OpStore %_0_ok %501
%503 = OpLoad %mat4v3float %_6_m43
%504 = OpLoad %mat3v4float %_4_m34
%505 = OpMatrixTimesMatrix %mat3v3float %503 %504
OpStore %_8_m33 %505
%506 = OpLoad %bool %_0_ok
OpSelectionMerge %508 None
OpBranchConditional %506 %507 %508
%507 = OpLabel
%509 = OpLoad %mat3v3float %_8_m33
%510 = OpCompositeConstruct %mat3v3float %235 %236 %237
%511 = OpCompositeExtract %v3float %509 0
%512 = OpCompositeExtract %v3float %510 0
%513 = OpFOrdEqual %v3bool %511 %512
%514 = OpAll %bool %513
%515 = OpCompositeExtract %v3float %509 1
%516 = OpCompositeExtract %v3float %510 1
%517 = OpFOrdEqual %v3bool %515 %516
%518 = OpAll %bool %517
%519 = OpLogicalAnd %bool %514 %518
%520 = OpCompositeExtract %v3float %509 2
%521 = OpCompositeExtract %v3float %510 2
%522 = OpFOrdEqual %v3bool %520 %521
%523 = OpAll %bool %522
%524 = OpLogicalAnd %bool %519 %523
OpBranch %508
%508 = OpLabel
%525 = OpPhi %bool %false %489 %524 %507
OpStore %_0_ok %525
%526 = OpLoad %mat2v3float %_1_m23
%527 = OpCompositeConstruct %mat2v3float %255 %255
%528 = OpCompositeExtract %v3float %526 0
%529 = OpCompositeExtract %v3float %527 0
%530 = OpFAdd %v3float %528 %529
%531 = OpCompositeExtract %v3float %526 1
%532 = OpCompositeExtract %v3float %527 1
%533 = OpFAdd %v3float %531 %532
%534 = OpCompositeConstruct %mat2v3float %530 %533
OpStore %_1_m23 %534
%535 = OpLoad %bool %_0_ok
OpSelectionMerge %537 None
OpBranchConditional %535 %536 %537
%536 = OpLabel
%538 = OpLoad %mat2v3float %_1_m23
%539 = OpCompositeConstruct %mat2v3float %268 %269
%540 = OpCompositeExtract %v3float %538 0
%541 = OpCompositeExtract %v3float %539 0
%542 = OpFOrdEqual %v3bool %540 %541
%543 = OpAll %bool %542
%544 = OpCompositeExtract %v3float %538 1
%545 = OpCompositeExtract %v3float %539 1
%546 = OpFOrdEqual %v3bool %544 %545
%547 = OpAll %bool %546
%548 = OpLogicalAnd %bool %543 %547
OpBranch %537
%537 = OpLabel
%549 = OpPhi %bool %false %508 %548 %536
OpStore %_0_ok %549
%550 = OpLoad %mat3v2float %_3_m32
%551 = OpCompositeConstruct %mat3v2float %282 %282 %282
%552 = OpCompositeExtract %v2float %550 0
%553 = OpCompositeExtract %v2float %551 0
%554 = OpFSub %v2float %552 %553
%555 = OpCompositeExtract %v2float %550 1
%556 = OpCompositeExtract %v2float %551 1
%557 = OpFSub %v2float %555 %556
%558 = OpCompositeExtract %v2float %550 2
%559 = OpCompositeExtract %v2float %551 2
%560 = OpFSub %v2float %558 %559
%561 = OpCompositeConstruct %mat3v2float %554 %557 %560
OpStore %_3_m32 %561
%562 = OpLoad %bool %_0_ok
OpSelectionMerge %564 None
OpBranchConditional %562 %563 %564
%563 = OpLabel
%565 = OpLoad %mat3v2float %_3_m32
%566 = OpCompositeConstruct %mat3v2float %299 %300 %301
%567 = OpCompositeExtract %v2float %565 0
%568 = OpCompositeExtract %v2float %566 0
%569 = OpFOrdEqual %v2bool %567 %568
%570 = OpAll %bool %569
%571 = OpCompositeExtract %v2float %565 1
%572 = OpCompositeExtract %v2float %566 1
%573 = OpFOrdEqual %v2bool %571 %572
%574 = OpAll %bool %573
%575 = OpLogicalAnd %bool %570 %574
%576 = OpCompositeExtract %v2float %565 2
%577 = OpCompositeExtract %v2float %566 2
%578 = OpFOrdEqual %v2bool %576 %577
%579 = OpAll %bool %578
%580 = OpLogicalAnd %bool %575 %579
OpBranch %564
%564 = OpLabel
%581 = OpPhi %bool %false %537 %580 %563
OpStore %_0_ok %581
%582 = OpLoad %mat2v4float %_2_m24
%583 = OpCompositeConstruct %mat2v4float %319 %319
%584 = OpCompositeExtract %v4float %582 0
%585 = OpCompositeExtract %v4float %583 0
%586 = OpFDiv %v4float %584 %585
%587 = OpCompositeExtract %v4float %582 1
OpBranch %429
%429 = OpLabel
%450 = OpPhi %bool %false %408 %449 %428
OpStore %_0_ok %450
%452 = OpCompositeConstruct %mat4v3float %170 %171 %172 %173
OpStore %_6_m43 %452
%453 = OpLoad %bool %_0_ok
OpSelectionMerge %455 None
OpBranchConditional %453 %454 %455
%454 = OpLabel
%456 = OpLoad %mat4v3float %_6_m43
%457 = OpCompositeExtract %v3float %456 0
%458 = OpCompositeExtract %v3float %178 0
%459 = OpFOrdEqual %v3bool %457 %458
%460 = OpAll %bool %459
%461 = OpCompositeExtract %v3float %456 1
%462 = OpCompositeExtract %v3float %178 1
%463 = OpFOrdEqual %v3bool %461 %462
%464 = OpAll %bool %463
%465 = OpLogicalAnd %bool %460 %464
%466 = OpCompositeExtract %v3float %456 2
%467 = OpCompositeExtract %v3float %178 2
%468 = OpFOrdEqual %v3bool %466 %467
%469 = OpAll %bool %468
%470 = OpLogicalAnd %bool %465 %469
%471 = OpCompositeExtract %v3float %456 3
%472 = OpCompositeExtract %v3float %178 3
%473 = OpFOrdEqual %v3bool %471 %472
%474 = OpAll %bool %473
%475 = OpLogicalAnd %bool %470 %474
OpBranch %455
%455 = OpLabel
%476 = OpPhi %bool %false %429 %475 %454
OpStore %_0_ok %476
%478 = OpLoad %mat3v2float %_3_m32
%479 = OpLoad %mat2v3float %_1_m23
%480 = OpMatrixTimesMatrix %mat2v2float %478 %479
OpStore %_7_m22 %480
%481 = OpLoad %bool %_0_ok
OpSelectionMerge %483 None
OpBranchConditional %481 %482 %483
%482 = OpLabel
%484 = OpLoad %mat2v2float %_7_m22
%485 = OpCompositeConstruct %mat2v2float %211 %212
%486 = OpCompositeExtract %v2float %484 0
%487 = OpCompositeExtract %v2float %485 0
%488 = OpFOrdEqual %v2bool %486 %487
%489 = OpAll %bool %488
%490 = OpCompositeExtract %v2float %484 1
%491 = OpCompositeExtract %v2float %485 1
%492 = OpFOrdEqual %v2bool %490 %491
%493 = OpAll %bool %492
%494 = OpLogicalAnd %bool %489 %493
OpBranch %483
%483 = OpLabel
%495 = OpPhi %bool %false %455 %494 %482
OpStore %_0_ok %495
%497 = OpLoad %mat4v3float %_6_m43
%498 = OpLoad %mat3v4float %_4_m34
%499 = OpMatrixTimesMatrix %mat3v3float %497 %498
OpStore %_8_m33 %499
%500 = OpLoad %bool %_0_ok
OpSelectionMerge %502 None
OpBranchConditional %500 %501 %502
%501 = OpLabel
%503 = OpLoad %mat3v3float %_8_m33
%504 = OpCompositeConstruct %mat3v3float %235 %236 %237
%505 = OpCompositeExtract %v3float %503 0
%506 = OpCompositeExtract %v3float %504 0
%507 = OpFOrdEqual %v3bool %505 %506
%508 = OpAll %bool %507
%509 = OpCompositeExtract %v3float %503 1
%510 = OpCompositeExtract %v3float %504 1
%511 = OpFOrdEqual %v3bool %509 %510
%512 = OpAll %bool %511
%513 = OpLogicalAnd %bool %508 %512
%514 = OpCompositeExtract %v3float %503 2
%515 = OpCompositeExtract %v3float %504 2
%516 = OpFOrdEqual %v3bool %514 %515
%517 = OpAll %bool %516
%518 = OpLogicalAnd %bool %513 %517
OpBranch %502
%502 = OpLabel
%519 = OpPhi %bool %false %483 %518 %501
OpStore %_0_ok %519
%520 = OpLoad %mat2v3float %_1_m23
%521 = OpCompositeExtract %v3float %520 0
%522 = OpCompositeExtract %v3float %256 0
%523 = OpFAdd %v3float %521 %522
%524 = OpCompositeExtract %v3float %520 1
%525 = OpCompositeExtract %v3float %256 1
%526 = OpFAdd %v3float %524 %525
%527 = OpCompositeConstruct %mat2v3float %523 %526
OpStore %_1_m23 %527
%528 = OpLoad %bool %_0_ok
OpSelectionMerge %530 None
OpBranchConditional %528 %529 %530
%529 = OpLabel
%531 = OpLoad %mat2v3float %_1_m23
%532 = OpCompositeExtract %v3float %531 0
%533 = OpCompositeExtract %v3float %270 0
%534 = OpFOrdEqual %v3bool %532 %533
%535 = OpAll %bool %534
%536 = OpCompositeExtract %v3float %531 1
%537 = OpCompositeExtract %v3float %270 1
%538 = OpFOrdEqual %v3bool %536 %537
%539 = OpAll %bool %538
%540 = OpLogicalAnd %bool %535 %539
OpBranch %530
%530 = OpLabel
%541 = OpPhi %bool %false %502 %540 %529
OpStore %_0_ok %541
%542 = OpLoad %mat3v2float %_3_m32
%543 = OpCompositeExtract %v2float %542 0
%544 = OpCompositeExtract %v2float %283 0
%545 = OpFSub %v2float %543 %544
%546 = OpCompositeExtract %v2float %542 1
%547 = OpCompositeExtract %v2float %283 1
%548 = OpFSub %v2float %546 %547
%549 = OpCompositeExtract %v2float %542 2
%550 = OpCompositeExtract %v2float %283 2
%551 = OpFSub %v2float %549 %550
%552 = OpCompositeConstruct %mat3v2float %545 %548 %551
OpStore %_3_m32 %552
%553 = OpLoad %bool %_0_ok
OpSelectionMerge %555 None
OpBranchConditional %553 %554 %555
%554 = OpLabel
%556 = OpLoad %mat3v2float %_3_m32
%557 = OpCompositeExtract %v2float %556 0
%558 = OpCompositeExtract %v2float %302 0
%559 = OpFOrdEqual %v2bool %557 %558
%560 = OpAll %bool %559
%561 = OpCompositeExtract %v2float %556 1
%562 = OpCompositeExtract %v2float %302 1
%563 = OpFOrdEqual %v2bool %561 %562
%564 = OpAll %bool %563
%565 = OpLogicalAnd %bool %560 %564
%566 = OpCompositeExtract %v2float %556 2
%567 = OpCompositeExtract %v2float %302 2
%568 = OpFOrdEqual %v2bool %566 %567
%569 = OpAll %bool %568
%570 = OpLogicalAnd %bool %565 %569
OpBranch %555
%555 = OpLabel
%571 = OpPhi %bool %false %530 %570 %554
OpStore %_0_ok %571
%572 = OpLoad %mat2v4float %_2_m24
%573 = OpCompositeExtract %v4float %572 0
%574 = OpCompositeExtract %v4float %320 0
%575 = OpFDiv %v4float %573 %574
%576 = OpCompositeExtract %v4float %572 1
%577 = OpCompositeExtract %v4float %320 1
%578 = OpFDiv %v4float %576 %577
%579 = OpCompositeConstruct %mat2v4float %575 %578
OpStore %_2_m24 %579
%580 = OpLoad %bool %_0_ok
OpSelectionMerge %582 None
OpBranchConditional %580 %581 %582
%581 = OpLabel
%583 = OpLoad %mat2v4float %_2_m24
%584 = OpCompositeExtract %v4float %583 0
%585 = OpCompositeExtract %v4float %335 0
%586 = OpFOrdEqual %v4bool %584 %585
%587 = OpAll %bool %586
%588 = OpCompositeExtract %v4float %583 1
%589 = OpFDiv %v4float %587 %588
%590 = OpCompositeConstruct %mat2v4float %586 %589
OpStore %_2_m24 %590
%591 = OpLoad %bool %_0_ok
OpSelectionMerge %593 None
OpBranchConditional %591 %592 %593
%592 = OpLabel
%594 = OpLoad %mat2v4float %_2_m24
%595 = OpCompositeConstruct %mat2v4float %333 %334
%596 = OpCompositeExtract %v4float %594 0
%597 = OpCompositeExtract %v4float %595 0
%598 = OpFOrdEqual %v4bool %596 %597
%599 = OpAll %bool %598
%600 = OpCompositeExtract %v4float %594 1
%601 = OpCompositeExtract %v4float %595 1
%602 = OpFOrdEqual %v4bool %600 %601
%603 = OpAll %bool %602
%604 = OpLogicalAnd %bool %599 %603
OpBranch %593
%593 = OpLabel
%605 = OpPhi %bool %false %564 %604 %592
OpStore %_0_ok %605
%606 = OpLoad %bool %_0_ok
OpSelectionMerge %608 None
OpBranchConditional %606 %607 %608
%607 = OpLabel
%609 = OpFunctionCall %bool %test_half_b
OpBranch %608
%608 = OpLabel
%610 = OpPhi %bool %false %593 %609 %607
OpSelectionMerge %615 None
OpBranchConditional %610 %613 %614
%613 = OpLabel
%616 = OpAccessChain %_ptr_Uniform_v4float %11 %int_0
%620 = OpLoad %v4float %616
OpStore %611 %620
OpBranch %615
%614 = OpLabel
%621 = OpAccessChain %_ptr_Uniform_v4float %11 %int_1
%623 = OpLoad %v4float %621
OpStore %611 %623
OpBranch %615
%615 = OpLabel
%624 = OpLoad %v4float %611
OpReturnValue %624
%589 = OpCompositeExtract %v4float %335 1
%590 = OpFOrdEqual %v4bool %588 %589
%591 = OpAll %bool %590
%592 = OpLogicalAnd %bool %587 %591
OpBranch %582
%582 = OpLabel
%593 = OpPhi %bool %false %555 %592 %581
OpStore %_0_ok %593
%594 = OpLoad %bool %_0_ok
OpSelectionMerge %596 None
OpBranchConditional %594 %595 %596
%595 = OpLabel
%597 = OpFunctionCall %bool %test_half_b
OpBranch %596
%596 = OpLabel
%598 = OpPhi %bool %false %582 %597 %595
OpSelectionMerge %603 None
OpBranchConditional %598 %601 %602
%601 = OpLabel
%604 = OpAccessChain %_ptr_Uniform_v4float %11 %int_0
%608 = OpLoad %v4float %604
OpStore %599 %608
OpBranch %603
%602 = OpLabel
%609 = OpAccessChain %_ptr_Uniform_v4float %11 %int_1
%611 = OpLoad %v4float %609
OpStore %599 %611
OpBranch %603
%603 = OpLabel
%612 = OpLoad %v4float %599
OpReturnValue %612
OpFunctionEnd

View File

@ -63,15 +63,18 @@ OpDecorate %175 RelaxedPrecision
%float_3 = OpConstant %float 3
%54 = OpConstantComposite %v2float %float_1 %float_2
%55 = OpConstantComposite %v2float %float_3 %float_4
%56 = OpConstantComposite %mat2v2float %54 %55
%v2bool = OpTypeVector %bool 2
%false = OpConstantFalse %bool
%mat3v3float = OpTypeMatrix %v3float 3
%91 = OpConstantComposite %v3float %float_1 %float_2 %float_3
%92 = OpConstantComposite %v3float %float_4 %float_1 %float_2
%93 = OpConstantComposite %v3float %float_3 %float_4 %float_1
%94 = OpConstantComposite %mat3v3float %91 %92 %93
%v3bool = OpTypeVector %bool 3
%mat4v4float = OpTypeMatrix %v4float 4
%140 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
%141 = OpConstantComposite %mat4v4float %140 %140 %140 %140
%v4bool = OpTypeVector %bool 4
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%int_0 = OpConstant %int 0
@ -106,7 +109,6 @@ OpStore %f4 %38
%48 = OpCompositeExtract %float %42 2
%49 = OpCompositeConstruct %v2float %48 %float_4
%50 = OpCompositeConstruct %mat2v2float %47 %49
%56 = OpCompositeConstruct %mat2v2float %54 %55
%58 = OpCompositeExtract %v2float %50 0
%59 = OpCompositeExtract %v2float %56 0
%60 = OpFOrdEqual %v2bool %58 %59
@ -140,7 +142,6 @@ OpBranchConditional %68 %69 %70
%87 = OpCompositeExtract %float %75 3
%88 = OpCompositeConstruct %v3float %86 %87 %77
%90 = OpCompositeConstruct %mat3v3float %81 %85 %88
%94 = OpCompositeConstruct %mat3v3float %91 %92 %93
%96 = OpCompositeExtract %v3float %90 0
%97 = OpCompositeExtract %v3float %94 0
%98 = OpFOrdEqual %v3bool %96 %97
@ -188,7 +189,6 @@ OpBranchConditional %111 %112 %113
%136 = OpCompositeExtract %float %121 1
%137 = OpCompositeConstruct %v4float %133 %134 %135 %136
%139 = OpCompositeConstruct %mat4v4float %127 %132 %137 %122
%141 = OpCompositeConstruct %mat4v4float %140 %140 %140 %140
%143 = OpCompositeExtract %v4float %139 0
%144 = OpCompositeExtract %v4float %141 0
%145 = OpFOrdEqual %v4bool %143 %144

View File

@ -66,19 +66,24 @@ OpDecorate %250 RelaxedPrecision
%float_4 = OpConstant %float 4
%59 = OpConstantComposite %v3float %float_1 %float_2 %float_3
%60 = OpConstantComposite %v3float %float_4 %float_1 %float_2
%61 = OpConstantComposite %mat2v3float %59 %60
%v3bool = OpTypeVector %bool 3
%false = OpConstantFalse %bool
%mat2v4float = OpTypeMatrix %v4float 2
%93 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
%94 = OpConstantComposite %mat2v4float %93 %93
%v4bool = OpTypeVector %bool 4
%mat3v3float = OpTypeMatrix %v3float 3
%129 = OpConstantComposite %v3float %float_3 %float_4 %float_1
%130 = OpConstantComposite %mat3v3float %59 %60 %129
%mat4v2float = OpTypeMatrix %v2float 4
%168 = OpConstantComposite %v2float %float_1 %float_2
%169 = OpConstantComposite %v2float %float_3 %float_4
%170 = OpConstantComposite %mat4v2float %168 %169 %168 %169
%v2bool = OpTypeVector %bool 2
%mat4v3float = OpTypeMatrix %v3float 4
%216 = OpConstantComposite %v3float %float_2 %float_3 %float_4
%217 = OpConstantComposite %mat4v3float %59 %60 %129 %216
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%int_0 = OpConstant %int 0
%int_1 = OpConstant %int 1
@ -116,7 +121,6 @@ OpStore %f4 %38
%51 = OpCompositeExtract %float %43 1
%52 = OpCompositeConstruct %v3float %49 %50 %51
%54 = OpCompositeConstruct %mat2v3float %48 %52
%61 = OpCompositeConstruct %mat2v3float %59 %60
%63 = OpCompositeExtract %v3float %54 0
%64 = OpCompositeExtract %v3float %61 0
%65 = OpFOrdEqual %v3bool %63 %64
@ -147,7 +151,6 @@ OpBranchConditional %73 %74 %75
%89 = OpCompositeExtract %float %79 3
%90 = OpCompositeConstruct %v4float %87 %88 %89 %81
%92 = OpCompositeConstruct %mat2v4float %86 %90
%94 = OpCompositeConstruct %mat2v4float %93 %93
%96 = OpCompositeExtract %v4float %92 0
%97 = OpCompositeExtract %v4float %94 0
%98 = OpFOrdEqual %v4bool %96 %97
@ -184,7 +187,6 @@ OpBranchConditional %106 %107 %108
%125 = OpCompositeExtract %float %113 3
%126 = OpCompositeConstruct %v3float %124 %125 %115
%128 = OpCompositeConstruct %mat3v3float %119 %123 %126
%130 = OpCompositeConstruct %mat3v3float %59 %60 %129
%131 = OpCompositeExtract %v3float %128 0
%132 = OpCompositeExtract %v3float %130 0
%133 = OpFOrdEqual %v3bool %131 %132
@ -225,7 +227,6 @@ OpBranchConditional %146 %147 %148
%164 = OpCompositeExtract %float %152 3
%165 = OpCompositeConstruct %v2float %164 %154
%167 = OpCompositeConstruct %mat4v2float %157 %160 %163 %165
%170 = OpCompositeConstruct %mat4v2float %168 %169 %168 %169
%172 = OpCompositeExtract %v2float %167 0
%173 = OpCompositeExtract %v2float %170 0
%174 = OpFOrdEqual %v2bool %172 %173
@ -273,7 +274,6 @@ OpBranchConditional %192 %193 %194
%212 = OpCompositeExtract %float %200 3
%213 = OpCompositeConstruct %v3float %210 %211 %212
%215 = OpCompositeConstruct %mat4v3float %205 %209 %213 %202
%217 = OpCompositeConstruct %mat4v3float %59 %60 %129 %216
%218 = OpCompositeExtract %v3float %215 0
%219 = OpCompositeExtract %v3float %217 0
%220 = OpFOrdEqual %v3bool %218 %219

View File

@ -34,16 +34,13 @@ OpDecorate %10 Binding 0
OpDecorate %10 DescriptorSet 0
OpDecorate %33 RelaxedPrecision
OpDecorate %40 RelaxedPrecision
OpDecorate %47 RelaxedPrecision
OpDecorate %59 RelaxedPrecision
OpDecorate %65 RelaxedPrecision
OpDecorate %74 RelaxedPrecision
OpDecorate %91 RelaxedPrecision
OpDecorate %95 RelaxedPrecision
OpDecorate %97 RelaxedPrecision
OpDecorate %110 RelaxedPrecision
OpDecorate %114 RelaxedPrecision
OpDecorate %118 RelaxedPrecision
OpDecorate %134 RelaxedPrecision
OpDecorate %143 RelaxedPrecision
OpDecorate %146 RelaxedPrecision
@ -80,6 +77,7 @@ OpDecorate %147 RelaxedPrecision
%float_4 = OpConstant %float 4
%45 = OpConstantComposite %v2float %float_1 %float_2
%46 = OpConstantComposite %v2float %float_3 %float_4
%47 = OpConstantComposite %mat2v2float %45 %46
%v2bool = OpTypeVector %bool 2
%_ptr_Uniform_mat3v3float = OpTypePointer Uniform %mat3v3float
%int_3 = OpConstant %int 3
@ -91,6 +89,7 @@ OpDecorate %147 RelaxedPrecision
%71 = OpConstantComposite %v3float %float_1 %float_2 %float_3
%72 = OpConstantComposite %v3float %float_4 %float_5 %float_6
%73 = OpConstantComposite %v3float %float_7 %float_8 %float_9
%74 = OpConstantComposite %mat3v3float %71 %72 %73
%v3bool = OpTypeVector %bool 3
%float_100 = OpConstant %float 100
%98 = OpConstantComposite %v2float %float_100 %float_0
@ -98,6 +97,7 @@ OpDecorate %147 RelaxedPrecision
%115 = OpConstantComposite %v3float %float_9 %float_8 %float_7
%116 = OpConstantComposite %v3float %float_6 %float_5 %float_4
%117 = OpConstantComposite %v3float %float_3 %float_2 %float_1
%118 = OpConstantComposite %mat3v3float %115 %116 %117
%_ptr_Function_v4float = OpTypePointer Function %v4float
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%int_0 = OpConstant %int 0
@ -122,7 +122,6 @@ OpBranchConditional %33 %34 %35
%34 = OpLabel
%36 = OpAccessChain %_ptr_Uniform_mat2v2float %10 %int_2
%40 = OpLoad %mat2v2float %36
%47 = OpCompositeConstruct %mat2v2float %45 %46
%49 = OpCompositeExtract %v2float %40 0
%50 = OpCompositeExtract %v2float %47 0
%51 = OpFOrdEqual %v2bool %49 %50
@ -142,7 +141,6 @@ OpBranchConditional %59 %60 %61
%60 = OpLabel
%62 = OpAccessChain %_ptr_Uniform_mat3v3float %10 %int_3
%65 = OpLoad %mat3v3float %62
%74 = OpCompositeConstruct %mat3v3float %71 %72 %73
%76 = OpCompositeExtract %v3float %65 0
%77 = OpCompositeExtract %v3float %74 0
%78 = OpFOrdEqual %v3bool %76 %77
@ -187,7 +185,6 @@ OpBranchConditional %110 %111 %112
%111 = OpLabel
%113 = OpAccessChain %_ptr_Uniform_mat3v3float %10 %int_3
%114 = OpLoad %mat3v3float %113
%118 = OpCompositeConstruct %mat3v3float %115 %116 %117
%119 = OpCompositeExtract %v3float %114 0
%120 = OpCompositeExtract %v3float %118 0
%121 = OpFUnordNotEqual %v3bool %119 %120

View File

@ -36,22 +36,22 @@ OpDecorate %19 Binding 0
OpDecorate %19 DescriptorSet 0
OpDecorate %48 RelaxedPrecision
OpDecorate %49 RelaxedPrecision
OpDecorate %148 RelaxedPrecision
OpDecorate %149 RelaxedPrecision
OpDecorate %150 RelaxedPrecision
OpDecorate %152 RelaxedPrecision
OpDecorate %153 RelaxedPrecision
OpDecorate %154 RelaxedPrecision
OpDecorate %155 RelaxedPrecision
OpDecorate %158 RelaxedPrecision
OpDecorate %159 RelaxedPrecision
OpDecorate %160 RelaxedPrecision
OpDecorate %161 RelaxedPrecision
OpDecorate %164 RelaxedPrecision
OpDecorate %165 RelaxedPrecision
OpDecorate %166 RelaxedPrecision
OpDecorate %167 RelaxedPrecision
OpDecorate %181 RelaxedPrecision
OpDecorate %182 RelaxedPrecision
OpDecorate %183 RelaxedPrecision
OpDecorate %329 RelaxedPrecision
OpDecorate %331 RelaxedPrecision
OpDecorate %333 RelaxedPrecision
OpDecorate %334 RelaxedPrecision
OpDecorate %332 RelaxedPrecision
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
@ -85,11 +85,13 @@ OpDecorate %334 RelaxedPrecision
%int_1 = OpConstant %int 1
%float_1 = OpConstant %float 1
%74 = OpConstantComposite %v2float %float_1 %float_1
%75 = OpConstantComposite %mat2v2float %74 %74
%float_2 = OpConstant %float 2
%96 = OpConstantComposite %v2float %float_2 %float_2
%95 = OpConstantComposite %v2float %float_2 %float_2
%96 = OpConstantComposite %mat2v2float %95 %95
%false = OpConstantFalse %bool
%int_0 = OpConstant %int 0
%144 = OpTypeFunction %v4float %_ptr_Function_v2float
%143 = OpTypeFunction %v4float %_ptr_Function_v2float
%float_3 = OpConstant %float 3
%float_4 = OpConstant %float 4
%float_0_5 = OpConstant %float 0.5
@ -137,7 +139,6 @@ OpSelectionMerge %67 None
OpSwitch %66 %67 1 %68 2 %69 3 %70 4 %71
%68 = OpLabel
%72 = OpLoad %mat2v2float %m2
%75 = OpCompositeConstruct %mat2v2float %74 %74
%76 = OpCompositeExtract %v2float %72 0
%77 = OpCompositeExtract %v2float %75 0
%78 = OpFAdd %v2float %76 %77
@ -149,85 +150,83 @@ OpStore %m2 %82
OpBranch %67
%69 = OpLabel
%83 = OpLoad %mat2v2float %m2
%84 = OpCompositeConstruct %mat2v2float %74 %74
%85 = OpCompositeExtract %v2float %83 0
%86 = OpCompositeExtract %v2float %84 0
%87 = OpFSub %v2float %85 %86
%88 = OpCompositeExtract %v2float %83 1
%89 = OpCompositeExtract %v2float %84 1
%90 = OpFSub %v2float %88 %89
%91 = OpCompositeConstruct %mat2v2float %87 %90
OpStore %m2 %91
%84 = OpCompositeExtract %v2float %83 0
%85 = OpCompositeExtract %v2float %75 0
%86 = OpFSub %v2float %84 %85
%87 = OpCompositeExtract %v2float %83 1
%88 = OpCompositeExtract %v2float %75 1
%89 = OpFSub %v2float %87 %88
%90 = OpCompositeConstruct %mat2v2float %86 %89
OpStore %m2 %90
OpBranch %67
%70 = OpLabel
%92 = OpLoad %mat2v2float %m2
%94 = OpMatrixTimesScalar %mat2v2float %92 %float_2
OpStore %m2 %94
%91 = OpLoad %mat2v2float %m2
%93 = OpMatrixTimesScalar %mat2v2float %91 %float_2
OpStore %m2 %93
OpBranch %67
%71 = OpLabel
%95 = OpLoad %mat2v2float %m2
%97 = OpCompositeConstruct %mat2v2float %96 %96
%98 = OpCompositeExtract %v2float %95 0
%99 = OpCompositeExtract %v2float %97 0
%100 = OpFDiv %v2float %98 %99
%101 = OpCompositeExtract %v2float %95 1
%102 = OpCompositeExtract %v2float %97 1
%103 = OpFDiv %v2float %101 %102
%104 = OpCompositeConstruct %mat2v2float %100 %103
OpStore %m2 %104
%94 = OpLoad %mat2v2float %m2
%97 = OpCompositeExtract %v2float %94 0
%98 = OpCompositeExtract %v2float %96 0
%99 = OpFDiv %v2float %97 %98
%100 = OpCompositeExtract %v2float %94 1
%101 = OpCompositeExtract %v2float %96 1
%102 = OpFDiv %v2float %100 %101
%103 = OpCompositeConstruct %mat2v2float %99 %102
OpStore %m2 %103
OpBranch %67
%67 = OpLabel
%107 = OpAccessChain %_ptr_Function_v2float %m2 %int_0
%108 = OpLoad %v2float %107
%109 = OpCompositeExtract %float %108 0
%110 = OpAccessChain %_ptr_Function_v2float %42 %int_0
%111 = OpLoad %v2float %110
%112 = OpCompositeExtract %float %111 0
%113 = OpFOrdEqual %bool %109 %112
OpSelectionMerge %115 None
OpBranchConditional %113 %114 %115
%106 = OpAccessChain %_ptr_Function_v2float %m2 %int_0
%107 = OpLoad %v2float %106
%108 = OpCompositeExtract %float %107 0
%109 = OpAccessChain %_ptr_Function_v2float %42 %int_0
%110 = OpLoad %v2float %109
%111 = OpCompositeExtract %float %110 0
%112 = OpFOrdEqual %bool %108 %111
OpSelectionMerge %114 None
OpBranchConditional %112 %113 %114
%113 = OpLabel
%115 = OpAccessChain %_ptr_Function_v2float %m2 %int_0
%116 = OpLoad %v2float %115
%117 = OpCompositeExtract %float %116 1
%118 = OpAccessChain %_ptr_Function_v2float %42 %int_0
%119 = OpLoad %v2float %118
%120 = OpCompositeExtract %float %119 1
%121 = OpFOrdEqual %bool %117 %120
OpBranch %114
%114 = OpLabel
%116 = OpAccessChain %_ptr_Function_v2float %m2 %int_0
%117 = OpLoad %v2float %116
%118 = OpCompositeExtract %float %117 1
%119 = OpAccessChain %_ptr_Function_v2float %42 %int_0
%120 = OpLoad %v2float %119
%121 = OpCompositeExtract %float %120 1
%122 = OpFOrdEqual %bool %118 %121
OpBranch %115
%115 = OpLabel
%123 = OpPhi %bool %false %67 %122 %114
OpSelectionMerge %125 None
OpBranchConditional %123 %124 %125
%122 = OpPhi %bool %false %67 %121 %113
OpSelectionMerge %124 None
OpBranchConditional %122 %123 %124
%123 = OpLabel
%125 = OpAccessChain %_ptr_Function_v2float %m2 %int_1
%126 = OpLoad %v2float %125
%127 = OpCompositeExtract %float %126 0
%128 = OpAccessChain %_ptr_Function_v2float %42 %int_1
%129 = OpLoad %v2float %128
%130 = OpCompositeExtract %float %129 0
%131 = OpFOrdEqual %bool %127 %130
OpBranch %124
%124 = OpLabel
%126 = OpAccessChain %_ptr_Function_v2float %m2 %int_1
%127 = OpLoad %v2float %126
%128 = OpCompositeExtract %float %127 0
%129 = OpAccessChain %_ptr_Function_v2float %42 %int_1
%130 = OpLoad %v2float %129
%131 = OpCompositeExtract %float %130 0
%132 = OpFOrdEqual %bool %128 %131
OpBranch %125
%125 = OpLabel
%133 = OpPhi %bool %false %115 %132 %124
OpSelectionMerge %135 None
OpBranchConditional %133 %134 %135
%132 = OpPhi %bool %false %114 %131 %123
OpSelectionMerge %134 None
OpBranchConditional %132 %133 %134
%133 = OpLabel
%135 = OpAccessChain %_ptr_Function_v2float %m2 %int_1
%136 = OpLoad %v2float %135
%137 = OpCompositeExtract %float %136 1
%138 = OpAccessChain %_ptr_Function_v2float %42 %int_1
%139 = OpLoad %v2float %138
%140 = OpCompositeExtract %float %139 1
%141 = OpFOrdEqual %bool %137 %140
OpBranch %134
%134 = OpLabel
%136 = OpAccessChain %_ptr_Function_v2float %m2 %int_1
%137 = OpLoad %v2float %136
%138 = OpCompositeExtract %float %137 1
%139 = OpAccessChain %_ptr_Function_v2float %42 %int_1
%140 = OpLoad %v2float %139
%141 = OpCompositeExtract %float %140 1
%142 = OpFOrdEqual %bool %138 %141
OpBranch %135
%135 = OpLabel
%143 = OpPhi %bool %false %125 %142 %134
OpReturnValue %143
%142 = OpPhi %bool %false %124 %141 %133
OpReturnValue %142
OpFunctionEnd
%main = OpFunction %v4float None %144
%145 = OpFunctionParameter %_ptr_Function_v2float
%146 = OpLabel
%main = OpFunction %v4float None %143
%144 = OpFunctionParameter %_ptr_Function_v2float
%145 = OpLabel
%f1 = OpVariable %_ptr_Function_float Function
%f2 = OpVariable %_ptr_Function_float Function
%f3 = OpVariable %_ptr_Function_float Function
@ -235,235 +234,234 @@ OpFunctionEnd
%_0_expected = OpVariable %_ptr_Function_mat2v2float Function
%_1_one = OpVariable %_ptr_Function_float Function
%_2_m2 = OpVariable %_ptr_Function_mat2v2float Function
%249 = OpVariable %_ptr_Function_int Function
%247 = OpVariable %_ptr_Function_int Function
%249 = OpVariable %_ptr_Function_float Function
%251 = OpVariable %_ptr_Function_float Function
%253 = OpVariable %_ptr_Function_float Function
%255 = OpVariable %_ptr_Function_float Function
%257 = OpVariable %_ptr_Function_float Function
%269 = OpVariable %_ptr_Function_mat2v2float Function
%275 = OpVariable %_ptr_Function_int Function
%267 = OpVariable %_ptr_Function_mat2v2float Function
%273 = OpVariable %_ptr_Function_int Function
%275 = OpVariable %_ptr_Function_float Function
%277 = OpVariable %_ptr_Function_float Function
%279 = OpVariable %_ptr_Function_float Function
%281 = OpVariable %_ptr_Function_float Function
%283 = OpVariable %_ptr_Function_float Function
%295 = OpVariable %_ptr_Function_mat2v2float Function
%301 = OpVariable %_ptr_Function_int Function
%293 = OpVariable %_ptr_Function_mat2v2float Function
%299 = OpVariable %_ptr_Function_int Function
%301 = OpVariable %_ptr_Function_float Function
%303 = OpVariable %_ptr_Function_float Function
%305 = OpVariable %_ptr_Function_float Function
%307 = OpVariable %_ptr_Function_float Function
%309 = OpVariable %_ptr_Function_float Function
%322 = OpVariable %_ptr_Function_mat2v2float Function
%325 = OpVariable %_ptr_Function_v4float Function
%320 = OpVariable %_ptr_Function_mat2v2float Function
%323 = OpVariable %_ptr_Function_v4float Function
OpStore %minus %int_2
OpStore %star %int_3
OpStore %slash %int_4
%148 = OpAccessChain %_ptr_Uniform_v4float %19 %int_0
%149 = OpLoad %v4float %148
%150 = OpCompositeExtract %float %149 1
OpStore %f1 %150
%152 = OpAccessChain %_ptr_Uniform_v4float %19 %int_0
%153 = OpLoad %v4float %152
%154 = OpCompositeExtract %float %153 1
%155 = OpFMul %float %float_2 %154
OpStore %f2 %155
%158 = OpAccessChain %_ptr_Uniform_v4float %19 %int_0
%159 = OpLoad %v4float %158
%160 = OpCompositeExtract %float %159 1
%161 = OpFMul %float %float_3 %160
OpStore %f3 %161
%164 = OpAccessChain %_ptr_Uniform_v4float %19 %int_0
%165 = OpLoad %v4float %164
%166 = OpCompositeExtract %float %165 1
%167 = OpFMul %float %float_4 %166
OpStore %f4 %167
%169 = OpLoad %float %f1
%170 = OpFAdd %float %169 %float_1
%171 = OpLoad %float %f2
%172 = OpFAdd %float %171 %float_1
%173 = OpLoad %float %f3
%174 = OpFAdd %float %173 %float_1
%175 = OpLoad %float %f4
%176 = OpFAdd %float %175 %float_1
%177 = OpCompositeConstruct %v2float %170 %172
%178 = OpCompositeConstruct %v2float %174 %176
%179 = OpCompositeConstruct %mat2v2float %177 %178
OpStore %_0_expected %179
%181 = OpAccessChain %_ptr_Uniform_v4float %19 %int_1
%182 = OpLoad %v4float %181
%183 = OpCompositeExtract %float %182 0
OpStore %_1_one %183
%185 = OpLoad %float %f1
%186 = OpLoad %float %_1_one
%187 = OpFMul %float %185 %186
%188 = OpLoad %float %f2
%189 = OpLoad %float %_1_one
%190 = OpFMul %float %188 %189
%191 = OpLoad %float %f3
%192 = OpLoad %float %_1_one
%193 = OpFMul %float %191 %192
%194 = OpLoad %float %f4
%195 = OpLoad %float %_1_one
%196 = OpFMul %float %194 %195
%197 = OpCompositeConstruct %v2float %187 %190
%198 = OpCompositeConstruct %v2float %193 %196
%199 = OpCompositeConstruct %mat2v2float %197 %198
OpStore %_2_m2 %199
%200 = OpLoad %mat2v2float %_2_m2
%201 = OpCompositeConstruct %mat2v2float %74 %74
%202 = OpCompositeExtract %v2float %200 0
%203 = OpCompositeExtract %v2float %201 0
%204 = OpFAdd %v2float %202 %203
%205 = OpCompositeExtract %v2float %200 1
%206 = OpCompositeExtract %v2float %201 1
%207 = OpFAdd %v2float %205 %206
%208 = OpCompositeConstruct %mat2v2float %204 %207
OpStore %_2_m2 %208
%209 = OpAccessChain %_ptr_Function_v2float %_2_m2 %int_0
%210 = OpLoad %v2float %209
%211 = OpCompositeExtract %float %210 0
%212 = OpAccessChain %_ptr_Function_v2float %_0_expected %int_0
%213 = OpLoad %v2float %212
%214 = OpCompositeExtract %float %213 0
%215 = OpFOrdEqual %bool %211 %214
OpSelectionMerge %217 None
OpBranchConditional %215 %216 %217
%216 = OpLabel
%218 = OpAccessChain %_ptr_Function_v2float %_2_m2 %int_0
%219 = OpLoad %v2float %218
%220 = OpCompositeExtract %float %219 1
%221 = OpAccessChain %_ptr_Function_v2float %_0_expected %int_0
%222 = OpLoad %v2float %221
%223 = OpCompositeExtract %float %222 1
%224 = OpFOrdEqual %bool %220 %223
OpBranch %217
%217 = OpLabel
%225 = OpPhi %bool %false %146 %224 %216
OpSelectionMerge %227 None
OpBranchConditional %225 %226 %227
%226 = OpLabel
%228 = OpAccessChain %_ptr_Function_v2float %_2_m2 %int_1
%229 = OpLoad %v2float %228
%230 = OpCompositeExtract %float %229 0
%231 = OpAccessChain %_ptr_Function_v2float %_0_expected %int_1
%232 = OpLoad %v2float %231
%233 = OpCompositeExtract %float %232 0
%234 = OpFOrdEqual %bool %230 %233
OpBranch %227
%227 = OpLabel
%235 = OpPhi %bool %false %217 %234 %226
OpSelectionMerge %237 None
OpBranchConditional %235 %236 %237
%236 = OpLabel
%238 = OpAccessChain %_ptr_Function_v2float %_2_m2 %int_1
%239 = OpLoad %v2float %238
%240 = OpCompositeExtract %float %239 1
%241 = OpAccessChain %_ptr_Function_v2float %_0_expected %int_1
%242 = OpLoad %v2float %241
%243 = OpCompositeExtract %float %242 1
%244 = OpFOrdEqual %bool %240 %243
OpBranch %237
%237 = OpLabel
%245 = OpPhi %bool %false %227 %244 %236
OpSelectionMerge %247 None
OpBranchConditional %245 %246 %247
%246 = OpLabel
%248 = OpLoad %int %minus
%147 = OpAccessChain %_ptr_Uniform_v4float %19 %int_0
%148 = OpLoad %v4float %147
%149 = OpCompositeExtract %float %148 1
OpStore %f1 %149
%151 = OpAccessChain %_ptr_Uniform_v4float %19 %int_0
%152 = OpLoad %v4float %151
%153 = OpCompositeExtract %float %152 1
%154 = OpFMul %float %float_2 %153
OpStore %f2 %154
%157 = OpAccessChain %_ptr_Uniform_v4float %19 %int_0
%158 = OpLoad %v4float %157
%159 = OpCompositeExtract %float %158 1
%160 = OpFMul %float %float_3 %159
OpStore %f3 %160
%163 = OpAccessChain %_ptr_Uniform_v4float %19 %int_0
%164 = OpLoad %v4float %163
%165 = OpCompositeExtract %float %164 1
%166 = OpFMul %float %float_4 %165
OpStore %f4 %166
%168 = OpLoad %float %f1
%169 = OpFAdd %float %168 %float_1
%170 = OpLoad %float %f2
%171 = OpFAdd %float %170 %float_1
%172 = OpLoad %float %f3
%173 = OpFAdd %float %172 %float_1
%174 = OpLoad %float %f4
%175 = OpFAdd %float %174 %float_1
%176 = OpCompositeConstruct %v2float %169 %171
%177 = OpCompositeConstruct %v2float %173 %175
%178 = OpCompositeConstruct %mat2v2float %176 %177
OpStore %_0_expected %178
%180 = OpAccessChain %_ptr_Uniform_v4float %19 %int_1
%181 = OpLoad %v4float %180
%182 = OpCompositeExtract %float %181 0
OpStore %_1_one %182
%184 = OpLoad %float %f1
%185 = OpLoad %float %_1_one
%186 = OpFMul %float %184 %185
%187 = OpLoad %float %f2
%188 = OpLoad %float %_1_one
%189 = OpFMul %float %187 %188
%190 = OpLoad %float %f3
%191 = OpLoad %float %_1_one
%192 = OpFMul %float %190 %191
%193 = OpLoad %float %f4
%194 = OpLoad %float %_1_one
%195 = OpFMul %float %193 %194
%196 = OpCompositeConstruct %v2float %186 %189
%197 = OpCompositeConstruct %v2float %192 %195
%198 = OpCompositeConstruct %mat2v2float %196 %197
OpStore %_2_m2 %198
%199 = OpLoad %mat2v2float %_2_m2
%200 = OpCompositeExtract %v2float %199 0
%201 = OpCompositeExtract %v2float %75 0
%202 = OpFAdd %v2float %200 %201
%203 = OpCompositeExtract %v2float %199 1
%204 = OpCompositeExtract %v2float %75 1
%205 = OpFAdd %v2float %203 %204
%206 = OpCompositeConstruct %mat2v2float %202 %205
OpStore %_2_m2 %206
%207 = OpAccessChain %_ptr_Function_v2float %_2_m2 %int_0
%208 = OpLoad %v2float %207
%209 = OpCompositeExtract %float %208 0
%210 = OpAccessChain %_ptr_Function_v2float %_0_expected %int_0
%211 = OpLoad %v2float %210
%212 = OpCompositeExtract %float %211 0
%213 = OpFOrdEqual %bool %209 %212
OpSelectionMerge %215 None
OpBranchConditional %213 %214 %215
%214 = OpLabel
%216 = OpAccessChain %_ptr_Function_v2float %_2_m2 %int_0
%217 = OpLoad %v2float %216
%218 = OpCompositeExtract %float %217 1
%219 = OpAccessChain %_ptr_Function_v2float %_0_expected %int_0
%220 = OpLoad %v2float %219
%221 = OpCompositeExtract %float %220 1
%222 = OpFOrdEqual %bool %218 %221
OpBranch %215
%215 = OpLabel
%223 = OpPhi %bool %false %145 %222 %214
OpSelectionMerge %225 None
OpBranchConditional %223 %224 %225
%224 = OpLabel
%226 = OpAccessChain %_ptr_Function_v2float %_2_m2 %int_1
%227 = OpLoad %v2float %226
%228 = OpCompositeExtract %float %227 0
%229 = OpAccessChain %_ptr_Function_v2float %_0_expected %int_1
%230 = OpLoad %v2float %229
%231 = OpCompositeExtract %float %230 0
%232 = OpFOrdEqual %bool %228 %231
OpBranch %225
%225 = OpLabel
%233 = OpPhi %bool %false %215 %232 %224
OpSelectionMerge %235 None
OpBranchConditional %233 %234 %235
%234 = OpLabel
%236 = OpAccessChain %_ptr_Function_v2float %_2_m2 %int_1
%237 = OpLoad %v2float %236
%238 = OpCompositeExtract %float %237 1
%239 = OpAccessChain %_ptr_Function_v2float %_0_expected %int_1
%240 = OpLoad %v2float %239
%241 = OpCompositeExtract %float %240 1
%242 = OpFOrdEqual %bool %238 %241
OpBranch %235
%235 = OpLabel
%243 = OpPhi %bool %false %225 %242 %234
OpSelectionMerge %245 None
OpBranchConditional %243 %244 %245
%244 = OpLabel
%246 = OpLoad %int %minus
OpStore %247 %246
%248 = OpLoad %float %f1
OpStore %249 %248
%250 = OpLoad %float %f1
%250 = OpLoad %float %f2
OpStore %251 %250
%252 = OpLoad %float %f2
%252 = OpLoad %float %f3
OpStore %253 %252
%254 = OpLoad %float %f3
%254 = OpLoad %float %f4
OpStore %255 %254
%256 = OpLoad %float %f4
OpStore %257 %256
%258 = OpLoad %float %f1
%256 = OpLoad %float %f1
%257 = OpFSub %float %256 %float_1
%258 = OpLoad %float %f2
%259 = OpFSub %float %258 %float_1
%260 = OpLoad %float %f2
%260 = OpLoad %float %f3
%261 = OpFSub %float %260 %float_1
%262 = OpLoad %float %f3
%262 = OpLoad %float %f4
%263 = OpFSub %float %262 %float_1
%264 = OpLoad %float %f4
%265 = OpFSub %float %264 %float_1
%266 = OpCompositeConstruct %v2float %259 %261
%267 = OpCompositeConstruct %v2float %263 %265
%268 = OpCompositeConstruct %mat2v2float %266 %267
OpStore %269 %268
%270 = OpFunctionCall %bool %test_bifffff22 %249 %251 %253 %255 %257 %269
OpBranch %247
%247 = OpLabel
%271 = OpPhi %bool %false %237 %270 %246
OpSelectionMerge %273 None
OpBranchConditional %271 %272 %273
%272 = OpLabel
%274 = OpLoad %int %star
%264 = OpCompositeConstruct %v2float %257 %259
%265 = OpCompositeConstruct %v2float %261 %263
%266 = OpCompositeConstruct %mat2v2float %264 %265
OpStore %267 %266
%268 = OpFunctionCall %bool %test_bifffff22 %247 %249 %251 %253 %255 %267
OpBranch %245
%245 = OpLabel
%269 = OpPhi %bool %false %235 %268 %244
OpSelectionMerge %271 None
OpBranchConditional %269 %270 %271
%270 = OpLabel
%272 = OpLoad %int %star
OpStore %273 %272
%274 = OpLoad %float %f1
OpStore %275 %274
%276 = OpLoad %float %f1
%276 = OpLoad %float %f2
OpStore %277 %276
%278 = OpLoad %float %f2
%278 = OpLoad %float %f3
OpStore %279 %278
%280 = OpLoad %float %f3
%280 = OpLoad %float %f4
OpStore %281 %280
%282 = OpLoad %float %f4
OpStore %283 %282
%284 = OpLoad %float %f1
%282 = OpLoad %float %f1
%283 = OpFMul %float %282 %float_2
%284 = OpLoad %float %f2
%285 = OpFMul %float %284 %float_2
%286 = OpLoad %float %f2
%286 = OpLoad %float %f3
%287 = OpFMul %float %286 %float_2
%288 = OpLoad %float %f3
%288 = OpLoad %float %f4
%289 = OpFMul %float %288 %float_2
%290 = OpLoad %float %f4
%291 = OpFMul %float %290 %float_2
%292 = OpCompositeConstruct %v2float %285 %287
%293 = OpCompositeConstruct %v2float %289 %291
%294 = OpCompositeConstruct %mat2v2float %292 %293
OpStore %295 %294
%296 = OpFunctionCall %bool %test_bifffff22 %275 %277 %279 %281 %283 %295
OpBranch %273
%273 = OpLabel
%297 = OpPhi %bool %false %247 %296 %272
OpSelectionMerge %299 None
OpBranchConditional %297 %298 %299
%298 = OpLabel
%300 = OpLoad %int %slash
%290 = OpCompositeConstruct %v2float %283 %285
%291 = OpCompositeConstruct %v2float %287 %289
%292 = OpCompositeConstruct %mat2v2float %290 %291
OpStore %293 %292
%294 = OpFunctionCall %bool %test_bifffff22 %273 %275 %277 %279 %281 %293
OpBranch %271
%271 = OpLabel
%295 = OpPhi %bool %false %245 %294 %270
OpSelectionMerge %297 None
OpBranchConditional %295 %296 %297
%296 = OpLabel
%298 = OpLoad %int %slash
OpStore %299 %298
%300 = OpLoad %float %f1
OpStore %301 %300
%302 = OpLoad %float %f1
%302 = OpLoad %float %f2
OpStore %303 %302
%304 = OpLoad %float %f2
%304 = OpLoad %float %f3
OpStore %305 %304
%306 = OpLoad %float %f3
%306 = OpLoad %float %f4
OpStore %307 %306
%308 = OpLoad %float %f4
OpStore %309 %308
%310 = OpLoad %float %f1
%312 = OpFMul %float %310 %float_0_5
%313 = OpLoad %float %f2
%308 = OpLoad %float %f1
%310 = OpFMul %float %308 %float_0_5
%311 = OpLoad %float %f2
%312 = OpFMul %float %311 %float_0_5
%313 = OpLoad %float %f3
%314 = OpFMul %float %313 %float_0_5
%315 = OpLoad %float %f3
%315 = OpLoad %float %f4
%316 = OpFMul %float %315 %float_0_5
%317 = OpLoad %float %f4
%318 = OpFMul %float %317 %float_0_5
%319 = OpCompositeConstruct %v2float %312 %314
%320 = OpCompositeConstruct %v2float %316 %318
%321 = OpCompositeConstruct %mat2v2float %319 %320
OpStore %322 %321
%323 = OpFunctionCall %bool %test_bifffff22 %301 %303 %305 %307 %309 %322
OpBranch %299
%299 = OpLabel
%324 = OpPhi %bool %false %273 %323 %298
OpSelectionMerge %329 None
OpBranchConditional %324 %327 %328
%327 = OpLabel
%330 = OpAccessChain %_ptr_Uniform_v4float %19 %int_0
%317 = OpCompositeConstruct %v2float %310 %312
%318 = OpCompositeConstruct %v2float %314 %316
%319 = OpCompositeConstruct %mat2v2float %317 %318
OpStore %320 %319
%321 = OpFunctionCall %bool %test_bifffff22 %299 %301 %303 %305 %307 %320
OpBranch %297
%297 = OpLabel
%322 = OpPhi %bool %false %271 %321 %296
OpSelectionMerge %327 None
OpBranchConditional %322 %325 %326
%325 = OpLabel
%328 = OpAccessChain %_ptr_Uniform_v4float %19 %int_0
%329 = OpLoad %v4float %328
OpStore %323 %329
OpBranch %327
%326 = OpLabel
%330 = OpAccessChain %_ptr_Uniform_v4float %19 %int_1
%331 = OpLoad %v4float %330
OpStore %325 %331
OpBranch %329
%328 = OpLabel
%332 = OpAccessChain %_ptr_Uniform_v4float %19 %int_1
%333 = OpLoad %v4float %332
OpStore %325 %333
OpBranch %329
%329 = OpLabel
%334 = OpLoad %v4float %325
OpReturnValue %334
OpStore %323 %331
OpBranch %327
%327 = OpLabel
%332 = OpLoad %v4float %323
OpReturnValue %332
OpFunctionEnd

View File

@ -14,7 +14,6 @@ OpDecorate %sk_FragColor Location 0
OpDecorate %sk_FragColor Index 0
OpDecorate %sk_Clockwise BuiltIn FrontFacing
OpDecorate %x RelaxedPrecision
OpDecorate %31 RelaxedPrecision
OpDecorate %33 RelaxedPrecision
OpDecorate %34 RelaxedPrecision
OpDecorate %35 RelaxedPrecision
@ -43,6 +42,7 @@ OpDecorate %39 RelaxedPrecision
%float_3 = OpConstant %float 3
%29 = OpConstantComposite %v2float %float_0 %float_1
%30 = OpConstantComposite %v2float %float_2 %float_3
%31 = OpConstantComposite %mat2v2float %29 %30
%_entrypoint_v = OpFunction %void None %12
%13 = OpLabel
%17 = OpVariable %_ptr_Function_v2float Function
@ -56,7 +56,6 @@ OpFunctionEnd
%22 = OpLabel
%x = OpVariable %_ptr_Function_mat2v2float Function
%y = OpVariable %_ptr_Function_v2float Function
%31 = OpCompositeConstruct %mat2v2float %29 %30
OpStore %x %31
%33 = OpLoad %mat2v2float %x
%34 = OpCompositeExtract %float %33 0 0

View File

@ -105,6 +105,7 @@ OpDecorate %250 RelaxedPrecision
%float_n4 = OpConstant %float -4
%83 = OpConstantComposite %v2float %float_n1 %float_n2
%84 = OpConstantComposite %v2float %float_n3 %float_n4
%85 = OpConstantComposite %mat2v2float %83 %84
%_ptr_Uniform_mat2v2float = OpTypePointer Uniform %mat2v2float
%int_3 = OpConstant %int 3
%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
@ -116,6 +117,7 @@ OpDecorate %250 RelaxedPrecision
%116 = OpConstantComposite %v3float %float_n1 %float_n2 %float_n3
%117 = OpConstantComposite %v3float %float_n4 %float_n5 %float_n6
%118 = OpConstantComposite %v3float %float_n7 %float_n8 %float_n9
%119 = OpConstantComposite %mat3v3float %116 %117 %118
%_ptr_Uniform_mat3v3float = OpTypePointer Uniform %mat3v3float
%int_4 = OpConstant %int 4
%v3bool = OpTypeVector %bool 3
@ -131,6 +133,7 @@ OpDecorate %250 RelaxedPrecision
%161 = OpConstantComposite %v4float %float_n5 %float_n6 %float_n7 %float_n8
%162 = OpConstantComposite %v4float %float_n9 %float_n10 %float_n11 %float_n12
%163 = OpConstantComposite %v4float %float_n13 %float_n14 %float_n15 %float_n16
%164 = OpConstantComposite %mat4v4float %160 %161 %162 %163
%_ptr_Uniform_mat4v4float = OpTypePointer Uniform %mat4v4float
%int_5 = OpConstant %int 5
%v4bool = OpTypeVector %bool 4
@ -199,7 +202,6 @@ OpFunctionEnd
%77 = OpLabel
%negated = OpVariable %_ptr_Function_mat2v2float Function
%x_2 = OpVariable %_ptr_Function_mat2v2float Function
%85 = OpCompositeConstruct %mat2v2float %83 %84
OpStore %negated %85
%87 = OpAccessChain %_ptr_Uniform_mat2v2float %16 %int_3
%90 = OpLoad %mat2v2float %87
@ -228,7 +230,6 @@ OpFunctionEnd
%108 = OpLabel
%negated_0 = OpVariable %_ptr_Function_mat3v3float Function
%x_3 = OpVariable %_ptr_Function_mat3v3float Function
%119 = OpCompositeConstruct %mat3v3float %116 %117 %118
OpStore %negated_0 %119
%121 = OpAccessChain %_ptr_Uniform_mat3v3float %16 %int_4
%124 = OpLoad %mat3v3float %121
@ -264,7 +265,6 @@ OpFunctionEnd
%150 = OpLabel
%negated_1 = OpVariable %_ptr_Function_mat4v4float Function
%x_4 = OpVariable %_ptr_Function_mat4v4float Function
%164 = OpCompositeConstruct %mat4v4float %160 %161 %162 %163
OpStore %negated_1 %164
%166 = OpAccessChain %_ptr_Uniform_mat4v4float %16 %int_5
%169 = OpLoad %mat4v4float %166

View File

@ -34,10 +34,10 @@ OpDecorate %41 RelaxedPrecision
OpDecorate %42 RelaxedPrecision
OpDecorate %43 RelaxedPrecision
OpDecorate %45 RelaxedPrecision
OpDecorate %51 RelaxedPrecision
OpDecorate %63 RelaxedPrecision
OpDecorate %67 RelaxedPrecision
OpDecorate %86 RelaxedPrecision
OpDecorate %85 RelaxedPrecision
OpDecorate %90 RelaxedPrecision
OpDecorate %91 RelaxedPrecision
OpDecorate %92 RelaxedPrecision
OpDecorate %93 RelaxedPrecision
@ -45,9 +45,8 @@ OpDecorate %94 RelaxedPrecision
OpDecorate %95 RelaxedPrecision
OpDecorate %96 RelaxedPrecision
OpDecorate %97 RelaxedPrecision
OpDecorate %98 RelaxedPrecision
OpDecorate %101 RelaxedPrecision
OpDecorate %112 RelaxedPrecision
OpDecorate %111 RelaxedPrecision
OpDecorate %115 RelaxedPrecision
OpDecorate %116 RelaxedPrecision
OpDecorate %117 RelaxedPrecision
OpDecorate %118 RelaxedPrecision
@ -55,17 +54,17 @@ OpDecorate %119 RelaxedPrecision
OpDecorate %120 RelaxedPrecision
OpDecorate %121 RelaxedPrecision
OpDecorate %122 RelaxedPrecision
OpDecorate %123 RelaxedPrecision
OpDecorate %124 RelaxedPrecision
OpDecorate %135 RelaxedPrecision
OpDecorate %139 RelaxedPrecision
OpDecorate %133 RelaxedPrecision
OpDecorate %137 RelaxedPrecision
OpDecorate %138 RelaxedPrecision
OpDecorate %140 RelaxedPrecision
OpDecorate %142 RelaxedPrecision
OpDecorate %144 RelaxedPrecision
OpDecorate %146 RelaxedPrecision
OpDecorate %149 RelaxedPrecision
OpDecorate %151 RelaxedPrecision
OpDecorate %153 RelaxedPrecision
OpDecorate %155 RelaxedPrecision
OpDecorate %156 RelaxedPrecision
OpDecorate %157 RelaxedPrecision
OpDecorate %158 RelaxedPrecision
OpDecorate %159 RelaxedPrecision
@ -73,52 +72,46 @@ OpDecorate %160 RelaxedPrecision
OpDecorate %161 RelaxedPrecision
OpDecorate %162 RelaxedPrecision
OpDecorate %163 RelaxedPrecision
OpDecorate %164 RelaxedPrecision
OpDecorate %165 RelaxedPrecision
OpDecorate %166 RelaxedPrecision
OpDecorate %177 RelaxedPrecision
OpDecorate %174 RelaxedPrecision
OpDecorate %178 RelaxedPrecision
OpDecorate %179 RelaxedPrecision
OpDecorate %180 RelaxedPrecision
OpDecorate %181 RelaxedPrecision
OpDecorate %182 RelaxedPrecision
OpDecorate %183 RelaxedPrecision
OpDecorate %184 RelaxedPrecision
OpDecorate %185 RelaxedPrecision
OpDecorate %186 RelaxedPrecision
OpDecorate %187 RelaxedPrecision
OpDecorate %188 RelaxedPrecision
OpDecorate %189 RelaxedPrecision
OpDecorate %196 RelaxedPrecision
OpDecorate %200 RelaxedPrecision
OpDecorate %201 RelaxedPrecision
OpDecorate %202 RelaxedPrecision
OpDecorate %203 RelaxedPrecision
OpDecorate %204 RelaxedPrecision
OpDecorate %205 RelaxedPrecision
OpDecorate %206 RelaxedPrecision
OpDecorate %207 RelaxedPrecision
OpDecorate %208 RelaxedPrecision
OpDecorate %209 RelaxedPrecision
OpDecorate %210 RelaxedPrecision
OpDecorate %211 RelaxedPrecision
OpDecorate %212 RelaxedPrecision
OpDecorate %218 RelaxedPrecision
OpDecorate %222 RelaxedPrecision
OpDecorate %223 RelaxedPrecision
OpDecorate %225 RelaxedPrecision
OpDecorate %227 RelaxedPrecision
OpDecorate %228 RelaxedPrecision
OpDecorate %230 RelaxedPrecision
OpDecorate %232 RelaxedPrecision
OpDecorate %229 RelaxedPrecision
OpDecorate %234 RelaxedPrecision
OpDecorate %239 RelaxedPrecision
OpDecorate %236 RelaxedPrecision
OpDecorate %238 RelaxedPrecision
OpDecorate %240 RelaxedPrecision
OpDecorate %241 RelaxedPrecision
OpDecorate %242 RelaxedPrecision
OpDecorate %243 RelaxedPrecision
OpDecorate %244 RelaxedPrecision
OpDecorate %245 RelaxedPrecision
OpDecorate %246 RelaxedPrecision
OpDecorate %247 RelaxedPrecision
OpDecorate %248 RelaxedPrecision
OpDecorate %249 RelaxedPrecision
OpDecorate %250 RelaxedPrecision
OpDecorate %251 RelaxedPrecision
OpDecorate %252 RelaxedPrecision
OpDecorate %253 RelaxedPrecision
OpDecorate %254 RelaxedPrecision
OpDecorate %265 RelaxedPrecision
OpDecorate %272 RelaxedPrecision
OpDecorate %275 RelaxedPrecision
OpDecorate %276 RelaxedPrecision
OpDecorate %259 RelaxedPrecision
OpDecorate %266 RelaxedPrecision
OpDecorate %269 RelaxedPrecision
OpDecorate %270 RelaxedPrecision
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
@ -148,10 +141,12 @@ OpDecorate %276 RelaxedPrecision
%float_2_25 = OpConstant %float 2.25
%49 = OpConstantComposite %v2float %float_n1_25 %float_0
%50 = OpConstantComposite %v2float %float_0_75 %float_2_25
%51 = OpConstantComposite %mat2v2float %49 %50
%v2bool = OpTypeVector %bool 2
%int_0 = OpConstant %int 0
%float_1 = OpConstant %float 1
%100 = OpConstantComposite %v2float %float_0 %float_1
%99 = OpConstantComposite %v2float %float_0 %float_1
%100 = OpConstantComposite %mat2v2float %99 %99
%v4int = OpTypeVector %int 4
%v4bool = OpTypeVector %bool 4
%_ptr_Function_v4float = OpTypePointer Function %v4float
@ -168,7 +163,7 @@ OpFunctionEnd
%24 = OpFunctionParameter %_ptr_Function_v2float
%25 = OpLabel
%ok = OpVariable %_ptr_Function_bool Function
%266 = OpVariable %_ptr_Function_v4float Function
%260 = OpVariable %_ptr_Function_v4float Function
OpStore %ok %true
%30 = OpLoad %bool %ok
OpSelectionMerge %32 None
@ -183,7 +178,6 @@ OpBranchConditional %30 %31 %32
%42 = OpCompositeConstruct %v2float %38 %39
%43 = OpCompositeConstruct %v2float %40 %41
%45 = OpCompositeConstruct %mat2v2float %42 %43
%51 = OpCompositeConstruct %mat2v2float %49 %50
%53 = OpCompositeExtract %v2float %45 0
%54 = OpCompositeExtract %v2float %51 0
%55 = OpFOrdEqual %v2bool %53 %54
@ -210,232 +204,225 @@ OpBranchConditional %63 %64 %65
%72 = OpCompositeConstruct %v2float %68 %69
%73 = OpCompositeConstruct %v2float %70 %71
%74 = OpCompositeConstruct %mat2v2float %72 %73
%75 = OpCompositeConstruct %mat2v2float %49 %50
%76 = OpCompositeExtract %v2float %74 0
%77 = OpCompositeExtract %v2float %75 0
%78 = OpFOrdEqual %v2bool %76 %77
%79 = OpAll %bool %78
%80 = OpCompositeExtract %v2float %74 1
%81 = OpCompositeExtract %v2float %75 1
%82 = OpFOrdEqual %v2bool %80 %81
%83 = OpAll %bool %82
%84 = OpLogicalAnd %bool %79 %83
%75 = OpCompositeExtract %v2float %74 0
%76 = OpCompositeExtract %v2float %51 0
%77 = OpFOrdEqual %v2bool %75 %76
%78 = OpAll %bool %77
%79 = OpCompositeExtract %v2float %74 1
%80 = OpCompositeExtract %v2float %51 1
%81 = OpFOrdEqual %v2bool %79 %80
%82 = OpAll %bool %81
%83 = OpLogicalAnd %bool %78 %82
OpBranch %65
%65 = OpLabel
%85 = OpPhi %bool %false %32 %84 %64
OpStore %ok %85
%86 = OpLoad %bool %ok
OpSelectionMerge %88 None
OpBranchConditional %86 %87 %88
%84 = OpPhi %bool %false %32 %83 %64
OpStore %ok %84
%85 = OpLoad %bool %ok
OpSelectionMerge %87 None
OpBranchConditional %85 %86 %87
%86 = OpLabel
%88 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
%90 = OpLoad %v4float %88
%91 = OpCompositeExtract %float %90 0
%92 = OpCompositeExtract %float %90 1
%93 = OpCompositeExtract %float %90 2
%94 = OpCompositeExtract %float %90 3
%95 = OpCompositeConstruct %v2float %91 %92
%96 = OpCompositeConstruct %v2float %93 %94
%97 = OpCompositeConstruct %mat2v2float %95 %96
%101 = OpCompositeExtract %v2float %97 0
%102 = OpCompositeExtract %v2float %100 0
%103 = OpFOrdEqual %v2bool %101 %102
%104 = OpAll %bool %103
%105 = OpCompositeExtract %v2float %97 1
%106 = OpCompositeExtract %v2float %100 1
%107 = OpFOrdEqual %v2bool %105 %106
%108 = OpAll %bool %107
%109 = OpLogicalAnd %bool %104 %108
OpBranch %87
%87 = OpLabel
%89 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
%91 = OpLoad %v4float %89
%92 = OpCompositeExtract %float %91 0
%93 = OpCompositeExtract %float %91 1
%94 = OpCompositeExtract %float %91 2
%95 = OpCompositeExtract %float %91 3
%96 = OpCompositeConstruct %v2float %92 %93
%97 = OpCompositeConstruct %v2float %94 %95
%98 = OpCompositeConstruct %mat2v2float %96 %97
%101 = OpCompositeConstruct %mat2v2float %100 %100
%102 = OpCompositeExtract %v2float %98 0
%103 = OpCompositeExtract %v2float %101 0
%104 = OpFOrdEqual %v2bool %102 %103
%105 = OpAll %bool %104
%106 = OpCompositeExtract %v2float %98 1
%107 = OpCompositeExtract %v2float %101 1
%108 = OpFOrdEqual %v2bool %106 %107
%109 = OpAll %bool %108
%110 = OpLogicalAnd %bool %105 %109
OpBranch %88
%88 = OpLabel
%111 = OpPhi %bool %false %65 %110 %87
OpStore %ok %111
%112 = OpLoad %bool %ok
OpSelectionMerge %114 None
OpBranchConditional %112 %113 %114
%110 = OpPhi %bool %false %65 %109 %86
OpStore %ok %110
%111 = OpLoad %bool %ok
OpSelectionMerge %113 None
OpBranchConditional %111 %112 %113
%112 = OpLabel
%114 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
%115 = OpLoad %v4float %114
%116 = OpCompositeExtract %float %115 0
%117 = OpCompositeExtract %float %115 1
%118 = OpCompositeExtract %float %115 2
%119 = OpCompositeExtract %float %115 3
%120 = OpCompositeConstruct %v2float %116 %117
%121 = OpCompositeConstruct %v2float %118 %119
%122 = OpCompositeConstruct %mat2v2float %120 %121
%123 = OpCompositeExtract %v2float %122 0
%124 = OpCompositeExtract %v2float %100 0
%125 = OpFOrdEqual %v2bool %123 %124
%126 = OpAll %bool %125
%127 = OpCompositeExtract %v2float %122 1
%128 = OpCompositeExtract %v2float %100 1
%129 = OpFOrdEqual %v2bool %127 %128
%130 = OpAll %bool %129
%131 = OpLogicalAnd %bool %126 %130
OpBranch %113
%113 = OpLabel
%115 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
%116 = OpLoad %v4float %115
%117 = OpCompositeExtract %float %116 0
%118 = OpCompositeExtract %float %116 1
%119 = OpCompositeExtract %float %116 2
%120 = OpCompositeExtract %float %116 3
%121 = OpCompositeConstruct %v2float %117 %118
%122 = OpCompositeConstruct %v2float %119 %120
%123 = OpCompositeConstruct %mat2v2float %121 %122
%124 = OpCompositeConstruct %mat2v2float %100 %100
%125 = OpCompositeExtract %v2float %123 0
%126 = OpCompositeExtract %v2float %124 0
%127 = OpFOrdEqual %v2bool %125 %126
%128 = OpAll %bool %127
%129 = OpCompositeExtract %v2float %123 1
%130 = OpCompositeExtract %v2float %124 1
%131 = OpFOrdEqual %v2bool %129 %130
%132 = OpAll %bool %131
%133 = OpLogicalAnd %bool %128 %132
OpBranch %114
%114 = OpLabel
%134 = OpPhi %bool %false %88 %133 %113
OpStore %ok %134
%135 = OpLoad %bool %ok
OpSelectionMerge %137 None
OpBranchConditional %135 %136 %137
%136 = OpLabel
%138 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
%139 = OpLoad %v4float %138
%140 = OpCompositeExtract %float %139 0
%132 = OpPhi %bool %false %87 %131 %112
OpStore %ok %132
%133 = OpLoad %bool %ok
OpSelectionMerge %135 None
OpBranchConditional %133 %134 %135
%134 = OpLabel
%136 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
%137 = OpLoad %v4float %136
%138 = OpCompositeExtract %float %137 0
%139 = OpConvertFToS %int %138
%140 = OpCompositeExtract %float %137 1
%141 = OpConvertFToS %int %140
%142 = OpCompositeExtract %float %139 1
%142 = OpCompositeExtract %float %137 2
%143 = OpConvertFToS %int %142
%144 = OpCompositeExtract %float %139 2
%144 = OpCompositeExtract %float %137 3
%145 = OpConvertFToS %int %144
%146 = OpCompositeExtract %float %139 3
%147 = OpConvertFToS %int %146
%149 = OpCompositeConstruct %v4int %141 %143 %145 %147
%150 = OpCompositeExtract %int %149 0
%147 = OpCompositeConstruct %v4int %139 %141 %143 %145
%148 = OpCompositeExtract %int %147 0
%149 = OpConvertSToF %float %148
%150 = OpCompositeExtract %int %147 1
%151 = OpConvertSToF %float %150
%152 = OpCompositeExtract %int %149 1
%152 = OpCompositeExtract %int %147 2
%153 = OpConvertSToF %float %152
%154 = OpCompositeExtract %int %149 2
%154 = OpCompositeExtract %int %147 3
%155 = OpConvertSToF %float %154
%156 = OpCompositeExtract %int %149 3
%157 = OpConvertSToF %float %156
%158 = OpCompositeConstruct %v4float %151 %153 %155 %157
%159 = OpCompositeExtract %float %158 0
%160 = OpCompositeExtract %float %158 1
%161 = OpCompositeExtract %float %158 2
%162 = OpCompositeExtract %float %158 3
%163 = OpCompositeConstruct %v2float %159 %160
%164 = OpCompositeConstruct %v2float %161 %162
%165 = OpCompositeConstruct %mat2v2float %163 %164
%166 = OpCompositeConstruct %mat2v2float %100 %100
%167 = OpCompositeExtract %v2float %165 0
%168 = OpCompositeExtract %v2float %166 0
%169 = OpFOrdEqual %v2bool %167 %168
%170 = OpAll %bool %169
%171 = OpCompositeExtract %v2float %165 1
%172 = OpCompositeExtract %v2float %166 1
%173 = OpFOrdEqual %v2bool %171 %172
%174 = OpAll %bool %173
%175 = OpLogicalAnd %bool %170 %174
OpBranch %137
%137 = OpLabel
%176 = OpPhi %bool %false %114 %175 %136
OpStore %ok %176
%177 = OpLoad %bool %ok
OpSelectionMerge %179 None
OpBranchConditional %177 %178 %179
%178 = OpLabel
%180 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
%181 = OpLoad %v4float %180
%182 = OpCompositeExtract %float %181 0
%183 = OpCompositeExtract %float %181 1
%184 = OpCompositeExtract %float %181 2
%185 = OpCompositeExtract %float %181 3
%186 = OpCompositeConstruct %v2float %182 %183
%187 = OpCompositeConstruct %v2float %184 %185
%188 = OpCompositeConstruct %mat2v2float %186 %187
%189 = OpCompositeConstruct %mat2v2float %100 %100
%190 = OpCompositeExtract %v2float %188 0
%191 = OpCompositeExtract %v2float %189 0
%156 = OpCompositeConstruct %v4float %149 %151 %153 %155
%157 = OpCompositeExtract %float %156 0
%158 = OpCompositeExtract %float %156 1
%159 = OpCompositeExtract %float %156 2
%160 = OpCompositeExtract %float %156 3
%161 = OpCompositeConstruct %v2float %157 %158
%162 = OpCompositeConstruct %v2float %159 %160
%163 = OpCompositeConstruct %mat2v2float %161 %162
%164 = OpCompositeExtract %v2float %163 0
%165 = OpCompositeExtract %v2float %100 0
%166 = OpFOrdEqual %v2bool %164 %165
%167 = OpAll %bool %166
%168 = OpCompositeExtract %v2float %163 1
%169 = OpCompositeExtract %v2float %100 1
%170 = OpFOrdEqual %v2bool %168 %169
%171 = OpAll %bool %170
%172 = OpLogicalAnd %bool %167 %171
OpBranch %135
%135 = OpLabel
%173 = OpPhi %bool %false %113 %172 %134
OpStore %ok %173
%174 = OpLoad %bool %ok
OpSelectionMerge %176 None
OpBranchConditional %174 %175 %176
%175 = OpLabel
%177 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
%178 = OpLoad %v4float %177
%179 = OpCompositeExtract %float %178 0
%180 = OpCompositeExtract %float %178 1
%181 = OpCompositeExtract %float %178 2
%182 = OpCompositeExtract %float %178 3
%183 = OpCompositeConstruct %v2float %179 %180
%184 = OpCompositeConstruct %v2float %181 %182
%185 = OpCompositeConstruct %mat2v2float %183 %184
%186 = OpCompositeExtract %v2float %185 0
%187 = OpCompositeExtract %v2float %100 0
%188 = OpFOrdEqual %v2bool %186 %187
%189 = OpAll %bool %188
%190 = OpCompositeExtract %v2float %185 1
%191 = OpCompositeExtract %v2float %100 1
%192 = OpFOrdEqual %v2bool %190 %191
%193 = OpAll %bool %192
%194 = OpCompositeExtract %v2float %188 1
%195 = OpCompositeExtract %v2float %189 1
%196 = OpFOrdEqual %v2bool %194 %195
%197 = OpAll %bool %196
%198 = OpLogicalAnd %bool %193 %197
OpBranch %179
%179 = OpLabel
%199 = OpPhi %bool %false %137 %198 %178
OpStore %ok %199
%200 = OpLoad %bool %ok
OpSelectionMerge %202 None
OpBranchConditional %200 %201 %202
%201 = OpLabel
%203 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
%204 = OpLoad %v4float %203
%205 = OpCompositeExtract %float %204 0
%206 = OpCompositeExtract %float %204 1
%207 = OpCompositeExtract %float %204 2
%208 = OpCompositeExtract %float %204 3
%209 = OpCompositeConstruct %v2float %205 %206
%210 = OpCompositeConstruct %v2float %207 %208
%211 = OpCompositeConstruct %mat2v2float %209 %210
%212 = OpCompositeConstruct %mat2v2float %100 %100
%213 = OpCompositeExtract %v2float %211 0
%214 = OpCompositeExtract %v2float %212 0
%215 = OpFOrdEqual %v2bool %213 %214
%216 = OpAll %bool %215
%217 = OpCompositeExtract %v2float %211 1
%218 = OpCompositeExtract %v2float %212 1
%219 = OpFOrdEqual %v2bool %217 %218
%220 = OpAll %bool %219
%221 = OpLogicalAnd %bool %216 %220
OpBranch %202
%202 = OpLabel
%222 = OpPhi %bool %false %179 %221 %201
OpStore %ok %222
%223 = OpLoad %bool %ok
OpSelectionMerge %225 None
OpBranchConditional %223 %224 %225
%224 = OpLabel
%226 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
%227 = OpLoad %v4float %226
%228 = OpCompositeExtract %float %227 0
%229 = OpFUnordNotEqual %bool %228 %float_0
%230 = OpCompositeExtract %float %227 1
%231 = OpFUnordNotEqual %bool %230 %float_0
%232 = OpCompositeExtract %float %227 2
%233 = OpFUnordNotEqual %bool %232 %float_0
%234 = OpCompositeExtract %float %227 3
%235 = OpFUnordNotEqual %bool %234 %float_0
%237 = OpCompositeConstruct %v4bool %229 %231 %233 %235
%238 = OpCompositeExtract %bool %237 0
%239 = OpSelect %float %238 %float_1 %float_0
%240 = OpCompositeExtract %bool %237 1
%241 = OpSelect %float %240 %float_1 %float_0
%242 = OpCompositeExtract %bool %237 2
%243 = OpSelect %float %242 %float_1 %float_0
%244 = OpCompositeExtract %bool %237 3
%245 = OpSelect %float %244 %float_1 %float_0
%246 = OpCompositeConstruct %v4float %239 %241 %243 %245
%247 = OpCompositeExtract %float %246 0
%248 = OpCompositeExtract %float %246 1
%249 = OpCompositeExtract %float %246 2
%250 = OpCompositeExtract %float %246 3
%251 = OpCompositeConstruct %v2float %247 %248
%252 = OpCompositeConstruct %v2float %249 %250
%253 = OpCompositeConstruct %mat2v2float %251 %252
%254 = OpCompositeConstruct %mat2v2float %100 %100
%255 = OpCompositeExtract %v2float %253 0
%256 = OpCompositeExtract %v2float %254 0
%257 = OpFOrdEqual %v2bool %255 %256
%258 = OpAll %bool %257
%259 = OpCompositeExtract %v2float %253 1
%260 = OpCompositeExtract %v2float %254 1
%261 = OpFOrdEqual %v2bool %259 %260
%262 = OpAll %bool %261
%263 = OpLogicalAnd %bool %258 %262
OpBranch %225
%225 = OpLabel
%264 = OpPhi %bool %false %202 %263 %224
OpStore %ok %264
%265 = OpLoad %bool %ok
OpSelectionMerge %270 None
OpBranchConditional %265 %268 %269
%268 = OpLabel
%271 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
%272 = OpLoad %v4float %271
OpStore %266 %272
OpBranch %270
%269 = OpLabel
%273 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
%275 = OpLoad %v4float %273
OpStore %266 %275
OpBranch %270
%270 = OpLabel
%276 = OpLoad %v4float %266
OpReturnValue %276
%194 = OpLogicalAnd %bool %189 %193
OpBranch %176
%176 = OpLabel
%195 = OpPhi %bool %false %135 %194 %175
OpStore %ok %195
%196 = OpLoad %bool %ok
OpSelectionMerge %198 None
OpBranchConditional %196 %197 %198
%197 = OpLabel
%199 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
%200 = OpLoad %v4float %199
%201 = OpCompositeExtract %float %200 0
%202 = OpCompositeExtract %float %200 1
%203 = OpCompositeExtract %float %200 2
%204 = OpCompositeExtract %float %200 3
%205 = OpCompositeConstruct %v2float %201 %202
%206 = OpCompositeConstruct %v2float %203 %204
%207 = OpCompositeConstruct %mat2v2float %205 %206
%208 = OpCompositeExtract %v2float %207 0
%209 = OpCompositeExtract %v2float %100 0
%210 = OpFOrdEqual %v2bool %208 %209
%211 = OpAll %bool %210
%212 = OpCompositeExtract %v2float %207 1
%213 = OpCompositeExtract %v2float %100 1
%214 = OpFOrdEqual %v2bool %212 %213
%215 = OpAll %bool %214
%216 = OpLogicalAnd %bool %211 %215
OpBranch %198
%198 = OpLabel
%217 = OpPhi %bool %false %176 %216 %197
OpStore %ok %217
%218 = OpLoad %bool %ok
OpSelectionMerge %220 None
OpBranchConditional %218 %219 %220
%219 = OpLabel
%221 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
%222 = OpLoad %v4float %221
%223 = OpCompositeExtract %float %222 0
%224 = OpFUnordNotEqual %bool %223 %float_0
%225 = OpCompositeExtract %float %222 1
%226 = OpFUnordNotEqual %bool %225 %float_0
%227 = OpCompositeExtract %float %222 2
%228 = OpFUnordNotEqual %bool %227 %float_0
%229 = OpCompositeExtract %float %222 3
%230 = OpFUnordNotEqual %bool %229 %float_0
%232 = OpCompositeConstruct %v4bool %224 %226 %228 %230
%233 = OpCompositeExtract %bool %232 0
%234 = OpSelect %float %233 %float_1 %float_0
%235 = OpCompositeExtract %bool %232 1
%236 = OpSelect %float %235 %float_1 %float_0
%237 = OpCompositeExtract %bool %232 2
%238 = OpSelect %float %237 %float_1 %float_0
%239 = OpCompositeExtract %bool %232 3
%240 = OpSelect %float %239 %float_1 %float_0
%241 = OpCompositeConstruct %v4float %234 %236 %238 %240
%242 = OpCompositeExtract %float %241 0
%243 = OpCompositeExtract %float %241 1
%244 = OpCompositeExtract %float %241 2
%245 = OpCompositeExtract %float %241 3
%246 = OpCompositeConstruct %v2float %242 %243
%247 = OpCompositeConstruct %v2float %244 %245
%248 = OpCompositeConstruct %mat2v2float %246 %247
%249 = OpCompositeExtract %v2float %248 0
%250 = OpCompositeExtract %v2float %100 0
%251 = OpFOrdEqual %v2bool %249 %250
%252 = OpAll %bool %251
%253 = OpCompositeExtract %v2float %248 1
%254 = OpCompositeExtract %v2float %100 1
%255 = OpFOrdEqual %v2bool %253 %254
%256 = OpAll %bool %255
%257 = OpLogicalAnd %bool %252 %256
OpBranch %220
%220 = OpLabel
%258 = OpPhi %bool %false %198 %257 %219
OpStore %ok %258
%259 = OpLoad %bool %ok
OpSelectionMerge %264 None
OpBranchConditional %259 %262 %263
%262 = OpLabel
%265 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
%266 = OpLoad %v4float %265
OpStore %260 %266
OpBranch %264
%263 = OpLabel
%267 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
%269 = OpLoad %v4float %267
OpStore %260 %269
OpBranch %264
%264 = OpLabel
%270 = OpLoad %v4float %260
OpReturnValue %270
OpFunctionEnd