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 %126 RelaxedPrecision 32OpDecorate %132 RelaxedPrecision 33OpDecorate %134 RelaxedPrecision 34OpDecorate %135 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%113 = OpVariable %_ptr_Function_v4int Function 93%127 = OpVariable %_ptr_Function_v4float Function 94%28 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0 95%32 = OpLoad %v4float %28 96%33 = OpVectorShuffle %v4float %32 %32 1 1 1 1 97%35 = OpVectorTimesScalar %v4float %33 %float_6 98OpStore %value %35 99%44 = OpLoad %v4float %value 100%45 = OpCompositeExtract %float %44 0 101%46 = OpAccessChain %_ptr_Function_int %exp %int_0 102%43 = OpExtInst %float %1 Frexp %45 %48 103%49 = OpLoad %int %48 104OpStore %46 %49 105%50 = OpAccessChain %_ptr_Function_float %result %int_0 106OpStore %50 %43 107%53 = OpLoad %v4float %result 108%54 = OpCompositeExtract %float %53 0 109%56 = OpFOrdEqual %bool %54 %float_0_75 110OpSelectionMerge %58 None 111OpBranchConditional %56 %57 %58 112%57 = OpLabel 113%59 = OpLoad %v4int %exp 114%60 = OpCompositeExtract %int %59 0 115%62 = OpIEqual %bool %60 %int_3 116OpBranch %58 117%58 = OpLabel 118%63 = OpPhi %bool %false %25 %62 %57 119%64 = OpAccessChain %_ptr_Function_bool %ok %int_0 120OpStore %64 %63 121%67 = OpLoad %v4float %value 122%68 = OpVectorShuffle %v2float %67 %67 0 1 123%66 = OpExtInst %v2float %1 Frexp %68 %69 124%72 = OpLoad %v2int %69 125%73 = OpLoad %v4int %exp 126%74 = OpVectorShuffle %v4int %73 %72 4 5 2 3 127OpStore %exp %74 128%75 = OpLoad %v4float %result 129%76 = OpVectorShuffle %v4float %75 %66 4 5 2 3 130OpStore %result %76 131%77 = OpLoad %v4float %result 132%78 = OpCompositeExtract %float %77 1 133%79 = OpFOrdEqual %bool %78 %float_0_75 134OpSelectionMerge %81 None 135OpBranchConditional %79 %80 %81 136%80 = OpLabel 137%82 = OpLoad %v4int %exp 138%83 = OpCompositeExtract %int %82 1 139%84 = OpIEqual %bool %83 %int_3 140OpBranch %81 141%81 = OpLabel 142%85 = OpPhi %bool %false %58 %84 %80 143%86 = OpAccessChain %_ptr_Function_bool %ok %int_1 144OpStore %86 %85 145%89 = OpLoad %v4float %value 146%90 = OpVectorShuffle %v3float %89 %89 0 1 2 147%88 = OpExtInst %v3float %1 Frexp %90 %92 148%95 = OpLoad %v3int %92 149%96 = OpLoad %v4int %exp 150%97 = OpVectorShuffle %v4int %96 %95 4 5 6 3 151OpStore %exp %97 152%98 = OpLoad %v4float %result 153%99 = OpVectorShuffle %v4float %98 %88 4 5 6 3 154OpStore %result %99 155%100 = OpLoad %v4float %result 156%101 = OpCompositeExtract %float %100 2 157%102 = OpFOrdEqual %bool %101 %float_0_75 158OpSelectionMerge %104 None 159OpBranchConditional %102 %103 %104 160%103 = OpLabel 161%105 = OpLoad %v4int %exp 162%106 = OpCompositeExtract %int %105 2 163%107 = OpIEqual %bool %106 %int_3 164OpBranch %104 165%104 = OpLabel 166%108 = OpPhi %bool %false %81 %107 %103 167%109 = OpAccessChain %_ptr_Function_bool %ok %int_2 168OpStore %109 %108 169%112 = OpLoad %v4float %value 170%111 = OpExtInst %v4float %1 Frexp %112 %113 171%114 = OpLoad %v4int %113 172OpStore %exp %114 173OpStore %result %111 174%115 = OpLoad %v4float %result 175%116 = OpCompositeExtract %float %115 3 176%117 = OpFOrdEqual %bool %116 %float_0_75 177OpSelectionMerge %119 None 178OpBranchConditional %117 %118 %119 179%118 = OpLabel 180%120 = OpLoad %v4int %exp 181%121 = OpCompositeExtract %int %120 3 182%122 = OpIEqual %bool %121 %int_3 183OpBranch %119 184%119 = OpLabel 185%123 = OpPhi %bool %false %104 %122 %118 186%124 = OpAccessChain %_ptr_Function_bool %ok %int_3 187OpStore %124 %123 188%126 = OpLoad %v4bool %ok 189%125 = OpAll %bool %126 190OpSelectionMerge %130 None 191OpBranchConditional %125 %128 %129 192%128 = OpLabel 193%131 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0 194%132 = OpLoad %v4float %131 195OpStore %127 %132 196OpBranch %130 197%129 = OpLabel 198%133 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1 199%134 = OpLoad %v4float %133 200OpStore %127 %134 201OpBranch %130 202%130 = OpLabel 203%135 = OpLoad %v4float %127 204OpReturnValue %135 205OpFunctionEnd 206