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 "colorGreen" 9 OpMemberName %_UniformBuffer 1 "colorRed" 10 OpName %_entrypoint_v "_entrypoint_v" 11 OpName %main "main" 12 OpName %inputVal "inputVal" 13 OpName %expected "expected" 14 OpDecorate %sk_FragColor RelaxedPrecision 15 OpDecorate %sk_FragColor Location 0 16 OpDecorate %sk_FragColor Index 0 17 OpMemberDecorate %_UniformBuffer 0 Offset 0 18 OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision 19 OpMemberDecorate %_UniformBuffer 1 Offset 16 20 OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision 21 OpDecorate %_UniformBuffer Block 22 OpDecorate %7 Binding 0 23 OpDecorate %7 DescriptorSet 0 24 OpDecorate %31 RelaxedPrecision 25 OpDecorate %32 RelaxedPrecision 26 OpDecorate %33 RelaxedPrecision 27 OpDecorate %35 RelaxedPrecision 28 OpDecorate %37 RelaxedPrecision 29 OpDecorate %39 RelaxedPrecision 30 OpDecorate %44 RelaxedPrecision 31 OpDecorate %45 RelaxedPrecision 32 OpDecorate %46 RelaxedPrecision 33 OpDecorate %48 RelaxedPrecision 34 OpDecorate %50 RelaxedPrecision 35 OpDecorate %52 RelaxedPrecision 36 OpDecorate %93 RelaxedPrecision 37 OpDecorate %96 RelaxedPrecision 38 OpDecorate %97 RelaxedPrecision 39 %float = OpTypeFloat 32 40 %v4float = OpTypeVector %float 4 41%_ptr_Output_v4float = OpTypePointer Output %v4float 42%sk_FragColor = OpVariable %_ptr_Output_v4float Output 43%_UniformBuffer = OpTypeStruct %v4float %v4float 44%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer 45 %7 = OpVariable %_ptr_Uniform__UniformBuffer Uniform 46 %void = OpTypeVoid 47 %12 = OpTypeFunction %void 48 %float_0 = OpConstant %float 0 49 %v2float = OpTypeVector %float 2 50 %16 = OpConstantComposite %v2float %float_0 %float_0 51%_ptr_Function_v2float = OpTypePointer Function %v2float 52 %20 = OpTypeFunction %v4float %_ptr_Function_v2float 53 %bool = OpTypeBool 54 %v4bool = OpTypeVector %bool 4 55%_ptr_Function_v4bool = OpTypePointer Function %v4bool 56%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float 57 %int = OpTypeInt 32 1 58 %int_0 = OpConstant %int 0 59 %false = OpConstantFalse %bool 60 %v2bool = OpTypeVector %bool 2 61 %v3bool = OpTypeVector %bool 3 62%_ptr_Function_v4float = OpTypePointer Function %v4float 63 %int_1 = OpConstant %int 1 64%_entrypoint_v = OpFunction %void None %12 65 %13 = OpLabel 66 %17 = OpVariable %_ptr_Function_v2float Function 67 OpStore %17 %16 68 %19 = OpFunctionCall %v4float %main %17 69 OpStore %sk_FragColor %19 70 OpReturn 71 OpFunctionEnd 72 %main = OpFunction %v4float None %20 73 %21 = OpFunctionParameter %_ptr_Function_v2float 74 %22 = OpLabel 75 %inputVal = OpVariable %_ptr_Function_v4bool Function 76 %expected = OpVariable %_ptr_Function_v4bool Function 77 %87 = OpVariable %_ptr_Function_v4float Function 78 %27 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0 79 %31 = OpLoad %v4float %27 80 %32 = OpVectorShuffle %v4float %31 %31 0 0 1 2 81 %33 = OpCompositeExtract %float %32 0 82 %34 = OpFUnordNotEqual %bool %33 %float_0 83 %35 = OpCompositeExtract %float %32 1 84 %36 = OpFUnordNotEqual %bool %35 %float_0 85 %37 = OpCompositeExtract %float %32 2 86 %38 = OpFUnordNotEqual %bool %37 %float_0 87 %39 = OpCompositeExtract %float %32 3 88 %40 = OpFUnordNotEqual %bool %39 %float_0 89 %41 = OpCompositeConstruct %v4bool %34 %36 %38 %40 90 OpStore %inputVal %41 91 %43 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0 92 %44 = OpLoad %v4float %43 93 %45 = OpVectorShuffle %v4float %44 %44 0 1 1 3 94 %46 = OpCompositeExtract %float %45 0 95 %47 = OpFUnordNotEqual %bool %46 %float_0 96 %48 = OpCompositeExtract %float %45 1 97 %49 = OpFUnordNotEqual %bool %48 %float_0 98 %50 = OpCompositeExtract %float %45 2 99 %51 = OpFUnordNotEqual %bool %50 %float_0 100 %52 = OpCompositeExtract %float %45 3 101 %53 = OpFUnordNotEqual %bool %52 %float_0 102 %54 = OpCompositeConstruct %v4bool %47 %49 %51 %53 103 OpStore %expected %54 104 %57 = OpVectorShuffle %v2bool %41 %41 0 1 105 %56 = OpAny %bool %57 106 %59 = OpCompositeExtract %bool %54 0 107 %60 = OpLogicalEqual %bool %56 %59 108 OpSelectionMerge %62 None 109 OpBranchConditional %60 %61 %62 110 %61 = OpLabel 111 %64 = OpVectorShuffle %v3bool %41 %41 0 1 2 112 %63 = OpAny %bool %64 113 %66 = OpCompositeExtract %bool %54 1 114 %67 = OpLogicalEqual %bool %63 %66 115 OpBranch %62 116 %62 = OpLabel 117 %68 = OpPhi %bool %false %22 %67 %61 118 OpSelectionMerge %70 None 119 OpBranchConditional %68 %69 %70 120 %69 = OpLabel 121 %71 = OpAny %bool %41 122 %72 = OpCompositeExtract %bool %54 2 123 %73 = OpLogicalEqual %bool %71 %72 124 OpBranch %70 125 %70 = OpLabel 126 %74 = OpPhi %bool %false %62 %73 %69 127 OpSelectionMerge %76 None 128 OpBranchConditional %74 %75 %76 129 %75 = OpLabel 130 %77 = OpLogicalEqual %bool %false %59 131 OpBranch %76 132 %76 = OpLabel 133 %78 = OpPhi %bool %false %70 %77 %75 134 OpSelectionMerge %80 None 135 OpBranchConditional %78 %79 %80 136 %79 = OpLabel 137 %81 = OpCompositeExtract %bool %54 1 138 OpBranch %80 139 %80 = OpLabel 140 %82 = OpPhi %bool %false %76 %81 %79 141 OpSelectionMerge %84 None 142 OpBranchConditional %82 %83 %84 143 %83 = OpLabel 144 %85 = OpCompositeExtract %bool %54 2 145 OpBranch %84 146 %84 = OpLabel 147 %86 = OpPhi %bool %false %80 %85 %83 148 OpSelectionMerge %91 None 149 OpBranchConditional %86 %89 %90 150 %89 = OpLabel 151 %92 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0 152 %93 = OpLoad %v4float %92 153 OpStore %87 %93 154 OpBranch %91 155 %90 = OpLabel 156 %94 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1 157 %96 = OpLoad %v4float %94 158 OpStore %87 %96 159 OpBranch %91 160 %91 = OpLabel 161 %97 = OpLoad %v4float %87 162 OpReturnValue %97 163 OpFunctionEnd 164