1 OpCapability Shader 2 %1 = OpExtInstImport "GLSL.std.450" 3 OpMemoryModel Logical GLSL450 4 OpEntryPoint Fragment %main "main" %sk_FragColor 5 OpExecutionMode %main OriginUpperLeft 6 OpName %testPushConstants "testPushConstants" 7 OpMemberName %testPushConstants 0 "pushConstantArray" 8 OpName %testUniforms "testUniforms" 9 OpMemberName %testUniforms 0 "uniformArray" 10 OpName %sk_FragColor "sk_FragColor" 11 OpName %main "main" 12 OpName %localArray "localArray" 13 OpDecorate %_arr_float_int_2 ArrayStride 4 14 OpMemberDecorate %testPushConstants 0 Offset 0 15 OpDecorate %testPushConstants Block 16 OpDecorate %_arr_float_int_2_0 ArrayStride 16 17 OpMemberDecorate %testUniforms 0 Offset 0 18 OpDecorate %testUniforms Block 19 OpDecorate %10 Binding 0 20 OpDecorate %10 DescriptorSet 0 21 OpDecorate %sk_FragColor RelaxedPrecision 22 OpDecorate %sk_FragColor Location 0 23 OpDecorate %sk_FragColor Index 0 24 OpDecorate %59 RelaxedPrecision 25 %float = OpTypeFloat 32 26 %int = OpTypeInt 32 1 27 %int_2 = OpConstant %int 2 28%_arr_float_int_2 = OpTypeArray %float %int_2 29%testPushConstants = OpTypeStruct %_arr_float_int_2 30%_ptr_PushConstant_testPushConstants = OpTypePointer PushConstant %testPushConstants 31 %3 = OpVariable %_ptr_PushConstant_testPushConstants PushConstant 32%_arr_float_int_2_0 = OpTypeArray %float %int_2 33%testUniforms = OpTypeStruct %_arr_float_int_2_0 34%_ptr_Uniform_testUniforms = OpTypePointer Uniform %testUniforms 35 %10 = OpVariable %_ptr_Uniform_testUniforms Uniform 36 %v4float = OpTypeVector %float 4 37%_ptr_Output_v4float = OpTypePointer Output %v4float 38%sk_FragColor = OpVariable %_ptr_Output_v4float Output 39 %void = OpTypeVoid 40 %18 = OpTypeFunction %void 41%_ptr_Function__arr_float_int_2_0 = OpTypePointer Function %_arr_float_int_2_0 42 %float_1 = OpConstant %float 1 43 %float_2 = OpConstant %float 2 44 %bool = OpTypeBool 45 %false = OpConstantFalse %bool 46 %int_0 = OpConstant %int 0 47%_ptr_Uniform__arr_float_int_2_0 = OpTypePointer Uniform %_arr_float_int_2_0 48%_ptr_PushConstant__arr_float_int_2 = OpTypePointer PushConstant %_arr_float_int_2 49%_ptr_Function_v4float = OpTypePointer Function %v4float 50 %56 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 51 %float_0 = OpConstant %float 0 52 %58 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 53 %main = OpFunction %void None %18 54 %19 = OpLabel 55 %localArray = OpVariable %_ptr_Function__arr_float_int_2_0 Function 56 %51 = OpVariable %_ptr_Function_v4float Function 57 %24 = OpCompositeConstruct %_arr_float_int_2_0 %float_1 %float_2 58 OpStore %localArray %24 59 %28 = OpAccessChain %_ptr_Uniform__arr_float_int_2_0 %10 %int_0 60 %30 = OpLoad %_arr_float_int_2_0 %28 61 %31 = OpCompositeExtract %float %30 0 62 %32 = OpFOrdEqual %bool %float_1 %31 63 %33 = OpCompositeExtract %float %30 1 64 %34 = OpFOrdEqual %bool %float_2 %33 65 %35 = OpLogicalAnd %bool %34 %32 66 OpSelectionMerge %37 None 67 OpBranchConditional %35 %36 %37 68 %36 = OpLabel 69 %38 = OpAccessChain %_ptr_Uniform__arr_float_int_2_0 %10 %int_0 70 %39 = OpLoad %_arr_float_int_2_0 %38 71 %40 = OpAccessChain %_ptr_PushConstant__arr_float_int_2 %3 %int_0 72 %42 = OpLoad %_arr_float_int_2 %40 73 %43 = OpCompositeExtract %float %39 0 74 %44 = OpCompositeExtract %float %42 0 75 %45 = OpFOrdEqual %bool %43 %44 76 %46 = OpCompositeExtract %float %39 1 77 %47 = OpCompositeExtract %float %42 1 78 %48 = OpFOrdEqual %bool %46 %47 79 %49 = OpLogicalAnd %bool %48 %45 80 OpBranch %37 81 %37 = OpLabel 82 %50 = OpPhi %bool %false %19 %49 %36 83 OpSelectionMerge %55 None 84 OpBranchConditional %50 %53 %54 85 %53 = OpLabel 86 OpStore %51 %56 87 OpBranch %55 88 %54 = OpLabel 89 OpStore %51 %58 90 OpBranch %55 91 %55 = OpLabel 92 %59 = OpLoad %v4float %51 93 OpStore %sk_FragColor %59 94 OpReturn 95 OpFunctionEnd 96