1 OpCapability Shader 2 %1 = OpExtInstImport "GLSL.std.450" 3 OpMemoryModel Logical GLSL450 4 OpEntryPoint Fragment %_entrypoint_v "_entrypoint" %sk_FragColor 5 OpExecutionMode %_entrypoint_v OriginUpperLeft 6 OpName %sk_FragColor "sk_FragColor" 7 OpName %_UniformBuffer "_UniformBuffer" 8 OpMemberName %_UniformBuffer 0 "colorWhite" 9 OpMemberName %_UniformBuffer 1 "colorGreen" 10 OpMemberName %_UniformBuffer 2 "colorRed" 11 OpMemberName %_UniformBuffer 3 "testMatrix2x2" 12 OpMemberName %_UniformBuffer 4 "testMatrix3x3" 13 OpMemberName %_UniformBuffer 5 "testMatrix4x4" 14 OpName %_entrypoint_v "_entrypoint_v" 15 OpName %test_iscalar_b "test_iscalar_b" 16 OpName %x "x" 17 OpName %test_fvec_b "test_fvec_b" 18 OpName %x_0 "x" 19 OpName %test_ivec_b "test_ivec_b" 20 OpName %x_1 "x" 21 OpName %test_mat2_b "test_mat2_b" 22 OpName %negated "negated" 23 OpName %x_2 "x" 24 OpName %test_mat3_b "test_mat3_b" 25 OpName %negated_0 "negated" 26 OpName %x_3 "x" 27 OpName %test_mat4_b "test_mat4_b" 28 OpName %negated_1 "negated" 29 OpName %x_4 "x" 30 OpName %test_hmat2_b "test_hmat2_b" 31 OpName %negated_2 "negated" 32 OpName %x_5 "x" 33 OpName %test_hmat3_b "test_hmat3_b" 34 OpName %negated_3 "negated" 35 OpName %x_6 "x" 36 OpName %test_hmat4_b "test_hmat4_b" 37 OpName %negated_4 "negated" 38 OpName %x_7 "x" 39 OpName %main "main" 40 OpName %_0_x "_0_x" 41 OpDecorate %sk_FragColor RelaxedPrecision 42 OpDecorate %sk_FragColor Location 0 43 OpDecorate %sk_FragColor Index 0 44 OpMemberDecorate %_UniformBuffer 0 Offset 0 45 OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision 46 OpMemberDecorate %_UniformBuffer 1 Offset 16 47 OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision 48 OpMemberDecorate %_UniformBuffer 2 Offset 32 49 OpMemberDecorate %_UniformBuffer 2 RelaxedPrecision 50 OpMemberDecorate %_UniformBuffer 3 Offset 48 51 OpMemberDecorate %_UniformBuffer 3 ColMajor 52 OpMemberDecorate %_UniformBuffer 3 MatrixStride 16 53 OpMemberDecorate %_UniformBuffer 4 Offset 80 54 OpMemberDecorate %_UniformBuffer 4 ColMajor 55 OpMemberDecorate %_UniformBuffer 4 MatrixStride 16 56 OpMemberDecorate %_UniformBuffer 5 Offset 128 57 OpMemberDecorate %_UniformBuffer 5 ColMajor 58 OpMemberDecorate %_UniformBuffer 5 MatrixStride 16 59 OpDecorate %_UniformBuffer Block 60 OpDecorate %16 Binding 0 61 OpDecorate %16 DescriptorSet 0 62 OpDecorate %42 RelaxedPrecision 63 OpDecorate %43 RelaxedPrecision 64 OpDecorate %x_0 RelaxedPrecision 65 OpDecorate %51 RelaxedPrecision 66 OpDecorate %52 RelaxedPrecision 67 OpDecorate %53 RelaxedPrecision 68 OpDecorate %64 RelaxedPrecision 69 OpDecorate %65 RelaxedPrecision 70 OpDecorate %negated_2 RelaxedPrecision 71 OpDecorate %x_5 RelaxedPrecision 72 OpDecorate %175 RelaxedPrecision 73 OpDecorate %176 RelaxedPrecision 74 OpDecorate %177 RelaxedPrecision 75 OpDecorate %178 RelaxedPrecision 76 OpDecorate %179 RelaxedPrecision 77 OpDecorate %180 RelaxedPrecision 78 OpDecorate %182 RelaxedPrecision 79 OpDecorate %negated_3 RelaxedPrecision 80 OpDecorate %x_6 RelaxedPrecision 81 OpDecorate %190 RelaxedPrecision 82 OpDecorate %191 RelaxedPrecision 83 OpDecorate %192 RelaxedPrecision 84 OpDecorate %193 RelaxedPrecision 85 OpDecorate %194 RelaxedPrecision 86 OpDecorate %195 RelaxedPrecision 87 OpDecorate %196 RelaxedPrecision 88 OpDecorate %197 RelaxedPrecision 89 OpDecorate %199 RelaxedPrecision 90 OpDecorate %202 RelaxedPrecision 91 OpDecorate %negated_4 RelaxedPrecision 92 OpDecorate %x_7 RelaxedPrecision 93 OpDecorate %210 RelaxedPrecision 94 OpDecorate %211 RelaxedPrecision 95 OpDecorate %212 RelaxedPrecision 96 OpDecorate %213 RelaxedPrecision 97 OpDecorate %214 RelaxedPrecision 98 OpDecorate %215 RelaxedPrecision 99 OpDecorate %216 RelaxedPrecision 100 OpDecorate %217 RelaxedPrecision 101 OpDecorate %218 RelaxedPrecision 102 OpDecorate %219 RelaxedPrecision 103 OpDecorate %221 RelaxedPrecision 104 OpDecorate %224 RelaxedPrecision 105 OpDecorate %227 RelaxedPrecision 106 OpDecorate %236 RelaxedPrecision 107 OpDecorate %237 RelaxedPrecision 108 OpDecorate %284 RelaxedPrecision 109 OpDecorate %287 RelaxedPrecision 110 OpDecorate %288 RelaxedPrecision 111 %float = OpTypeFloat 32 112 %v4float = OpTypeVector %float 4 113%_ptr_Output_v4float = OpTypePointer Output %v4float 114%sk_FragColor = OpVariable %_ptr_Output_v4float Output 115 %v2float = OpTypeVector %float 2 116%mat2v2float = OpTypeMatrix %v2float 2 117 %v3float = OpTypeVector %float 3 118%mat3v3float = OpTypeMatrix %v3float 3 119%mat4v4float = OpTypeMatrix %v4float 4 120%_UniformBuffer = OpTypeStruct %v4float %v4float %v4float %mat2v2float %mat3v3float %mat4v4float 121%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer 122 %16 = OpVariable %_ptr_Uniform__UniformBuffer Uniform 123 %void = OpTypeVoid 124 %26 = OpTypeFunction %void 125 %float_0 = OpConstant %float 0 126 %29 = OpConstantComposite %v2float %float_0 %float_0 127%_ptr_Function_v2float = OpTypePointer Function %v2float 128 %bool = OpTypeBool 129 %34 = OpTypeFunction %bool 130 %int = OpTypeInt 32 1 131%_ptr_Function_int = OpTypePointer Function %int 132%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float 133 %int_0 = OpConstant %int 0 134 %int_n1 = OpConstant %int -1 135 %float_n1 = OpConstant %float -1 136 %55 = OpConstantComposite %v2float %float_n1 %float_n1 137 %v2bool = OpTypeVector %bool 2 138 %v2int = OpTypeVector %int 2 139%_ptr_Function_v2int = OpTypePointer Function %v2int 140 %69 = OpConstantComposite %v2int %int_n1 %int_n1 141%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float 142 %float_n2 = OpConstant %float -2 143 %float_n3 = OpConstant %float -3 144 %float_n4 = OpConstant %float -4 145 %78 = OpConstantComposite %v2float %float_n1 %float_n2 146 %79 = OpConstantComposite %v2float %float_n3 %float_n4 147 %80 = OpConstantComposite %mat2v2float %78 %79 148%_ptr_Uniform_mat2v2float = OpTypePointer Uniform %mat2v2float 149 %int_3 = OpConstant %int 3 150%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float 151 %float_n5 = OpConstant %float -5 152 %float_n6 = OpConstant %float -6 153 %float_n7 = OpConstant %float -7 154 %float_n8 = OpConstant %float -8 155 %float_n9 = OpConstant %float -9 156 %104 = OpConstantComposite %v3float %float_n1 %float_n2 %float_n3 157 %105 = OpConstantComposite %v3float %float_n4 %float_n5 %float_n6 158 %106 = OpConstantComposite %v3float %float_n7 %float_n8 %float_n9 159 %107 = OpConstantComposite %mat3v3float %104 %105 %106 160%_ptr_Uniform_mat3v3float = OpTypePointer Uniform %mat3v3float 161 %int_4 = OpConstant %int 4 162 %v3bool = OpTypeVector %bool 3 163%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float 164 %float_n10 = OpConstant %float -10 165 %float_n11 = OpConstant %float -11 166 %float_n12 = OpConstant %float -12 167 %float_n13 = OpConstant %float -13 168 %float_n14 = OpConstant %float -14 169 %float_n15 = OpConstant %float -15 170 %float_n16 = OpConstant %float -16 171 %139 = OpConstantComposite %v4float %float_n1 %float_n2 %float_n3 %float_n4 172 %140 = OpConstantComposite %v4float %float_n5 %float_n6 %float_n7 %float_n8 173 %141 = OpConstantComposite %v4float %float_n9 %float_n10 %float_n11 %float_n12 174 %142 = OpConstantComposite %v4float %float_n13 %float_n14 %float_n15 %float_n16 175 %143 = OpConstantComposite %mat4v4float %139 %140 %141 %142 176%_ptr_Uniform_mat4v4float = OpTypePointer Uniform %mat4v4float 177 %int_5 = OpConstant %int 5 178 %v4bool = OpTypeVector %bool 4 179 %230 = OpTypeFunction %v4float %_ptr_Function_v2float 180%_ptr_Function_float = OpTypePointer Function %float 181 %false = OpConstantFalse %bool 182%_ptr_Function_v4float = OpTypePointer Function %v4float 183 %int_1 = OpConstant %int 1 184 %int_2 = OpConstant %int 2 185%_entrypoint_v = OpFunction %void None %26 186 %27 = OpLabel 187 %30 = OpVariable %_ptr_Function_v2float Function 188 OpStore %30 %29 189 %32 = OpFunctionCall %v4float %main %30 190 OpStore %sk_FragColor %32 191 OpReturn 192 OpFunctionEnd 193%test_iscalar_b = OpFunction %bool None %34 194 %35 = OpLabel 195 %x = OpVariable %_ptr_Function_int Function 196 %39 = OpAccessChain %_ptr_Uniform_v4float %16 %int_0 197 %42 = OpLoad %v4float %39 198 %43 = OpCompositeExtract %float %42 0 199 %44 = OpConvertFToS %int %43 200 OpStore %x %44 201 %45 = OpSNegate %int %44 202 OpStore %x %45 203 %47 = OpIEqual %bool %45 %int_n1 204 OpReturnValue %47 205 OpFunctionEnd 206%test_fvec_b = OpFunction %bool None %34 207 %48 = OpLabel 208 %x_0 = OpVariable %_ptr_Function_v2float Function 209 %50 = OpAccessChain %_ptr_Uniform_v4float %16 %int_0 210 %51 = OpLoad %v4float %50 211 %52 = OpVectorShuffle %v2float %51 %51 0 1 212 OpStore %x_0 %52 213 %53 = OpFNegate %v2float %52 214 OpStore %x_0 %53 215 %56 = OpFOrdEqual %v2bool %53 %55 216 %58 = OpAll %bool %56 217 OpReturnValue %58 218 OpFunctionEnd 219%test_ivec_b = OpFunction %bool None %34 220 %59 = OpLabel 221 %x_1 = OpVariable %_ptr_Function_v2int Function 222 %63 = OpAccessChain %_ptr_Uniform_v4float %16 %int_0 223 %64 = OpLoad %v4float %63 224 %65 = OpCompositeExtract %float %64 0 225 %66 = OpConvertFToS %int %65 226 %67 = OpCompositeConstruct %v2int %66 %66 227 OpStore %x_1 %67 228 %68 = OpSNegate %v2int %67 229 OpStore %x_1 %68 230 %70 = OpIEqual %v2bool %68 %69 231 %71 = OpAll %bool %70 232 OpReturnValue %71 233 OpFunctionEnd 234%test_mat2_b = OpFunction %bool None %34 235 %72 = OpLabel 236 %negated = OpVariable %_ptr_Function_mat2v2float Function 237 %x_2 = OpVariable %_ptr_Function_mat2v2float Function 238 OpStore %negated %80 239 %82 = OpAccessChain %_ptr_Uniform_mat2v2float %16 %int_3 240 %85 = OpLoad %mat2v2float %82 241 OpStore %x_2 %85 242 %86 = OpCompositeExtract %v2float %85 0 243 %87 = OpFNegate %v2float %86 244 %88 = OpCompositeExtract %v2float %85 1 245 %89 = OpFNegate %v2float %88 246 %90 = OpCompositeConstruct %mat2v2float %87 %89 247 OpStore %x_2 %90 248 %91 = OpFOrdEqual %v2bool %87 %78 249 %92 = OpAll %bool %91 250 %93 = OpFOrdEqual %v2bool %89 %79 251 %94 = OpAll %bool %93 252 %95 = OpLogicalAnd %bool %92 %94 253 OpReturnValue %95 254 OpFunctionEnd 255%test_mat3_b = OpFunction %bool None %34 256 %96 = OpLabel 257 %negated_0 = OpVariable %_ptr_Function_mat3v3float Function 258 %x_3 = OpVariable %_ptr_Function_mat3v3float Function 259 OpStore %negated_0 %107 260 %109 = OpAccessChain %_ptr_Uniform_mat3v3float %16 %int_4 261 %112 = OpLoad %mat3v3float %109 262 OpStore %x_3 %112 263 %113 = OpCompositeExtract %v3float %112 0 264 %114 = OpFNegate %v3float %113 265 %115 = OpCompositeExtract %v3float %112 1 266 %116 = OpFNegate %v3float %115 267 %117 = OpCompositeExtract %v3float %112 2 268 %118 = OpFNegate %v3float %117 269 %119 = OpCompositeConstruct %mat3v3float %114 %116 %118 270 OpStore %x_3 %119 271 %121 = OpFOrdEqual %v3bool %114 %104 272 %122 = OpAll %bool %121 273 %123 = OpFOrdEqual %v3bool %116 %105 274 %124 = OpAll %bool %123 275 %125 = OpLogicalAnd %bool %122 %124 276 %126 = OpFOrdEqual %v3bool %118 %106 277 %127 = OpAll %bool %126 278 %128 = OpLogicalAnd %bool %125 %127 279 OpReturnValue %128 280 OpFunctionEnd 281%test_mat4_b = OpFunction %bool None %34 282 %129 = OpLabel 283 %negated_1 = OpVariable %_ptr_Function_mat4v4float Function 284 %x_4 = OpVariable %_ptr_Function_mat4v4float Function 285 OpStore %negated_1 %143 286 %145 = OpAccessChain %_ptr_Uniform_mat4v4float %16 %int_5 287 %148 = OpLoad %mat4v4float %145 288 OpStore %x_4 %148 289 %149 = OpCompositeExtract %v4float %148 0 290 %150 = OpFNegate %v4float %149 291 %151 = OpCompositeExtract %v4float %148 1 292 %152 = OpFNegate %v4float %151 293 %153 = OpCompositeExtract %v4float %148 2 294 %154 = OpFNegate %v4float %153 295 %155 = OpCompositeExtract %v4float %148 3 296 %156 = OpFNegate %v4float %155 297 %157 = OpCompositeConstruct %mat4v4float %150 %152 %154 %156 298 OpStore %x_4 %157 299 %159 = OpFOrdEqual %v4bool %150 %139 300 %160 = OpAll %bool %159 301 %161 = OpFOrdEqual %v4bool %152 %140 302 %162 = OpAll %bool %161 303 %163 = OpLogicalAnd %bool %160 %162 304 %164 = OpFOrdEqual %v4bool %154 %141 305 %165 = OpAll %bool %164 306 %166 = OpLogicalAnd %bool %163 %165 307 %167 = OpFOrdEqual %v4bool %156 %142 308 %168 = OpAll %bool %167 309 %169 = OpLogicalAnd %bool %166 %168 310 OpReturnValue %169 311 OpFunctionEnd 312%test_hmat2_b = OpFunction %bool None %34 313 %170 = OpLabel 314 %negated_2 = OpVariable %_ptr_Function_mat2v2float Function 315 %x_5 = OpVariable %_ptr_Function_mat2v2float Function 316 OpStore %negated_2 %80 317 %173 = OpAccessChain %_ptr_Uniform_mat2v2float %16 %int_3 318 %174 = OpLoad %mat2v2float %173 319 OpStore %x_5 %174 320 %175 = OpCompositeExtract %v2float %174 0 321 %176 = OpFNegate %v2float %175 322 %177 = OpCompositeExtract %v2float %174 1 323 %178 = OpFNegate %v2float %177 324 %179 = OpCompositeConstruct %mat2v2float %176 %178 325 OpStore %x_5 %179 326 %180 = OpFOrdEqual %v2bool %176 %78 327 %181 = OpAll %bool %180 328 %182 = OpFOrdEqual %v2bool %178 %79 329 %183 = OpAll %bool %182 330 %184 = OpLogicalAnd %bool %181 %183 331 OpReturnValue %184 332 OpFunctionEnd 333%test_hmat3_b = OpFunction %bool None %34 334 %185 = OpLabel 335 %negated_3 = OpVariable %_ptr_Function_mat3v3float Function 336 %x_6 = OpVariable %_ptr_Function_mat3v3float Function 337 OpStore %negated_3 %107 338 %188 = OpAccessChain %_ptr_Uniform_mat3v3float %16 %int_4 339 %189 = OpLoad %mat3v3float %188 340 OpStore %x_6 %189 341 %190 = OpCompositeExtract %v3float %189 0 342 %191 = OpFNegate %v3float %190 343 %192 = OpCompositeExtract %v3float %189 1 344 %193 = OpFNegate %v3float %192 345 %194 = OpCompositeExtract %v3float %189 2 346 %195 = OpFNegate %v3float %194 347 %196 = OpCompositeConstruct %mat3v3float %191 %193 %195 348 OpStore %x_6 %196 349 %197 = OpFOrdEqual %v3bool %191 %104 350 %198 = OpAll %bool %197 351 %199 = OpFOrdEqual %v3bool %193 %105 352 %200 = OpAll %bool %199 353 %201 = OpLogicalAnd %bool %198 %200 354 %202 = OpFOrdEqual %v3bool %195 %106 355 %203 = OpAll %bool %202 356 %204 = OpLogicalAnd %bool %201 %203 357 OpReturnValue %204 358 OpFunctionEnd 359%test_hmat4_b = OpFunction %bool None %34 360 %205 = OpLabel 361 %negated_4 = OpVariable %_ptr_Function_mat4v4float Function 362 %x_7 = OpVariable %_ptr_Function_mat4v4float Function 363 OpStore %negated_4 %143 364 %208 = OpAccessChain %_ptr_Uniform_mat4v4float %16 %int_5 365 %209 = OpLoad %mat4v4float %208 366 OpStore %x_7 %209 367 %210 = OpCompositeExtract %v4float %209 0 368 %211 = OpFNegate %v4float %210 369 %212 = OpCompositeExtract %v4float %209 1 370 %213 = OpFNegate %v4float %212 371 %214 = OpCompositeExtract %v4float %209 2 372 %215 = OpFNegate %v4float %214 373 %216 = OpCompositeExtract %v4float %209 3 374 %217 = OpFNegate %v4float %216 375 %218 = OpCompositeConstruct %mat4v4float %211 %213 %215 %217 376 OpStore %x_7 %218 377 %219 = OpFOrdEqual %v4bool %211 %139 378 %220 = OpAll %bool %219 379 %221 = OpFOrdEqual %v4bool %213 %140 380 %222 = OpAll %bool %221 381 %223 = OpLogicalAnd %bool %220 %222 382 %224 = OpFOrdEqual %v4bool %215 %141 383 %225 = OpAll %bool %224 384 %226 = OpLogicalAnd %bool %223 %225 385 %227 = OpFOrdEqual %v4bool %217 %142 386 %228 = OpAll %bool %227 387 %229 = OpLogicalAnd %bool %226 %228 388 OpReturnValue %229 389 OpFunctionEnd 390 %main = OpFunction %v4float None %230 391 %231 = OpFunctionParameter %_ptr_Function_v2float 392 %232 = OpLabel 393 %_0_x = OpVariable %_ptr_Function_float Function 394 %277 = OpVariable %_ptr_Function_v4float Function 395 %235 = OpAccessChain %_ptr_Uniform_v4float %16 %int_0 396 %236 = OpLoad %v4float %235 397 %237 = OpCompositeExtract %float %236 0 398 OpStore %_0_x %237 399 %238 = OpFNegate %float %237 400 OpStore %_0_x %238 401 %240 = OpFOrdEqual %bool %238 %float_n1 402 OpSelectionMerge %242 None 403 OpBranchConditional %240 %241 %242 404 %241 = OpLabel 405 %243 = OpFunctionCall %bool %test_iscalar_b 406 OpBranch %242 407 %242 = OpLabel 408 %244 = OpPhi %bool %false %232 %243 %241 409 OpSelectionMerge %246 None 410 OpBranchConditional %244 %245 %246 411 %245 = OpLabel 412 %247 = OpFunctionCall %bool %test_fvec_b 413 OpBranch %246 414 %246 = OpLabel 415 %248 = OpPhi %bool %false %242 %247 %245 416 OpSelectionMerge %250 None 417 OpBranchConditional %248 %249 %250 418 %249 = OpLabel 419 %251 = OpFunctionCall %bool %test_ivec_b 420 OpBranch %250 421 %250 = OpLabel 422 %252 = OpPhi %bool %false %246 %251 %249 423 OpSelectionMerge %254 None 424 OpBranchConditional %252 %253 %254 425 %253 = OpLabel 426 %255 = OpFunctionCall %bool %test_mat2_b 427 OpBranch %254 428 %254 = OpLabel 429 %256 = OpPhi %bool %false %250 %255 %253 430 OpSelectionMerge %258 None 431 OpBranchConditional %256 %257 %258 432 %257 = OpLabel 433 %259 = OpFunctionCall %bool %test_mat3_b 434 OpBranch %258 435 %258 = OpLabel 436 %260 = OpPhi %bool %false %254 %259 %257 437 OpSelectionMerge %262 None 438 OpBranchConditional %260 %261 %262 439 %261 = OpLabel 440 %263 = OpFunctionCall %bool %test_mat4_b 441 OpBranch %262 442 %262 = OpLabel 443 %264 = OpPhi %bool %false %258 %263 %261 444 OpSelectionMerge %266 None 445 OpBranchConditional %264 %265 %266 446 %265 = OpLabel 447 %267 = OpFunctionCall %bool %test_hmat2_b 448 OpBranch %266 449 %266 = OpLabel 450 %268 = OpPhi %bool %false %262 %267 %265 451 OpSelectionMerge %270 None 452 OpBranchConditional %268 %269 %270 453 %269 = OpLabel 454 %271 = OpFunctionCall %bool %test_hmat3_b 455 OpBranch %270 456 %270 = OpLabel 457 %272 = OpPhi %bool %false %266 %271 %269 458 OpSelectionMerge %274 None 459 OpBranchConditional %272 %273 %274 460 %273 = OpLabel 461 %275 = OpFunctionCall %bool %test_hmat4_b 462 OpBranch %274 463 %274 = OpLabel 464 %276 = OpPhi %bool %false %270 %275 %273 465 OpSelectionMerge %281 None 466 OpBranchConditional %276 %279 %280 467 %279 = OpLabel 468 %282 = OpAccessChain %_ptr_Uniform_v4float %16 %int_1 469 %284 = OpLoad %v4float %282 470 OpStore %277 %284 471 OpBranch %281 472 %280 = OpLabel 473 %285 = OpAccessChain %_ptr_Uniform_v4float %16 %int_2 474 %287 = OpLoad %v4float %285 475 OpStore %277 %287 476 OpBranch %281 477 %281 = OpLabel 478 %288 = OpLoad %v4float %277 479 OpReturnValue %288 480 OpFunctionEnd 481