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" 11OpName %_entrypoint_v "_entrypoint_v" 12OpName %main "main" 13OpName %value "value" 14OpName %exp "exp" 15OpName %result "result" 16OpName %ok "ok" 17OpDecorate %sk_FragColor RelaxedPrecision 18OpDecorate %sk_FragColor Location 0 19OpDecorate %sk_FragColor Index 0 20OpDecorate %sk_Clockwise BuiltIn FrontFacing 21OpMemberDecorate %_UniformBuffer 0 Offset 0 22OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision 23OpMemberDecorate %_UniformBuffer 1 Offset 16 24OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision 25OpDecorate %_UniformBuffer Block 26OpDecorate %10 Binding 0 27OpDecorate %10 DescriptorSet 0 28OpDecorate %32 RelaxedPrecision 29OpDecorate %33 RelaxedPrecision 30OpDecorate %35 RelaxedPrecision 31OpDecorate %124 RelaxedPrecision 32OpDecorate %130 RelaxedPrecision 33OpDecorate %132 RelaxedPrecision 34OpDecorate %133 RelaxedPrecision 35%float = OpTypeFloat 32 36%v4float = OpTypeVector %float 4 37%_ptr_Output_v4float = OpTypePointer Output %v4float 38%sk_FragColor = OpVariable %_ptr_Output_v4float Output 39%bool = OpTypeBool 40%_ptr_Input_bool = OpTypePointer Input %bool 41%sk_Clockwise = OpVariable %_ptr_Input_bool Input 42%_UniformBuffer = OpTypeStruct %v4float %v4float 43%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer 44%10 = OpVariable %_ptr_Uniform__UniformBuffer Uniform 45%void = OpTypeVoid 46%15 = OpTypeFunction %void 47%v2float = OpTypeVector %float 2 48%float_0 = OpConstant %float 0 49%19 = OpConstantComposite %v2float %float_0 %float_0 50%_ptr_Function_v2float = OpTypePointer Function %v2float 51%23 = OpTypeFunction %v4float %_ptr_Function_v2float 52%_ptr_Function_v4float = OpTypePointer Function %v4float 53%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float 54%int = OpTypeInt 32 1 55%int_0 = OpConstant %int 0 56%float_6 = OpConstant %float 6 57%v4int = OpTypeVector %int 4 58%_ptr_Function_v4int = OpTypePointer Function %v4int 59%v4bool = OpTypeVector %bool 4 60%_ptr_Function_v4bool = OpTypePointer Function %v4bool 61%_ptr_Function_int = OpTypePointer Function %int 62%_ptr_Function_float = OpTypePointer Function %float 63%false = OpConstantFalse %bool 64%float_0_75 = OpConstant %float 0.75 65%int_3 = OpConstant %int 3 66%_ptr_Function_bool = OpTypePointer Function %bool 67%v2int = OpTypeVector %int 2 68%_ptr_Function_v2int = OpTypePointer Function %v2int 69%int_1 = OpConstant %int 1 70%v3float = OpTypeVector %float 3 71%v3int = OpTypeVector %int 3 72%_ptr_Function_v3int = OpTypePointer Function %v3int 73%int_2 = OpConstant %int 2 74%_entrypoint_v = OpFunction %void None %15 75%16 = OpLabel 76%20 = OpVariable %_ptr_Function_v2float Function 77OpStore %20 %19 78%22 = OpFunctionCall %v4float %main %20 79OpStore %sk_FragColor %22 80OpReturn 81OpFunctionEnd 82%main = OpFunction %v4float None %23 83%24 = OpFunctionParameter %_ptr_Function_v2float 84%25 = OpLabel 85%value = OpVariable %_ptr_Function_v4float Function 86%exp = OpVariable %_ptr_Function_v4int Function 87%result = OpVariable %_ptr_Function_v4float Function 88%ok = OpVariable %_ptr_Function_v4bool Function 89%48 = OpVariable %_ptr_Function_int Function 90%69 = OpVariable %_ptr_Function_v2int Function 91%92 = OpVariable %_ptr_Function_v3int Function 92%125 = OpVariable %_ptr_Function_v4float Function 93%28 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0 94%32 = OpLoad %v4float %28 95%33 = OpVectorShuffle %v4float %32 %32 1 1 1 1 96%35 = OpVectorTimesScalar %v4float %33 %float_6 97OpStore %value %35 98%44 = OpLoad %v4float %value 99%45 = OpCompositeExtract %float %44 0 100%46 = OpAccessChain %_ptr_Function_int %exp %int_0 101%43 = OpExtInst %float %1 Frexp %45 %48 102%49 = OpLoad %int %48 103OpStore %46 %49 104%50 = OpAccessChain %_ptr_Function_float %result %int_0 105OpStore %50 %43 106%53 = OpLoad %v4float %result 107%54 = OpCompositeExtract %float %53 0 108%56 = OpFOrdEqual %bool %54 %float_0_75 109OpSelectionMerge %58 None 110OpBranchConditional %56 %57 %58 111%57 = OpLabel 112%59 = OpLoad %v4int %exp 113%60 = OpCompositeExtract %int %59 0 114%62 = OpIEqual %bool %60 %int_3 115OpBranch %58 116%58 = OpLabel 117%63 = OpPhi %bool %false %25 %62 %57 118%64 = OpAccessChain %_ptr_Function_bool %ok %int_0 119OpStore %64 %63 120%67 = OpLoad %v4float %value 121%68 = OpVectorShuffle %v2float %67 %67 0 1 122%66 = OpExtInst %v2float %1 Frexp %68 %69 123%72 = OpLoad %v2int %69 124%73 = OpLoad %v4int %exp 125%74 = OpVectorShuffle %v4int %73 %72 4 5 2 3 126OpStore %exp %74 127%75 = OpLoad %v4float %result 128%76 = OpVectorShuffle %v4float %75 %66 4 5 2 3 129OpStore %result %76 130%77 = OpLoad %v4float %result 131%78 = OpCompositeExtract %float %77 1 132%79 = OpFOrdEqual %bool %78 %float_0_75 133OpSelectionMerge %81 None 134OpBranchConditional %79 %80 %81 135%80 = OpLabel 136%82 = OpLoad %v4int %exp 137%83 = OpCompositeExtract %int %82 1 138%84 = OpIEqual %bool %83 %int_3 139OpBranch %81 140%81 = OpLabel 141%85 = OpPhi %bool %false %58 %84 %80 142%86 = OpAccessChain %_ptr_Function_bool %ok %int_1 143OpStore %86 %85 144%89 = OpLoad %v4float %value 145%90 = OpVectorShuffle %v3float %89 %89 0 1 2 146%88 = OpExtInst %v3float %1 Frexp %90 %92 147%95 = OpLoad %v3int %92 148%96 = OpLoad %v4int %exp 149%97 = OpVectorShuffle %v4int %96 %95 4 5 6 3 150OpStore %exp %97 151%98 = OpLoad %v4float %result 152%99 = OpVectorShuffle %v4float %98 %88 4 5 6 3 153OpStore %result %99 154%100 = OpLoad %v4float %result 155%101 = OpCompositeExtract %float %100 2 156%102 = OpFOrdEqual %bool %101 %float_0_75 157OpSelectionMerge %104 None 158OpBranchConditional %102 %103 %104 159%103 = OpLabel 160%105 = OpLoad %v4int %exp 161%106 = OpCompositeExtract %int %105 2 162%107 = OpIEqual %bool %106 %int_3 163OpBranch %104 164%104 = OpLabel 165%108 = OpPhi %bool %false %81 %107 %103 166%109 = OpAccessChain %_ptr_Function_bool %ok %int_2 167OpStore %109 %108 168%112 = OpLoad %v4float %value 169%111 = OpExtInst %v4float %1 Frexp %112 %exp 170OpStore %result %111 171%113 = OpLoad %v4float %result 172%114 = OpCompositeExtract %float %113 3 173%115 = OpFOrdEqual %bool %114 %float_0_75 174OpSelectionMerge %117 None 175OpBranchConditional %115 %116 %117 176%116 = OpLabel 177%118 = OpLoad %v4int %exp 178%119 = OpCompositeExtract %int %118 3 179%120 = OpIEqual %bool %119 %int_3 180OpBranch %117 181%117 = OpLabel 182%121 = OpPhi %bool %false %104 %120 %116 183%122 = OpAccessChain %_ptr_Function_bool %ok %int_3 184OpStore %122 %121 185%124 = OpLoad %v4bool %ok 186%123 = OpAll %bool %124 187OpSelectionMerge %128 None 188OpBranchConditional %123 %126 %127 189%126 = OpLabel 190%129 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0 191%130 = OpLoad %v4float %129 192OpStore %125 %130 193OpBranch %128 194%127 = OpLabel 195%131 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1 196%132 = OpLoad %v4float %131 197OpStore %125 %132 198OpBranch %128 199%128 = OpLabel 200%133 = OpLoad %v4float %125 201OpReturnValue %133 202OpFunctionEnd 203