1OpCapability Shader 2%1 = OpExtInstImport "GLSL.std.450" 3OpMemoryModel Logical GLSL450 4OpEntryPoint Fragment %_entrypoint_v "_entrypoint" %sk_FragColor %sk_Clockwise 5OpExecutionMode %_entrypoint_v OriginUpperLeft 6OpName %sk_FragColor "sk_FragColor" 7OpName %sk_Clockwise "sk_Clockwise" 8OpName %_UniformBuffer "_UniformBuffer" 9OpMemberName %_UniformBuffer 0 "colorGreen" 10OpMemberName %_UniformBuffer 1 "colorRed" 11OpMemberName %_UniformBuffer 2 "testMatrix2x2" 12OpName %_entrypoint_v "_entrypoint_v" 13OpName %main "main" 14OpName %f4 "f4" 15OpName %ok "ok" 16OpDecorate %sk_FragColor RelaxedPrecision 17OpDecorate %sk_FragColor Location 0 18OpDecorate %sk_FragColor Index 0 19OpDecorate %sk_Clockwise BuiltIn FrontFacing 20OpMemberDecorate %_UniformBuffer 0 Offset 0 21OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision 22OpMemberDecorate %_UniformBuffer 1 Offset 16 23OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision 24OpMemberDecorate %_UniformBuffer 2 Offset 32 25OpMemberDecorate %_UniformBuffer 2 ColMajor 26OpMemberDecorate %_UniformBuffer 2 MatrixStride 16 27OpDecorate %_UniformBuffer Block 28OpDecorate %10 Binding 0 29OpDecorate %10 DescriptorSet 0 30OpDecorate %73 RelaxedPrecision 31OpDecorate %107 RelaxedPrecision 32OpDecorate %149 RelaxedPrecision 33OpDecorate %197 RelaxedPrecision 34OpDecorate %246 RelaxedPrecision 35OpDecorate %254 RelaxedPrecision 36OpDecorate %257 RelaxedPrecision 37OpDecorate %258 RelaxedPrecision 38%float = OpTypeFloat 32 39%v4float = OpTypeVector %float 4 40%_ptr_Output_v4float = OpTypePointer Output %v4float 41%sk_FragColor = OpVariable %_ptr_Output_v4float Output 42%bool = OpTypeBool 43%_ptr_Input_bool = OpTypePointer Input %bool 44%sk_Clockwise = OpVariable %_ptr_Input_bool Input 45%v2float = OpTypeVector %float 2 46%mat2v2float = OpTypeMatrix %v2float 2 47%_UniformBuffer = OpTypeStruct %v4float %v4float %mat2v2float 48%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer 49%10 = OpVariable %_ptr_Uniform__UniformBuffer Uniform 50%void = OpTypeVoid 51%17 = OpTypeFunction %void 52%float_0 = OpConstant %float 0 53%20 = OpConstantComposite %v2float %float_0 %float_0 54%_ptr_Function_v2float = OpTypePointer Function %v2float 55%24 = OpTypeFunction %v4float %_ptr_Function_v2float 56%_ptr_Function_v4float = OpTypePointer Function %v4float 57%_ptr_Uniform_mat2v2float = OpTypePointer Uniform %mat2v2float 58%int = OpTypeInt 32 1 59%int_2 = OpConstant %int 2 60%_ptr_Function_bool = OpTypePointer Function %bool 61%v3float = OpTypeVector %float 3 62%mat2v3float = OpTypeMatrix %v3float 2 63%float_1 = OpConstant %float 1 64%float_2 = OpConstant %float 2 65%float_3 = OpConstant %float 3 66%float_4 = OpConstant %float 4 67%v3bool = OpTypeVector %bool 3 68%false = OpConstantFalse %bool 69%mat2v4float = OpTypeMatrix %v4float 2 70%v4bool = OpTypeVector %bool 4 71%mat3v3float = OpTypeMatrix %v3float 3 72%mat4v2float = OpTypeMatrix %v2float 4 73%v2bool = OpTypeVector %bool 2 74%mat4v3float = OpTypeMatrix %v3float 4 75%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float 76%int_0 = OpConstant %int 0 77%int_1 = OpConstant %int 1 78%_entrypoint_v = OpFunction %void None %17 79%18 = OpLabel 80%21 = OpVariable %_ptr_Function_v2float Function 81OpStore %21 %20 82%23 = OpFunctionCall %v4float %main %21 83OpStore %sk_FragColor %23 84OpReturn 85OpFunctionEnd 86%main = OpFunction %v4float None %24 87%25 = OpFunctionParameter %_ptr_Function_v2float 88%26 = OpLabel 89%f4 = OpVariable %_ptr_Function_v4float Function 90%ok = OpVariable %_ptr_Function_bool Function 91%247 = OpVariable %_ptr_Function_v4float Function 92%29 = OpAccessChain %_ptr_Uniform_mat2v2float %10 %int_2 93%33 = OpLoad %mat2v2float %29 94%34 = OpCompositeExtract %float %33 0 0 95%35 = OpCompositeExtract %float %33 0 1 96%36 = OpCompositeExtract %float %33 1 0 97%37 = OpCompositeExtract %float %33 1 1 98%38 = OpCompositeConstruct %v4float %34 %35 %36 %37 99OpStore %f4 %38 100%41 = OpLoad %v4float %f4 101%42 = OpLoad %v4float %f4 102%43 = OpVectorShuffle %v2float %42 %42 0 1 103%44 = OpCompositeExtract %float %41 0 104%45 = OpCompositeExtract %float %41 1 105%46 = OpCompositeExtract %float %41 2 106%47 = OpCompositeConstruct %v3float %44 %45 %46 107%49 = OpCompositeExtract %float %41 3 108%50 = OpCompositeExtract %float %43 0 109%51 = OpCompositeExtract %float %43 1 110%52 = OpCompositeConstruct %v3float %49 %50 %51 111%53 = OpCompositeConstruct %mat2v3float %47 %52 112%59 = OpCompositeConstruct %v3float %float_1 %float_2 %float_3 113%60 = OpCompositeConstruct %v3float %float_4 %float_1 %float_2 114%61 = OpCompositeConstruct %mat2v3float %59 %60 115%63 = OpCompositeExtract %v3float %53 0 116%64 = OpCompositeExtract %v3float %61 0 117%65 = OpFOrdEqual %v3bool %63 %64 118%66 = OpAll %bool %65 119%67 = OpCompositeExtract %v3float %53 1 120%68 = OpCompositeExtract %v3float %61 1 121%69 = OpFOrdEqual %v3bool %67 %68 122%70 = OpAll %bool %69 123%71 = OpLogicalAnd %bool %66 %70 124OpStore %ok %71 125%73 = OpLoad %bool %ok 126OpSelectionMerge %75 None 127OpBranchConditional %73 %74 %75 128%74 = OpLabel 129%76 = OpLoad %v4float %f4 130%77 = OpVectorShuffle %v3float %76 %76 0 1 2 131%78 = OpLoad %v4float %f4 132%79 = OpVectorShuffle %v4float %78 %78 3 0 1 2 133%80 = OpLoad %v4float %f4 134%81 = OpCompositeExtract %float %80 3 135%82 = OpCompositeExtract %float %77 0 136%83 = OpCompositeExtract %float %77 1 137%84 = OpCompositeExtract %float %77 2 138%85 = OpCompositeExtract %float %79 0 139%86 = OpCompositeConstruct %v4float %82 %83 %84 %85 140%87 = OpCompositeExtract %float %79 1 141%88 = OpCompositeExtract %float %79 2 142%89 = OpCompositeExtract %float %79 3 143%90 = OpCompositeConstruct %v4float %87 %88 %89 %81 144%91 = OpCompositeConstruct %mat2v4float %86 %90 145%93 = OpCompositeConstruct %v4float %float_1 %float_2 %float_3 %float_4 146%94 = OpCompositeConstruct %v4float %float_1 %float_2 %float_3 %float_4 147%95 = OpCompositeConstruct %mat2v4float %93 %94 148%97 = OpCompositeExtract %v4float %91 0 149%98 = OpCompositeExtract %v4float %95 0 150%99 = OpFOrdEqual %v4bool %97 %98 151%100 = OpAll %bool %99 152%101 = OpCompositeExtract %v4float %91 1 153%102 = OpCompositeExtract %v4float %95 1 154%103 = OpFOrdEqual %v4bool %101 %102 155%104 = OpAll %bool %103 156%105 = OpLogicalAnd %bool %100 %104 157OpBranch %75 158%75 = OpLabel 159%106 = OpPhi %bool %false %26 %105 %74 160OpStore %ok %106 161%107 = OpLoad %bool %ok 162OpSelectionMerge %109 None 163OpBranchConditional %107 %108 %109 164%108 = OpLabel 165%110 = OpLoad %v4float %f4 166%111 = OpVectorShuffle %v2float %110 %110 0 1 167%112 = OpLoad %v4float %f4 168%113 = OpVectorShuffle %v2float %112 %112 2 3 169%114 = OpLoad %v4float %f4 170%115 = OpLoad %v4float %f4 171%116 = OpCompositeExtract %float %115 0 172%117 = OpCompositeExtract %float %111 0 173%118 = OpCompositeExtract %float %111 1 174%119 = OpCompositeExtract %float %113 0 175%120 = OpCompositeConstruct %v3float %117 %118 %119 176%121 = OpCompositeExtract %float %113 1 177%122 = OpCompositeExtract %float %114 0 178%123 = OpCompositeExtract %float %114 1 179%124 = OpCompositeConstruct %v3float %121 %122 %123 180%125 = OpCompositeExtract %float %114 2 181%126 = OpCompositeExtract %float %114 3 182%127 = OpCompositeConstruct %v3float %125 %126 %116 183%128 = OpCompositeConstruct %mat3v3float %120 %124 %127 184%130 = OpCompositeConstruct %v3float %float_1 %float_2 %float_3 185%131 = OpCompositeConstruct %v3float %float_4 %float_1 %float_2 186%132 = OpCompositeConstruct %v3float %float_3 %float_4 %float_1 187%133 = OpCompositeConstruct %mat3v3float %130 %131 %132 188%134 = OpCompositeExtract %v3float %128 0 189%135 = OpCompositeExtract %v3float %133 0 190%136 = OpFOrdEqual %v3bool %134 %135 191%137 = OpAll %bool %136 192%138 = OpCompositeExtract %v3float %128 1 193%139 = OpCompositeExtract %v3float %133 1 194%140 = OpFOrdEqual %v3bool %138 %139 195%141 = OpAll %bool %140 196%142 = OpLogicalAnd %bool %137 %141 197%143 = OpCompositeExtract %v3float %128 2 198%144 = OpCompositeExtract %v3float %133 2 199%145 = OpFOrdEqual %v3bool %143 %144 200%146 = OpAll %bool %145 201%147 = OpLogicalAnd %bool %142 %146 202OpBranch %109 203%109 = OpLabel 204%148 = OpPhi %bool %false %75 %147 %108 205OpStore %ok %148 206%149 = OpLoad %bool %ok 207OpSelectionMerge %151 None 208OpBranchConditional %149 %150 %151 209%150 = OpLabel 210%152 = OpLoad %v4float %f4 211%153 = OpVectorShuffle %v3float %152 %152 0 1 2 212%154 = OpLoad %v4float %f4 213%155 = OpVectorShuffle %v4float %154 %154 3 0 1 2 214%156 = OpLoad %v4float %f4 215%157 = OpCompositeExtract %float %156 3 216%158 = OpCompositeExtract %float %153 0 217%159 = OpCompositeExtract %float %153 1 218%160 = OpCompositeConstruct %v2float %158 %159 219%161 = OpCompositeExtract %float %153 2 220%162 = OpCompositeExtract %float %155 0 221%163 = OpCompositeConstruct %v2float %161 %162 222%164 = OpCompositeExtract %float %155 1 223%165 = OpCompositeExtract %float %155 2 224%166 = OpCompositeConstruct %v2float %164 %165 225%167 = OpCompositeExtract %float %155 3 226%168 = OpCompositeConstruct %v2float %167 %157 227%169 = OpCompositeConstruct %mat4v2float %160 %163 %166 %168 228%171 = OpCompositeConstruct %v2float %float_1 %float_2 229%172 = OpCompositeConstruct %v2float %float_3 %float_4 230%173 = OpCompositeConstruct %v2float %float_1 %float_2 231%174 = OpCompositeConstruct %v2float %float_3 %float_4 232%175 = OpCompositeConstruct %mat4v2float %171 %172 %173 %174 233%177 = OpCompositeExtract %v2float %169 0 234%178 = OpCompositeExtract %v2float %175 0 235%179 = OpFOrdEqual %v2bool %177 %178 236%180 = OpAll %bool %179 237%181 = OpCompositeExtract %v2float %169 1 238%182 = OpCompositeExtract %v2float %175 1 239%183 = OpFOrdEqual %v2bool %181 %182 240%184 = OpAll %bool %183 241%185 = OpLogicalAnd %bool %180 %184 242%186 = OpCompositeExtract %v2float %169 2 243%187 = OpCompositeExtract %v2float %175 2 244%188 = OpFOrdEqual %v2bool %186 %187 245%189 = OpAll %bool %188 246%190 = OpLogicalAnd %bool %185 %189 247%191 = OpCompositeExtract %v2float %169 3 248%192 = OpCompositeExtract %v2float %175 3 249%193 = OpFOrdEqual %v2bool %191 %192 250%194 = OpAll %bool %193 251%195 = OpLogicalAnd %bool %190 %194 252OpBranch %151 253%151 = OpLabel 254%196 = OpPhi %bool %false %109 %195 %150 255OpStore %ok %196 256%197 = OpLoad %bool %ok 257OpSelectionMerge %199 None 258OpBranchConditional %197 %198 %199 259%198 = OpLabel 260%200 = OpLoad %v4float %f4 261%201 = OpCompositeExtract %float %200 0 262%202 = OpLoad %v4float %f4 263%203 = OpVectorShuffle %v4float %202 %202 1 2 3 0 264%204 = OpLoad %v4float %f4 265%205 = OpVectorShuffle %v4float %204 %204 1 2 3 0 266%206 = OpLoad %v4float %f4 267%207 = OpVectorShuffle %v3float %206 %206 1 2 3 268%208 = OpCompositeExtract %float %203 0 269%209 = OpCompositeExtract %float %203 1 270%210 = OpCompositeConstruct %v3float %201 %208 %209 271%211 = OpCompositeExtract %float %203 2 272%212 = OpCompositeExtract %float %203 3 273%213 = OpCompositeExtract %float %205 0 274%214 = OpCompositeConstruct %v3float %211 %212 %213 275%215 = OpCompositeExtract %float %205 1 276%216 = OpCompositeExtract %float %205 2 277%217 = OpCompositeExtract %float %205 3 278%218 = OpCompositeConstruct %v3float %215 %216 %217 279%219 = OpCompositeConstruct %mat4v3float %210 %214 %218 %207 280%221 = OpCompositeConstruct %v3float %float_1 %float_2 %float_3 281%222 = OpCompositeConstruct %v3float %float_4 %float_1 %float_2 282%223 = OpCompositeConstruct %v3float %float_3 %float_4 %float_1 283%224 = OpCompositeConstruct %v3float %float_2 %float_3 %float_4 284%225 = OpCompositeConstruct %mat4v3float %221 %222 %223 %224 285%226 = OpCompositeExtract %v3float %219 0 286%227 = OpCompositeExtract %v3float %225 0 287%228 = OpFOrdEqual %v3bool %226 %227 288%229 = OpAll %bool %228 289%230 = OpCompositeExtract %v3float %219 1 290%231 = OpCompositeExtract %v3float %225 1 291%232 = OpFOrdEqual %v3bool %230 %231 292%233 = OpAll %bool %232 293%234 = OpLogicalAnd %bool %229 %233 294%235 = OpCompositeExtract %v3float %219 2 295%236 = OpCompositeExtract %v3float %225 2 296%237 = OpFOrdEqual %v3bool %235 %236 297%238 = OpAll %bool %237 298%239 = OpLogicalAnd %bool %234 %238 299%240 = OpCompositeExtract %v3float %219 3 300%241 = OpCompositeExtract %v3float %225 3 301%242 = OpFOrdEqual %v3bool %240 %241 302%243 = OpAll %bool %242 303%244 = OpLogicalAnd %bool %239 %243 304OpBranch %199 305%199 = OpLabel 306%245 = OpPhi %bool %false %151 %244 %198 307OpStore %ok %245 308%246 = OpLoad %bool %ok 309OpSelectionMerge %250 None 310OpBranchConditional %246 %248 %249 311%248 = OpLabel 312%251 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0 313%254 = OpLoad %v4float %251 314OpStore %247 %254 315OpBranch %250 316%249 = OpLabel 317%255 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1 318%257 = OpLoad %v4float %255 319OpStore %247 %257 320OpBranch %250 321%250 = OpLabel 322%258 = OpLoad %v4float %247 323OpReturnValue %258 324OpFunctionEnd 325