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 "colorWhite" 10OpMemberName %_UniformBuffer 1 "colorGreen" 11OpMemberName %_UniformBuffer 2 "colorRed" 12OpMemberName %_UniformBuffer 3 "testMatrix2x2" 13OpMemberName %_UniformBuffer 4 "testMatrix3x3" 14OpMemberName %_UniformBuffer 5 "testMatrix4x4" 15OpName %_entrypoint_v "_entrypoint_v" 16OpName %test_iscalar_b "test_iscalar_b" 17OpName %x "x" 18OpName %test_fvec_b "test_fvec_b" 19OpName %x_0 "x" 20OpName %test_ivec_b "test_ivec_b" 21OpName %x_1 "x" 22OpName %test_mat2_b "test_mat2_b" 23OpName %negated "negated" 24OpName %x_2 "x" 25OpName %test_mat3_b "test_mat3_b" 26OpName %negated_0 "negated" 27OpName %x_3 "x" 28OpName %test_mat4_b "test_mat4_b" 29OpName %negated_1 "negated" 30OpName %x_4 "x" 31OpName %main "main" 32OpName %_0_x "_0_x" 33OpDecorate %sk_FragColor RelaxedPrecision 34OpDecorate %sk_FragColor Location 0 35OpDecorate %sk_FragColor Index 0 36OpDecorate %sk_Clockwise BuiltIn FrontFacing 37OpMemberDecorate %_UniformBuffer 0 Offset 0 38OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision 39OpMemberDecorate %_UniformBuffer 1 Offset 16 40OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision 41OpMemberDecorate %_UniformBuffer 2 Offset 32 42OpMemberDecorate %_UniformBuffer 2 RelaxedPrecision 43OpMemberDecorate %_UniformBuffer 3 Offset 48 44OpMemberDecorate %_UniformBuffer 3 ColMajor 45OpMemberDecorate %_UniformBuffer 3 MatrixStride 16 46OpMemberDecorate %_UniformBuffer 4 Offset 80 47OpMemberDecorate %_UniformBuffer 4 ColMajor 48OpMemberDecorate %_UniformBuffer 4 MatrixStride 16 49OpMemberDecorate %_UniformBuffer 5 Offset 128 50OpMemberDecorate %_UniformBuffer 5 ColMajor 51OpMemberDecorate %_UniformBuffer 5 MatrixStride 16 52OpDecorate %_UniformBuffer Block 53OpDecorate %16 Binding 0 54OpDecorate %16 DescriptorSet 0 55OpDecorate %41 RelaxedPrecision 56OpDecorate %42 RelaxedPrecision 57OpDecorate %x_0 RelaxedPrecision 58OpDecorate %52 RelaxedPrecision 59OpDecorate %53 RelaxedPrecision 60OpDecorate %54 RelaxedPrecision 61OpDecorate %55 RelaxedPrecision 62OpDecorate %56 RelaxedPrecision 63OpDecorate %58 RelaxedPrecision 64OpDecorate %67 RelaxedPrecision 65OpDecorate %68 RelaxedPrecision 66OpDecorate %208 RelaxedPrecision 67OpDecorate %209 RelaxedPrecision 68OpDecorate %246 RelaxedPrecision 69OpDecorate %249 RelaxedPrecision 70OpDecorate %250 RelaxedPrecision 71%float = OpTypeFloat 32 72%v4float = OpTypeVector %float 4 73%_ptr_Output_v4float = OpTypePointer Output %v4float 74%sk_FragColor = OpVariable %_ptr_Output_v4float Output 75%bool = OpTypeBool 76%_ptr_Input_bool = OpTypePointer Input %bool 77%sk_Clockwise = OpVariable %_ptr_Input_bool Input 78%v2float = OpTypeVector %float 2 79%mat2v2float = OpTypeMatrix %v2float 2 80%v3float = OpTypeVector %float 3 81%mat3v3float = OpTypeMatrix %v3float 3 82%mat4v4float = OpTypeMatrix %v4float 4 83%_UniformBuffer = OpTypeStruct %v4float %v4float %v4float %mat2v2float %mat3v3float %mat4v4float 84%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer 85%16 = OpVariable %_ptr_Uniform__UniformBuffer Uniform 86%void = OpTypeVoid 87%26 = OpTypeFunction %void 88%float_0 = OpConstant %float 0 89%29 = OpConstantComposite %v2float %float_0 %float_0 90%_ptr_Function_v2float = OpTypePointer Function %v2float 91%33 = OpTypeFunction %bool 92%int = OpTypeInt 32 1 93%_ptr_Function_int = OpTypePointer Function %int 94%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float 95%int_0 = OpConstant %int 0 96%int_n1 = OpConstant %int -1 97%float_n1 = OpConstant %float -1 98%58 = OpConstantComposite %v2float %float_n1 %float_n1 99%v2bool = OpTypeVector %bool 2 100%v2int = OpTypeVector %int 2 101%_ptr_Function_v2int = OpTypePointer Function %v2int 102%74 = OpConstantComposite %v2int %int_n1 %int_n1 103%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float 104%float_n2 = OpConstant %float -2 105%float_n3 = OpConstant %float -3 106%float_n4 = OpConstant %float -4 107%_ptr_Uniform_mat2v2float = OpTypePointer Uniform %mat2v2float 108%int_3 = OpConstant %int 3 109%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float 110%float_n5 = OpConstant %float -5 111%float_n6 = OpConstant %float -6 112%float_n7 = OpConstant %float -7 113%float_n8 = OpConstant %float -8 114%float_n9 = OpConstant %float -9 115%_ptr_Uniform_mat3v3float = OpTypePointer Uniform %mat3v3float 116%int_4 = OpConstant %int 4 117%v3bool = OpTypeVector %bool 3 118%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float 119%float_n10 = OpConstant %float -10 120%float_n11 = OpConstant %float -11 121%float_n12 = OpConstant %float -12 122%float_n13 = OpConstant %float -13 123%float_n14 = OpConstant %float -14 124%float_n15 = OpConstant %float -15 125%float_n16 = OpConstant %float -16 126%_ptr_Uniform_mat4v4float = OpTypePointer Uniform %mat4v4float 127%int_5 = OpConstant %int 5 128%v4bool = OpTypeVector %bool 4 129%202 = OpTypeFunction %v4float %_ptr_Function_v2float 130%_ptr_Function_float = OpTypePointer Function %float 131%false = OpConstantFalse %bool 132%_ptr_Function_v4float = OpTypePointer Function %v4float 133%int_1 = OpConstant %int 1 134%int_2 = OpConstant %int 2 135%_entrypoint_v = OpFunction %void None %26 136%27 = OpLabel 137%30 = OpVariable %_ptr_Function_v2float Function 138OpStore %30 %29 139%32 = OpFunctionCall %v4float %main %30 140OpStore %sk_FragColor %32 141OpReturn 142OpFunctionEnd 143%test_iscalar_b = OpFunction %bool None %33 144%34 = OpLabel 145%x = OpVariable %_ptr_Function_int Function 146%38 = OpAccessChain %_ptr_Uniform_v4float %16 %int_0 147%41 = OpLoad %v4float %38 148%42 = OpCompositeExtract %float %41 0 149%43 = OpConvertFToS %int %42 150OpStore %x %43 151%44 = OpLoad %int %x 152%45 = OpSNegate %int %44 153OpStore %x %45 154%46 = OpLoad %int %x 155%48 = OpIEqual %bool %46 %int_n1 156OpReturnValue %48 157OpFunctionEnd 158%test_fvec_b = OpFunction %bool None %33 159%49 = OpLabel 160%x_0 = OpVariable %_ptr_Function_v2float Function 161%51 = OpAccessChain %_ptr_Uniform_v4float %16 %int_0 162%52 = OpLoad %v4float %51 163%53 = OpVectorShuffle %v2float %52 %52 0 1 164OpStore %x_0 %53 165%54 = OpLoad %v2float %x_0 166%55 = OpFNegate %v2float %54 167OpStore %x_0 %55 168%56 = OpLoad %v2float %x_0 169%59 = OpFOrdEqual %v2bool %56 %58 170%61 = OpAll %bool %59 171OpReturnValue %61 172OpFunctionEnd 173%test_ivec_b = OpFunction %bool None %33 174%62 = OpLabel 175%x_1 = OpVariable %_ptr_Function_v2int Function 176%66 = OpAccessChain %_ptr_Uniform_v4float %16 %int_0 177%67 = OpLoad %v4float %66 178%68 = OpCompositeExtract %float %67 0 179%69 = OpConvertFToS %int %68 180%70 = OpCompositeConstruct %v2int %69 %69 181OpStore %x_1 %70 182%71 = OpLoad %v2int %x_1 183%72 = OpSNegate %v2int %71 184OpStore %x_1 %72 185%73 = OpLoad %v2int %x_1 186%75 = OpIEqual %v2bool %73 %74 187%76 = OpAll %bool %75 188OpReturnValue %76 189OpFunctionEnd 190%test_mat2_b = OpFunction %bool None %33 191%77 = OpLabel 192%negated = OpVariable %_ptr_Function_mat2v2float Function 193%x_2 = OpVariable %_ptr_Function_mat2v2float Function 194%83 = OpCompositeConstruct %v2float %float_n1 %float_n2 195%84 = OpCompositeConstruct %v2float %float_n3 %float_n4 196%85 = OpCompositeConstruct %mat2v2float %83 %84 197OpStore %negated %85 198%87 = OpAccessChain %_ptr_Uniform_mat2v2float %16 %int_3 199%90 = OpLoad %mat2v2float %87 200OpStore %x_2 %90 201%91 = OpLoad %mat2v2float %x_2 202%92 = OpCompositeExtract %v2float %91 0 203%93 = OpFNegate %v2float %92 204%94 = OpCompositeExtract %v2float %91 1 205%95 = OpFNegate %v2float %94 206%96 = OpCompositeConstruct %mat2v2float %93 %95 207OpStore %x_2 %96 208%97 = OpLoad %mat2v2float %x_2 209%98 = OpLoad %mat2v2float %negated 210%99 = OpCompositeExtract %v2float %97 0 211%100 = OpCompositeExtract %v2float %98 0 212%101 = OpFOrdEqual %v2bool %99 %100 213%102 = OpAll %bool %101 214%103 = OpCompositeExtract %v2float %97 1 215%104 = OpCompositeExtract %v2float %98 1 216%105 = OpFOrdEqual %v2bool %103 %104 217%106 = OpAll %bool %105 218%107 = OpLogicalAnd %bool %102 %106 219OpReturnValue %107 220OpFunctionEnd 221%test_mat3_b = OpFunction %bool None %33 222%108 = OpLabel 223%negated_0 = OpVariable %_ptr_Function_mat3v3float Function 224%x_3 = OpVariable %_ptr_Function_mat3v3float Function 225%116 = OpCompositeConstruct %v3float %float_n1 %float_n2 %float_n3 226%117 = OpCompositeConstruct %v3float %float_n4 %float_n5 %float_n6 227%118 = OpCompositeConstruct %v3float %float_n7 %float_n8 %float_n9 228%119 = OpCompositeConstruct %mat3v3float %116 %117 %118 229OpStore %negated_0 %119 230%121 = OpAccessChain %_ptr_Uniform_mat3v3float %16 %int_4 231%124 = OpLoad %mat3v3float %121 232OpStore %x_3 %124 233%125 = OpLoad %mat3v3float %x_3 234%126 = OpCompositeExtract %v3float %125 0 235%127 = OpFNegate %v3float %126 236%128 = OpCompositeExtract %v3float %125 1 237%129 = OpFNegate %v3float %128 238%130 = OpCompositeExtract %v3float %125 2 239%131 = OpFNegate %v3float %130 240%132 = OpCompositeConstruct %mat3v3float %127 %129 %131 241OpStore %x_3 %132 242%133 = OpLoad %mat3v3float %x_3 243%134 = OpLoad %mat3v3float %negated_0 244%136 = OpCompositeExtract %v3float %133 0 245%137 = OpCompositeExtract %v3float %134 0 246%138 = OpFOrdEqual %v3bool %136 %137 247%139 = OpAll %bool %138 248%140 = OpCompositeExtract %v3float %133 1 249%141 = OpCompositeExtract %v3float %134 1 250%142 = OpFOrdEqual %v3bool %140 %141 251%143 = OpAll %bool %142 252%144 = OpLogicalAnd %bool %139 %143 253%145 = OpCompositeExtract %v3float %133 2 254%146 = OpCompositeExtract %v3float %134 2 255%147 = OpFOrdEqual %v3bool %145 %146 256%148 = OpAll %bool %147 257%149 = OpLogicalAnd %bool %144 %148 258OpReturnValue %149 259OpFunctionEnd 260%test_mat4_b = OpFunction %bool None %33 261%150 = OpLabel 262%negated_1 = OpVariable %_ptr_Function_mat4v4float Function 263%x_4 = OpVariable %_ptr_Function_mat4v4float Function 264%160 = OpCompositeConstruct %v4float %float_n1 %float_n2 %float_n3 %float_n4 265%161 = OpCompositeConstruct %v4float %float_n5 %float_n6 %float_n7 %float_n8 266%162 = OpCompositeConstruct %v4float %float_n9 %float_n10 %float_n11 %float_n12 267%163 = OpCompositeConstruct %v4float %float_n13 %float_n14 %float_n15 %float_n16 268%164 = OpCompositeConstruct %mat4v4float %160 %161 %162 %163 269OpStore %negated_1 %164 270%166 = OpAccessChain %_ptr_Uniform_mat4v4float %16 %int_5 271%169 = OpLoad %mat4v4float %166 272OpStore %x_4 %169 273%170 = OpLoad %mat4v4float %x_4 274%171 = OpCompositeExtract %v4float %170 0 275%172 = OpFNegate %v4float %171 276%173 = OpCompositeExtract %v4float %170 1 277%174 = OpFNegate %v4float %173 278%175 = OpCompositeExtract %v4float %170 2 279%176 = OpFNegate %v4float %175 280%177 = OpCompositeExtract %v4float %170 3 281%178 = OpFNegate %v4float %177 282%179 = OpCompositeConstruct %mat4v4float %172 %174 %176 %178 283OpStore %x_4 %179 284%180 = OpLoad %mat4v4float %x_4 285%181 = OpLoad %mat4v4float %negated_1 286%183 = OpCompositeExtract %v4float %180 0 287%184 = OpCompositeExtract %v4float %181 0 288%185 = OpFOrdEqual %v4bool %183 %184 289%186 = OpAll %bool %185 290%187 = OpCompositeExtract %v4float %180 1 291%188 = OpCompositeExtract %v4float %181 1 292%189 = OpFOrdEqual %v4bool %187 %188 293%190 = OpAll %bool %189 294%191 = OpLogicalAnd %bool %186 %190 295%192 = OpCompositeExtract %v4float %180 2 296%193 = OpCompositeExtract %v4float %181 2 297%194 = OpFOrdEqual %v4bool %192 %193 298%195 = OpAll %bool %194 299%196 = OpLogicalAnd %bool %191 %195 300%197 = OpCompositeExtract %v4float %180 3 301%198 = OpCompositeExtract %v4float %181 3 302%199 = OpFOrdEqual %v4bool %197 %198 303%200 = OpAll %bool %199 304%201 = OpLogicalAnd %bool %196 %200 305OpReturnValue %201 306OpFunctionEnd 307%main = OpFunction %v4float None %202 308%203 = OpFunctionParameter %_ptr_Function_v2float 309%204 = OpLabel 310%_0_x = OpVariable %_ptr_Function_float Function 311%239 = OpVariable %_ptr_Function_v4float Function 312%207 = OpAccessChain %_ptr_Uniform_v4float %16 %int_0 313%208 = OpLoad %v4float %207 314%209 = OpCompositeExtract %float %208 0 315OpStore %_0_x %209 316%210 = OpLoad %float %_0_x 317%211 = OpFNegate %float %210 318OpStore %_0_x %211 319%213 = OpLoad %float %_0_x 320%214 = OpFOrdEqual %bool %213 %float_n1 321OpSelectionMerge %216 None 322OpBranchConditional %214 %215 %216 323%215 = OpLabel 324%217 = OpFunctionCall %bool %test_iscalar_b 325OpBranch %216 326%216 = OpLabel 327%218 = OpPhi %bool %false %204 %217 %215 328OpSelectionMerge %220 None 329OpBranchConditional %218 %219 %220 330%219 = OpLabel 331%221 = OpFunctionCall %bool %test_fvec_b 332OpBranch %220 333%220 = OpLabel 334%222 = OpPhi %bool %false %216 %221 %219 335OpSelectionMerge %224 None 336OpBranchConditional %222 %223 %224 337%223 = OpLabel 338%225 = OpFunctionCall %bool %test_ivec_b 339OpBranch %224 340%224 = OpLabel 341%226 = OpPhi %bool %false %220 %225 %223 342OpSelectionMerge %228 None 343OpBranchConditional %226 %227 %228 344%227 = OpLabel 345%229 = OpFunctionCall %bool %test_mat2_b 346OpBranch %228 347%228 = OpLabel 348%230 = OpPhi %bool %false %224 %229 %227 349OpSelectionMerge %232 None 350OpBranchConditional %230 %231 %232 351%231 = OpLabel 352%233 = OpFunctionCall %bool %test_mat3_b 353OpBranch %232 354%232 = OpLabel 355%234 = OpPhi %bool %false %228 %233 %231 356OpSelectionMerge %236 None 357OpBranchConditional %234 %235 %236 358%235 = OpLabel 359%237 = OpFunctionCall %bool %test_mat4_b 360OpBranch %236 361%236 = OpLabel 362%238 = OpPhi %bool %false %232 %237 %235 363OpSelectionMerge %243 None 364OpBranchConditional %238 %241 %242 365%241 = OpLabel 366%244 = OpAccessChain %_ptr_Uniform_v4float %16 %int_1 367%246 = OpLoad %v4float %244 368OpStore %239 %246 369OpBranch %243 370%242 = OpLabel 371%247 = OpAccessChain %_ptr_Uniform_v4float %16 %int_2 372%249 = OpLoad %v4float %247 373OpStore %239 %249 374OpBranch %243 375%243 = OpLabel 376%250 = OpLoad %v4float %239 377OpReturnValue %250 378OpFunctionEnd 379