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 "N" 9 OpMemberName %_UniformBuffer 1 "I" 10 OpMemberName %_UniformBuffer 2 "NRef" 11 OpMemberName %_UniformBuffer 3 "colorGreen" 12 OpMemberName %_UniformBuffer 4 "colorRed" 13 OpName %_entrypoint_v "_entrypoint_v" 14 OpName %main "main" 15 OpName %huge "huge" 16 OpName %huge2 "huge2" 17 OpName %huge3 "huge3" 18 OpName %huge4 "huge4" 19 OpName %expectedPos "expectedPos" 20 OpName %expectedNeg "expectedNeg" 21 OpDecorate %sk_FragColor RelaxedPrecision 22 OpDecorate %sk_FragColor Location 0 23 OpDecorate %sk_FragColor Index 0 24 OpMemberDecorate %_UniformBuffer 0 Offset 0 25 OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision 26 OpMemberDecorate %_UniformBuffer 1 Offset 16 27 OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision 28 OpMemberDecorate %_UniformBuffer 2 Offset 32 29 OpMemberDecorate %_UniformBuffer 2 RelaxedPrecision 30 OpMemberDecorate %_UniformBuffer 3 Offset 48 31 OpMemberDecorate %_UniformBuffer 3 RelaxedPrecision 32 OpMemberDecorate %_UniformBuffer 4 Offset 64 33 OpMemberDecorate %_UniformBuffer 4 RelaxedPrecision 34 OpDecorate %_UniformBuffer Block 35 OpDecorate %7 Binding 0 36 OpDecorate %7 DescriptorSet 0 37 OpDecorate %25 RelaxedPrecision 38 OpDecorate %expectedPos RelaxedPrecision 39 OpDecorate %expectedNeg RelaxedPrecision 40 OpDecorate %62 RelaxedPrecision 41 OpDecorate %67 RelaxedPrecision 42 OpDecorate %68 RelaxedPrecision 43 OpDecorate %71 RelaxedPrecision 44 OpDecorate %72 RelaxedPrecision 45 OpDecorate %75 RelaxedPrecision 46 OpDecorate %76 RelaxedPrecision 47 OpDecorate %80 RelaxedPrecision 48 OpDecorate %82 RelaxedPrecision 49 OpDecorate %83 RelaxedPrecision 50 OpDecorate %85 RelaxedPrecision 51 OpDecorate %86 RelaxedPrecision 52 OpDecorate %88 RelaxedPrecision 53 OpDecorate %89 RelaxedPrecision 54 OpDecorate %90 RelaxedPrecision 55 OpDecorate %97 RelaxedPrecision 56 OpDecorate %99 RelaxedPrecision 57 OpDecorate %100 RelaxedPrecision 58 OpDecorate %102 RelaxedPrecision 59 OpDecorate %103 RelaxedPrecision 60 OpDecorate %105 RelaxedPrecision 61 OpDecorate %106 RelaxedPrecision 62 OpDecorate %107 RelaxedPrecision 63 OpDecorate %114 RelaxedPrecision 64 OpDecorate %116 RelaxedPrecision 65 OpDecorate %118 RelaxedPrecision 66 OpDecorate %120 RelaxedPrecision 67 OpDecorate %132 RelaxedPrecision 68 OpDecorate %139 RelaxedPrecision 69 OpDecorate %152 RelaxedPrecision 70 OpDecorate %155 RelaxedPrecision 71 OpDecorate %156 RelaxedPrecision 72 %float = OpTypeFloat 32 73 %v4float = OpTypeVector %float 4 74%_ptr_Output_v4float = OpTypePointer Output %v4float 75%sk_FragColor = OpVariable %_ptr_Output_v4float Output 76%_UniformBuffer = OpTypeStruct %v4float %v4float %v4float %v4float %v4float 77%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer 78 %7 = OpVariable %_ptr_Uniform__UniformBuffer Uniform 79 %void = OpTypeVoid 80 %12 = OpTypeFunction %void 81 %float_0 = OpConstant %float 0 82 %v2float = OpTypeVector %float 2 83 %16 = OpConstantComposite %v2float %float_0 %float_0 84%_ptr_Function_v2float = OpTypePointer Function %v2float 85 %20 = OpTypeFunction %v4float %_ptr_Function_v2float 86%_ptr_Function_float = OpTypePointer Function %float 87 %float_1 = OpConstant %float 1 88%float_1_00000002e_30 = OpConstant %float 1.00000002e+30 89 %30 = OpConstantComposite %v2float %float_1 %float_1 90 %31 = OpConstantComposite %v2float %float_1_00000002e_30 %float_1_00000002e_30 91 %v3float = OpTypeVector %float 3 92%_ptr_Function_v3float = OpTypePointer Function %v3float 93 %36 = OpConstantComposite %v3float %float_1 %float_1 %float_1 94 %37 = OpConstantComposite %v3float %float_1_00000002e_30 %float_1_00000002e_30 %float_1_00000002e_30 95%_ptr_Function_v4float = OpTypePointer Function %v4float 96 %41 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 97 %42 = OpConstantComposite %v4float %float_1_00000002e_30 %float_1_00000002e_30 %float_1_00000002e_30 %float_1_00000002e_30 98 %float_2 = OpConstant %float 2 99 %float_3 = OpConstant %float 3 100 %float_4 = OpConstant %float 4 101 %54 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4 102 %float_n1 = OpConstant %float -1 103 %float_n2 = OpConstant %float -2 104 %float_n3 = OpConstant %float -3 105 %float_n4 = OpConstant %float -4 106 %59 = OpConstantComposite %v4float %float_n1 %float_n2 %float_n3 %float_n4 107 %bool = OpTypeBool 108 %false = OpConstantFalse %bool 109%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float 110 %int = OpTypeInt 32 1 111 %int_0 = OpConstant %int 0 112 %int_1 = OpConstant %int 1 113 %int_2 = OpConstant %int 2 114 %v2bool = OpTypeVector %bool 2 115 %v3bool = OpTypeVector %bool 3 116 %v4bool = OpTypeVector %bool 4 117 %true = OpConstantTrue %bool 118 %131 = OpConstantComposite %v2float %float_n1 %float_n2 119 %138 = OpConstantComposite %v3float %float_1 %float_2 %float_3 120 %int_3 = OpConstant %int 3 121 %int_4 = OpConstant %int 4 122%_entrypoint_v = OpFunction %void None %12 123 %13 = OpLabel 124 %17 = OpVariable %_ptr_Function_v2float Function 125 OpStore %17 %16 126 %19 = OpFunctionCall %v4float %main %17 127 OpStore %sk_FragColor %19 128 OpReturn 129 OpFunctionEnd 130 %main = OpFunction %v4float None %20 131 %21 = OpFunctionParameter %_ptr_Function_v2float 132 %22 = OpLabel 133 %huge = OpVariable %_ptr_Function_float Function 134 %huge2 = OpVariable %_ptr_Function_v2float Function 135 %huge3 = OpVariable %_ptr_Function_v3float Function 136 %huge4 = OpVariable %_ptr_Function_v4float Function 137%expectedPos = OpVariable %_ptr_Function_v4float Function 138%expectedNeg = OpVariable %_ptr_Function_v4float Function 139 %146 = OpVariable %_ptr_Function_v4float Function 140 %25 = OpExtInst %float %1 FaceForward %float_1 %float_1_00000002e_30 %float_1_00000002e_30 141 OpStore %huge %25 142 %29 = OpExtInst %v2float %1 FaceForward %30 %31 %31 143 OpStore %huge2 %29 144 %35 = OpExtInst %v3float %1 FaceForward %36 %37 %37 145 OpStore %huge3 %35 146 %40 = OpExtInst %v4float %1 FaceForward %41 %42 %42 147 OpStore %huge4 %40 148 %44 = OpCompositeConstruct %v4float %25 %25 %25 %25 149 %45 = OpVectorShuffle %v4float %29 %29 0 0 0 0 150 %46 = OpFAdd %v4float %44 %45 151 OpStore %expectedPos %46 152 %48 = OpVectorShuffle %v4float %35 %35 0 0 0 0 153 %49 = OpVectorShuffle %v4float %40 %40 0 0 0 0 154 %50 = OpFAdd %v4float %48 %49 155 OpStore %expectedNeg %50 156 OpStore %expectedPos %54 157 OpStore %expectedNeg %59 158 %63 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0 159 %67 = OpLoad %v4float %63 160 %68 = OpCompositeExtract %float %67 0 161 %69 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1 162 %71 = OpLoad %v4float %69 163 %72 = OpCompositeExtract %float %71 0 164 %73 = OpAccessChain %_ptr_Uniform_v4float %7 %int_2 165 %75 = OpLoad %v4float %73 166 %76 = OpCompositeExtract %float %75 0 167 %62 = OpExtInst %float %1 FaceForward %68 %72 %76 168 %77 = OpFOrdEqual %bool %62 %float_n1 169 OpSelectionMerge %79 None 170 OpBranchConditional %77 %78 %79 171 %78 = OpLabel 172 %81 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0 173 %82 = OpLoad %v4float %81 174 %83 = OpVectorShuffle %v2float %82 %82 0 1 175 %84 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1 176 %85 = OpLoad %v4float %84 177 %86 = OpVectorShuffle %v2float %85 %85 0 1 178 %87 = OpAccessChain %_ptr_Uniform_v4float %7 %int_2 179 %88 = OpLoad %v4float %87 180 %89 = OpVectorShuffle %v2float %88 %88 0 1 181 %80 = OpExtInst %v2float %1 FaceForward %83 %86 %89 182 %90 = OpVectorShuffle %v2float %59 %59 0 1 183 %91 = OpFOrdEqual %v2bool %80 %90 184 %93 = OpAll %bool %91 185 OpBranch %79 186 %79 = OpLabel 187 %94 = OpPhi %bool %false %22 %93 %78 188 OpSelectionMerge %96 None 189 OpBranchConditional %94 %95 %96 190 %95 = OpLabel 191 %98 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0 192 %99 = OpLoad %v4float %98 193 %100 = OpVectorShuffle %v3float %99 %99 0 1 2 194 %101 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1 195 %102 = OpLoad %v4float %101 196 %103 = OpVectorShuffle %v3float %102 %102 0 1 2 197 %104 = OpAccessChain %_ptr_Uniform_v4float %7 %int_2 198 %105 = OpLoad %v4float %104 199 %106 = OpVectorShuffle %v3float %105 %105 0 1 2 200 %97 = OpExtInst %v3float %1 FaceForward %100 %103 %106 201 %107 = OpVectorShuffle %v3float %54 %54 0 1 2 202 %108 = OpFOrdEqual %v3bool %97 %107 203 %110 = OpAll %bool %108 204 OpBranch %96 205 %96 = OpLabel 206 %111 = OpPhi %bool %false %79 %110 %95 207 OpSelectionMerge %113 None 208 OpBranchConditional %111 %112 %113 209 %112 = OpLabel 210 %115 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0 211 %116 = OpLoad %v4float %115 212 %117 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1 213 %118 = OpLoad %v4float %117 214 %119 = OpAccessChain %_ptr_Uniform_v4float %7 %int_2 215 %120 = OpLoad %v4float %119 216 %114 = OpExtInst %v4float %1 FaceForward %116 %118 %120 217 %121 = OpFOrdEqual %v4bool %114 %54 218 %123 = OpAll %bool %121 219 OpBranch %113 220 %113 = OpLabel 221 %124 = OpPhi %bool %false %96 %123 %112 222 OpSelectionMerge %126 None 223 OpBranchConditional %124 %125 %126 224 %125 = OpLabel 225 OpBranch %126 226 %126 = OpLabel 227 %128 = OpPhi %bool %false %113 %true %125 228 OpSelectionMerge %130 None 229 OpBranchConditional %128 %129 %130 230 %129 = OpLabel 231 %132 = OpVectorShuffle %v2float %59 %59 0 1 232 %133 = OpFOrdEqual %v2bool %131 %132 233 %134 = OpAll %bool %133 234 OpBranch %130 235 %130 = OpLabel 236 %135 = OpPhi %bool %false %126 %134 %129 237 OpSelectionMerge %137 None 238 OpBranchConditional %135 %136 %137 239 %136 = OpLabel 240 %139 = OpVectorShuffle %v3float %54 %54 0 1 2 241 %140 = OpFOrdEqual %v3bool %138 %139 242 %141 = OpAll %bool %140 243 OpBranch %137 244 %137 = OpLabel 245 %142 = OpPhi %bool %false %130 %141 %136 246 OpSelectionMerge %144 None 247 OpBranchConditional %142 %143 %144 248 %143 = OpLabel 249 OpBranch %144 250 %144 = OpLabel 251 %145 = OpPhi %bool %false %137 %true %143 252 OpSelectionMerge %149 None 253 OpBranchConditional %145 %147 %148 254 %147 = OpLabel 255 %150 = OpAccessChain %_ptr_Uniform_v4float %7 %int_3 256 %152 = OpLoad %v4float %150 257 OpStore %146 %152 258 OpBranch %149 259 %148 = OpLabel 260 %153 = OpAccessChain %_ptr_Uniform_v4float %7 %int_4 261 %155 = OpLoad %v4float %153 262 OpStore %146 %155 263 OpBranch %149 264 %149 = OpLabel 265 %156 = OpLoad %v4float %146 266 OpReturnValue %156 267 OpFunctionEnd 268